觉得自己理解的还不够,因此再来读一遍。
selectional preference modeling?
当模型预测剩下的一个entity时,算法会搜索隐含的能够简化预测entity这个任务的relation
也就是说,这样的一个目标会推导出一些,最大程度限制entity的关系。
作者的假设是,这样的关系会被人类理解并且在实际应用中起作用。
这样的假设起作用的原因是人类把关系定义为基本情况的抽象。
‘基本情况’ 就是对entity添加限制的。
这个框架可以:
relation factorization.
tensor and matrix factorization在推断KB中的缺失事实时被证明有效。在本文中采用了RESCAL factorization.
但是文章和上述条件下,最大的区别就是,不仅要构建现有的关系,也可以发现新的关系。可以做关系抽取,以及entity推断。
与生成模型不同,这里的文本表征至少要对语义推断的是有用的(因为要做entity inference(也就是reconstruction))
模型对于两个entity之间的真正语义关系是不被训练的,因为是无监督的。
并且关系样例也是在训练的过程中被发现的。
我看到这里觉得真的抽象死了。可能需要去学习一下relational learning以及相关的 tensor或者matrix factorization吧。
本文的setting是相对比较标准的,binary的关系,entity已经标定,确定entity之间存在关系。
在实际中,希望去得到一个合适的隐变量表征( r r r)。并且使得 r r r 代表了隐式关系,而不是其他的信息是非常关键的。
希望 r r r能够表示entity在文本中的隐式关系是非常重要的,作者做法如上图,假设原句为:Ebert is the first journalist to win the Pulitzer prize.
首先encode 句子 x x x成为 r r r,然后隐藏其中的一个entity,例如图中为 e 2 e_2 e2,作者希望通过 e 1 e_1 e1以及 r r r,能够推导出 e 2 e_2 e2。
这个假设的非常的简单且合理。赞一个。
在学习阶段,推断算法会搜索所有的潜在关系群,使得reconstruction出 e 2 e_2 e2这个任务尽可能的简单。
举个例子,如果算法把is the first journalist to win 与was awared 聚类到一起。预测出 e 2 e_2 e2就比较的有希望,因为句子Ebert was awarded the Pulitzer prize可能在训练数据的其他地方见到过了。
Reconstruction可以看作是KB的factorization。
注意模型的最终目标是学习好的关系聚类,Reconstruction被用作一个方法去达到这一目的。
desideratum
autoencoder是一个很自然的想法 x − > y − > x ~ x -> y -> \tilde{x} x−>y−>x~,并且此处要使用离散状态的autoencoder,更加方便聚类。相似的工作有2015年发表在NAACL上的
Unsupervised Induction of Semantic Roles within a Reconstruction-Error Minimization Framework
encoding部分,关系抽取器首先处理新句子获取features,然后通过softmax分类器进行分类。
q ( r ∣ x , w ) = exp ( w T g ( r , x ) ) ) ∑ r ′ ∈ R exp ( w T g ( r ′ , x ) ) q(r \mid x, \mathbf{w})=\frac{\left.\exp \left(\mathbf{w}^{T} \mathbf{g}(r, x)\right)\right)}{\sum_{r^{\prime} \in \mathcal{R}} \exp \left(\mathbf{w}^{T} \mathbf{g}\left(r^{\prime}, x\right)\right)} q(r∣x,w)=∑r′∈Rexp(wTg(r′,x))exp(wTg(r,x)))
其中 g ( r , x ) \boldsymbol{g}(r,x) g(r,x)是特征, w \boldsymbol{w} w是参数。
疑惑的地方:
g ( r , x ) \boldsymbol{g}(r,x) g(r,x)是特征表示,那么 r r r是哪里来的呢…不是说提前不知道 r r r么。
此处就是上文我们说的比较精彩的地方,对于decoder来说,仅有从sentence encode出来的信息以及一个entity。因此模型必须确保从句子中抽取的是信息丰富的关系信息而不是通过记忆entity的pair来进行 r r r的聚类。
为了简化notation,假设预测 e 1 e_1 e1:
p ( e 1 ∣ e 2 , r , θ ) = exp ( ψ ( e 1 , e 2 , r , θ ) ) ∑ e ′ ∈ E exp ( ψ ( e ′ , e 2 , r , θ ) ) p\left(e_{1} \mid e_{2}, r, \theta\right)=\frac{\exp \left(\psi\left(e_{1}, e_{2}, r, \theta\right)\right)}{\sum_{e^{\prime} \in \mathcal{E}} \exp \left(\psi\left(e^{\prime}, e_{2}, r, \theta\right)\right)} p(e1∣e2,r,θ)=∑e′∈Eexp(ψ(e′,e2,r,θ))exp(ψ(e1,e2,r,θ))
我懂了我懂了,兄弟们。看了一下代码
核心思路是这样:
∑ i = 1 2 ∑ r ∈ R q ( r ∣ x , w ) log p ( e i ∣ e − i , r , θ ) \sum_{i=1}^{2} \sum_{r \in \mathcal{R}} q(r \mid x, \mathbf{w}) \log p\left(e_{i} \mid e_{-i}, r, \theta\right) i=1∑2r∈R∑q(r∣x,w)logp(ei∣e−i,r,θ)
左侧的公式就是encoder,你可以把它直接理解为句子分类器,也就是文中说的relation extractor。
通过句子 x x x和可学习参数 w \boldsymbol{w} w计算属于第几个关系(关系数量是超参数,是需要确定的,表明在这些数据上,可能存在的关系数量)虽然刚开始不知道关系是什么,也不知道第几个关系有什么意义,但是没关系。关系的embedding后面可以训练出来的。
然后咱们到了后面这个公式 l o g p ( e i ∣ e − i , r , θ ) log p(e_i| e_{-i}, r, \theta) logp(ei∣e−i,r,θ)
此处的 θ \theta θ是用于最大化 e i e_i ei概率的,在根据句子计算出关系的情况下
根据是第几个关系,为其选取关系表示(一开始可以是 n ∗ R d n * \mathbb{R}^d n∗Rd的矩阵来表示所有的关系,反正表示会被优化的)
在这时候,entity也是embedding,relation也是embedding。这两个embedding是输入, θ \theta θ又是一个可学习参数。这时候,需要通过输入和参数,得到原本句子中的另外一个entity。这就意味这表征需要足够的精确,才可以预测正确。
最后聚类的结果,就是预测为 r r r的对应句子,是一个类别。
这里面我的问题:如何避免 x x x中不出现另外一个entity的信息呢。