25自然语言处理词向量模型-Word2Vec

**唐宇迪《python数据分析与机器学习实战》学习笔记
25自然语言处理词向量模型-Word2Vec **

自然语言处理如今越来越广泛比如以下的应用途径:
25自然语言处理词向量模型-Word2Vec_第1张图片
为什么要将深度学习引入自然语言处理:
25自然语言处理词向量模型-Word2Vec_第2张图片

1.语言模型

通过模型之前出现的概率值去选择
25自然语言处理词向量模型-Word2Vec_第3张图片
“今天”与“我”联系,“下午”与“我今天”联系…每个词的出现与前面出现的词有联系
25自然语言处理词向量模型-Word2Vec_第4张图片
如果句子太长显然计算量太大了,每个词考虑前面出现的所有词,但前面所有词一起出现的情况太少见,显然数据太过稀疏。
25自然语言处理词向量模型-Word2Vec_第5张图片
N-gram语言模型
所以这里假设:下一个词的出现只依赖于前一个词下一个词的出现依赖于前两个词
n=1就关联前一个,n=2就关联前两个词
25自然语言处理词向量模型-Word2Vec_第6张图片
下面是n=1的举例,计算流程展示如图:
25自然语言处理词向量模型-Word2Vec_第7张图片
下图:n代表看前几个词,N代表语料个数,n=2或3比较常见。
25自然语言处理词向量模型-Word2Vec_第8张图片

2.词向量

无论是句子还是文章都是由词语组成,词语是我们能够利用的最基本单位,为了让计算机识别需要将其进行转换。传统做法也许会用“abcdefg…”然后用10001…这些去表示,但是这样表示的话看不出词语间的联系。怎么把一个词转为向量(具有其潜在含义)是核心,即Word2Vec。
25自然语言处理词向量模型-Word2Vec_第9张图片
语料库中每个词都有一定的距离,相似的词或者经常一起出现的词应该距离近一点,这个需要在我们的向量上体现出来!
25自然语言处理词向量模型-Word2Vec_第10张图片
例如这里想找出与青蛙相关的词
25自然语言处理词向量模型-Word2Vec_第11张图片
左边英语,右边西班牙语,虽然是两种语言但是构建的模型类似,因为我希望语种不影响,关注的是语言逻辑
25自然语言处理词向量模型-Word2Vec_第12张图片

3.神经网络模型

4部分:输入层(例如:我今天下午)—投影层(对3个词进行首尾拼接)—隐层输出层(预测后面干啥)
普通神经网络优化θ参数,而这里θ参数和输入X都要优化
25自然语言处理词向量模型-Word2Vec_第13张图片
25自然语言处理词向量模型-Word2Vec_第14张图片
25自然语言处理词向量模型-Word2Vec_第15张图片
逻辑都差不多,动物在房间跑,所以可能出现的频次进行增加了
25自然语言处理词向量模型-Word2Vec_第16张图片
神经网络的两种实现方法: CBOWSkip-gram
前者:通过上下文预测这个词。后者:通过这个词想知道上下文
25自然语言处理词向量模型-Word2Vec_第17张图片
25自然语言处理词向量模型-Word2Vec_第18张图片
哈夫曼树
随意分(图a),给ABCD不同的权重后我们希望重要的在前面(图b哈夫曼树),让带权路径长度较小。
假如有一个语料库,有10000个词(y1.y2…),但是常用的其实就几百个,每个词的重要性(词频)有差别,因此用哈夫曼树将经常用的词往前面构造。分层的softmax思想
25自然语言处理词向量模型-Word2Vec_第19张图片
哈夫曼树构造流程:先把小的合并再逐步合并大的,其次还可以指定编码,如下图右侧C(110),B(10)
25自然语言处理词向量模型-Word2Vec_第20张图片
Logistic回归
哈夫曼树中需要判断走左子树还是右子树(二分类问题),用逻辑回归得到一个概率值,比如<0.7往左走,>0.7往右走,softmax就是多个二分类组成的多分类。
25自然语言处理词向量模型-Word2Vec_第21张图片
输入:上下文每个词都是大小为m的向量
25自然语言处理词向量模型-Word2Vec_第22张图片
25自然语言处理词向量模型-Word2Vec_第23张图片
一个举例:
25自然语言处理词向量模型-Word2Vec_第24张图片
给了上下文一般情况知道那个词是啥,所以想让这个词的概率越大越好,这里用似然函数求解,为了方便求解转换为对数似然(累乘变累加)。正例看1式右边,负例看左边,接着代入2式似然函数,展开到3式再转化为4式,优化就是找到最大值使概率值越大越好,就是一个梯度上升问题。
25自然语言处理词向量模型-Word2Vec_第25张图片
为了求得极值,就求导。参数跟新:梯度上升为+号,对于原来的某个参数加上结果乘步长(更新力度),完成了对θ的更新。X对似然函数结果影响很大也要更新,对投影层求导,又可以相同道理更新。
25自然语言处理词向量模型-Word2Vec_第26张图片
X是上下文整体,这里要对每个词向量更新。
25自然语言处理词向量模型-Word2Vec_第27张图片

4.负采样模型

哈夫曼树在语料库太大时,即使有部分常用的排在前面,但是还是有大量排在中后的词,计算复杂度还是太高了,应该怎么处理呢?
25自然语言处理词向量模型-Word2Vec_第28张图片
25自然语言处理词向量模型-Word2Vec_第29张图片
下图1式右左边代表正例,NEG代表负样本的空间,所有1式右边(1-负例)
25自然语言处理词向量模型-Word2Vec_第30张图片
然后又是之前的套路:log似然转累加,对于每个词求导…
25自然语言处理词向量模型-Word2Vec_第31张图片
25自然语言处理词向量模型-Word2Vec_第32张图片

你可能感兴趣的:(机器学习,深度学习,自然语言处理)