【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

Unsupervised Learning Word Embedding

用一个vector来表示一个word的几种方法

1-of-N Encoding

用一个vector来表示一个word,这个vector的维度就是世界上可能有的词的数目,每一个word对应其中一个维度。

用这种方法来描述一个word,得到的vector不够informative信息丰富,每个word的vector都不一样,无法从中得到任何信息,以及词和词之间的联系。

Word Class

如何解决上述问题?

建立word class,把有相同性质的word放在同一个 class内,但是这还是不够的,依然缺少一些信息。

Word Embedding

把每个word都映射到一个高维空间,但是远比1-of-encoding的维度要低,一般都是50-100维。

【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

如何做Word Embedding

  • Word Embedding是一个无监督学习的方法,只需要让机器阅读大量的文章,就可以知道每个词汇embedding的feature vector是什么样子。
    【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

  • 产生词向量是无监督的,我们需要做的就是训练一个神经网络,找到一个function,输入一个词,输出该词对应的word embedding 的 vector。训练数据是一大堆文字,即,只有input,没有output。
    【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记
    不能用auto-encoder来解决

【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

How to exploit the context? 如何利用文本呢?

Count based

如果有两个word常常在同一个文章中出现,则说明他们比较接近。
【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

Prediction based

learn一个神经网络,用来预测,给前一个word wi1w_{i-1},预测出下一个可能出现的word是谁

输入:前一个word的1-of-N encoding的feature vector

输出:下一个word,是某个词的概率,vector的维度是世界上word的数目。

【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记
【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

Prediction-based - Sharing Parameters

前面仅仅通过前一个词来预测下一个词可能太差了,所以可以引申为通过前几个词来预测下一个词。

每个维度连接到的weight必须是一样的,否则,一个词会对应有两个词向量,且减少参数量(1-of-N encoding的vector的维度是10w维,feature vector是50维。如果我们强迫让所有的1-of-N encoding后面接的weight全部一样,就不会随着context的增长而需要更多的参数)。
【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记
公式化表示:
【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记
如何让wiw_iwjw_j相等呢?
wiw_iwjw_j做相同初始化。
如果像下图一样,则第一次更新则会导致wiw_iwjw_j不再相等。
【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记
所以需要这样:wiw_iwjw_j使得两个weight永远tie在一起。
【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

Prediction-based - Training

【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

Prediction-based - Various Architectures

【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

Word Embedding

同一个动词的三种时态会存在某种关系——三角形
【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记
所以,我们可以从word vector中发现词和词之间的关系。

如果把word vector两两相减,把他们映射到一个二维空间中,如果他们落在了同一块区域,说明这两个word之间会存在一个包含另外一个的关系。
【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

Characteristics

Solving analogies

【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

Demo

【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

Multi-lingual Embedding

把不同语言的word vector放在一起。

通过中文和英文的两个corpus单独地去训练一组word vector,可以发现中文和英文的word vector完全没有任何关系,每个维度对应的含义没有任何联系。

因为,训练word vector靠的是上下文之间的关系,所以如果你的corpus里没有中英文混杂的话,那么机器就无法判断中英文词汇之间的关系。

但是如果事先已知一部分中英文的词汇的对应关系,然后再分别得到一组中文vector和英文vector,接下来就可以learn一个模型把事先知道的中英文对应的那些词汇,通过映射到空间中的同一个点(绿色底子汉字或者绿色英文代表已知中英文对应关系的词汇),接下来,如果遇到新的未知的中文或者英文词汇,则可以用同样的映射方法,把他们映射到同一个空间中,可以自动知道这些未知的词会落在同样的位置,达到类似翻译的效果。

【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

Multi-domain Embedding

现已经找到一组vector,知道他们在空间中所映射的位置,在有一个新的image进来的时候,通过把他映射到空间中,可以得到他属于的类别。在做影像分类的时候很难处理新增的类别,一般都只能判断出给定的已知类别,学习出来的模型只能去对那几个类别来分类,如果有一个新的来了,这个模型完全无能为力,无法判断其类别。

但是用这种方法的话,是可以判断未知类别的图像。

机器在阅读大量图片后,机器自动知道了词汇间的关系,然后将新的图片区匹配已知的知识,这样就算遇到没见过的图片,也有可能识别出他的名字。

【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

Document Embedding

把一个document变成一个vector
【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

Semantic Embedding

把一个document变成一个bag of word,用auto-encoder学习出他的semantic embedding。
【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记
但是这么做是不够的,用bag of word来描述一个document是不够的,因为词汇的顺序是十分重要的。
下图的两句话的bag of word是完全一样的,但是他们在语义上是完全不一样的,所以用bag of word来描述一个document是非常不够的!
【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记
具体方法没有细讲,只给出了一些reference,前三个方法是无监督的,只需要收集一大堆的document,后面的算是有监督的,虽然不需要给出每一个document对应的vector是什么,但是需要对每一个document给出额外label,才可以进行学习。
【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记