第4章 word2vec的高速化
在自然语言处理领域,单词的密集向量表示称为词嵌入(word embedding)或者单词的分布式表示(distributed representation)。过去,将基于计数的方法获得的单词向量称为distributional representation,将使用神经网络的基于推理的方法获得的单词向量称为distributed representation。
负采样方法既可以求将正例作为目标词时的损失,同时也可以采样(选出)若干个负例,对这些负例求损失。然后,将这些数据(正例和采样出来的负例)的损失加起来,将其结果作为最终的损失。
本章所学的内容
1.Embedding层保存单词的分布式表示,在正向传播时,提取单词ID对应的向量;
2.因为word2vec的计算量会随着词汇量的增加而成比例地增加,所以最好使用近似计算来加速;
3.负采样计数采样若干例,使用这一方法可以将多分类问题转化为二分类问题进行处理;
4.基于word2vec获得的单词的分布式表示内嵌了单词含义,在相似的上下文中使用的单词在单词向量空间上处于相近的位置;
5.word2vec的单词的分布式表示的一个特性是可以基于向量的加减法运算来求解类推问题;
6.word2vec的迁移学习能力非常重要,它的单词的分布式表示可以应用于各种各样的自然语言处理任务。
第5章 RNN
前馈网络结构简单、易于理解,但是可以应用于许多任务中。不过,这种网络存在一个大问题,就是不能很好地处理时间序列数据,简称“时序数据”。更确切地说,单纯的前馈网络无法充分学习时序数据的性质。于是,RNN便应运而生。
语言模型给出了单词序列发生的概率。语言模型可以应用于多种应用,典型的例子有机器翻译和语音识别。语言模型也可以用于生成新的句子,因为语言模型可以使用概率来评价单词序列的自然程度,所以它可以根据这一概率分布造出(采样)单词。
在机器学习和统计学领域,经常会听到“马尔可夫性”(或者“马尔可夫模型”“马尔可夫链”)这个词。马尔可夫性是指未来的状态仅依存于当前状态。此外,当某个事件的概率仅取决于其前面的N个事件时,称为“N阶马尔可夫链”。
RNN通常译为“循环神经网络”。
RNN的特征在于拥有这样的一个环路(或回路)。这个环路可以使数据不断循环。通过数据的循环,RNN一边记住过去的数据,一边更新到最新的数据。
RNN层有环路。通过该环路,数据可以在层内循环。
时序数据按时间顺序排列。因此,我们用“时刻”这个词指代时序数据的索引。在自然语言处理的情况下,既使用“第t个单词”“第t个RNN层”这样的表述,也使用“时刻t的单词”或者“时刻t的RNN层”这样的表述。
将RNN层展开后,就可以视为在水平方向上延伸的神经网络,因此RNN的学习可以用与普通神经网络的学习相同的方式进行。
将循环展开后的RNN可以使用(常规的)误差反向传播法。换句话说,可以通过先进行正向传播,再进行反向传播的方式求目标梯度。因为这里的误差反向传播法是“按时间顺序展开的神经网络的误差反向传播法”。所以称为Backpropagation Through Time(基于时间的反向传播),简称BPTT。
在处理长时序数据时,通常的做法是将网络连接截成适当的长度。具体来说,就是将时间轴方向上过长的网络在合适的位置进行截断,从而创建多个小型网络,然后对截出来的小型网络执行误差反向传播法,这个方法称为Truncated BPTT(截断的BPTT)。
在Truncated BPTT中,网络连接被截断,但严格地讲,只是网络地反向传播的连接被截断,正向传播的连接依然被维持,这一点很重要。也就是说,正向传播的信息没有中断地传播。与此相对,反向传播则被截断为适当的长度,以被截断的网络为单位进行学习。
在进行RNN的学习时,必须考虑到正向传播之间是有关联的,这意味着必须按顺序输入数据。我们之前看到的神经网络在进行mini-batch学习时,数据都是随机选择的。但是,在RNN执行Trancate BPTT时,数据需要按顺序输入。
在RNN的学习中,通过将数据按顺序输入,从而继承隐藏状态进行学习。在进行mini-batch学习时,平移各批次输入数据的开始位置,按顺序输入。此外,如果在顺序输入数据的过程中遇到了结尾,则需要设法返回头部。
虽然Truncated BPTT的原理非常简单,但是关于数据的输入方法有几个需要注意的地方。具体而言,一是要按顺序输入数据,二是要平移各批次(各样本)输入数据的开始位置。
语言模型基于给定的已经出现的单词(信息)输出将要出现的单词的概率分布。困惑度常被用作评价语言模型的预测性能的指标。
简单来说,困惑度表示“概率的倒数”。
“分叉度”,是指下一个可以选择的选项的数量(下一个可能出现的单词的候选个数)。
基于困惑度可以评价模型的预测性能。好的模型可以高概率地预测出正确单词,所以困惑度较小(困惑度地最小值是1.0);而差的模型只能低概率地预测出正确单词,困惑度较大。
在信息论领域,困惑度也称为“平均分叉度”。这可以解释为,数据量为1时的分叉度是数据量为N时的分叉度的平均值。
本章的主题是RNN。RNN通过数据的循环,从过去继承数据并传递到现在和未来。如此,RNN层的内部获得了记忆隐藏状态的能力。
本章还利用RNN创建了语言模型。语言模型给单词序列赋概率值。特别地,条件语言模型从已经出现的单词序列计算下一个将要出现的单词的概率。通过构成利用了RNN的神经网络,理论上无论多么长的时序数据,都可以将它的重要信息记录在RNN的隐藏状态中。但是,在实际问题中,这一一来,许多情况下学习将无法顺利进行。
本章所学的内容
1.RNN具有环路,因此可以在内部记忆隐藏状态;
2.通过展开RNN的循环,可以将其解释为多个RNN层连接起来的神经网络,可以通过常规的误差反向传播法进行学习(=BPTT);
3.在学习长时序数据时,要生成长度适中的数据块,进行以块为单位的BPTT学习(=Truncated BPTT);
4.Truncated BPTT只截断反向传播的连接;
5.在Truncated BPTT中,为了维持正向传播的连接,需要按顺序输入数据;
6.语言模型将单词序列解释为概率;
7.理论上,使用RNN层的条件语言模型可以记忆所有已出现单词的信息。