入坑NLP一——Skip-Gram 模型理解

1 首先介绍一下one-hot编码:)

举个栗子,
“he is a sunshine boy",
我们想把这句话中的每一个单词都用向量表示,一共5个单词,我们就用5-dim的向量来表示。
he => (1,0,0,0,0)
is =>(0,1,0,0,0)

boy =>(0,0,0,0,1)
像这样,对应的维度为1,其余的维度都为0,这种表示方式就是one-hot了。

2 Skip-Gram模型

我们可以看到,one-hot仅仅能用来表示一个单词,不能表示单词之间的关系;这里的Skip-Gram模型的最终目的是为每一个单词建立一个d-dim的词向量,词向量能反映单词之间的相似度。

方法

采用的方法非常有意思,构建一个三层的全连接神经网络,
输入层:中心单词的one-hot表示,一个n维向量;(n为词汇表维度)
隐藏层:输入通道为n,输出通道为d;
输出层:输入通道为d,输出通道为n。

所采用的训练数据,input为某个i位置的单词one-hot表示(0<=i<n),label为上下文单词的one-hot表示(上下文说的是半径r内的单词)。

利用softmax分类器,最终能得到一个单词的上下文在词汇表上的概率分布,跟label对比计算误差,反向传播,让模型就这样训练。

最终所需要的结果

我们知道,输入层到隐藏层,是有一个参数连接的权重矩阵W的,维度为n * d,而这个W就是我们最终需要的。(简直太神奇了,辛辛苦苦做一个分类器,最终要的不是这个分类器,而是里面的权重矩阵)

我们知道,词汇表是n-dim的,而这里n * d的矩阵,正好给每一个单词都能对应上一个d-dim的向量,我们称之为单词的词向量。

好处
  1. d一般不会太大,节省空间;
  2. 通过计算不同单词词向量的内积,能得到他们的相似度。
全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 10:46
点赞 评论 收藏
分享
joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务