word2vec及其优化

本文介绍了word2vec的背景、网络结构、分类及优化方法,包括skip-gram和crow模型,强调了负采样和层次softmax在优化中的作用。此外,还探讨了其优缺点、参数设置和相关问题,如词向量获取、模型比较和加速训练等。
摘要由CSDN通过智能技术生成

1.算法背景:

(1)N-gram:n-1阶的Markov模型,认为一个词出现的概率只与前面n-1个词相关;统计预料中各种词串(实际应用中最多采用n=3的词串长度)的出现次数,并做平滑处理(应对count=0和count=1的情况)。在预测一个句子的概率时,只需要找到相关的概率参数,将他们连乘起来。

(2)神经概率语言模型:将单词映射为embedding, 输入隐藏层,激活函数用tanh,输出层为一个softmax多分类器。得到的embedding可以体现单词之间的相似性,因为神经概率语言模型中假定了相似的词对应的词向量也是相似的,且概率函数关于词向量时光滑的。词向量模型自带平滑化功能,因为概率函数取值范围不包含边界值0,1。

(3)词向量的编码方式:one-hot representation(有维数灾难、词汇鸿沟和强稀疏性的问题),distributed representation。

2.网络结构:

3.分类:

(1)crow:

one-hot格式的输入,乘以权重矩阵W,得到W的某一行h,多个h加和取平均输入隐藏层。

用一个词作为输入,来预测周围的上下文。

(2)skip-gram:

输入层到输出层的原理不变,但隐藏层到输出层,损失函数变成多个词损失函数之和。

拿一个词的上下文作为输入,来预测这个词。

              

4.算法流程:

(1)词向量预处理步骤:

对输入文本生成词汇表,统计词频,从高到低排序,取最频繁的V个词构成词汇表。确定词向量的维数,随机初始化每个词embedding。

(2)skip-gram / crow处理步骤:

确定窗口大小window,从(i-window)到(i+window)生成训练样本;确定batch_size,必须是2*window的整数倍,确保每个batch包含一个词对应的所有样本;用负采样或者层次softmax的方法训练模型;神经网络迭代训练到一定次数,得到输入层到隐藏层的参数矩阵,矩阵中每一行的转置即是对应的词向量。

5.参数设置:

  • Skip-Gram 的速度比CBOW慢一点,小数据集中对低频次的效果更好;
  • Sub-Sampling Frequent Words可以同时提高算法的速度和精度,Sample 建议取值为[10^-5, 10^-3]  ;
  • Hierarchical Softmax对低词频的更友好;
  • Negative Sampling对高词频更友好;
  • 向量维度一般越高越好,但也不绝对;
  • Window Size,Skip-Gram一般10左右,CBOW一般为5左右。
  • embedding_dimensions = number_of_categories**0.25,the embedding vector dimension should be the 4th root of the number of categories

6.优缺点:

优点:

  1. 由于 Word2vec 会考虑上下文,跟之前的 Embedding 方法相比,效果要更好(但不如 18 年之后的方法)
  2. 比之前的 Embedding方 法维度更少,所以速度更快
  3. 通用性很强,可以用在各种 NLP 任务中

缺点/局限性:

  1. 由于词和向量是一对一的关系,所以多义词的问题无法解决。
  2. Word2vec 是一种静态的方式,虽然通用性强,但是无法针对特定任务做动态优化
  3. Word2Vec只考虑到上下文信息,而忽略的全局信息;
  4. Word2Vec只考虑了上下文的共现性,而忽略的了彼此之间的顺序性;

7.优化方法:

  1. Negative Sample(随机负采样):本质是预测总体类别的一个子集;负采样定义:为什么采用负采样:(1)将多分类问题转化为K+1个二分类问题,从而减少计算量,加快训练速度;(2)保证模型训练效果,因为目标词只跟相近的词有关,没有必要使用全部的单词作为负例来更新权重;
    负采样的概率分布在tensorflow中实现的是:
    其中,s(w_i)是词w_i在字典中根据词频逆排序的序号。
  2. Hierarchical Softmax:
    利用了Huffman树依据词频建树,词频大的节点离根节点较近,词频低的节点离根节点较远,距离远参数数量就多,在训练的过程中&#x
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值