word2vec个人简单理解

单词: 不能以文本形式直接输入到机器训练
-> 需要转换为向量的形式输入

  1. 简单的直接用one-hot 一个词一个编码
    缺点: 随着词的数量增加维数越来越多,并且会很稀疏;
    词之间没有联系

  2. word2vec
    其实就是一个简化的神经网络,输入one hot vector,经过线性隐藏层,输出维度和输入一致,用的是softmax回归。然后以这个形式输入到机器进行后面的分类或其他训练预测。
    这个模型的输入和输出的定义:一般使用CBOW(连续词袋) 或 skip-gram 两种模型来定义。
    1)CBOW
    输入:每个特征(target word,目标词/中间词,因为是根据它的左右也就是上下的词预测它而得名)的上下文词对应的词向量
    输出:此特征(target word)的词向量
    适合于:小型数据集

    输入层:上下词的one-hot
    	  采用的上下词的个数C由设置的窗口大小决定,而单词向量空间设为V维,那么输入的大小就是C*V-dim
    =》所有one-hot分别乘以共享的输入权重矩阵W,这是个大小为V*N的矩阵,N由自己初始化
    =》所得的向量相加求平均作为隐藏层向量,显然size为1N
    =》乘以输出权重矩阵W‘
    =》输出层
    	得到的是1N向量,经过激活函数处理得到V维的概率分布,概率最大的索引所指示的单词即为target word
    	需要定义损失函数:上面得到的target word对应的vector和真实label的one-hot做对比,误差越小越好
    	采用梯度下降更新W,W'
    训练完毕后,输入层每个单词和最后的W相乘得到的向量就是我们所需的词向量(word embedding)。		  
    

    2)Skip-Gram
    输入:可以说是和CBOW相反,它是利用input word预测上下文。
    输出:我们指定窗口大小(skip_window)的上下文词的数量
    适合于:大型语料库
    需要设置的参数:skip_window和num_skips

	example:
		skip_window表示从每个input word左右两侧各选取词的数量,
				   整个窗口大小为span= size(skip_window) * 2,
				   如果中心词左侧或者右侧的词数量< size(skip_window),
				   则窗口中的词(不包含input word时候)<span
		num_skips 代表我们从窗口中选择多少个不同的的词作为output
		也就是每个单词生成的样本数量,不能超过skip_window的两倍,并且必须是batch_size的整数倍
		借用一个图:

souce
蓝色代表input word,此图的skip_window就是设为2。如果我们的num_skips设为2,那么在input word 为“quick”的时候,我们会只得到两组(input,output)形式的training smaples。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值