视频地址:https://www.bilibili.com/video/av27083004/?p=2
老师的blog地址:https://www.zybuluo.com/hanxiaoyang/note/472184
词袋模型即第一项中文档向量表示为直接将各词的向量直接加和
TDIDF也是词袋模型的一种表示法
gram:元
language model:非常重要,特别是machine translation。
下面的连乘一般用log取和
下面的每一行或者每一列都能纯天然地作为一个词向量,对称矩阵
对于上面的sparse matrix,自然会想到降维,SVD、PCA等
word2vec的前身
从下往上:
第一层:投射层,取出词对应的词向量,词的初始向量可以随机初始化(one-hot),注意投影矩阵是D行V列,然后点乘V行1列,得到该词的D行一列的向量。在输入隐层前,输入的向量会在投影层进行简单的concat拼接,比如每个单词都是300维,则三个单词拼接为900维
第二层:隐层,激活函数。
第三层:softmax,输出V个词的概率
最后我们是想要投射层的参数,它有每个词的词向量
下面介绍word2vec
与NNLM的不同点:
1、把投射层去掉,输入直接是词向量,而不是one-hot的编码(投影太麻烦)
2、对词向量不再concat,而是直接sum求和,再softmax
3、去掉了hidden layer
目标函数:对数最大似然
针对最后一层softmax,至少几十万维,两种优化方案:层次softmax和负采样
层次softmax:对最后一层的二叉树改进为huffman树,降低树的深度,每个节点往左走或者往右走都是一次lr。
负采样
怎么选择那V-1个负样本呢?
随机丢看落在0-1线段的哪个区域,与词的频率有关
对于样本量不是特别大的情况,我们倾向于用CBOW,样本量非常非常大的话考虑negative sample