one-hot representation:词表示最直觉的做法是1-of-N Encoding, 向量维度和词表大小一样,每个词在其中某一维为1,其他维为0。但这种表示法无法体现出词之间的关系。
![](https://i-blog.csdnimg.cn/blog_migrate/23cca23a24ff2ebd712df22e9aba0770.png)
Word class方法是将意思相似或者同种属性的词归为一类,这种划分比较粗糙,且需要很多人工设计。
![](https://i-blog.csdnimg.cn/blog_migrate/17a42bfc2dd5ffdc2e6671f2a88392a0.png)
Word Embedding:
随后引出Word Embedding,是一种降维操作,不过是通过无监督的方法从文本中学出来的,而且可以在向量空间的距离上体现出词之间的关系。
![](https://i-blog.csdnimg.cn/blog_migrate/3ef7936eac726f0c8c9e32ad2abf6eef.png)
机器学习是通过无监督的阅读大段文本来理解词的含义,要理解一个词重要的是它的上下文信息(context)。有以下两种方法来利用上下文信息:count based和prediction based。
Count based:基于计数的词嵌入
count based的方法是基于共现关系的,如果两个词经常一起出现,那么这两个词就是相关的。这要求两个词的词向量的内积和他们在同一个文章中出现的次数Nij相近。
![](https://i-blog.csdnimg.cn/blog_migrate/0b94fd15fd54e2f3cac92eae1b475411.png)
prediction based:基于预测的词嵌入
输入是one-hot向量,最终的输出向量代表着每个词作为下一个词的概率,当网络训练好之后,把第一个隐层向量取出来就可以作为Word Embedding。
![](https://i-blog.csdnimg.cn/blog_migrate/13de90ee82fbc1530e475c3134f09c04.png)
体现:如果要让两个不同的词预测出同样的下文,那么这两个词的向量就要相近。这样就体现两个词的相似性;
我们会用更多的上下文信息来预测,如果直接拼接上下文的词,这会使模型参数的数量急剧上升。所以我们用了共享参数的方法,但这种方法也存在缺点,Input的词失去了位置信息,因为词不同的顺序组合表达出来的意思其实是不一样的。
![](https://i-blog.csdnimg.cn/blog_migrate/b4f558bd5a437bfc88ebcd78bab5e2c4.png)
用数学表达就是以下,用相同的W参数;
![](https://i-blog.csdnimg.cn/blog_migrate/362d27265a765f050fb4bff3177363aa.png)
训练时,会给定相同的初始化参数,之后每次更新都考虑多方的偏微分,以保证使用相同的参数W;
![](https://i-blog.csdnimg.cn/blog_migrate/e0d105d084b81f109c64ba32fd4db038.png)
训练时,就是最小化交叉熵;
![](https://i-blog.csdnimg.cn/blog_migrate/eac04c1c1827a92ff2150d76132ab13f.png)
这个基于预测的模型也有很多变形的结构:
包括CBOW:用前后文信息预测中间的词汇;Skip-gram:用中间给定词汇预测上下文信息;不过这些网络不是深层网络,而只是一个线性的hidden layer;
![](https://i-blog.csdnimg.cn/blog_migrate/1abe8dc7b5ff3f5881007eb22e736040.png)
它可以被应用到很多地方:
通过向量的操作,来解决类比问题;
![](https://i-blog.csdnimg.cn/blog_migrate/595f7f533b45689c0d879ace718c8d0e.png)
有多语言的词嵌入,也可以做翻译问题;
![](https://i-blog.csdnimg.cn/blog_migrate/90a1ec3f6dd26932b54f2f8efb9161d0.png)
甚至还可以使用到图像信息,用来做分类等任务;
![](https://i-blog.csdnimg.cn/blog_migrate/0164055d1d35b1394daa14c1aeaaf2a5.png)
文章也可以表示成向量,把文章表示成bag of word,然后用auto-encoder学出semantic embedding。
![](https://i-blog.csdnimg.cn/blog_migrate/9d06889964015c6659d86c934b01c941.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f62b28bf775dc1239864f0c4aff380dd.png)
但是因为词汇的顺序会影响语义,以下是一些相关的参考文献:
![](https://i-blog.csdnimg.cn/blog_migrate/5a5f70cc3240f11736845a49d7744dc4.png)