李宏毅ML笔记13:无监督-词嵌入

Unsupervised Learning: Word Embedding

NLP中词的向量表示方法, 其中主要是词嵌入(Word Embedding),包括count-based和prediction-based两种方法. Word Embedding生成的词向量特性, 以及机器问答、机器翻译、图像分类、文档嵌入应用.

目录

向量表示词方法

1-of-N Encoding

Word Class

Word Embedding

Count based

Prediction based

词向量特性

应用


词嵌入word embedding: 降维算法(Dimension Reduction)的典型应用

向量表示词方法

1-of-N Encoding

最经典的做法. 向量维度=字典中单词的数目,每一个单词对应其中一个维度为1,其余为0.

缺点: 不够informative. 任意两个vector不同, 无法建立起同类word联系, 无法从词中得到任何信息.

apple = [ 1    0     0     0     0]

bag = [ 0       1     0     0     0]

cat  = [ 0       0     1     0     0]

dog = [ 0       0     0     1     0]

elephant = [ 0       0     0     0     1]

Word Class

同样性质的word聚类(clustering),划分成多个class,用word所属的class来表示这个word,只有clustering不够,不同class之间关联无法有效表达(如动物与动物行为).

Word Embedding

含义: 词嵌入(Word Embedding)把每一个word投影到高维空间. (升维)

但该空间维度远比1-of-N Encoding维度低. 从1-of-N Encoding 到Word Embedding 可看作Dimension Reduction过程. (降维)

目标: 类似语义(semantic)的词汇,在投影空间接近,空间维度有特殊的含义.

假设Word Embedding的特征如图,则横轴为生物与其它东西的区别,纵轴为动词名词差别.

无监督问题

word embedding是无监督方法(unsupervised approach),输入大量的文章,即可得到每个词汇embedding后的特征向量.

目标为训练神经网络, 其输入是词汇,输出是对应的word embedding向量,但训练样本只有输入文字, 没有输出embedding.

对比Auto-encoder(DL降维方法): 训练神经网络使之输入等于输出,取隐藏层为降维结果, 自编码Auto-encoder通过自我压缩和解压寻找各维度相关信息.

word embedding不能用Auto-encoder解决,输入向量通常1-of-N编码各维无关,不携带信息.

Word Embedding基本精神: 词汇的含义可从上下文得.

输入“马某某520宣誓就职”、“蔡某某520宣誓就职”,“马某某”和“蔡某某”前后有类似内容,可以推测“马某某”和“蔡某某”这两个词汇代表同类含义.

 (赶紧改掉, CSDN也太敏感, 图片里出现个名字就违规, 再放一会儿博主人没了)

构建word embedding向量的方法: Count based, Prediction based

Count based

若两个词汇wi, wj在同一篇文章中出现(co-occur),两者词向量v(wi), v(wj)较接近.

两个词汇同时出现(co-occur)的次数: Nij.

使两者词向量内积接近co-occur次数Nij,这个思想和矩阵分解(matrix factorization)思想一样.

 该方法代表: Glove Vector

Prediction based

暂时没有人比较过count based与prediction based方法的差异/优劣.

流程

训练一个神经网络, 给sentence, 根据当前的word ,预测下一个word.

1. word用1-of-N encoding表示成特征向量.

输入: 词w_{i-1}的1-of-N encoding.

输出: 该词作为w_{i-1}的下一个词w_{i}的几率. (对应1-of-N编码中该维为1其余维为0)

output的维数和input相等,均为字典总词汇个数, 只不过每一维都是小数.

该多层感知机(multilayer perceptron)神经网络:

2. 取第一个隐藏层的输入z,z可代表一个word, 作为该词汇的embedding.

词向量/ word embedding 特征: V(w)

Prediction based结果与词汇含义关系

训练文本:

$$ w_{i-1} $$

$$ w_{i} $$

蔡某某

宣誓就職

馬某某

宣誓就職

输入为“蔡某某”和“馬某某”时,输出接“宣誓就职”的几率都较高.

为使不同的输入得到相同输出,需进入隐藏层前,通过weight将输入向量投影到位置更近的低维空间.

 所以prediction-based模型训练时, 考虑了词汇上下文的联系. 第一个隐藏层的输入具有word embedding的特性.

即对1-of-N编码进行Word Embedding降维的结果=神经网络模型第一层hidden layer的输入向量. 通过控制第一层隐藏层大小可控制目标降维空间的维数.

拓展输入n个词汇预测

只用1个词汇预测下一个的约束太弱,词汇搭配过多, 难以预测. 拓展使用n个(至少10个)词汇预测下一个词汇,可以得到较好结果.

以输入2个词汇为例:

可把两个vector拼接为长vector作为input.

希望相连的weight绑定, 使之输入时对应维度(对应隐藏层的相同神经元)处权重相同. 图中用同样的颜色标注:

共用参数理由:

1. 如果不这么做,交换word位置得到的Embedding结果不同. 设置相同权重,使词word的相对位置不影响结果.

(难道不就应该和语序有关吗?语序不同含义不同)

2. 减少参数量,不由输入word数量增加导致参数量剧增.

公式

变量定义:

向量/矩阵

size

word

$$ \boldsymbol w_{i-2} $$

$$ \boldsymbol w_{i-1} $$

$$ |V| $$

1-of-N encoding

$$ \boldsymbol x_{i-2} $$

$$ \boldsymbol x_{i-1} $$

$$ |V| $$

隐藏层输入(embedding结果)

$$ \boldsymbol z = \boldsymbol W_1 \boldsymbol x_{i-2} + \boldsymbol W_2 \boldsymbol x_{i-1}\\=\boldsymbol W( \boldsymbol x_{i-2}+\boldsymbol x_{i-1}) $$

$$ |Z| $$

权重

也可看成卷积,矩阵W为卷积核,也是所有词向量的集合

$$ \boldsymbol W_1=\boldsymbol W_2=\boldsymbol W $$

$$ |Z|\times|V| $$

共用权重更新

保证wi, wj权重(注意权重w区分于单词w)相同.

1. 训练时给相同初始值

2. 分别计算损失函数对wi和wj的偏微分,并对wi, wj进行更新.

但对wi和wj得到的偏微分不一样,两个微分都要减. (相同更新过程)

$$ w_i\leftarrow w_i-\eta\frac{\partial \ell}{\partial w_i}-\eta\frac{\partial \ell}{\partial w_j}\\ w_j\leftarrow w_j-\eta\frac{\partial \ell}{\partial w_i}-\eta\frac{\partial \ell}{\partial w_j}\\ $$

无监督训练

只需要爬文章数据输入.

如文本数据为'潮水退了就知道谁没穿裤子'.

输入是“潮水”和“退了”,希望输出“就”. 使神经网络输出的概率vector与目标'就'(某一维为1)的交叉熵最小化(minimize cross entropy), 即输出vector在“就”所对应的那一维上概率最高.

Prediction-based变形

(Various Architectures)

在不同任务上互有胜负, 很难说哪一种更好.

CBOW(Continuous bag of word model)

拿前后的词汇预测中间的词汇(传统Prediction-based为前预测后)

Skip-gram

拿中间的词汇去预测前后的词汇

 word vector是DL的一个应用,但这个神经网络并不深, 只有一个linear隐藏层.

输入1-of-N编码, 神经网络经过weight的得到Word Embedding,再通过一层隐藏层得输出.

过去有很多人用deep model(但没有火起来),但这个任务不用deep就可以实现,减少运算量,节省训练的时间.

过去也有很多人用非神经网络的方法得word embedding, 不过后来发现神经网络得到效果最好.

(励志故事: word to vector作者原先投到一个很小的会议, 被拒绝了, 还得到评论-这是个什么东西, 我感觉一点用都没有)

词向量特性

同类word vector(国家-城市, 动词的三态)摆在一起, 之间有固定关系.

利用该特性, 可以发现原本并不了解的词间关系. 把word vector两两相减,再投影到二维平面,如果两个word之间有包含关系,会被投影到同一块区域.

推断关系

 此时机器可以回答问题: “罗马之于意大利等于柏林之于?”

计算选取与以下结果最接近的vector.

V(𝐵𝑒𝑟𝑙𝑖𝑛)-V(𝑅𝑜𝑚𝑒)+V(𝐼𝑡𝑎𝑙𝑦)≈V(𝐺𝑒𝑟𝑚𝑎𝑛𝑦)

应用

机器翻译

Multi-lingual Embedding

建立不同语言之间的联系.

当分别训练英文语料库(corpus)和中文语料库,两者的word vector没有任何关系. 因为Word Embedding只体现了上下文的关系, 没有办法判断中英文词汇之间的关系.

但是,如果已知中文词汇和英文词汇的对应关系,先投影到同一个点. 遇到未知的新词汇,可使类似含义的中英文词汇投影到附近, 得到翻译效果

图像分类

Multi-domain Embedding

对文字+图像做Embedding

已知词汇(horse、cat和dog) vector在空间分布,训练模型把horse、cat和dog图片投影到其词汇相同的区域. (用word-vector取代字符串 label 作为 target)

输入新的未知图像,即便不知道类别, 根据投影位置对应的word vector,可以判断所属类别.

图像分类一般给定具体的类别, 遇到属于未知类别的图像无能为力.

image+word Embedding的方法,在未知类别如果图像能够投影到cat的word vector的附近,则可知类别为cat. (分类时依据了阅读得到知识)

文档嵌入

Document Embedding

不止Word, Document也可表示成向量.

1. document变成bag-of-word,用Auto-encoder得到该文档的语义嵌入(Semantic Embedding)

 2. 考虑词汇顺序包含信息

词汇相同但语序不同, 含义不同,如:

白血球消灭了传染病——正面语义

传染病消灭了白血球——负面语义

解决方法: 给大堆数据可以自己学到, 或给额外label监督学习

word2vec参考:http://blog.csdn.net/itplus/article/details/37969519

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值