1. 交叉熵损失(Cross-Entroy loss)
- 信息论中的概念,衡量两个概率分布间的差异性信息。我们假设真实概率为p,程序模型计算的概率为q,类别总数为C,那么交叉熵为:
H ( p , q ) = − ∑ c = 1 C p ( c ) log q ( c ) H(p,q)=-\sum_{c=1}^{C}p(c)\log q(c) H(p,q)=−c=1∑Cp(c)logq(c)
当p是groud truth的概率分布时,此时p=[0,…,0,1,0,…0],即为one-hot向量,因为其它的p©=0,所以只需要计算p©=1的即可。
所以对于每一个测试用例它的交叉熵为 H ( x i , y i ) = − log q ( y i ) = − log e f y i ∑ c = 1 C e f y c H(x_i,y_i) = -\log q(y_i) = -\log \frac {e^{f_{y_i}}}{\sum_{c=1}^{C}e^{f_{y_c}}} H(xi,yi)=−logq(yi)=−log∑c=1Cefycefyi
f y = f y ( x ) = W y ⋅ x = ∑ j = 1 d W y j x j f_y=f_y(x)=W_y \cdot x =\sum_{j=1}^{d}W_{y_j}x_j fy=fy(x)=Wy⋅x=j=1∑dWyjxj
进而得到损失函数为:
J ( θ ) = 1 N ∑ i = 1 N H ( x i , y i ) J(\theta)=\frac{1}{N}\sum_{i=1}^{N}H(x_i,y_i) J(θ)=N1i=1∑NH(xi,yi)
2.窗口分类(window-classification)
- 根据出现的上下文对一个词进行分类,例如四元素分类(人物,地点,组织,都不是)
- 最简单的方式是使用softmax,初始化值,计算预测值,使用交叉熵,然后求导和优化,最后更新向量,直到满足收敛条件结束。
3.神经网络
上图计算出s值,假设是计算地点的NER
- 例子:Not all museums in Paris are amazing
- s = score(‘museums in Pairs are amazing’)
- s c s_c sc=score(‘Not all museums in Paris’)
max-margin loss(最大间距损失)
J
=
m
a
x
(
0
,
1
−
s
+
s
c
)
J = max(0, 1-s+s_c)
J=max(0,1−s+sc)