Word2Vec原理详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Word2Vec原理详解相关的知识,希望对你有一定的参考价值。
参考技术A 自然语言是一套用来表达含义的复杂系统。在这套系统中,词是表义的基本单元。顾名思义,词向量是用来表示词的向量,也可被认为是词的特征向量或表征。把词映射为实数域向量的技术也叫词嵌入(word embedding)。近年来,词嵌入已逐渐成为自然语言处理的基础知识。跳字模型假设基于某个词来生成它在文本序列周围的词。举个例子,假设文本序列是“the” “man” “loves” “his” “son”。以“loves”作为中心词,设背景窗口大小为2。如图1所示,跳字模型所关心的是,给定中心词“loves”,生成与它距离不超过2个词的背景词“the” “man” “his” “son”的条件概率,即
假设给定中心词的情况下,背景词的生成是相互独立的,那么上式可以改写成
虽然开篇说了one-hot不行,但是我们不要忽略一个事实,计算机没办法识别“字符”,所有的数据必须转化成二进制的编码形式。
大家已经注意到,我们已经到了Hidden Layer到Output Layer这一层了,简单来看就是隐藏层和输出层进行全连接,然后是一个softmax,输出概率。过程比较简单,一个Forward Propagation,一个Backward Propagation。
在跳字模型中,每个词被表示成两个 维向量,用来计算条件概率。假设这个词在词典中索引为 ,当它为中心词时向量表示为 ,而为背景词时向量表示为 。设中心词 在词典中索引为 ,背景词 ,在词典中索引为 ,给定中心词生成背景词的条件概率可以通过对向量内积做softmax运算而得到:
其中词典索引集 。假设给定一个长度为 的文本序列,设时间步 的词为 。假设给定中心词的情况下背景词的生成相互独立,当背景窗口大小为 时,跳字模型的似然函数即给定任一中心词生成所有背景词的概率
这里小于1和大于 的时间步可以忽略。
这样就可以计算出每个中心词推断背景词的概率,而我们在输入的时候给出了背景词的向量,此时只需要最大化背景词的输出概率即可。 基于这样的想法,我们会想到极大化似然估计的方式。但是一个函数的最大值往往不容易计算,因此,我们可以通过对函数进行变换,从而改变函数的增减性,以便优化。这等价于最小化以下损失函数:
最小化损失函数,我们最容易想到的就是梯度下降法。在使用梯度下降法之前,我们要把我们的损失函数定义出来,毕竟上面的式子是一个概率,下面把softmax的计算结果带入得到:
损失函数已经得到了,我们的目标就是最小化它,优化它之前我们要搞清楚我们的参数是谁?每错,我们的参数是中心词和背景词,那对于这样的一个函数显然是非凸函数,因此,我们要做一个假设,假设在对中心词权重更新时,背景词的权重是固定的,然后在以同样的方式来更新背景词的权重。
这里就计算出来了中心词的梯度,可以根据这个梯度进行迭代更新。对于背景词的更新是同样的方法,
当 时,即通过中心词 我们可以正确预测上下文词 时,不需要调整 ,反之,则相应调整 。
但是要注意背景词的个数不是唯一的,所以更新的时候要逐个更新,幅图辅助理解。
连续词袋模型与跳字模型类似。与跳字模型最大的不同在于,连续词袋模型假设基于某中心词在文本序列前后的背景词来生成中心词。在同样的文本序列“the” “man” “loves” “his” “son”里,以“loves”作为中心词,且背景窗口大小为2时,连续词袋模型关心的是,给定背景词“the” “man” “his” “son”生成中心词“loves”的条件概率(如图2所示),也就是
因为连续词袋模型的背景词有多个,我们将这些背景词向量取平均,然后使用和跳字模型一样的方法来计算条件概率。设 和 分别表示词典中索引为 的词作为背景词和中心词的向量(注意符号的含义与跳字模型中的相反,假设输入向量为 ,输出向量为 )。设中心词 在词典中索引为 ,背景词 在词典中索引为 ,那么给定背景词生成中心词的条件概率
为了让符号更加简单,我们记 ,且 ,那么上式可以简写成
给定一个长度为 的文本序列,设时间步t的词为 ,背景窗口大小为 。连续词袋模型的似然函数是由背景词生成任一中心词的概率
训练连续词袋模型同训练跳字模型基本一致。连续词袋模型的最大似然估计等价于最小化损失函数
注意到
通过微分,我们可以计算出上式中条件概率的对数有关任一背景词向量 的梯度
中心词的梯度同理可得,
同跳字模型不一样的一点在于,我们一般使用连续词袋模型的背景词向量作为词的表征向量。
决策树原理与Sklearn参数详解
参考技术A 目录1、决策树(Decision Tree)原理
2、Sklearn DecisionTreeClassifiter 参数详解
3、Sklearn DecisionTreeRegresion 参数详解
4、总结
1、决策树(Decision Tree)原理
2、DecisionTreeClassifiter核心参数详解:
3、DecisionTreeRegressor核心参数详解:
回归树参数 :与分类树基本相同,比较值得一提的是criterion。在回归树中criterion衡量分枝质量的指标有三种:
1、输入“mse”使用均方误差mean squared err(MSE), 父节点和子节点之间的均方误差的差额将被用来作为特征选择的标准 ,这种方法通过使用叶子节点的均值来最小化L2损失。
2、输入“friedman_mse”使用费尔德曼均方误差,这种指标使用费尔德曼针对潜在分枝中的问题改进后的均方误差。
3、输入“mae”使用绝对平均误差MAE(mean absolute error),这种指标使用叶节点的中值来最小化L1损失。
, 其中N是样本数量,i是每一个数据样本,fi是模型回归出的数值,yi是样本点i实际的数值标签。因此MSE的本质是回归值与真实值的差异。 在回归树中,MSE不仅是最优的分枝指标,也是最常用的衡量回归树回归质量的指标。
回归树接口:
score: 返回的是R平方,并不是MSE。R平方定义如下:
, , ,
其中u是残差平方和(MSE*N),v是总平方和,N是样本数量,i是每个样本,fi是模型回归出的值,yi是样本点i的实际数值标签。y帽是真实数值标签的平均数。
R2可以为正也可以为负,当残差平方和远远大于模型总平方和时,模型非常糟糕,R2为负;但MSE永远为正。但Sklearn当中使用均方误差作为评判标准时,却是计算“负均方误差”(neg_mean_squared_error)以负数表示。其实就是MSE前加了个负号。
总结: 本文详细介绍了决策树创建过程以及决策树的工作原理,同时对sklearn中DecisionTreeClassifiter和DecisionTreeRegressor核心参数、属性、接口进行了介绍。
以上是关于Word2Vec原理详解的主要内容,如果未能解决你的问题,请参考以下文章