Continuous Bag of Words

CBOW CBOW是 continuous bag of words 的缩写,中文译为“连续词袋模型”。它和 skip-gram 的区别在于其通过上下文去预测中心词。 模型结构如下。 在 Projection Layer 中,会将上下文的所有词向量进行累加: $$ X_w=\sum^{2c}_{i=1}v(Context(w)_i) \in \R^m $$ 在 Output Layer 中,使用到的函数是 Hierarchical softmax 层级softmax 。 Hierarchical softmax 是利用哈夫曼树结构来减少计算量的方式。它将 word 按词频作为结点权值来构建哈夫曼树。 哈夫曼树是一种二叉树,实际上就是在不断的做二分类。 具体公式推导见Hierarchical Softmax(层次Softmax) - 知乎 (zhihu.com)。

June 29, 2024 · 38 words · Kurong

Skip-gram Model

skip-gram 具体过程与介绍见 cs224n 系列 从 one-hot 到 lookup-table 每一个单词经过 one-hot 编码后都会得到一个 $(V,1)$ 维的词向量, $V$ 个词就是 $(V,V)$ 维方阵。这样的话,矩阵的计算量会极大,所以要降维以减小计算量。 单词在 one-hot 编码表的位置是由关系的,如果单词出现的位置column = 3,那么对应的就会选中权重矩阵的Index = 3。由此可以通过这个映射关系进行以下操作:将one-hot编码后的词向量,通过一个神经网络的隐藏层,映射到一个低纬度的空间,并且没有任何激活函数。最后得到的东西就叫做 lookup-table,或叫 word embedding 词嵌入,维度 $(V,d)$。 数学原理 一个单词的极大似然估计概率计算公式在取负号后变为: $$ J(\theta)=-\frac{1}{T}\sum^T_{t=1}\sum_{\substack{-m \le j \le m \\ j\neq0}}logP(w_{t+j} \ | \ w_t; \ \theta) $$ 代入softmax计算公式后得到目标函数或叫损失函数: $$ logP(w_o \ | \ w_c)=u_o^Tv_c-log \Bigg( \sum_{i \in V}exp(u_i^Tv_c) \Bigg) $$ 用梯度下降更新参数: $$ \frac{\partial logP(w_o \ | \ w_c)}{\partial v_c} = u_o-\sum_{j \in V}P(w_j \ | \ w_c)u_j $$ 训练结束后,对于词典中的任一索引为 $i$ 的词,我们均得到该词作为中心词和背景词的两组词向量 $vi$ , $u_i$ ....

June 28, 2024 · 172 words · Kurong