CS224N笔记——Word Window分类与神经网络

目录

分类的背景

分类问题中更新词向量

Window classification

神经网络


  • 分类的背景

关于分类

给定训练集:CS224N笔记——Word Window分类与神经网络

其中CS224N笔记——Word Window分类与神经网络是一个d维向量,CS224N笔记——Word Window分类与神经网络是一个c维one-hot向量,N是训练集样本数。在传统的机器学习方法中,往往通过诸如逻辑斯谛回归和SVM找到分类决策边界:

CS224N笔记——Word Window分类与神经网络

softmax细节

CS224N笔记——Word Window分类与神经网络

把给定输入x时的输出为y的概率计算分成两步:

(1)用CS224N笔记——Word Window分类与神经网络(W的第y行)乘以向量x:

CS224N笔记——Word Window分类与神经网络

从1开始对所有C个类别都做这样的乘法

(2)归一化,将向量输入到softmax,计算得到一个概率分布,所有概率之和为1:

CS224N笔记——Word Window分类与神经网络

softmax和交叉熵误差

输入x,预测y,我们希望模型可以最大化正确类别的概率,最大化概率=最大化对数概率=最小化对数概率的负数,对数概率的负数通常是我们的目标函数:

CS224N笔记——Word Window分类与神经网络

为什么是交叉熵误差

假设我们有正确标注的概率分布,正确类别的概率为1,其余的概率为0,定义理想的概率为p,softmax计算得到的概率记为q,则交叉熵为:

CS224N笔记——Word Window分类与神经网络

因为p是one-hot向量,所以非正确类别的求和项的值全部为零,最后交叉熵的结果是-log(q)。

补充:KL散度(KL divergence)

交叉熵可以被改写成熵和两个分布之间的KL散度:

CS224N笔记——Word Window分类与神经网络

在我们的例子中,H(p)是零(即使它不是零,它也是不变的,对梯度没有贡献),所以最小化交叉熵等于最小化p和q之间的KL散度。

KL散度不是距离,而是两个概率分布p和q之间差异的非对称度量:

CS224N笔记——Word Window分类与神经网络

整个数据集上的分类

整个数据集上的交叉熵损失函数J:

CS224N笔记——Word Window分类与神经网络

用f表示矩阵运算的记号:CS224N笔记——Word Window分类与神经网络,代替这样的表示:CS224N笔记——Word Window分类与神经网络

正则化

在实际应用中,还会用到正则项作为总体目标函数的一部分:

CS224N笔记——Word Window分类与神经网络

目的是为了鼓励模型中的权值尽可能的小,或尽可能接近零。当我们拥有大量特征或模型非常复杂时,正则化能够防止过拟合。

CS224N笔记——Word Window分类与神经网络

红线是test error,蓝线是training error,横轴是模型复杂度或迭代次数,直线是方差偏差均衡点。

L1正则项和L2正则项详解参考:https://blog.csdn.net/*_shi/article/details/52433975

dropout正则化详解参考:https://blog.csdn.net/stdcoutzyx/article/details/49022443

优化

在一般的机器学习中,CS224N笔记——Word Window分类与神经网络只由W的列组成:

CS224N笔记——Word Window分类与神经网络

故只需优化W,也就是softmax分类器的参数,所以我们只需更新决策边界:

CS224N笔记——Word Window分类与神经网络

而在词向量或其他深度学习中,需要同时学习权值矩阵和词向量。参数一多,就容易过拟合:

CS224N笔记——Word Window分类与神经网络

  • 分类问题中更新词向量

re-training词向量失去泛化效果

比如有一个给单词做情感分析的小任务,在预训练的词向量中,这三个表示电视的单词都是在一起的:

CS224N笔记——Word Window分类与神经网络

但由于情感分析语料中,训练集只含有TV和telly,导致re-training之后两者跑到别处去了:

CS224N笔记——Word Window分类与神经网络

于是在测试集上导致television被误分类。

这个例子说明,如果任务的语料非常小,则不必在任务语料上重新训练词向量,否则会导致词向量过拟合。

补充:词向量相关术语

词向量矩阵L常被称作lookup table:

CS224N笔记——Word Window分类与神经网络

Word vectors = word embeddings = word representations (mostly)

  • Window classification

词窗口分类

很少对单个词做分类,实际上想做的是在上下文中对单词进行分类。

第一个例子:四分类命名实体识别,对大语料库中的每个单词识别人名、地点、组织及其他。

做法:给中心词分配一个标签,然后用一个窗口把它前后的单词连接起来,训练一个softmax分类器。

例如:从一个长句中截取短句作为窗口,在这个窗口的上下文中,对中心词Paris进行分类。定义窗口长度为2,:

CS224N笔记——Word Window分类与神经网络

定义新的输入X为整个窗口连接成的5个词向量,即一个5d维的列向量:

CS224N笔记——Word Window分类与神经网络

最简单的窗口分类器:Softmax

CS224N笔记——Word Window分类与神经网络

J对X求导,注意这里的X指的是窗口所有单词的词向量拼接向量:

CS224N笔记——Word Window分类与神经网络

于是就可以更新词向量了:

CS224N笔记——Word Window分类与神经网络

另一方面,对W求偏导数,将所有参数的偏导数写到一起有:

CS224N笔记——Word Window分类与神经网络

在更新过程中计算代价最高的有矩阵运算f=Wx和指数函数,但矩阵运算比循环要快多了(在CPU上快一个数量级)。

Softmax(等价于逻辑斯谛回归)效果有限

仅限于较小的数据集,能够提供一个勉强的线性分类决策边界。

CS224N笔记——Word Window分类与神经网络

使用神经网络

神经网络可以提供非线性的决策边界:

CS224N笔记——Word Window分类与神经网络

  • 神经网络

前向传播

使用一个三层神经网络计算一个窗口的得分:s=score(museums in Paris are amazing)

CS224N笔记——Word Window分类与神经网络

这种红点图经常在论文里看到,大致代表单元数;中间的空格分隔开一组神经元,比如隐藏层单元数为2×4。U是隐藏层到class的权值矩阵:

CS224N笔记——Word Window分类与神经网络

其中a是**函数:

CS224N笔记——Word Window分类与神经网络

关于额外层

额外层学习不同的输入词之间的非线性相互作用。以前我们只能说如果单词in出现在这个位置,总会增加下一个词是地点的概率,现在我们可以学习这样的模式,即如果单词in在第二个位置,只有在单词museum也是第一个词的情况下,会提高这个是地点的可能性。

CS224N笔记——Word Window分类与神经网络

间隔最大化目标函数

怎么设计目标函数呢,记CS224N笔记——Word Window分类与神经网络代表误分类样本的得分,CS224N笔记——Word Window分类与神经网络表示正确分类样本的得分。则朴素的思路是最大化CS224N笔记——Word Window分类与神经网络或最小化 CS224N笔记——Word Window分类与神经网络。但有种方法只计算CS224N笔记——Word Window分类与神经网络时的错误,也就是说我们只要求正确分类的得分高于错误分类的得分即可,并不要求错误分类的得分多么多么小。这得到间隔最大化目标函数:

CS224N笔记——Word Window分类与神经网络

但上述目标函数要求太低,风险太大了,没有留出足够的“缓冲区域”。可以指定该间隔的宽度CS224N笔记——Word Window分类与神经网络,得到:

CS224N笔记——Word Window分类与神经网络

可以调整其他参数使得该间隔为1:

CS224N笔记——Word Window分类与神经网络

这实际上是将函数间隔转换为几何间隔,参考SVM.

在这个分类问题中,这两个得分的计算方式为:CS224N笔记——Word Window分类与神经网络CS224N笔记——Word Window分类与神经网络;通常通过负采样算法得到负例。

另外,这个目标函数的好处是,随着训练的进行,可以忽略越来越多的实例,而只专注于那些难分类的实例。

反向传播训练

跳过链式法则推导直接贴结果:

CS224N笔记——Word Window分类与神经网络

其中CS224N笔记——Word Window分类与神经网络是第k层的误差:

CS224N笔记——Word Window分类与神经网络

可见只要控制误差的计算方式,就可以smoothly地过渡到间隔最大化目标函数:

CS224N笔记——Word Window分类与神经网络

另外,对偏置的偏导数是CS224N笔记——Word Window分类与神经网络

CS224N笔记——Word Window分类与神经网络

最后一片拼图是对词向量的偏导数,由于连接时每个输入单元连到了多个隐藏单元,所以对某个输入单元的偏导数是求和的形式(残差来自相连的隐藏单元):

CS224N笔记——Word Window分类与神经网络

其中,CS224N笔记——Word Window分类与神经网络是第j列,转置后得到行向量;红色部分是误差,相乘后得到一个标量,代表词向量第j维的导数。那么对整个词向量的偏导数就是:

CS224N笔记——Word Window分类与神经网络