入坑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. 通过计算不同单词词向量的内积,能得到他们的相似度。
全部评论

相关推荐

2025-12-28 22:19
门头沟学院 Java
不敢追165女神:简历写得毫无特点,你说你要是大二或者大三找寒假实习到暑期实习这段时间,你的简历还能约到面试。但是你是研究生哥,面试官不会因为你是研究生而降低要求,反而会觉得你是研究生才学了这么一点?为什么我不找个同阶段的本科生?
简历中的项目经历要怎么写
点赞 评论 收藏
分享
02-06 16:33
门头沟学院 Java
Phoenix_Re...:很少最多一两个,大多数保研或者摆烂等着考研
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务