Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings

一.词嵌入介绍

1.词汇表征

在之前,我们是根据单词在词汇表中的位置来表示单词的(one-hot),而这个方法有一个缺点。
1
在做如上图所示的迁移学习时,模型没法根据上一句的orange juice而判断得到下面一句apple的后面大概率也是juice。有一种方法能比较好的解决这个问题,那就是特征化的表示方法。
Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第1张图片
如上图所示,假设每个单词有300维,每一维代表的都是一个特征,里面的值就代表这个特征和这个单词的关系,以Gender举例,假设Man的性别为-1,那么我们自然可以知道Woman的为1,而King和Man性别都为男,所以他们的值比较接近,同理,Queen也是。由此,一个单词就可以由很多维的特征值来表示。通过这种表示方法,我们就能判断出Apple和Orange比较接近,从而能让模型推理出apple后面是juice。
Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第2张图片
上面我们讨论的每个单词都是300维的,我们将之嵌入到一个二维空间中去,方便我们观察,这就是词嵌入。常用的可视化算法有t-SNE。

2.如何用词嵌入做迁移学习

Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第3张图片

  1. 从大量的文本集中学习词嵌入/下载预训练好的词嵌入模型
  2. 通过词嵌入迁移到新的只有少量标注训练集的任务
  3. (可选)选择要不要继续微调数据的词嵌入

一般在A的数据量比较大,B的数据量比较小时,我们才会做迁移学习。


人脸识别与文本迁移学习的差别:

  • 在人脸识别中,任给一张图片,NN都会计算出一个相应的编码,即使是陌生的图片。而文本中是有一个固定的词汇表,固定的编码,对于不认识的文本,用unk表示

3.词嵌入的特性

  • 词嵌入可以用来做类比推理
    Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第4张图片
    如上图所示,woman对应于man,现在要找到一个词对应于king,方法就是去遍历寻找,找到一个单词 ew e w 使得 emanewomanekingew e m a n − e w o m a n ≈ e k i n g − e w ,也就是使得 sim(ew,ekingeman+ewoman) s i m ( e w , e k i n g − e m a n + e w o m a n ) 这个相似度最大化。不过一般这种的准确率不高,大概只有30%~75%。
    其中一种计算相似度的方法是余弦相似度:
    sim(u,v)=uTvu2v2 s i m ( u , v ) = u T v ‖ u ‖ 2 ‖ v ‖ 2

    还可以用平方距离/欧氏距离来测量相异度,它和相似度的主要区别是对u和v之间距离的标准化的方式不同。

4.嵌入矩阵

Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第5张图片
我们需要学习一个嵌入矩阵E,通过E与单词的one-hot向量相乘,我们就可以得到这个单词的嵌入向量 ej e j

  • 学习一个嵌入矩阵E,我们通过随机初始化矩阵E,使用梯度下降法,学习矩阵中的各个参数,从而可以得到嵌入向量 ej e j
  • -

二.学习词嵌入:Word2Vec&Glove

1.Word2Vec

  • Skip-gram
    Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第6张图片

    Skip-gram就是通过一个目标词去预测四周最有可能出现的词。即抽取上下文和目标词进行配对,构造一个监督学习问题。举例来说,如上图所示,选定目标词为orange,skip_window=2代表从目标词左右各抽取2个词,num_skips=3代表从刚才抽取的词中选3个作为输出词。我们选择了juice,glass,my。
    Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第7张图片

    构建一个神经网络,训练数据就是如(orange,juice),(orange,glass),(orange,my)这样的一对词,假设词汇量为10000,最终的模型输出就是一个概率分布(维度为10000),即orange周围的词为a,为the……的概率,我们希望让juice、glass、my的概率尽可能的最大。计算概率的公式如下图所示的 P(t|c) P ( t | c ) 。在模型收敛后,我们就可以得到嵌入矩阵E了。
    Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第8张图片
    但是这样子计算概率有一个缺点,分母中需要对整个词汇表进行求和,计算速度会非常慢,有个解决方案是分级softmax分类器。目标词可能在前5000个中,在前5000个中又在前2500个中,直到最终在一个叶子节点找到它。这样不需要在为单次分类对词汇表中所有10000个词进行求和了,用这样的分类器树,计算成本与词汇表大小的对数成正比。

  • CBOW
    CBOW和Skip-gram相似,但是它是通过周围的词去预测中间的词。

2.负采样

Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第9张图片

负采样与Skip-gram还是比较相似的,选取(orange,juice)这个正样本的方式和Skip-gram一样,在目标词前后抽取,标记相应的y为1;而其余的则是从字典中随机抽取,记相应的y为0.。让模型去训练,从而达到能分辨这2种不同的采样方式。

  • 记负样本的数量为k,当小数据集的时候,k一般在5-20的范围选取;当大数据集的时候,k一般在2-5的范围选取。
    Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第10张图片
    模型的softmax公式如上图所示,负采样的速度要比Skip-gram快很多,是因为每次迭代不是更新所有的10000个单元,而是把它转化为10000个二分类问题,这样每个都很容易计算,每次迭代要做的也只是训练其中的t+1个。

另外,根据经验,通过概率公式A选取负样本比较好。如下:

P(Wi)=f(wi)3410000j=1f(wj)34 P ( W i ) = f ( w i ) 3 4 ∑ j = 1 10000 f ( w j ) 3 4

3.GloVe

Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第11张图片
这里的i和j分别就是上文中的c和t, Xij X i j 代表的意思就是i在j的周围出现的次数,当抽取的是某个单词周围范围比较大的词时, Xij=Xji X i j = X j i .
Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第12张图片
这里的 f(Xij) f ( X i j ) 是加权函数,这样更加好的照顾到常用词和非常用词,这里定义当 Xij=0 X i j = 0 时, f(Xij)=0 f ( X i j ) = 0 0log0=0 0 l o g 0 = 0

GloVe模型的损失函数如下图所示:
14

三.使用词嵌入的应用

1.情感分类

Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第13张图片
简单的情感分类模型如上,可以将每个单词的one-hot表示转为嵌入向量,然后求平均或者求和,通过一个softmax函数得到预计的输出评价等级。
不过这个有一点不好,当评价为Completely lacking in good taste,good serbvice,and good ambience.时,尽管这是一个负面的评价,但是有很多正面的词汇,模型可能判断为好的评价。下面的RNN模型可以解决这个问题。
Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第14张图片
在上一个模型的基础上,将各个单词的嵌入向量输入到一个RNN层中,这样可以得到比较不错的效果。

2.词嵌入除偏

Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第15张图片
在利用词嵌入模型时,有个问题就是词偏见,如上图所示的当Man对应为Computer Programmer时,Woman可能推测为Homemaker;Father对应为Doctor时,Mother为Nurse,这就是社会上的一种性别偏见现象。我们需要消除掉这种偏见。
Andrew Ng's deeplearning Course5Week2 Natural Language Processing&Word Embeddings_第16张图片

  1. 辨别出我们想要减少或想要消除的特定偏见的趋势。
  2. 对于那些定义不明确的词(如grandfather和grandmother就是性别很明确的词,而babysitter,doctor这种就是不明确的),减少或消除它们的偏差。
  3. 均衡步,使得有一致的相似度。(如在判断babysitter时,grandfather和grandmother都有可能)如图所示,就是将babysitter移到非偏见维度上,调整grandfather和grandmother的位置,使得它们到达babysitter的距离一致。

你可能感兴趣的:(Andrew,Ng,Deep,Learning,Andrew,Ng,深度学习,神经网络)