吴恩达《深度学习》第五课第二周

序列模型——自然语言处理与词嵌入

2.1 词汇表征

1.通常在序列模型中我们设置词汇表

吴恩达《深度学习》第五课第二周

表征一个词汇的集合,对某个具体的单词,使用one-hot形式表示,比如:

吴恩达《深度学习》第五课第二周

这样表征虽然思路简单,但是存在一个缺陷:由于任意两个词汇one-hot进行内积所得的结果均为0,因此无法描述词汇之间的某些联系。比如apple和orange都是水果,那么在预测下面两句话时本应该有借鉴作用。

吴恩达《深度学习》第五课第二周

2.特征化表征:词嵌入

为解决one-hot无法描述词汇之间关系的问题,我们采用另外一种表征方式,提取一些可能的描述特征,如下:

吴恩达《深度学习》第五课第二周

假设有300个特征,这样每个单词会有一个由300元素组成的列向量,此时有相似特性的单词在距离上就会更靠近,将这些向量降维至2维,会得到下图所示的分类

吴恩达《深度学习》第五课第二周

2.2 词嵌入的使用

1.在NPL中的应用原理,词嵌入其本质是迁移学习,可以利用大量的无标签文本来构建词嵌入学习到大量有用的知识,在NPL算法只有很少训练样本的情况下,可以帮助识别出一些不在样本里的词汇的意义。比如:

吴恩达《深度学习》第五课第二周

Drian cultivator(榴莲培育工)这个词汇在训练样本中未出现,但是由于有词嵌入算法的辅助可以得到drian接近orange,cultivator接近farmer,由此推断出Drian cultivator是人,因而学习到robert lin 是人名。

2.3词嵌入的特性:类比推理

1.类比推理就是根据两个词之间的某种联系,推理出其他具有相似联系的两个词汇。其实现的思路如下图。

吴恩达《深度学习》第五课第二周

2.余弦相似度:作为一种测量两个词嵌入向量间相似度的方法。

吴恩达《深度学习》第五课第二周

2.4嵌入矩阵

1.嵌入矩阵

当我们使用算法来学习词嵌入时实际上是学习一个嵌入矩阵。假设字典包含10k个单词,特性为300,这样可以构成一个嵌入矩阵E(300 X 10K)

吴恩达《深度学习》第五课第二周

假设单词orange在字典中的编号为6257,则orange的one-hot向量为O_6257是一个10k的向量,此时字典中j(6257)单词的嵌入向量为e_j

吴恩达《深度学习》第五课第二周

Tips:在实际运用中,想获取某个单词的嵌入向量通常是使用函数直接从嵌入矩阵中查找某列,而不需要进行矩阵运算。

2.5学习词嵌入

1.神经语言模型,使用神经网络来推测下面句子中缺少的单词

吴恩达《深度学习》第五课第二周

首先建立每个单词的嵌入向量,将I,want,a, glass, of, orange这6个单词的嵌入向量作为神经网络的特征输入来训练神经网络

吴恩达《深度学习》第五课第二周

在这种算法中还需要设置窗口大小,即利用前窗口大小个数据(称为context:上下文)来预测下一个数据。假设取size=4,那么神经网络的输入将不再是1800而是1200

2.上下文与目标单词选择的方式

(1)选择目标单词前的size个词汇

(2)选择目标单词左右各选取size个词汇

(3)选择目标单词前的1个词汇

(4)选择目标单词附近的1个词汇:skip gram算法

通常建立语言模型时选择的方式为(1),而学习词嵌入则可选用(2-4)方式

2.6word2vec

1.作用:一种简单且高效的学习词嵌入的方式

2.Skip-grams

假设训练集给定例句:I want a glass of orange juice to go along with my cereal,我们需要抽取上下文和目标词相配对,这样一来就构造了一个监督学习问题。在这个问题中上下文context不一定是目标词target最近的某几个词,而是随机的选取一个词,比如:orange。然后随机的在一定范围内选另一个词,这样会构成对个词对,但其中只有1个能构成上下文关系,但Skip-grams并不是要解决这个监督学习问题,而是要通过这种方式来学习一个词嵌入模型。

3. word2vec模型

假设词表大小为10,000k,我们选定的context=orange,target=juice构成一个映射,整个学习及转换过程如下:

 

4.存在的问题

(1)计算速度:在softmax分类中需要计算的概率公式如下图,需要对词表中的1000个单词做求和计算,此时计算量并不庞大,但是当词表为100K甚至更大时那么分母中的求和操作会变得相当慢。

吴恩达《深度学习》第五课第二周

对于这个问题可以使用 分级softmax:该算法不是在整个词表中进行比对查找,而是使用类似二叉树的方法分级查找,这样计算量将是原来的log|v|。而且在工程应用中通常不使用完美平衡的分类树,而是

吴恩达《深度学习》第五课第二周

(2)如何对context采样

一旦对c采样,那么target词汇就在c正负10个单词范围内采样。因此对c采样的方法很重要通常有两种方法:一是对语料库均匀且随机的采用,这样会使the, of, a, and, to等简单词汇频繁出现,这种方法显然不好;二是采用的不同的启发来平衡常见词和不常见词之间出现的频率

2.7负采样:解决softmax的速度问题

1.生成训练集

还以2.6节中的例句为例,假设选择了orange为context在该词正负10个词的范围内随机每选择一个word作为target即可和context组成一个数据对作为输入X,只有当word=juice=target时y=1,其余均为0.对于K的选择原则是:当数据集较小时,K=5~20;当数据集较大时,K=2~5.在下图中K=4,而不是5.

吴恩达《深度学习》第五课第二周

2.模型

使用生成的训练样本来训练一个逻辑回归模型计算c(context)与t(target)配对时的概率,如下图

吴恩达《深度学习》第五课第二周

注意此时c是确定的,因此在计算P(y=1|c,t)时每给定一个t就有一个概率值,而t的可选数量是由词典的size决定的。假设size=10000,那么将有10000个二分类节点,但是我们每次迭代只训练其中的K个负样本和1个正样本(代表真正目标的那个分类器),因此计算成本非常低,将这个过程转化成神经网络模型为:

吴恩达《深度学习》第五课第二周

3.选取负样本

(1)使用在语料库里的经验频率进行采样,但是会导致the, of, and这类高频词被采样

(2)用1:词汇表总词数均匀且随机的抽取,但这对英文样本没有代表性

(3)使用英文文本分布频率,频率公式如下,其中f(w_i)是观察到的某个词的频率

吴恩达《深度学习》第五课第二周

2.8 Glove(global vectors)词向量

1. Glove词向量模型之所有被大量采用,是因为其原理更简单而且效果也很好。在word2vec或skip-grams中采用的是c和t词对,而在glove中使用X_ij(类似一个计数器)来表示i出现在上下文j中的次数,这里i相当于c,j相当于t。通常在定义上下文和目标词的范围在正负10个词的时候,会有X_ij = X_ji的对称关系。

2.glove模型

在模型中我们的优化目标是,

吴恩达《深度学习》第五课第二周

其实质是对i和j两个词同时出现的概率进行预测。f(X_ij)表示加权项,其作用非常大我们可以通过设定f(X_ij=0)=0来限制(-log X_ij)^2变得无穷大,f()的选择有一些基本原则——既不给诸如:this, is, of, a等高频词汇过高的权重;也不给诸如:durian等低频词汇过低的权重。在优化目标中theta和e是对称的,因此有一种训练方法就是一致地初始化theta和e,然后使用梯度下降来最小化输出,当每个词都处理完之后取平均值。

吴恩达《深度学习》第五课第二周

3.词潜入特征的说明

例如在下图这个例子中,有gender, royal, age, food四个特征

吴恩达《深度学习》第五课第二周

在使用某种算法来学习一个词嵌入时,我们无法保证嵌入向量的每个独立组成是可理解的。也就是说算法在学习过程中对每个特性学习的结果之间是正交的,可能是下图所示的。

吴恩达《深度学习》第五课第二周

但是这不影响算法的有效性,因为在线性运算中有这样一个特性

吴恩达《深度学习》第五课第二周

 

2.9情感分类模型

1.情感分类问题:对评语做出好恶的判断

吴恩达《深度学习》第五课第二周

情感分类的难点是标记的训练样本没有那么多。

2.简单情感分类模型

使用平均计算对任意长度的句子进行评分

吴恩达《深度学习》第五课第二周

这个算法的最主要的问题是没有考虑词序,尤其是负面的评价中类似:没有好的环境、好的味道、好的厨师,这句话里有很多个好,以至于算法会觉得这是一个正面的评价。

3.RNN情感分类

吴恩达《深度学习》第五课第二周

这是一个典型的多对一的RNN模型,可以学到类似not good这个词组,从而得出更准确的判断

2.10词嵌入除偏

1.词嵌入中的偏见问题

我们要解决的偏见问题是下图中这些错误预测的结果

 

吴恩达《深度学习》第五课第二周

算法很容易学习到语料库中的一些偏见看法,而消除偏见有助于司法、教育、医疗等社会问题的公平解决和相关政策的制定。

2.定位词嵌入中的偏差(性别歧视)

(1)辨别词嵌入中偏见的趋势

吴恩达《深度学习》第五课第二周

(2)中和:对于定义不明确的词可以将其处理一下以避免偏见,比如有些词天生就和性别有关,如:father,mother。但是有些词如:doctor、babysitter等可以将它们投射到non-bias坐标轴来减少或消除它们性别歧视趋势的成分,也就是减少bias轴上的分量。

吴恩达《深度学习》第五课第二周

(3)均衡:对于grandmother、grandfather这样的词对,如果babysitter经过中和处理后改变了与grandmother、grandfather之间距离(即从相等变成不等了),而均衡步骤要做的就是,将grandmother、grandfather词对移动到与non-bias轴对称的位置

吴恩达《深度学习》第五课第二周