吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings

吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings

1 Word Representation


上节课咱们介绍过表征单词的方式是首先创建一个较大的词汇表(例如10000),而后使用one-hot的方式对每一个单词进行编码。例如单词Man,Woman,King,Queen,Apple,Orange分别出如今词汇表的第5391,9853,4914,7157,456,6257的位置,则它们分别用O5391,O9853,O4914,O7157,O456,O6257表示。算法

这中one-hot表征单词的方法最大的缺点就是每一个单词都是独立的、正交的,没法知道不一样单词之间的类似程度。例如Apple和Orange都是水果,词性相近,可是单从one-hot编码上来看,内积为零,没法知道两者的类似性。在NLP中,咱们更但愿能掌握不一样单词之间的类似程度。数据库

所以,咱们可使用特征表征(Featurized representation)的方法对每一个单词进行编码。也就是使用一个特征向量表征单词,特征向量的每一个元素都是对该单词某一特征的量化描述,量化范围能够是[-1,1]之间。特征表征的例子以下图所示:
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
特征向量的长度依状况而定,特征元素越多则对单词表征得越全面。这里的特征向量长度设定为300。使用特征表征以后,词汇表中的每一个单词均可以使用对应的300 x 1的向量来表示,该向量的每一个元素表示该单词对应的某个特征值。每一个单词用e+词汇表索引的方式标记,例如e5391, e9853, e4914, e7157, e456, e6257。网络

这种特征表征的优势是根据特征向量能清晰知道不一样单词之间的类似程度,例如Apple和Orange之间的类似度较高,极可能属于同一类别。这种单词“类别”化的方式,大大提升了有限词汇量的泛化能力。这种特征化单词的操做被称为Word Embeddings,即单词嵌入。app

值得一提的是,这里特征向量的每一个特征元素含义是具体的,对应到实际特征,例如性别、年龄等。而在实际应用中,特征向量不少特征元素并不必定对应到有物理意义的特征,是比较抽象的。可是,这并不影响对每一个单词的有效表征,一样能比较不一样单词之间的类似性。ide

每一个单词都由高维特征向量表征,为了可视化不一样单词之间的类似性,可使用降维操做,例如t-SNE算法,将300D降到2D平面上。以下图所示:
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
从上图能够看出类似的单词分布距离较近,从而也证实了Word Embeddings能有效表征单词的关键特征。函数

2 Using Word Embedding


以前咱们介绍过Named entity识别的例子,每一个单词采用的是one-hot编码。以下图所示,由于“orange farmer”是份职业,很明显“Sally Johnson”是一我的名。
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
若是采用featurized representation对每一个单词进行编码,再构建该RNN模型。对于一个新的句子:性能

Robert Lin is an apple farmer学习

因为这两个句子中,“apple”与“orange”特征向量很接近,很容易能判断出“Robert Lin”也是一我的名。这就是featurized representation的优势之一。测试

能够看出,featurized representation的优势是能够减小训练样本的数目,前提是对海量单词创建特征向量表述(word embedding)。这样,即便训练样本不够多,测试时遇到陌生单词,例如“durian cultivator”,根据以前海量词汇特征向量就判断出“durian”也是一种水果,与“apple”相似,而“cultivator”与“farmer”也很类似。从而获得与“durian cultivator”对应的应该也是一我的名。这种作法将单词用不一样的特征来表示,即便是训练样本中没有的单词,也能够根据word embedding的结果获得与其词性相近的单词,从而获得与该单词相近的结果,有效减小了训练样本的数量。优化

featurized representation的特性使得不少NLP任务能方便地进行迁移学习。方法是:

  • 从海量词汇库中学习word embeddings,即全部单词的特征向量。或者从网上下载预训练好的word embeddings。
  • 使用较少的训练样本,将word embeddings迁移到新的任务中。
  • (可选):继续使用新数据微调word embeddings。

建议仅当训练样本足够大的时候,再进行上述第三步。

有趣的是,word embeddings与吴恩达《卷积神经网络》精炼笔记(4)– 人脸识别与神经风格迁移中介绍的人脸特征编码有不少类似性。人脸图片通过Siamese网络,获得其特征向量f(x),这点跟word embedding是相似的。两者不一样的是Siamese网络输入的人脸图片能够是数据库以外的;而word embedding通常都是已创建的词汇库中的单词,非词汇库单词统一用< UNK >表示。

3 Properties of Word Embeddings


Word embeddings能够帮助咱们找到不一样单词之间的类似类别关系。以下图所示:
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
上例中,特征维度是4维的,分别是[Gender, Royal, Age, Food]。常识地,“Man”与“Woman”的关系类比于“King”与“Queen”的关系。而利用Word embeddings能够找到这样的对应类比关系。

咱们将“Man”的embedding vector与“Woman”的embedding vector相减:
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
相似地,咱们将“King”的embedding vector与“Queen”的embedding vector相减:
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
相减结果代表,“Man”与“Woman”的主要区别是性别,“King”与“Queen”也是同样。

通常地,A类比于B至关于C类比于“?”,这类问题可使用embedding vector进行运算。
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
还能够计算Euclidian distance来比较类似性,即||u−v||^2。距离越大,类似性越小。

4 Embedding Matrix


假设某个词汇库包含了10000个单词,每一个单词包含的特征维度为300,那么表征全部单词的embedding matrix维度为300 x 10000,用E来表示。某单词w的one-hot向量表示为Ow,维度为10000 x 1,则该单词的embedding vector表达式为:
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
所以,只要知道了embedding matrix E,就能计算出全部单词的embedding vector ew。后面咱们将重点介绍如何求出E。

值得一提的是,上述这种矩阵乘积运算E⋅Ow效率并不高,矩阵维度很大,且Ow大部分元素为零。一般作法是直接从E中选取第w列做为ew便可。

5 Learning Word Embeddings


embedding matrix E能够经过构建天然语言模型,运用梯度降低算法获得。举个简单的例子,输入样本是下面这句话:

I want a glass of orange (juice).

经过这句话的前6个单词,预测最后的单词“juice”。E未知待求,每一个单词可用embedding vector ew表示。构建的神经网络模型结构以下图所示:
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
这种算法的效果还不错,可以保证具备类似属性单词的embedding vector相近。

为了让神经网络输入层数目固定,能够选择只取预测单词的前4个单词做为输入,例如该句中只选择“a glass of orange”四个单词做为输入。固然,这里的4是超参数,可调。

通常地,咱们把输入叫作context,输出叫作target。对应到上面这句话里:

  • context: a glass of orange
  • target: juice

关于context的选择有多种方法:

  • target前n个单词或后n个单词,n可调
  • target前1个单词
  • target附近某1个单词(Skip-Gram)

事实证实,不一样的context选择方法都能计算出较准确的embedding matrix E。

6 Word2Vec


上一小节咱们介绍了context和target的选择方法,比较流行的是采用Skip-Gram模型。如下面这句话为例:

I want a glass of orange juice to go along with my cereal.

Skip-Gram模型的作法是:首先随机选择一个单词做为context,例如“orange”;而后使用一个宽度为5或10(自定义)的滑动窗,在context附近选择一个单词做为target,能够是“juice”、“glass”、“my”等等。最终获得了多个context—target对做为监督式学习样本。

训练的过程是构建天然语言模型,通过softmax单元的输出为:
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
相应的loss function为:
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
而后,运用梯度降低算法,迭代优化,最终获得embedding matrix E。

然而,这种算法计算量大,影响运算速度。主要由于softmax输出单元为10000个,y^计算公式中包含了大量的求和运算。解决的办法之一是使用hierarchical softmax classifier,即树形分类器。其结构以下图所示:
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
这种树形分类器是一种二分类。与以前的softmax分类器不一样,它在每一个数节点上对目标单词进行区间判断,最终定位到目标单词。这比如是猜数字游戏,数字范围0~100。咱们能够先猜50,若是分类器给出目标数字比50大,则继续猜75,以此类推,每次从数据区间中部开始。这种树形分类器最多须要log N步就能找到目标单词,N为单词总数。

实际应用中,对树形分类器作了一些改进。改进后的树形分类器是非对称的,一般选择把比较经常使用的单词放在树的顶层,而把不经常使用的单词放在树的底层。这样更能提升搜索速度。

最后提一点,关于context的采样,须要注意的是若是使用均匀采样,那么一些经常使用的介词、冠词,例如the, of, a, and, to等出现的几率更大一些。可是,这些单词的embedding vectors一般不是咱们最关心的,咱们更关心例如orange, apple, juice等这些名词等。因此,实际应用中,通常不选择随机均匀采样的方式来选择context,而是使用其它算法来处理这类问题。

Skip-Gram模型是Word2Vec的一种,Word2Vec的另一种模型是CBOW(Continuous Bag of Words)。关于CBOW此处再也不赘述。

7 Negative Sampling


吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings

Negative sampling是另一种有效的求解embedding matrix E的方法。它的作法是判断选取的context word和target word是否构成一组正确的context-target对,通常包含一个正样本和k个负样本。例如,“orange”为context word,“juice”为target word,很明显“orange juice”是一组context-target对,为正样本,相应的target label为1。若“orange”为context word不变,target word随机选择“king”、“book”、“the”或者“of”等。这些都不是正确的context-target对,为负样本,相应的target label为0。通常地,固定某个context word对应的负样本个数k通常遵循:

  • 若训练样本较小,k通常选择5~20;
  • 若训练样本较大,k通常选择2~5便可。

Negative sampling的数学模型为:

其中,σ表示sigmoid激活函数。

很明显,negative sampling某个固定的正样本对应k个负样本,即模型总共包含了k+1个binary classification。对比以前介绍的10000个输出单元的softmax分类,negative sampling转化为k+1个二分类问题,计算量要小不少,大大提升了模型运算速度。

最后提一点,关于如何选择负样本对应的target单词,可使用随机选择的方法。但有资料提出一个更实用、效果更好的方法,就是根据该词出现的频率进行选择,相应的几率公式为:
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
其中,f(wi)表示单词wi在单词表中出现的几率。

8 GloVe Word Vectors


GloVe算法引入了一个新的参数:

Xij: 表示i出如今j以前的次数,即i和j同时出现的次数。

其中,i表示context,j表示target。通常地,若是不限定context必定在target的前面,则有对称关系Xij=Xji;若是有限定前后,则Xij≠Xji。接下来的讨论中,咱们默认存在对称关系Xij=Xji。

GloVe模型的loss function为
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
从上式能够看出,若两个词的embedding vector越相近,同时出现的次数越多,则对应的loss越小。

为了防止出现“log 0”,即两个单词不会同时出现,无相关性的状况,对loss function引入一个权重因子f(Xij):
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
当Xij=0时,权重因子f(Xij)=0。这种作法直接忽略了无任何相关性的context和target,只考虑Xij>0的状况。

出现频率较大的单词相应的权重因子f(Xij)较大,出现频率较小的单词相应的权重因子f(Xij)较小一些。具体的权重因子f(Xij)选取方法可查阅相关论文资料。

通常地,引入偏移量,则loss function表达式为:
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
值得注意的是,参数θi和ej是对称的。使用优化算法获得全部参数以后,最终的ew可表示为:
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
最后提一点的是,不管使用Skip-Gram模型仍是GloVe模型等等,计算获得的embedding matrix E的每个特征值不必定对应有实际物理意义的特征值,如gender,age等。

9 Sentiment Classification


吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings

情感分类通常是根据一句话来判断其喜好程度,例如1~5星分布。以下图所示:

情感分类问题的一个主要挑战是缺乏足够多的训练样本。而Word embedding偏偏能够帮助解决训练样本不足的问题。

首先介绍使用word embedding解决情感分类问题的一个简单模型算法。
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
如上图所示,这句话的4个单词分别用embedding vector表示。e8928, e2468, e4694, e3180计算均值,这样获得的平均向量的维度还是300。最后通过softmax输出1~5星。这种模型结构简单,计算量不大,不论句子长度多长,都使用平均的方式获得300D的embedding vector。该模型实际表现较好。

可是,这种简单模型的缺点是使用平均方法,没有考虑句子中单词出现的次序,忽略其位置信息。而有时候,不一样单词出现的次序直接决定了句意,即情感分类的结果。例以下面这句话:

Completely lacking in good taste, good service, and good ambience.

虽然这句话中包含了3个“good”,可是其前面出现了“lacking”,很明显这句话句意是negative的。若是使用上面介绍的平均算法,则极可能会错误识别为positive的,由于忽略了单词出现的次序。

为了解决这一问题,情感分类的另外一种模型是RNN。
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
该RNN模型是典型的many-to-one模型,考虑单词出现的次序,可以有效识别句子表达的真实情感。

值得一提的是使用word embedding,可以有效提升模型的泛化能力,即便训练样本很少,也能保证模型有不错的性能。

10 Debiasing Word Embeddings


Word embeddings中存在一些性别、宗教、种族等偏见或者歧视。例以下面这两句话:

Man: Woman as King: Queen
Man: Computer programmer as Woman: Homemaker
Father: Doctor as Mother: Nurse

很明显,第二句话和第三句话存在性别偏见,由于Woman和Mother也能够是Computer programmer和Doctor。

以性别偏见为例,咱们来探讨下如何消除word embeddings中偏见。
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
首先,肯定偏见bias的方向。方法是对全部性别对立的单词求差值,再平均。上图展现了bias direction和non-bias direction。
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
而后,单词中立化(Neutralize)。将须要消除性别偏见的单词投影到non-bias direction上去,消除bias维度,例如babysitter,doctor等。
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings
最后,均衡对(Equalize pairs)。让性别对立单词与上面的中立词距离相等,具备一样的类似度。例如让grandmother和grandfather与babysitter的距离同一化。
吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings值得注意的是,掌握哪些单词须要中立化很是重要。通常来讲,大部分英文单词,例如职业、身份等都须要中立化,消除embedding vector中性别这一维度的影响。

相关文章
相关标签/搜索