人们可以用语言来进行交流,表达自己的意愿,传递各种各样的信息。每个人对相同的词的理解都是不尽相同的,你所能做的就是尽可能猜测你的话语是如何影响人们,你才有机会让别人感受到你想让他们感受到的东西。
我们表达一个词的意思,可以用一句话,一个相近的词,符号等等。
传统NLP是将词当作一个离散的符号,是一种局部表示方法。词可以用单热向量表示(one-hot vector)motel=[0 0 0 0 0 0 0 1 0 0 0]hotel=[0 0 0 0 1 0 0 0 0 0 0]motel=[0\space 0\space 0\space 0\space 0\space 0\space 0\space 1\space 0\space 0\space 0] \\hotel =[0\space 0\space 0\space 0\space 1\space 0\space 0\space 0\space 0\space 0\space 0]
(只是大概表示)向量维度可以很大,可达上几十万维。这也是传统词表示方法的缺陷,难以发现词之间的关系,以及难以捕捉句法(结构)和语义(意思)之间的关系。

现在用词向量表示(word vector)也叫词嵌入(word embeding)基本思想是把每个词表征为K维的实数向量(每个实数都对应着一个特征,可以是和其他单词之间的联系),将相似的单词分组映射到向量空间的不同部分。也就是Word2Vec能在没有人为干涉下学习到单词之间的关系。如:king- man + woman = queen.
bank=(0.2860.9720.1770.1070.1090.5420.3490.271)Tbank ={ (0.286,0.972,-0.177,-0.107,0.109,-0.542,0.349,0.271)}^T

正因为用不同的实数表示,而不是像one-hot vector那样只用0,1表示,词向量在交流中可以使用50维度来表示,计算机可以使用300维度,要是为了实现最大性能,可以提高到上千维。即使是上千维也比one-hot vector几十万维小太多。

计算一句话当中每个词出现的概率:
初学词向量
初学词向量
目标方程:对每一个位置t=1,...,Tt=1,...,T时刻,预测一个固定窗口大小为m的词,给定中心词WjW_j.
Likelihood=L(θ)=t=1Tmjmj0P(Wt+iWt;θ)Likelihood=L(\theta)=\prod_{t=1}^{T}\prod_{\tiny \begin {array}{c} -m\leq j \leq m\\ j\leq 0\end{array}} P(W_{t+i}|W_t;\theta)
其中θ\theta是将要被优化的所有变量

J(θ)J(\theta)为损失函数:
J(θ)=1TlogL(θ)=1Tt=1Tmjmj0logP(wt+1wt;θ)J(\theta)=-\frac{1}{T}logL(\theta)=-\frac{1}{T}\sum _{t=1}^{T}\sum_{\tiny \begin {array}{c} -m\leq j \leq m\\j \neq 0\end{array}}logP(w_{t+1}|w_t;\theta)
最小化目标函数等价于最大化预测精度。

相关文章:

  • 2021-12-09
  • 2022-12-23
  • 2022-01-04
  • 2022-02-28
  • 2022-02-15
猜你喜欢
  • 2022-01-20
  • 2022-12-23
  • 2021-08-28
相关资源
相似解决方案