Stanford CS224n 第四+五讲:Word Window 分类&&神经网络&&项目建议

本节课主要讲解了词分类器的不同方式,更重要的是这一节课正式跨入了Deep Learning的门槛。下面我将通过以下几点来详述本节课程:

  1. 分类背景
    ~ 1.1 自然语言处理中词分类的思想和标识
    ~ 1.2 softmax分类器定义
    ~ 1.3 softmax分类器损失函数定义
    ~ 1.4 正则化项在模型中的作用
    ~ 1.5 讨论在分类器的训练过程中重训练(retrain)词向量的必要性
  2. 基于窗口的词分类任务
    ~ 2.1 基于窗口的分类器定义
    ~ 2.2 一个简单的基于窗口的分类器:softmax
    ~ 2.3 基于窗口softmax分类器的求梯度过程
  3. 基于神经网络的词分类任务
    ~ 3.1 神经网络的优势
    ~ 3.2 神经网络的定义
    ~ 3.3 神经网络的前向传播
    ~ 3.4 神经网络的反向求导
  4. 四个不同的层面讲解反向传播
    ~ 4.1 反向传播的通用公式
    ~ 4.2 反向传播的电路解释
    ~ 4.3 反向传播的流程图解释
    ~ 4.4 神经网络中的误差信号解释
  5. 项目建议

1 分类背景
1.1 自然语言处理中词分类的思想和标识

通常情况下我们会有一个模型训练样本的数据集 { x i , y i } N \{x_i,y_i\}^N {xi,yi}N.
其中 x i x_i xi是输入,比如我们训练好的词向量,基于某个窗口的上下文,句子,文档等;
其中 y i y_i yi是对应的分类标签,比如情感标签,实体标签。
下面是一个简单的通过逻辑回归的线性决策边界,对映射到二维空间的词向量进行分类的图例:
在这里插入图片描述

1.2 基于softmax的分类器的定义
我们在训练集中 x i , y i x_i,y_i xi,yi已知的情况下,通过学习逻辑回归的权重 W ∈ W\in W R C ∗ d R^{C*d} RCd,即决策边界。其中W代表权重矩阵,其中C代表分类标签的个数,d代表x的维度。
所以在W已知的情况下,对于每个x,他被分为y标签的概率公式为:
在这里插入图片描述
其中 W y W_y Wy表示取W权重矩阵的的第y行。明显我们可以观察到上式是一个softmax形式的函数。因此我们称之为基于softmax的分类器。

1.3 softmax分类器损失函数定义
对于每一个训练样本{ x i , y i x_i,y_i xi,yi},我们的目标是最大化 x i x_i xi被正确分类成 y i y_i yi的概率,即最小化这个概率的负log形式:
在这里插入图片描述
其中 f y = W y x = ∑ i = 1 d W y i x i f_y=W_yx=\sum_{i=1}^d W_{yi}x_i fy=Wyx=i=1dWyixi
其实此处我们的目标函数相当于一个交叉熵损失函数,如果我们把分类任务的ground truth当成一个one-hot向量,即[…,0,0,…1,…,0,0,…] ∈ R 1 ∗ C \in R^{1*C} R1C,我们通过p(y|x)预测得到各个分类的的概率也可以拼凑成一个1*C维的向量,在此我们就可以就算两个向量的交叉熵了,交叉熵的损失函数定义为:
在这里插入图片描述
其中p©为真实的样本是c类的概率,q©是预测的,即通过p(y|x)计算出来的概率;通过上面描述我们可知,ground truth向量是一个one-hot向量,即当预测一个x时,只有是他真实分类的q©是1,其他都是0;所以交叉熵损失函数中 ∑ \sum 符号和q©此时就没有了存在的意义,而去掉这两个符号的交叉熵损失函数就变成了softmax形式的损失函数。所以说他俩在此处是等价的。
由以上描述我们可以得到对于整个训练集{ x i , y i x_i,y_i xi,yi},损失函数的形式如下:
在这里插入图片描述
我们可以看出,其实上式是一个对于训练集的平均交叉熵损失函数。由于下面2.3部分也用到了softmax分类器的训练方式,所以训练方法在2.3部分介绍。

1.4 正则化项在模型中的作用
在这里插入图片描述
这是一个加入正则化项的损失函数,对于一个机器学习的学习者来说,正则项的作用我就不做太多赘述了,其作用其实就是降低模型参数的复杂度,防止过拟合。如果真的是小白,出门左转~
在这里插入图片描述
由上图我们可以看出,模型复杂度越高,模型的训练集误差会越来越小;而随着模型复杂度的增高,测试集的误差会先减小后增大;这是因为模型太复杂时,模型变得过拟合。也就是说模型参数过度拟合了训练集的样本,时模型丧失了鲁棒性。所以在过拟合后,模型在训练集上效果会越来越好,在测试集上效果越来越差。

1.5 讨论在分类器的训练过程中重训练(retrain)词向量的必要性
对于一般的机器学习任务,我们只学习参数W,而不会retrain词向量。那么如果我们在这个时候也retrain词向量会发生什么呢?
下图是只学习参数W的分类器效果:
在这里插入图片描述
其中,TV、telly、televison三个单词会成功的划分到一起。

下图是不仅仅学习决策边界,还retrain词向量的分类器效果:
在这里插入图片描述
由上图我们可以看到,当telly和TV都在训练集中时,retrain词向量后,telly和TV在空间中的位置都发生了变化;televison没有在训练集中,所以television在空间中的位置没有变化。也这因为这个原因,television相对于telly和TV的位置发生了变化,在分类时发生了偏差。

根据以上我们可以总结出:
(1) 如果训练集的规模比较小,那我们就不要retrain词向量,否则会发生上图中效果。
(2) 如果我们有规模很大的数据集,那么retrain词向量会更遵循每个单词词向量在这个任务中的分布,从而使实验效果更理想。

2. 基于窗口的词分类任务
2.1 基于窗口的分类器定义

目前,仅仅分类单个单词的任务已经很少有人做了。现在更有趣的问题是根据上下文信息对单词进行语义消歧。
比如课程中提到的下面的两个例子:
在这里插入图片描述
在这里插入图片描述
由以上两个例子我们可知,根据单个单词分类已经不可能了;因为同样的单词,在不同的语境(上下文)中可能含有不同甚至相反的含义。此时基于窗口的词分类任务应运而生,这时候我们不仅仅用单一的单词,还用到他上下文的单词,共同决定这个中心词的类别。

2.2 一个简单的基于窗口的分类器:softmax
一个基于窗口的softmax分类器定义为:以待分类单词为中心词,取其周围某个窗口大小内的单词向量,将其进行拼接,构成分类器的输入;分类器的输出即为中心词的类别。
一个窗口大小为2,对Paris进行分类的例子:
在这里插入图片描述
其中 X w i n d o w ∈ R 5 d X_{window}\in R^{5d} XwindowR5d

所以一个基于窗口的softmax分类器相当于以 X w i n d o w X_{window} Xwindow为输入的softmax分类器。softmax分类器我们在1.2,1.3中叙述过了,其中平均交叉熵损失函数为:
在这里插入图片描述
其中 f y = W y x = ∑ i = 1 d W y i x i f_y=W_yx=\sum_{i=1}^d W_{yi}x_i fy=Wyx=i=1dWyixi

那么到此损失函数有了,我们怎么样训练这个分类器呢?看下一部分吧~~

2.3 基于窗口softmax分类器的求梯度过程
通过2.2我们得到了模型损失函数,那么接下来我们就以求一下对于词向量X求偏导得到的梯度(此部分假设retrain词向量)为例,权重矩阵W的梯度类似。
在这里插入图片描述
其中 f y = W y x = ∑ i = 1 d W y i x i f_y=W_yx=\sum_{i=1}^d W_{yi}x_i fy=Wyx=i=1dWyixi
此时我们求出了词向量的梯度,更新词向量的公式为:
x = x − ∇ x J x=x-\nabla_xJ x=xxJ
其中x为词向量; ∇ x J \nabla_xJ xJ为梯度; α \alpha α是学习率。
权重矩阵的求梯度公式和更新公式类似,此处不再赘述。

3. 基于神经网络的词分类任务
3.1 神经网络的优势

对于少量的数据,softmax分类器这种通过线性分类边界进行分类的模型可能表现还不错,但是如果遇到复杂且大量的数据,这种简单的模型可能就很难拟合数据。此时神经网络出现了,下面是两种模型的效果图:
在这里插入图片描述
左边是softmax分类器,右边是基于神经网络的分类器。效果一眼便能看出,神经网络能够产生非线性的决策边界,从而拟合更加复杂的数据。

3.2 神经网络的定义
如果你能明白softmax模型是如何工作的,那么你就能明白一个基本的神经单元如何工作的。如下图是一个简单的神经单元:
在这里插入图片描述
在这个例子中,一个神经元含有三个输入,一个输出。神经元本质上就是一个二分的逻辑回归单元,其中参数为w,b。
在这里插入图片描述
其中x是输入,w是权重,b是偏置,f是激活函数, h w , b ( x ) h_{w,b}(x) hw,b(x)为这个神经元的输出。其中f是一个非线性的函数,比如sigmod函数:
在这里插入图片描述
神经网络最关键的部分就是这个激活函数,这是因为神经网络采用了非线性的激活函数,才能使神经网络更好的拟合复杂的数据特征。

3.3 神经网络的前向传播
如果我们把一个输入向量 喂给一系列的逻辑回归单元,我们就能得到一个输出向量,如左图。如果我们将输出继续喂给一系列的逻辑回归单元,这样延伸下去就构成了多层神经网络,如右图。根据我们任务的不同,设置最后一层神经元的个数。
在这里插入图片描述
下面是单层神经网络中的一些矩阵符号表示:
在这里插入图片描述
其中,输入通过一层神经网络的传播得到 a 1 , a 2 , a 3 a_1,a_2,a_3 a1,a2,a3的过程表示为:
在这里插入图片描述
将上式表示成矩阵就是下面这样:
在这里插入图片描述
通过上式我们可以知道,如果我们不采用非线性的激活函数,输入经过两层神经网络后表示为 W 2 W 1 X W_2W_1X W2W1X,最后还是WX,依然是线性变换。因此神经网络采用非线性函数,能够更加拟合复杂的数据。

神经网络的最后一层我们可以计算一个通过softmax计算出来的概率值,也可以仅仅计算一个非规格化的分数(score)。以我们前面2.2中Paris作为中心词的分类任务为例,可以展示一个3层神经网络的前向传播的效果:
在这里插入图片描述
其中, X w i n d o w s X_{windows} Xwindows是神经网络的输入层,f是非线性的激活函数,W是一二层之间的权重矩阵,U是二三层的权重矩阵。
从输入 X w i n d o w s X_{windows} Xwindows到得到输出S,这一个计算过程就称为神经网络的前向传播过程。

3.4 神经网络的反向求导
根据上面的分类任务,我们可以这样定义目标策略:最大化以Paris为中心词的窗口得分,最小化不是以Paris为中心词的得分(类似word2vec中负采样)。为了遵循这个策略,我们将目标函数设置为最大间隔损失函数:
在这里插入图片描述
其中:
在这里插入图片描述
在这里插入图片描述
计算S或者 S c S_c Sc的导数,涉及到的变量有W,U,b, x。
在这里插入图片描述
对权重矩阵W求偏导具体过程:
在这里插入图片描述
其中f函数为逻辑回归函数,因此f’(z)=f(z)(1-f(z))
如果我们想求整个权重矩阵的梯度,则转化成矩阵形式 ∂ s ∂ W = δ x T \frac{\partial s}{\partial W}=\delta x^T Ws=δxT

对于偏置b求偏导具体过程为:
在这里插入图片描述
∂ s ∂ b i = δ i \frac{\partial s}{\partial b_i}=\delta _i bis=δi

对于词向量x求偏导的具体过程为:
在这里插入图片描述
∂ s ∂ x j = W . j T δ \frac{\partial s}{\partial x_j}=W{^T_{.j}}\delta xjs=W.jTδ

对于第二层的权重矩阵U求偏导的具体过程为:
在这里插入图片描述

4. 四个不同的层面讲解反向传播
其实我觉得反向传播最精髓的地方就是记住链式求导法则,遵循链式求导法则。

4.1 反向传播的通用公式
对于一般神经网络反向传播的过程,上翻3.4部分,此处不再赘述

4.2 反向传播的电路解释
此部分采用类似电路的模式来模拟神经网络的传播过程。
在这里插入图片描述
从右往左,我们可以依次计算每个节点对应的梯度,主要的计算是前一个节点的梯度乘以当前节点的梯度:
在这里插入图片描述
这种反向回溯的过程放到神经元中就是反向传播,反向传播时每通过一级,就用链式法则乘以这一级的导数:
在这里插入图片描述

4.3 反向传播的流动图解释
此部分采用流动图(其实就是有向无环图)来模拟神经网络的传播过程。
当只有一条路径到达目标的时候:
在这里插入图片描述
将一条路径拓展到2条甚至多条路径时:
在这里插入图片描述
根据上面三张图我自己总结一下就是:同一条路径上梯度相乘,不同路径上的梯度相加;以此标准来进行反向传播,更新参数。
4.4 神经网络中的误差信号解释
对于我们定义的神经网络,其符号表示为:
在这里插入图片描述
其中课程给出了信号误差和梯度的计算公式:
在这里插入图片描述
总结一下信号公式的含义:
本层的信号误差=(本层权重矩阵的转置(乘上)上层传下来的误差信号)(哈达玛积)(本层输入函数的导数)
5. 项目建议
(1) 先定义好自己的问题,明确知己的目标是做什么。
(2) 根据自己的问题,确定实验所需数据集,可以用现成前人发布的数据集,也可以自己用爬虫在网络上爬取(不建议在爬取数据上花费大量的精力)。
(3) 确定自己实验结果的评价标注。比如机器翻译常用BLEU值;一般用准确率、召回率、F1值。根据数据特点和任务的不同采用不同的评价标准。
(4) 正确的将自己的数据划分成训练集、验证集和测试集。
(5) 可以先采用一些简单的、比较基础的模型完成目标,然后分析输出结果,适当调整和改变模型
(6) 将实验数据可视化,也可以将实验过程可视化,通过图表可以很明确的了解自己模型对于超参数不同大小的敏感度。
(7) 尝试改进或者混合模型,得到更好的实验效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值