[PyTorch][chapter 44][时间序列表示方法4]

前言:

    训练复杂度 O=E*T*Q

参数

全称

E 迭代次数

Number of the training epochs

T数据集大小

Number of the words in the training set

Q 模型计算复杂度

Model computational complexity

  E,T 一般都认为相同,所以这里面主要讨论Q,模型本身的训练复杂度


目录

  1.    NN-LM
  2.   RNN-LM
  3.   SKIP-grame
  4.   CBOW

一 NNLM 

[PyTorch][chapter 44][时间序列表示方法4]_第1张图片

 输入 N个词预测下一个词

1.1 模型Forward:

         1  输入 N 个[d,1] 的one-hot 向量

          2 concat 后

                    x \sim [N*d,1]

         3 经过第一个线性层 torch.nn.Linear

               z=W^Tx+b  输出[h,1]

               其中参数

              W \in[N*d,h]

              b \in[h,1]

        4  经过一个激活函数

             a= tanh(z)

      5   经过第二个线性层  torch.nn.Linear

           z=U^Ta+b

         参数

          U \sim [h,v]

         b \sim [h,1]

          6  经过softmax 后得到输出

 1.2  Q 模型计算复杂度:

        Q=W+U+b=N*d*h+v*h+N*d


二 RNN-LM

   2.1 模型[PyTorch][chapter 44][时间序列表示方法4]_第2张图片

 2.2 模型Forward

      1  当前时刻的输入单词 x_{t} \sim [d,1]

      2   当前时刻隐藏层 

          S_t= U^Tx_t+W^TS_{t-1}

         其中: U \sim [d,d]

                    W \sim [d,d]

         3 当前时刻的输出

          \hat{y_t}=softmax(V^TS_t)

           其中:

                    V \sim [d,v]

     所以

     Q=U+V+W=d*d+d*d+d*v


三 SKIP-grame

[PyTorch][chapter 44][时间序列表示方法4]_第3张图片

 跟https://mp.csdn.net/mp_blog/creation/editor/131523503

稍微有点不一样, 前面讲的 z=W^Tx,x\sim[v,1],W \sim [v,d]

这里直接用一个 w_t \sim [d,1] 代表该单词。前面博客只是为了

更深入的了解为什么要用[d,1]向量代表该单词

 假设利用当前的中心词预测周围N个词

Q=N(d+v*d)

 当为Hierarchical softmax时候

 Q=N(d+d*log_2v)

当采用 Negative Sampling 时

Q = N(d+d*(k+1))

 [PyTorch][chapter 44][时间序列表示方法4]_第4张图片

 


四  CBOW

    [PyTorch][chapter 44][时间序列表示方法4]_第5张图片

 Q=N*d+d*v

层次softmax

 Q= N*d+d*log_2v

负采样

 Q=N*d+d*(k+1)

你可能感兴趣的:(pytorch,人工智能,python)