一、词嵌入/词向量为什么可行
一句话概括就是:一个词的语义由其上下文的单词决定。
![1accbdc32f58f80a93033e57054f4435.png](https://i-blog.csdnimg.cn/blog_migrate/7682ef43014e1c398fde2ab1413c0411.jpeg)
word vectors ==word embeddings ==word representations.
They are a distributed representation
二、Word2vec的两种算法
![30072d980d0c362107ce18d5ceeda057.png](https://i-blog.csdnimg.cn/blog_migrate/10898703ae53e220763659e50643a874.jpeg)
2.1 CBOW
用上下文的单词预测中心词,假设window size = 2:
![e3e3b76f8c6c63b079d62bcebc41d443.png](https://i-blog.csdnimg.cn/blog_migrate/3bfd41cfa2872cdcf21e6fbf4ac90ba0.jpeg)
![c37e099cdc153fdb5dce2a4ed0e610d5.png](https://i-blog.csdnimg.cn/blog_migrate/4858ad99f22a77f3ca00b133b4688424.jpeg)
在每个position t = 1,……,T,window size = m, 求已知上下文的单词,预测中心词出现的概率的似然:
![dfced4ccb8a121b4eaa25c2c533c406d.png](https://i-blog.csdnimg.cn/blog_migrate/ac393a2186292ca5d62a3fb1ea434148.jpeg)
2.1.2 计算
![a62c78f0b59b9ea5cbfa3d8f9896180a.png](https://i-blog.csdnimg.cn/blog_migrate/769d095555dc0a6f922a933a109f38a5.jpeg)
为了简化计算,我们假设每个词代表的向量一共有两个,一个是作为中心词的词向量,一个是作为上下文单词时的词向量。将单词表里的词对应的词向量组合成矩阵:
![8b6e5e3180fff02f1be256ea81acc4ef.png](https://i-blog.csdnimg.cn/blog_migrate/0edb635a3f55c6b14c7000894e51e012.jpeg)
由于向量内积的几何含义就是一个向量投影到另一个向量上的大小,越大,两个向量相似度越高;越小,两个向量的相似度越低:
![f03f3eff11e1526564b13991cecdc334.png](https://i-blog.csdnimg.cn/blog_migrate/f1703cfa3e11f524f94e5d622fec88d1.jpeg)
由于单词表的单词数量是有限个,因此要对概率归一化,这里就用到了softmax函数:
![3b93970e7bc6357671e4bad0d29aaf26.png](https://i-blog.csdnimg.cn/blog_migrate/2303c556e8ac818e44d7f599bb1c22a7.jpeg)
2.2 Skip-grams
用中心词预测上下文的单词,假设window size = 2:
![20906645a723384658b60801400b1498.png](https://i-blog.csdnimg.cn/blog_migrate/00c1a921f6ced3ff357d3cf8449138d4.jpeg)
![cf4085c956f6da0c5471aaf857167d7e.png](https://i-blog.csdnimg.cn/blog_migrate/dc9d5ee5b1fed8df197f6681f67a10cc.jpeg)
在每个position t = 1,……,T,window size = m, 求已知上下文的单词,预测中心词出现的概率的似然:
![0683bb49cbab4f1278be37d9cc3368f4.png](https://i-blog.csdnimg.cn/blog_migrate/6531f55f1083237ff2aecd734b56ffda.jpeg)
损失函数:
![9a97d67ed480e110630e8188f37a628f.png](https://i-blog.csdnimg.cn/blog_migrate/28b56f0d19928964a7234f556b026cd0.jpeg)
2.2.1 程序实现思想——skip-gram
![2842f65bf04c806050f31759fcdc3432.png](https://i-blog.csdnimg.cn/blog_migrate/fd558d704e1482a6d89fe61493e17aac.jpeg)
2.2.1.1 生成batch:X,y(以skip-gram为例,那么就是输入是中心词,输出是上下文单词的概率)
skip_window:窗口的大小,即window size
num_skips:代表着我们从整个窗口中选取多少个不同的词
![095d6bd8bc161bc93792fd1921fff270.png](https://i-blog.csdnimg.cn/blog_migrate/6d6a78c7dd886627fa118ed8194322dc.jpeg)
例子:batch_size = 4; skip_window = 2; num_skip = 1:
![3c97f3216c979187727519c26d029514.png](https://i-blog.csdnimg.cn/blog_migrate/d7d4fb3117cd92ca49edd539c275bb23.jpeg)
2.2.1.2 前向传播——这里Word2vec讨了个巧,利用深度学习的宏观意义上的编码器解决了更新参数theta的方法:
![6177172e654b7e974ce6cca4aa885421.png](https://i-blog.csdnimg.cn/blog_migrate/9eb4d63b6ac08fb9ba0ac311b2656b19.jpeg)
![d381680b57a33b2b6e79a488b0ad15c4.png](https://i-blog.csdnimg.cn/blog_migrate/16cbe9dbe0c6dcad7d6864dcaac22cd8.jpeg)
注:1、为什么要将单词表向量化?
![88ce0c23ea3e4edafa3ffdc2d5baf11b.png](https://i-blog.csdnimg.cn/blog_migrate/ed14774d05e62bc8d3f9b3765bb5d238.jpeg)
![5949d5d907be46d6b910d1ff761e5ea9.png](https://i-blog.csdnimg.cn/blog_migrate/53b9ff083cd928e6a03cc19e19b6b2eb.jpeg)
总结前向传播
![3423472b2cf5eca657c4e87558b8b73a.png](https://i-blog.csdnimg.cn/blog_migrate/3999e2f14033ca3f7c56cf4b4b71d3ff.jpeg)
2.2.1.3 计算loss
![f4999a50375540cf7ee1699f78ba969d.png](https://i-blog.csdnimg.cn/blog_migrate/81360cb5d632dee87e7fdd701ccc3b81.jpeg)
求此损失函数等价于计算输出的交叉熵:
![7970599640e5ba6e480de0085955c0d1.png](https://i-blog.csdnimg.cn/blog_migrate/f1f3a3ed505fc9321d82f81ebc95b812.jpeg)
2.2.1.4 梯度下降更新那两个词向量矩阵
![b78ef560b2d65b9bfd6a0d3cbb909a97.png](https://i-blog.csdnimg.cn/blog_migrate/1345f5fa06f1a39b8511acde3a5706bc.jpeg)
![48d2e48f69b00ae763264d5368e6d7b0.png](https://i-blog.csdnimg.cn/blog_migrate/30479e77a80f523ca5d1957d68a3d39a.jpeg)
![8bf392b7e1e549392d11cc6169a3485a.png](https://i-blog.csdnimg.cn/blog_migrate/d90472b8e2bf11b8e9cd9af115cc2201.jpeg)
![6e61cc50f03bfd6a4654c1b17aac4c08.png](https://i-blog.csdnimg.cn/blog_migrate/6b94b7a86615afe181a437b732484919.jpeg)
参数更新:
![39e2cf66a43dec06dc499237ca332222.png](https://i-blog.csdnimg.cn/blog_migrate/0f48278484b594c0bcbbd31c40c48c93.jpeg)
三、后期计划:
1、程序实现展示;
2、梯度下降参数更新的优化
四、参考:
1、斯坦福cs224n
2、Chris McCormick 的blog
http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/