大家好,我是刚开始学习NLP这方面的知识,在学CBOW、SKIP-GRAM以及paragraph vector过程中遇到几个不理解的地方,烦请高手指点~~
1、CBOW中随机初始化的word vec有没有归一化?也就是向量的每个维度的值的范围是?若有归一化(每个值都是-1到1),那么输入层到输出层的求和操作之后,是否还需要进行归一化?
2、大家知道,Mikolov提出的paragraph vec方法就是在CBOW的输入层增加了一个paragraph vec,那请问整个算法过程是:①先用原先CBOW的方法根据整个语料库训练出词典中每个词的向量以及网络中的参数;然后固定所有词向量以及网络参数,选定某个paragraph,在输入层加入随机初始化的paragraph vec,在选定的paragraph中随机选取一个context,将context中的词的vec连同初始化得到的para vec一起输入网络,然后梯度下降来更新para vec直到收敛,这样得到了相应para的vec,继续对下一个para处理。
还是②训练时对于每个para随机初始化一个vec,训练word vec的同时也对para vec进行更新。等整个语料库训练完后,就得到了词典中所有词的vec以及每个para的vec?
3、skip-gram和CBOW的区别。CBOW是用context预测下一个词,比如“this is a paper”,用this is a 预测下一个词会是什么。skip-gram是用一个词来预测它的context,是否可以理解为:把“this is a”当成一个词来预测context(也就是下一个词paper)?skip-gram相比于CBOW有什么优或劣处?实际应用中哪个更常用呢?
在此谢谢您的指导~