RNN LSTM GRU Attention transformer公式整理总结(超详细图文公式)

整理各种模型的公式,以后面试复习用

RNN

在这里插入图片描述
公式:
h t = f ( W ⋅ [ h t − 1 , x t ] + b ) h_{t}=f\left(W \cdot\left[h_{t-1}, x_{t}\right]+b\right) ht=f(W[ht1,xt]+b)
或者(从矩阵分块乘法来看实际上是等价的):
h t = f ( W ⋅ h t − 1 + U ⋅ x t + b ) h_{t}=f\left(W \cdot h_{t-1}+U \cdot x_{t}+b\right) ht=f(Wht1+Uxt+b)

LSTM

在这里插入图片描述
公式:
遗忘门: f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) f_{t}=\sigma\left(W_{f} \cdot\left[h_{t-1}, x_{t}\right]+b_{f}\right) ft=σ(Wf[ht1,xt]+bf)
输入门: i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) i_{t}=\sigma\left(W_{i} \cdot\left[h_{t-1}, x_{t}\right]+b_{i}\right) it=σ(Wi[ht1,xt]+bi)
细胞状态: C ~ t = tanh ⁡ ( W C ⋅ [ h t − 1 , x t ] + b C ) \tilde{C}_{t}=\tanh \left(W_{C} \cdot\left[h_{t-1}, x_{t}\right]+b_{C}\right) C~t=tanh(WC[ht1,xt]+bC)
细胞更新: C t = f t ∗ C t − 1 + i t ∗ C ~ t C_{t}=f_{t} * C_{t-1}+i_{t} * \tilde{C}_{t} Ct=ftCt1+itC~t
输出门: o t = σ ( W o [ h t − 1 , x t ] + b o ) o_{t}=\sigma\left(W_{o}\left[h_{t-1}, x_{t}\right]+b_{o}\right) ot=σ(Wo[ht1,xt]+bo)
输出: h t = o t ∗ tanh ⁡ ( C t ) h_{t}=o_{t} * \tanh \left(C_{t}\right) ht=ottanh(Ct)

GRU

在这里插入图片描述
公式:
更新门: z t = σ ( W z ⋅ [ h t − 1 , x t ] ) z_{t}=\sigma\left(W_{z} \cdot\left[h_{t-1}, x_{t}\right]\right) zt=σ(Wz[ht1,xt])
重置门: r t = σ ( W r ⋅ [ h t − 1 , x t ] ) r_{t}=\sigma\left(W_{r} \cdot\left[h_{t-1}, x_{t}\right]\right) rt=σ(Wr[ht1,xt])
当前状态: h ~ t = tanh ⁡ ( W ⋅ [ r t ∗ h t − 1 , x t ] ) \tilde{h}_{t}=\tanh \left(W \cdot\left[r_{t} * h_{t-1}, x_{t}\right]\right) h~t=tanh(W[rtht1,xt])
更新: h t = ( 1 − z t ) ∗ h t − 1 + z t ∗ h ~ t h_{t}=\left(1-z_{t}\right) * h_{t-1}+z_{t} * \tilde{h}_{t} ht=(1zt)ht1+zth~t

RNN相关推荐阅读:https://www.jianshu.com/p/4b4701beba92

Attention机制

在这里插入图片描述
Attention有很多计算方法,下面的公式只是比较常用的一种,计算方法和transformer中的qkv类似,下面公式以解码器第一个状态为例,Encoder输入长度为m, W \mathrm{W} W 为参数,自动学习获得。

公式:
计算 q \mathrm{q} q q 0 = W Q ⋅ s 0 \mathrm{q}_{0}=\mathbf{W}_{Q} \cdot \mathrm{s}_{0} q0=WQs0
计算 k \mathrm{k} k k i = W K ⋅ h i , \mathrm{k}_{i}=\mathbf{W}_{K} \cdot \mathbf{h}_{i}, ki=WKhi, for i = 1 i=1 i=1 to m m m
计算每个位置得分: α ~ i = k i T q 0 , \tilde{\alpha}_{i}=\mathrm{k}_{i}^{T} \mathrm{q}_{0}, α~i=kiTq0, for i = 1 i=1 i=1 to m m m
softmax归一化: [ α 1 , ⋯   , α m ] = Softmax ⁡ ( [ α ~ 1 , ⋯   , α ~ m ] ) \left[\alpha_{1}, \cdots, \alpha_{m}\right]=\operatorname{Softmax}\left(\left[\tilde{\alpha}_{1}, \cdots, \tilde{\alpha}_{m}\right]\right) [α1,,αm]=Softmax([α~1,,α~m])(softmax公式想必很熟了)
最后,计算得到当前的 context vector: c 0 = α 1 h 1 + ⋯ + α m h m c_{0}=\alpha_{1} \mathbf{h}_{1}+\cdots+\alpha_{m} \mathbf{h}_{m} c0=α1h1++αmhm

Transformer

在这里插入图片描述
transformer的公式不太好写,下面只给出几个关键公式

公式:
计算 Q 、 K 、 V Q、K、V QKV Q = W Q ∗ X Q=W^{Q} * X Q=WQX K = W K ∗ X K=W^{K} * X K=WKX V = W V ∗ X V=W^{V} * X V=WVX
计算self Attention:Attention ( Q , K , V ) = softmax ⁡ ( Q K T d k ) V (Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V (Q,K,V)=softmax(dk QKT)V
前馈网络层: FFN ⁡ ( Z ) = max ⁡ ( 0 , Z W 1 + b 1 ) W 2 + b 2 \operatorname{FFN}(Z)=\max \left(0, Z W_{1}+b_{1}\right) W_{2}+b_{2} FFN(Z)=max(0,ZW1+b1)W2+b2
位置编码:
P E ( p o s , 2 i ) = sin ⁡ ( p o s 1000 0 2 i d m o d e l ) P E(p o s, 2 i)=\sin \left(\frac{p o s}{10000^{\frac{2 i}{d_{m o d e l}}}}\right) PE(pos,2i)=sin(10000dmodel2ipos) P E ( p o s , 2 i + 1 ) = cos ⁡ ( p o s 1000 0 2 i d m o d e l ) P E(p o s, 2 i+1)=\cos \left(\frac{p o s}{10000^{\frac{2 i}{d_{m o d e l}}}}\right) PE(pos,2i+1)=cos(10000dmodel2ipos)

上面公式只是一部分,其中还有一些细节 ,比如mutil-attention、残差&layer norm、decoder中的mask等。

transformer的核心组件就是Attention,代码实现是用上述矩阵乘的方式,为方便理解下面简述单个单词的Attention计算流程:

  1. 根据embeding得到 q , k , v q, \quad k, \quad v q,k,v 三个向量;
  2. 用当前单词的 q q q为其它每个单词计算一个score: \quad score = q ⋅ k =q \cdot k =qk;
  3. 为了避免score分布尖锐, 进行数值缩放, 即除以 d k \sqrt{d_{k}} dk
  4. 对score进行softmax归一化;
  5. 加权求和得到当前词的context vector z : z = ∑ α i v i z: \quad z=\sum \alpha_{i}v_{i} z:z=αivi

仔细观察,和上一节的Attention计算方式几乎一样。

transformer相关推荐阅读:https://baijiahao.baidu.com/s?id=1651219987457222196&wfr=spider&for=pc

持续更新中……

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是对这些模型和技术在不同场景和需求下的使用时机进行分类列举,并简要说明其原因: 1. 文本表示方法: - One-hot编码:适用于简单的文本分类任务,其中词汇量较小且词汇之间没有明显的顺序关系。 - TF-IDF:适用于文本分类、信息检索和关键词提取等任务,能够考虑词语在语料库中的重要性。 - N-gram:适用于语言模型和文本生成任务,通过考虑词语之间的上下文关系来提高模型的性能。 2. 词向量表示方法: - Word2Vec:适用于语义表示和词语相似度计算等任务,能够将词语映射到连续的向量空间中。 - FastText:适用于处理大规模文本数据,尤其是对于低频词有较好的处理效果。 - GloVe:适用于词语相似度计算和文本分类等任务,结合全局统计信息和局部上下文信息来生成词向量。 3. 语言模型和预训练模型: - NNLM(神经网络语言模型):适用于自然语言处理中的语言建模任务,能够生成连续的语言序列。 - ELMo、GPT、UniLM:适用于各种NLP任务,如文本分类、命名实体识别等,通过预训练语言模型来提供丰富的语义表示。 - BERT、ALBERT、RoBERTa、SimBert:适用于多种NLP任务,如文本分类、问答系统等,通过预训练模型和Fine-tuning来提供深层次的语义理解。 4. 序列模型: - RNNLSTMGRU:适用于序列建模和自然语言生成任务,能够考虑上下文信息和长期依赖关系。 - BiLSTM-CRF:适用于命名实体识别和序列标注任务,结合双向LSTM和条件随机场来提高序列标注的准确性。 5. 语言生成与翻译: - Seq2seq:适用于机器翻译和文本摘要等任务,通过编码器-解码器结构将一个序列映射到另一个序列。 - Transformer:适用于机器翻译和文本生成任务,通过自注意力机制来建模长距离依赖关系。 6. 序列标注和结构化预测: - HMM、CRF:适用于命名实体识别和序列标注任务,通过建模序列的概率分布来进行标注。 - Viterbi算法:适用于解码HMM和CRF模型的最优路径,能够找到给定观测序列下的最可能的隐状态序列。 7. 文本摘要和关键词提取: - TF-IDF、TextRank:适用于提取文本关键词和生成摘要,通过计算词语的重要性来选择最相关的内容。 8. 基于图的模型: - GPT:适用于生成自然语言文本、对话系统等任务,通过建模文本序列的概率分布来生成连续的语言。 - MT5:适用于机器翻译任务,通过多任务学习的方式来提高翻译质量。 9. 强化学习与生成对话: - ChatGPT、UniLM:适用于生成对话和聊天机器人等任务,通过预训练模型和强化学习来生成连贯和有意义的对话。 10. 文本分类和情感分析: - CNN、XGBoost:适用于文本分类和情感分析等任务,能够从文本中提取局部和全局的特征进行分类。 11. 共现矩阵和搜索算法: - 共现矩阵、集束搜索:适用于信息检索和推荐系统等任务,能够通过统计词语之间的共现关系来提供相关的结果。 以上列举的使用时机是根据各个模型和技术的特点和优势来进行分类的,但实际使用时还需要结合具体的任务和数据来选择最合适的模型和技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值