CS224n-Assignment2
- 本来最近在完成cs224n的课程,就记录一下自己在完成过程中较易堵住的地方吧。
- 加载glovce预训练模型,因为在墙内,所以比较麻烦,先从我提供的百度云盘中下载glove.6B.zip,解压到同一目录下,
gensim.scripts.glove2word2vec()
将其转为word2vec格式的模型,再由load_word2vec_format()
函数进行读取。 - 思考glove模型的bias问题,bias怎么来的,如何解决
- word2vec的训练迭代过程
- type创建类与class的区别,
isinstance()
- numpy,dot,broadcast,multiply区别
- word2vec训练源码:skip-gram模型
word2vec优化方法
negativeSampling
以skip-gram为例,优化前,v矩阵即边缘词矩阵每次都要完整的参与运算并完整的更新。negative优化后,会先从v矩阵中提取k个负样本,每个词的提取概率为: $ P\left(w_{i}\right)=\frac{f\left(w_{i}\right)^{3 / 4}}{\sum_{j=0}^{n}\left(f\left(w_{j}\right)^{3 / 4}\right)}$ $ f\left(w_{i}\right)$是该词的词频,频率越高,越容易被选中。3/4是基于经验的超参。 这样的话,每次更新仅需要更新这k个词,计算量大大减小。
hierarchicalSoftmax
参考文献
- https://looperxx.github.io/CS224n-2019-Assignment/
- http://web.stanford.edu/class/cs224n/
- http://moverzp.com/2019/05/19/CS-224n-2019-Assignment-2-word2vec-Coding-%E2%80%94%E2%80%94Part-1/
- numpy广播机制
- word2vec源码