参考链接
模型(Adaptive Input Representation):
模型概述
-
Adaptive Input Representation受Adaptive softmax模型启示而得出来的。
-
首先我们将词汇表按词频降序排列,然后将其划分为 n n n个子集: V 1 ∪ V 2 … ∪ V n V_1∪V_2…∪V_n V1∪V2…∪Vn且 V i ∩ V j = ∅ ( i ≠ j ) V_i∩V_j=∅ (i≠j) Vi∩Vj=∅(i=j),这样最高频词包含在 V 1 V_1 V1,最低频词包含在 V n V_n Vn中。 V 1 V_1 V1被称为head,其他自己被成为tail。
-
每个子集中词embedding的维度设置:
- V 1 V_1 V1维度为 d d d
- V n V_n Vn的维度为 d k ( n − 1 ) \frac{d}{k^{(n-1)}} k(n−1)d
- k k k是一个参数,一般设置为4;由上面公式可是各子集的维度是随词频递减的
-
再为每个子集设置一个线性映射: W 1 ∈ R d × d , … , W n ∈ R d k ( n − 1 ) W_1∈R^{d×d},…,W_n∈R^{\frac{d}{k^{(n-1)}}} W1∈Rd×d,…,Wn∈Rk(n−1)d,目的是最后统一整个embedding层的输出维度为 d d d。如下图所示:
-
如上图所示,先将输入句子中词划分到其相应的 V i V_i Vi中去,然后分别进行embedding和线性映射,最后再按源句子中的顺序进行拼接相应的词embedding,得到整个embedding层的输出
共享权值
-
如果输出层为使用adaptive softmax,并且使用与输入层adaptive input layer相同的参数: V 、 d 、 k V、d、k V、d、k;那么我们就可以进行输入层与输入层的参数共享。
-
adaptive softmax模型图如下所示:
-
权值共享的方法:
- adaptive softmax根节点维度为 ∣ V 1 ∣ + n − 1 |V_1 |+n-1 ∣V1∣+n−1,所以我们将 V 1 V_1 V1的embedding矩阵 E 1 ∈ R ∣ V 1 ∣ × d E_1∈R^{|V_1 |×d} E1∈R∣V1∣×d并上一个从新定义的不共享的矩阵 B ∈ R ( n − 1 ) × d B∈R^{(n-1)×d} B∈R(n−1)×d,这样就可以得到adaptive softmax根节点 T = [ E 1 ; B ] ∈ R ( ∣ V 1 ∣ + n − 1 ) × d T=[E_1;B]∈R^{(|V_1 |+n-1)×d} T=[E1;B]∈R(∣V1∣+n−1)×d。
- 对于adaptive softmax的下面叶节点我们可以直接共享adaptive input层的相应子集的embedding矩阵和映射矩阵,比如,adaptive softmax的第 i − 1 i-1 i−1个叶节点它对应的词汇表子集为 V i V_i Vi,则该页节点存储的就是adaptive input中的映射矩阵 W i W_i Wi和对应的embedding矩阵 E i E_i Ei。
-
adaptive softmax输出预测过程:
- 首先将隐藏层状态向量 h ∈ R d h∈R^d h∈Rd与根节点矩阵 T T T相乘;
- 如果输出的词在集合 V 1 V_1 V1中则直接预测。
- 如预测的词在 V i ( i ≠ 1 ) V_i (i≠1) Vi(i=1),则再将隐藏层状态向量 h h h与 W i W_i Wi相乘得到的结果再与 E i E_i Ei相乘得到最终的预测词。
-
由上面的过程可以看出来, V 1 V_1 V1映射矩阵 W 1 W_1 W1是不需要共享。
-
当然有些情况也可以不共享 V i ( i ≠ 1 ) V_i (i≠1) Vi(i=1)的映射矩阵 W i W_i Wi而重新定义也该相同维度的矩阵代替。