斯坦福CS224N连载 _词向量总结(1)

word2vec分布式向量表示的出现成功解决了one-hot表示的稀疏性,分布式表示的定义是,通过用密集型向量表示词汇的含义,用分布式相似性表示。

word2vec算法流程:

(1)将one-hot形式词向量输入到单层神经网络中,其中输入层的神经元节点个数与one-hot形式词向量的维数是对应的。

(2)通过神经网络中的映射层中的激活函数,计算目标单词和其他词汇关联概率,计算时,使用负样本提高其训练速度和正确率。

(3)使用SGD优化算法计算损失

(4)用反向传播将神经元的权重偏置更新。

详细介绍如下:

从图中可以看出

(1)wt就是要预测的中心词,是一个one-hot表示,其中V代表的是整个词表的大小

(2)第二个w(d*V),其中的d是超参数,我们定义的多少维向量,通常300维是最好的,它表示一个所有中心词汇组成的矩阵,最初这个矩阵是随机初始化的,和wt相乘之后,挑选出某一列的词向量,表示中心词汇

(3)w'表示的是上下文的向量,与前面的相乘表示中心词与上下文相乘,得到上下文词出现的概率

(4)最后一列是目标,在上一列经过softmax后得到概率,与目标值的1做交叉熵,得到损失。

(5)通过反向传播来更新w和w'词向量。

构建的word2vec模型公式

                                                                 p(o|c)=\frac{exp(U_{0}^{T^{\circ}}V_{c})}{\Sigma exp(U_{w}^{T}V_{c})}

解释下公式,U0是索引O对应的单词词向量,Vc是中心词对应的向量,Uw代表遍历整个词汇表的词,需要整个词表遍历一遍,但是因为需要遍历整个词表所以特别浪费时间,因此采用Hierarchical Softmax和Negative Sampling 的方法,简化word2vec.

Hierarchical Softmax 则是介于两者之间的一种方法,使用的办法其实是借助了分类的概念。 每个词都计算p(wi|Contexti)后连乘起来得到联合概率,这个概率如果大于某个阈值,就认为是正常的话;否则就认为不是自然语言,要排除掉。假设我们是把所有的词都作为输出,那么“桔子”、“汽车”都是混在一起。而 Hierarchical Softmax 则是把这些词按照类别进行区分的。对于二叉树来说,则是使用二分类近似原来的多分类。例如给定 wi,先让模型判断 wo是不是名词,再判断是不是食物名,再判断是不是水果,再判断是不是“桔子”。虽然 word2vec 论文里,作者是使用哈夫曼编码构造的一连串两分类。但是在训练过程中,模型会赋予这些抽象的中间结点一个合适的向量, 这个向量代表了它对应的所有子结点。因为真正的单词公用了这些抽象结点的向量,所以Hierarchical Softmax 方法和原始问题并不是等价的,但是这种近似并不会显著带来性能上的损失同时又使得模型的求解规模显著上升。

Negative Sampling 也是用二分类近似多分类,区别在于使用的是one-versus-one 的方式近似,即采样一些负例,调整模型参数使得模型可以区分正例和负例。 换一个角度来看,就是 Negative Sampling 有点懒,他不想把分母中的所有词都算一次,就稍微选几个算算,选多少,就是模型中负例的个数,怎么选,一般就需要按照词频对应的概率分布来随机抽样了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值