参考链接

模型(Adaptive Input Representation):

模型概述

  • Adaptive Input RepresentationAdaptive softmax模型启示而得出来的。

  • 首先我们将词汇表按词频降序排列,然后将其划分为nn个子集:V1V2VnV_1∪V_2…∪V_nViVj=(ij)V_i∩V_j=∅ (i≠j),这样最高频词包含在V1V_1,最低频词包含在VnV_n中。V1V_1被称为head,其他自己被成为tail。

  • 每个子集中词embedding的维度设置

    • V1V_1维度为dd
    • VnV_n的维度为dk(n1)\frac{d}{k^{(n-1)}}
    • kk是一个参数,一般设置为4;由上面公式可是各子集的维度是随词频递减的
  • 再为每个子集设置一个线性映射W1Rd×d,,WnRdk(n1)W_1∈R^{d×d},…,W_n∈R^{\frac{d}{k^{(n-1)}}},目的是最后统一整个embedding层的输出维度为dd。如下图所示:

    Embedding层压缩方法:Adaptive input representations for neural language modeling

  • 如上图所示,先将输入句子中词划分到其相应的ViV_i中去,然后分别进行embedding和线性映射,最后再按源句子中的顺序进行拼接相应的词embedding,得到整个embedding层的输出

共享权值

  • 如果输出层为使用adaptive softmax,并且使用与输入层adaptive input layer相同的参数:VdkV、d、k;那么我们就可以进行输入层与输入层的参数共享。

  • adaptive softmax模型图如下所示:

    Embedding层压缩方法:Adaptive input representations for neural language modeling

  • 权值共享的方法:

    • adaptive softmax根节点维度为V1+n1|V_1 |+n-1,所以我们将V1V_1的embedding矩阵E1RV1×dE_1∈R^{|V_1 |×d}并上一个从新定义的不共享的矩阵BR(n1)×dB∈R^{(n-1)×d},这样就可以得到adaptive softmax根节点T=[E1;B]R(V1+n1)×dT=[E_1;B]∈R^{(|V_1 |+n-1)×d}
    • 对于adaptive softmax的下面叶节点我们可以直接共享adaptive input层的相应子集的embedding矩阵和映射矩阵,比如,adaptive softmax的第i1i-1个叶节点它对应的词汇表子集为ViV_i,则该页节点存储的就是adaptive input中的映射矩阵WiW_i和对应的embedding矩阵EiE_i
  • adaptive softmax输出预测过程:

    • 首先将隐藏层状态向量hRdh∈R^d与根节点矩阵TT相乘;
    • 如果输出的词在集合V1V_1中则直接预测。
    • 如预测的词在Vi(i1)V_i (i≠1),则再将隐藏层状态向量hhWiW_i相乘得到的结果再与EiE_i相乘得到最终的预测词。
  • 由上面的过程可以看出来,V1V_1映射矩阵W1W_1是不需要共享。

  • 当然有些情况也可以不共享Vi(i1)V_i (i≠1)的映射矩阵WiW_i而重新定义也该相同维度的矩阵代替。

相关文章:

  • 2022-12-23
  • 2021-10-24
  • 2021-05-24
  • 2021-04-17
  • 2021-10-12
  • 2021-09-12
  • 2021-09-08
  • 2022-12-23
猜你喜欢
  • 2021-12-30
  • 2021-07-19
  • 2021-12-13
  • 2021-08-18
  • 2021-09-19
  • 2021-06-17
  • 2021-11-30
相关资源
相似解决方案