CS224n 深度自然语言处理(三) Note - Word Window Classification, Neural Networks

本文探讨了机器学习中的分类问题,介绍了线性分类器、神经网络分类器的工作原理及应用,并深入讲解了命名实体识别(NER)的挑战与解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文为笔者学习CS224N所做笔记,所包含内容不限于课程课件和讲义,还包括笔者对机器学习、神经网络的一些理解。所写内容难免有难以理解的地方,甚至可能有错误。如您在阅读中有疑惑或者建议,还望留言指正。笔者不胜感激!

分类问题

一般而言,训练数据由训练样本{xi,yi}i=1N\{x_i,y_i\}^{N}_{i=1}{xi,yi}i=1N组成。xix_ixi表示输入(假定每个样本的维度为ddd),yiy_iyi表示类别(假定有CCC个类别)。

线性分类器

在传统的机器学习方法中,对于训练样本,训练逻辑回归权重W∈RC×dW\in R^{C \times d}WRC×d,使得超平面可以将点分隔开。注意,一个超平面只可以将空间划分为两个子空间,此处训练CCC个超平面。

对于多分类来说,对于每一个xxx,预测
p(y∣x)=exp(Wy⋅x)∑c=1Cexp(Wc⋅x) p(y|x)=\frac{exp(W_y · x)}{\sum_{c=1}^Cexp(W_c·x)} p(yx)=c=1Cexp(Wcx)exp(Wyx)
等式右侧为计算其属于真实类别的概率,我们希望其越大越好。

分类细节

对于某个类别c∈[1,C]c \in [1, C]c[1,C],可以训练得到一个权重WcW_cWc,代表一个空间中的超平面的法向量。不失一般性,认为此法向量的方向所指向的空间为正例所在空间(属于此类别),法向量反方向所指向的空间为反例(不属于此类别)。故此超平面将空间中的点划分为两部分,一部分为ccc类,一部分为非ccc类。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3gEzbDe2-1590498305303)(D:\NutStore\Note\CS224N\L3\l3-1.png)]

共有CCC个类别,每个类别均有其所对应的超平面。若一个样本属于正例,可以认为其离超平面越远,属于此类的概率越高。因此,可以用超平面法向量WcW_cWc和样本xxx的点积,Wc⋅x=fyW_c·x=f_yWcx=fy得到样本点到超平面的距离,代表样本归属类别的概率(由于法向量有方向,存在负值的情况,负值代表不属于此类)。

最后,使用softmax函数,对计算得到的所有距离归一化,得到属于每个类别的概率值。
p(y∣x)=exp(fy)∑c=1Cexp(fc)=softmax(fy) p(y|x)=\frac{exp(f_y)}{\sum_{c=1}^Cexp(fc)}=\text{softmax}(f_y) p(yx)=c=1Cexp(fc)exp(fy)=softmax(fy)

目标函数

分类器的目标是所有样本的对于正确类别的概率分布最大,即
max obj=∑i=1N∏c=1Cp(yic∣xi)yic max\ obj= \sum_{i=1}^N\prod_{c=1}^Cp(y_{ic}|x_i)^{y_{ic}} max obj=i=1Nc=1Cp(yicxi)yic
解释一下,求和项表示对所有样本进行求和,而求乘积项是属于每个概率的指数次方求连乘积。例如假定有3类,预测归属于每一类的概率分别为[0.1,0.3,0.6][0.1, 0.3, 0.6][0.1,0.3,0.6],而真实标签分布为[0,0,1][0, 0, 1][0,0,1],则需要计算0.10∗0.30∗0.610.1^0*0.3^0*0.6^10.100.300.61,可见十分耗时。

然而对于所有类别,求乘积速度比求和慢;同时从习惯上,一般希望分类器误分类的损失最小,因此使用负对数概率对上式改写,得到负对数似然函数则有
min obj=−∑i=1N∑c=1Cyiclogp(yic∣xi) min\ obj= -\sum_{i=1}^N\sum_{c=1}^Cy_{ic}logp(y_{ic}|x_i) min obj=i=1Nc=1Cyiclogp(yicxi)
此时,乘积变为求和。习惯上成之为损失,用LLL表示。
L=−∑i=1N∑c=1Cyiclogp(yic∣xi) L= -\sum_{i=1}^N\sum_{c=1}^Cy_{ic}logp(y_{ic}|x_i) L=i=1Nc=1Cyiclogp(yicxi)
此式和交叉熵的式子如出一辙。

交叉熵

交叉熵出自于信息论,用于评估两个分布的相似程度。越相似,则交叉熵越小,反之越大。令真实的概率分布为ppp,模型得到的概率分布为qqq,则两个分布的交叉熵为
H(p,q)=−∑c=1Cp(c)logq(c) H(p, q)=-\sum_{c=1}^Cp(c)logq(c) H(p,q)=c=1Cp(c)logq(c)

整个数据集的分类

其实上面已经考虑过对整个数据集分类的损失,即
L=−∑i=1N∑c=1Cyiclogp(yic∣xi) L= -\sum_{i=1}^N\sum_{c=1}^Cy_{ic}logp(y_{ic}|x_i) L=i=1Nc=1Cyiclogp(yicxi)
一般而言,我们希望得到对于每个样本平均损失(平均误差),则有
L=−1N∑i=1N∑c=1Cyiclogp(yic∣xi) L= -\frac{1}{N}\sum_{i=1}^N\sum_{c=1}^Cy_{ic}logp(y_{ic}|x_i) L=N1i=1Nc=1Cyiclogp(yicxi)

神经网络分类器

很多时候,数据集并不能用超平面将数据分隔开,我们要寻找的分界面往往不是以“标准的超平面”存在于参数空间中,神经网络分类器的表现更好。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Km0OXqDG-1590498305308)(D:\NutStore\Note\CS224N\L3\l3-2.png)]

神经元

一个神经元可以看做一个二分类逻辑回归单位。一个神经元由权重www,偏置bbb,非线性激活函数fff和输入向量xxx组成,w,bw,bwb为神经网络的参数。
hw,b(x)=f(wTx+b)f(z)=11+e−z h_{w,b}(x)=f(w^Tx+b)\\ f(z)=\frac{1}{1+e^{-z}} hw,b(x)=f(wTx+b)f(z)=1+ez1
这里激活函数使用的是sigmoid。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J7AtejSh-1590498305311)(D:\NutStore\Note\CS224N\L3\l3-3.png)]

如图,此时输入为向量x=[x1,x2,x3,1]x=[x_1, x_2, x_3,1]x=[x1,x2,x3,1],除1之外,每条连接到神经元的线均有一个权重系数w=[w1,w2,w3]w=[w_1,w_2,w_3]w=[w1,w2,w3],而在1和神经元连线上的为偏置项bbb。计算hw,b(x)=f(wTx+b)h_{w,b}(x)=f(w^Tx+b)hw,b(x)=f(wTx+b).

神经网络

为了增强表示能力,会将多个神经元组成神经网络。具体而言,我们将输入经过一层神经元的结果在连接另外一层神经元,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yj3hsopV-1590498305314)(D:\NutStore\Note\CS224N\L3\l3-4.png)]

图中表示一个三层神经网络,第一层为输入层,第二层为隐层,第三层为输出层(三层神经网络的习惯叫法)。当然也可以把隐层扩充为更多层的神经网络,形成一个更巨大和更复杂的神经网络。

相对于线性分类器,非线性的激活函数是拟合复杂函数或寻找复杂的分解边界的关键。连续的没有非线性激活函数的全连接层可以用一个全连接层来表示,即W1W2x=WxW_1W_2x=WxW1W2x=Wx

命名实体识别(NER)

命名实体识别被称为Named Entity Recognition(NER),其任务目标为找出语句中的名词并对其类别进行分类。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-or2hEx9e-1590498305316)(D:\NutStore\Note\CS224N\L3\l3-5.png)]

NER的难点

  1. 很难去界定实体的边界,如有句子“First National Bank Donates 2 Vans To …”,很难去判断实体是First National Bank还是Nation Bank.
  2. 很难去判断一个词是否是实体。
  3. 很难去界定一个新词所属的类别(如新产生的流行用语)。
  4. 根据上下文,同一个词会有不同的含义,会产生歧义的情况。

使用线性分类器实现NER

将一个滑动窗口内词的词向量送入线性分类器,来预测中心词的词性。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fssRYIRi-1590498305317)(D:\NutStore\Note\CS224N\L3\l3-6.png)]

Xwindow∈R5dX_{window}\in R^{5d}XwindowR5dddd表示词向量的维度

使用神经网络实现NER中的地点识别

建立一个三层的神经网络,输入同样为一个滑动窗口内的词向量,输出为一个得分,表示其属于“地点”的名词的得分(可以使用sigmoid激活函数,将其置于限制在[0,1][0,1][0,1]之间,来表示概率)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SUZjUcx3-1590498305318)(D:\NutStore\Note\CS224N\L3\l3-7.png)]

注意到使用了激活函数f(z)f(z)f(z)来捕捉非线性关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值