距离上次更新已经 1594 天了,文章内容可能已经过时。

课程主页:https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/

视频地址:https://www.bilibili.com/video/av46216519?from=search&seid=13229282510647565239

这里回顾CS224N Lecture 3的课程内容,这一讲介绍了神经网络以及分类问题。

分类问题的介绍

假设我们有训练集

{xi,yi}i=1N

其中xiRd为输入,yi为标签(离散值)。

传统的方法是使用softmax分类器,即

p(y|x)=exp(Wyx)c=1Cexp(Wcx)

其中

Wyx=i=1dWyixi=fy

度量上述概率的方式是使用交叉熵:

H(p,q)=c=1Cp(c)logq(c)

注意yi为one hot的形式,即

p=[0,,0,1,0,0]

所以总体的损失函数为

J(θ)=1Ni=1Nlog(efyic=1Cefc)

利用梯度下降的方法即可计算权重W

上述方法计算出的分类边界是线性的,所以无法处理很复杂的问题,所以实际中一般使用神经网络进行建模,这也是后续的重点。

神经网络

神经网络的结构如下:

以下图为例介绍具体计算步骤:

ai=f(Wi1x1+Wi2x2+Wi3x3+bi)

矩阵形式为

z=Wx+ba=f(z)

其中

f([z1,z2,z3])=[f(z1),f(z2),f(z3)]

f被称为激活函数,注意f一定是非线性函数,否则多层网络的效果等于单层。

命名实体识别(NER)

考虑NER问题,即在文本中找到并分类命名实体:

NER问题可以化成分类问题,即对每个单词x,输出其分类,但是如果直接使用该方法,那么会忽略上下文信息,所以考虑该单词的上下文,以窗口长度为2为例:

所以输入为

xwindow=xR5d

下面给出一个处理该问题的具体的网络架构

有了网络结构,接下来指定损失函数就可以进行训练,这里的损失函数为

J=max(0,1s+sc)

训练的方法为梯度下降法

θnew=θoldαθJ(θ)