Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入

【第 5 部分-序列模型-第 2 周】在吴恩达深度学习视频基础上,笔记总结,添加个人理解,如有理解描述错误,请多加批评指教。后期参考 大树先生 Koala_Tree 的笔记总结进行修改,原文地址可看吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(5-2)– NLP和词嵌入- ZJ

Coursera 课程 |deeplearning.ai |网易云课堂

CSDN:http://blog.csdn.net/JUNJUN_ZHAO/article/details/79388398


自然语言处理与词嵌入 (NLP and Word Embeddings)

2.1 词汇表征 (Word representation)

上周的学习了 RNNs GRUs and LSTMs,这一部分,我们学习将那些运用在 自然语言处理中 (NLP)

深度学习已经对这一领域带来了革命性的变革。其中很关键的一个概念是 词嵌入 (Word Embeddings),是语言表示的一种方法,可以让算法自动理解一些类似的词,比如 男人对女人 (man is to woman),国王对皇后(King is to queen)等类似的例子。

通过词嵌入的概念,就可以构建 NLP 应用了。即使你的模型中,标记的训练值较小。这周课的最后,我们会学习如何消除词嵌入的偏差,就是去除不想要的特性。或者学习算法有时候会学到的其他类型的偏差。

在前面学习的内容中,我们表征词汇是直接使用英文单词来进行表征的,但是对于计算机来说,是无法直接认识单词的。为了让计算机能够能更好地理解我们的语言,建立更好的语言模型,我们需要将词汇进行表征。下面是几种不同的词汇表征方式:

One-hot Vector:

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第1张图片

  • 我们一直使用词汇表(Vocabulary)来表示词,如 | V |=10000 .
  • One-hot Vector ,如上图所示,使用 O5391 O 5391 表示 Man ,O 代表 One -hot

缺点:

  • 这种表示方法的一大缺点就是,把每个词都孤立起来了,导致算法对相关词的泛化能力不强。每个词向量之间的距离都一样,乘积均为0,所以无法获取词与词之间的相似性和关联性。

举个栗子 (Example):

假如你已经学习到了一种语言模型。

比如有下面这句话:

“I want a glass of orange __

可能想到的就是 “juice”

但是看到了另一句话时,比如:

“I want a glass of apple ___

如果算法不知道苹果和橙子的关系,就很难,从学习过的 橙子果汁,这样常见的东西或词语句子,推理出苹果果汁也是常见的东西或词语句子。

Why ?: 因为 上图中 Apple 和 Orange 两个 One -hot 向量的的内积是 0,所以没有什么意义,也就无法知道 橙子和苹果橙子和国王更相似

特征表征(Featurized representation):词嵌入

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第2张图片

  • 使用 特征化(Featurized representation) 表示。来表示 苹果 国王等词的 特征,数值化。

单词与单词之间是有很多共性的,或在某一特性上相近,比如 “苹果” 和 “橙子” 都是水果;或者在某一特性上相反,比如 “父亲” 在性别上是男性,“母亲” 在性别上是女性,通过构建他们其中的联系可以将在一个单词学习到的内容应用到其他的单词上来提高模型的学习的效率。

如上图所示,特征 比如 性别(Gender),高贵(Royal),年龄(Age),食物(Food)……等等,然后需要表示的 词,相对这些特征给出 数值化的度量。可以看到不同的词语对应着不同的特性有不同的系数值,代表着这个词语与当前特性的关系。在实际的应用中,特性的数量可能有几百种,甚至更多。

比如,Man 是一个 300 维度的向量,如上图所示,用 e5391 e 5391 来表示,其余同理。

对于单词 “orange” 和 “apple” 来说他们会共享很多的特性,比如都是水果,都是圆形,都可以吃,也有些不同的特性比如颜色不同,味道不同,但因为这些特性让 RNN 模型理解了他们的关系,也就增加了通过学习一个单词去预测另一个的可能性。(学习过 Orange juice 就可以更好的明白 Apple juice )

可视化词嵌入 (Visualizing word embeddings ):

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第3张图片

把一个 300 维的向量,嵌入到一个 二维空间当中,这样实现可视化。

  • 常用的可视化算法:t-SNE 算法

上图中圈起来的,表示聚集程度较高。相对而言,就可以看做成一个整体。特性相似,概念相似,等等,最终可以映射为相似的特征向量。

因为词性表本身是一个很高维度的空间,通过这个算法压缩到二维的可视化平面上,每一个单词 嵌入 属于自己的一个位置,相似的单词离的近,没有共性的单词离得远,这个“嵌入”的概念就是下一节的内容 词嵌 (word embeddings)。

上图中对于 “嵌入” (embeddings) 的理解,想象一个 300 维的空间,Orange 这个词的向量表示,就相当于嵌入到了 300 维空间的某个点上。为了 可视化,t-SEN 算法,将高维的空间映射到了低维空间。


2.2 使用词嵌入 (Using word embeddings)

学习目的:上节学习了不同单词的特征化表示,这节学习如何应用到 NLP 中。

举个栗子:(命名实体识别)

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第4张图片

如上图所示,从 句子中,找出 Sally Johnson 这个名字,由 orange farmer 可知,Sally Johnson 是个人名,而非公司名。若是用特征化表示方法表示嵌入的向量,用词嵌入作为输入训练好的模型,就能更容易的知道,因为 orange farmer and apple farmer 是相似的,所以,Robert Lin 也是个人名。

词嵌入的迁移学习(Transfer learning and word embeddings):

有了词嵌入,就可以让我们能够使用迁移学习,通过网上大量的无标签的文本中学习到的知识,应用到我们少量文本训练集的任务中。下面是做词嵌入迁移学习的步骤:

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第5张图片

使用词嵌入迁移学习主要通过以下三步:

  1. 获得词嵌:获得的方式可以通过训练大的文本集 (学习word Embeddings(1-100B words)或者下载很多开源的词嵌库
  2. 应用词嵌:将词嵌入模型迁移到我们小训练集的新任务上;
  3. 可选:使用我们新的标记数据对词嵌入模型继续进行微调。(如果训练量很小就不要更新了)

    • 当你的训练集数据较小时,词嵌入的作用最明显,所以在 NLP 应用很广泛。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第6张图片

词嵌入和人脸编码:

词嵌入和人脸编码之间有很奇妙的联系。在人脸识别领域,我们会将人脸图片预编码成不同的编码向量,以表示不同的人脸,进而在识别的过程中使用编码来进行比对识别。词嵌入则和人脸编码有一定的相似性。人们喜欢用 encoding 编码结果 来指代 向量 f(x(i)) f ( x ( i ) )

  • 人脸识别,就是 将一张图片,放到神经网络中,计算得出编码结果。

  • 词嵌入,就是有一个词汇表 | V | = 10000,通过,学习算法,网络,我们学习到 e1........e10000 e 1 . . . . . . . . e 10000 学习到一个固定的编码。

但是不同的是,对于人脸识别,我们可以将任意一个没有见过的人脸照片输入到我们构建的网络中,则可输出一个对应的人脸编码。而在词嵌入模型中,所有词汇的编码是在一个固定的词汇表中进行学习单词的编码以及其之间的关系的。


2.3 词嵌入的特性 (Properties of word embeddings)

之前学到了 词嵌入是如何帮助构建 NLP 应用。

此外,另一个迷人的特性是,能够帮助实现,类比推理

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第7张图片

提问: Man 对应 Woman ,那么 King 对应什么?

答案: Queen

So,能否有一种算法,可以自动推导出这种关系?

实现方法:

  • 典型的向量表示 是 50 到 1000 维,这里我们用简单的 4 维表示上图词汇向量,简单表示为 eman,ewoman...... e m a n , e w o m a n . . . . . .

  • 向量之间做相减运算:

    emanewoman2000 e m a n − e w o m a n ≈ [ − 2 0 0 0 ]

    ekingequeen2000 e k i n g − e q u e e n ≈ [ − 2 0 0 0 ]

以上可以看出来,两两之间相互的差别主要都是在 Gender 上。

所以对于上面的问题,算法所做的就是:找一个向量,使得公式两边结果相近。

emanewomanekinge? e m a n − e w o m a n ≈ e k i n g − e ?

正式探讨,将思想写成算法:

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第8张图片

如上图所示:在 300 D 的空间中, man to woman and king to queen ,两个 向量 (箭头)在 Gender 这一特性中的差值相似。

Find word w : arg maxw m a x w sim( ew,ekingeman+ewoman e w , e k i n g − e m a n + e w o m a n )

注意:

  • t-SEN 算法 将 300D 映射成 2D 可视化数据,但映射关系是 复杂的且非线性,所以不能总期望等式成立的关系,会像左边那样形成平行四边形,在 t-SEN 映射中都会失去原貌。

余弦相似度(Cosine similarity)

最常用的相似度函数,余弦相似度。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第9张图片

sim(u,v)=uTv||u||2||v||2 s i m ( u , v ) = u T v | | u | | 2 | | v | | 2

  • uTv u T v :u 和 v 的内积。
    -The norm of u u is defined as ||u||2=ni=1u2i | | u | | 2 = ∑ i = 1 n u i 2
  • 计算两个向量夹角 ϕ ϕ 的余弦。

如上图所示,夹角是 0 时,相似度就是 1 ,夹角是 90 度时,相似度就是 0 。180 度时 是 -1。因此,这就是余弦相似度 对于这种类比工作可以起到非常好的效果。

只要有足够大的语料库,就可以自主的发现上图右侧中所示例子中的模式。


2.4 嵌入矩阵 (Embedding matrix)

接下来将学习词嵌入 这个问题具体化,当你使用算法来学习词嵌入时,实际上是学习一个嵌入矩阵

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第10张图片

  • 词汇表: a aron … orange ……zulu …..

  • 如上图所示,词嵌入向量构建 嵌入矩阵 E,(300, 10000)维度,其中 orange 是 6257 个,其向量表示如上所示 One -hot vector O6257 O 6257 ,(10000, 1) 维度

  • 用 E 表示矩阵, Eo6257=[]=e6257 E ∗ o 6257 = [ ] = e 6257 是个 (300,1 )维度的。

    Eoj=ej E ∗ o j = e j = embedding for word j —- 单词 j 的嵌入向量.

此节的目标就是:学习一个嵌入矩阵 E 。 E * One -hot vector 会得到 嵌入向量 (embedding vector)

下节讲述,随机化初始矩阵 E ,然后使用梯度下降法,来学习 300 * 10000 维度中的各个参数。

  • 其中有一点需注意,实践中,不会直接矩阵 和向量相乘,因为存在 大量的 0 ,会单独有一个函数,查找矩阵 E 中的某列,这样不至于计算太过缓慢。

2.5 学习词嵌入 (Learning word embeddings)

学习目标: 学习一些具体的算法,来学习词嵌入。

算法讲解方式,从复杂型的算法,一步步简化到简单算法,但是能达到或者有更好的效果。目前流行使用的都是简单的算法。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第11张图片

  • 首先,构建了一个语言模型,并用深度学习实现该模型。来预测如上图所示中,预测一段序列中的下一个单词。
  • 用 One-hot 向量表示词汇,如 I I : o4343 o 4343 (10000 维度向量)
  • 然后,生成参数矩阵 E E .
  • E E 乘以 o o 得到嵌入向量 e4343 e 4343 (每一个是 300 维度),其余单词同理。 6 个单词 叠加后是 6 * 300 =1800 维度的输入
  • 全部放到神经网络中 (参数 w[1],b[1] w [ 1 ] , b [ 1 ] ),再经过 softmax 分类器 (参数 w[2],b[2] w [ 2 ] , b [ 2 ] ),最后得出 10000 个可能的输出,
    -更常见的是,有一个固定的历史窗口,比如,你总是想预测给定的 4 个单词后的下一个单词,也就是图上所示,之前下面 4 个单词,而上面 2个不看,则从 1800 变为 1200。
    -意味着,你可以使用任意长度的语句,但是输入的 总是前 4 个单词。

以上是 早期的学习词嵌入,学习 矩阵 E 的算法之一,接下来,我们来概括这个算法,从而推导出更简单的算法。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第12张图片

  • 假设训练集中有一个更复杂的句子,juice 作为 target word (目标单词),
  • 上下文 (Context)选择 (根据模型的学习目标)
    • 由前 4 个单词推导,
    • 左边和右边各 4 个
    • 前 1 个单词
    • 附近的一个单词 (Skip Gram 模型的思想)

总结:本节学习了 语言模型问题,模型提出了一个机器学习问题,即 输入一些上下文,比如目标词的 前 4 个单词,然后预测出目标词。学习了提出这些问题,是怎样帮助学习词嵌入的。

下节学习,更简单的上下文,可更简单的算法来做预测。


2.6 Word2Vec

上节见到了,如何学习一个神经语言模型,来得到更好的词嵌入。

学习内容:Word2Vec 算法,一种简单且计算更加高效的算法。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第13张图片

回顾 Skip-grams :

  • 抽取上下文和目标词配对,来构建监督学习问题。如上图所示,选取 orange 作为 Context ,目标单词为 juice 或 glass 或 my。
  • 也就是给定上下文,然后选取在这个词正负 10 个词距或 5 个词距,随机选取的某个目标词。
  • 构建这个监督学习问题的目标并不是监督学习本身,而是通过视同这个学习问题,来学到一个更好的词嵌入模型。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第14张图片

模型细节:
- 继续假设,词汇表是 10000 (有时会超过一百万)
- 我们要解决的基本的监督问题是,学习一种映射关系,如上图所示,从上下文 Context c 到——> 某个目标 target t 。
- oc o c One-hot 向量 ——>嵌入矩阵 E (乘以 oc o c ) ——> 得到嵌入向量 ec e c ——>softmax——> y^ y ^

detail:

  • Softmax:p(t|c)=eθTtec10000j=1eθTjec S o f t m a x : p ( t | c ) = e θ t T e c ∑ j = 1 10000 e θ j T e c
    • θt θ t 输出 t 有关的参数 t.
  • L(y^,y)=10000i=1yilogy^i L ( y ^ , y ) = − ∑ i = 1 10000 y i l o g y ^ i
    • y 如上图所示,某个位置有 一个 1 的 向量, y^ y ^ 是从 softmax 输出的 10000 维的向量,是所有可能目标词的概率

总结: 绿色框,框起来的部分是,一个可以找到词嵌入的简化模型和神经网络。

  • 矩阵 E 有对应所有嵌入向量 ec e c 的参数,
  • softmax 单元有 θt θ t 的参数
  • 优化损失函数 L 可以得到一个很好的嵌入向量集。

以上是 Word2Vec 的 skip-grams 模型。

视频中一直没有给 Word2Vec 下一个明确的定义,我们再次下一个非正式定义便于理解 word2vec 是指将词语word 变成向量 vector 的过程,这一过程通常通过浅层的神经网络完成例如 CBOW 或者skip gram,这一过程同样可以视为构建词嵌表 E 的过程”。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第15张图片

遇到的问题:

  • 首要问题是,计算速度。

解决方法:

  • 使用分级的 softmax 分类器。实际中其二叉树的形状,如上图最右侧部分,较常见的 词汇在 树的相对靠上的位置,而并不常见的词汇会在更深的位置。
  • 其他更有效的解决方法。

在skip gram中有一个不足是softmax作为激活函数需要的运算量太大,在上限为10000个单词的词库中就已经比较
慢了。一种补救的办法是用一个它的变种“Hierachical Softmax”,通过类似二叉树的方法提高训练的效率。

下节中讲到的负采样,对于加速 softmax 和解决对上图公式分母中,整个词汇表求和的问题。

怎么对上下文 c 进行采样?

实际上 P(C) 的分布,并不是单纯的再训练集语料库上均匀且随机采样得到的,而是采用了不同的启发来平衡更常见的词。


2.7 负采样 (Negative sampling)

上节学到了 skip-gram 模型如何构建一个监督学习任务,把上下文映射到目标词上,如何让你学到一个实用的词嵌入。但是缺点在于 softmax 计算起来很慢。

本节将会看到一个改善过的学习问题叫做 负采样 (Negative sampling),运用了更有效的学习算法。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第16张图片

在这个算法中,我们要做的就是构建一个新的监督学习问题。

  • 问题:给定一对单词,如 orange and juice ,去预测 这是否是 上下文-目标词 (context-target)pair。

如上图所示,从序列中,选取一定词距的词汇,序列顺序正确的作为 正样本,其余的 ( K 个)在字典或词汇表中,随机选取的,没有任何联系的作为负样本。

orange —— juice —— 1 (正样本)
orange —— King —— 0 (负样本)

  • 构建监督学习问题, 学习算法输入这对词 x ,要去预测的目标的标签,输出 y 。
  • 这个算法,就是判断,这两种不同的采样方式,1.在上下文词距中,选词 2.随机在词汇表中选词。
  • k = 5~20(smaller datasets) k = 2~5 (laeger datasets)

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第17张图片

如上图所示,x 输入, y 输出,c 上下文,t 目标词。

  • 定义一个 logistic regression model

    P(y=1|c,t)=σ(θTtec) P ( y = 1 | c , t ) = σ ( θ t T e c )

  • 参数与之前的参数相同,对于每一个可能的目标词,有一个参数向量 θ θ ,以及另一个参数向量,即每一个可能上下文词的嵌入向量。

  • 用这个公式估计, y =1 的概率。正负样本 1/K ,每一个 正样本,都对应 K 个负样本。(本例中 k = 4)

上图的下半部分为模型的神经网络结构。

  • 看做是 10000 个二分类 logistic 回归分类器,但不是每次迭代都训练 10000 个,而是训练其中的 5 个,训练对应真正目标词的那一个分类器,再训练随机选取的 4 个负样本。

总结:

  • 所以相对于 softmax ,图片最上方的公式,去计算巨大的 10000维度的 softmax ,计算成本很高。
  • 转化为 10000 个 二分类问题,每一个都很容易计算,每一次迭代只需要计算其中 5 个,k +1 个样本。因此计算成本低,只需要更新 k+1 个logistic 单元。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第18张图片

重要细节:如何选取负样本?

P(wi)=f(wi)3/410000j=1f(wj)3/4 P ( w i ) = f ( w i ) 3 / 4 ∑ j = 1 10000 f ( w j ) 3 / 4

经验值:对词频的 3/4 次方 除以整体的值,进行采样。

  • f(wi) f ( w i ) 是观测到的再语料库中某个英文词的词频,对词频的 3/4 次方 处理后,可以让它处于两个极端中间,即 处于 完全独立分布,和训练集的观测分布之间。

  • 网上有开源的 训练好的 词向量,在授权允许的情况下,可以加快 NLP 问题的进展。

下节,介绍一个更简单的算法。GloVe


2.8 GloVe 词向量 (GloVe word Vectors)

前面已经了解了几个关于计算词嵌入的算法,另一个在 NLP 领域有一定势头的的算法是 GloVe 算法(global vectors for word representation)虽然相比下没有Skip-grams 模型用的多,但是相比这种模型却更加简单。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第19张图片

  • Xij X i j 是单词 i 在单词 j 上下文中出现的次数,这里 i ,j 和 t,c 的功能一样,
  • 如果全局的遍历,可以 得出 Xij=Xji X i j = X j i 类似的结论,但是如果规定了 词距 或前后顺序,结果可能会不一致。
  • Xij X i j 是一个能够获取单词 i 和单词 j 出现位置相近时,或是彼此接近的频率的计数器。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第20张图片

GloVe Model :

GloVe 词向量模型中,要定义一个量 Xij X i j ,表示目标词 i 出现在上下文 j 的次数。模型的优化目标如下:

minimizei=110000j=110000f(Xij)(ΘTiej+bi+bjlogXij)2 m i n i m i z e ∑ i = 1 10000 ∑ j = 1 10000 f ( X i j ) ( Θ i T e j + b i + b j ′ − log ⁡ X i j ) 2

  • 两个单词之间有多少联系,也就是同时出现的频率是多少。由 logXij l o g X i j 决定。解决 θTiej θ i T e j 的问题,用梯度下降来最小化.
  • 添加一个额外的加权项(weighting term)

    • 其中,因为当 Xij X i j 为 0 时, logXij l o g X i j 便没有意义,所以添加 f(Xij) f ( X i j ) 的加权项,当 Xij=0 X i j = 0 时, f(Xij)=0 f ( X i j ) = 0
    • 另外 f(Xij) f ( X i j ) 对于一些频繁词 (常出现的单词如 this,is,of a,an ……这些叫做停止词(stop words))和不频繁词有着启发式的平衡作用;既不给常出现的词过分的权重,也不给不常用的词 durian 榴莲 太小的权重。
  • 另外, ΘTiej Θ i T e j 这一项中, ΘTi Θ i T ej e j 都是需要学习的参数,在这个目标算法中二者是对称的关系,所以我们可以一致地初始化 Θ 和 e,然后用梯度下降来最小化输出,在处理完所有词后,直接取二者的平均值作为词嵌入向量: efinalw=ew+Θw2 e w f i n a l = e w + Θ w 2 ,这与前面的算法有所不同。

从上面的目标中,可以看出我们想要学习一些向量,他们的输出能够对上下文和目标两个词同时出现的频率进行很好的预测,从而得到我们想要的词嵌入向量。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第21张图片

词嵌入的特征化:

通过上面的很多算法得到的词嵌入向量,我们无法保证词嵌入向量的每个独立分量是能够让我们理解的。我们能够确定是每个分量是和我们所想的一些特征是有关联的,其可能是一些我们能够理解的特征的组合而构成的一个组合分量。使用上面的 GloVe 模型,从线性代数的角度解释如下:

ΘTiej=ΘTiATATej=(AΘi)T(ATej) Θ i T e j = Θ i T A T A − T e j = ( A Θ i ) T ( A − T e j )

加入的 A 项,可能构成任意的分量组合。

  • 你不能保证嵌入向量的组成部分,是能够理解的。很难单独看,这个矩阵的单独部分,然后解释它的意思,如上图右图所示,其关系可能是非正交的。
  • 尽管有这种类型的线性变换,这个平行四边形也说明了我们解决了这个问题,当你类比其他问题时,这个方法可行,因此尽管存在潜在的特征量的任意线性变换,最终还是能学习解决类似问题的平行四边形映射。

2.9 情绪分类 (Sentiment classification)

情感分类就是通过一段文本来判断这个文本中的内容是否喜欢其所讨论的内容,这是 NLP 中最重要的模块之一。

情感分类任务存在的一个问题就是只有很小的数据集,缺乏训练样本。但是在使用了词嵌入(embedding)后,即使只有中等大小标记的训练集,也能够带来很好的效果,足以训练一个良好的情感分类模型。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第22张图片

示例,如上图所示,对图片左侧部分的文本内容 x, 映射到 右侧对应 y 的情感等级评定。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第23张图片

如上图所示,是一个简单的情感分类的模型。给出一句话,使用 10000 个词的词汇表,构建一个分类器能够把它映射成输出,如 4 个星。

平均值 或 求和 的模型:

  • 对应词找到相应的 One-hot 向量编码,如 O8928 O 8928
  • 获取一个训练好的词嵌入矩阵 E
  • 得到每个词的词嵌入向量 e8928 e 8928 (300D),并对所有的词向量做平均或者求和(300D);
  • 输入到 softmax 分类器中,得到最后的输出 y^ y ^
  • 缺点:没有考虑词序,可能会导致多数的积极词汇削弱前面消极词汇的影响,从而造成错误的预测。 (所以我们使用一个更复杂的 RNN 模型来解决这个问题)

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第24张图片

RNN 模型:

  • 获取一个训练好的词嵌入矩阵 E;
  • 得到每个词的词嵌入向量,输入到 many-to-one 的 RNN 模型中;
  • 通过最后的 softmax 分类器,得到最后的输出 y^ y ^
  • 优点:考虑了词序,效果好很多。

2.10 词嵌入除偏 (Debiasing word embeddings)

当下机器学习或者人工智能算法已经被应用到做一些非常重要的决策中,因此我们需要尽可能地保证其不受非预期形式的偏见的影响,如性别、种族歧视等等。下面介绍一些在词嵌入中消除偏见的办法。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第25张图片

目前的偏见问题:

如上图所示,以一些预料库中学习到的词嵌入向量,会发现学习到的词向量存在下面一些具有性别、种族等偏见,这反映了人们在历史的写作中存在的这种社会偏见。如 父亲:医生,对应 母亲:护士。

Coursera | Andrew Ng (05-week2)—自然语言处理与词嵌入_第26张图片

消除偏见的方法:

  • 定义偏见的方向:如性别
    • 对大量性别相对的词汇进行相减并求平均: eheesheemaleefemale e h e − e s h e 、 e m a l e − e f e m a l e 、 ⋯
    • 通过平均后的向量,则可以得到一个或多个偏见趋势相关的维度,以及大量不相关的维度;
  • 中和化 (Neutralize):对每一个定义不明确的词汇,进行偏见的处理,如像 doctor、babysitter 这类词;通过减小这些词汇在得到的偏见趋势维度上值的大小,如图上所示,比如减少水平方向的距离;
  • 均衡 (Equalize pairs):将如 gradmother 和 gradfather 这种对称词对调整至 babysitter 这类词汇平衡的位置上 (如图上所示, babysitter 作为中立词,到 gradmother 和 gradfather 的距离相同),使 babysitter 这类词汇处于一个中立的位置,进而消除偏见。

最后一个细节是,如何决定哪个词是中立的?该论文作者的方法是,训练一个分类器来解决,哪些词具有明确定义,哪些词是性别确定的。其结果是,大部分词都不具有性别指向。只有小部分词具有明确性别的区分。

参考文献:

[1]. 大树先生 Koala_Tree 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(5-2)– NLP和词嵌入


PS: 欢迎扫码关注公众号:「SelfImprovementLab」!专注「深度学习」,「机器学习」,「人工智能」。以及 「早起」,「阅读」,「运动」,「英语 」「其他」不定期建群 打卡互助活动。

你可能感兴趣的:(深度学习,吴恩达-05.序列模型,深度学习,吴恩达-,Notes重点总结,深度学习,吴恩达)