【AI算法岗面试八股面经【超全整理】——NLP】

打印 上一主题 下一主题

主题 996|帖子 996|积分 2988

AI算法岗面试八股面经【超全整理】


  • 概率论【AI算法岗面试八股面经【超全整理】——概率论】
  • 信息论【AI算法岗面试八股面经【超全整理】——信息论】
  • 呆板学习【AI算法岗面试八股面经【超全整理】——呆板学习】
  • 深度学习【AI算法岗面试八股面经【超全整理】——深度学习】
  • NLP【AI算法岗面试八股面经【超全整理】——NLP】
  • CV

  
1、RNN

长处:


  • 参数共享。 RNN在每个时间步都使用雷同的参数,因此在训练和预测时具有较小的盘算负担;
  • 灵活性。 RNN可以处理各种长度的序列输入,并且可以用于差别的使命,如语言模子、时间序列预测等
缺点:


  • 梯度消散或爆炸。 RNN在处理长期依赖关系时轻易出现梯度消散或爆炸的标题,导致难以捕捉远间隔的依赖关系;
  • 短期记忆限制。 RNN的短期记忆相对较弱,难以有用地记住较长的历史信息
2、LSTM

长处:


  • 长期依赖关系。 LSTM通过门控机制 (遗忘门、输入门、输出门) 有用地办理了长期依赖标题,可以或许更好地捕捉长间隔的序列依赖关系;
  • 记忆单元。 LSTM引入了记忆单元,可以保存和更新信息,有助于记住长序列中的紧张信息;
  • 防止梯度消散。 LSTM通过门控机制可以更有用地控制梯度的流动,淘汰了梯度消散或爆炸的标题
3、Transformer

一种基于自注意力机制的序列到序列(Sequence-to-Sequence)模子,用于处理NLP使命,办理长依赖标题和并行盘算效率的平衡。相比于RNN模子Transformer使用全局的自注意力机制,使模子可以同时关注输入序列的所有位置,更好地捕捉长间隔依赖关系。Transformer引入多头注意力机制进步了模子的表达本领。Transformer两个关键组件组成:Encoder和Decoder。编码器将输入序列编码为一系列上下文干系的表示,解码器用这些表示生成目标序列。


  • 编码器,输入序列颠末多头自注意力层和前馈神经网络层处理。自注意力层输入序列的每个位置都与其他位置进行注意力盘算,以获取位置之间的干系性。使得模子可以或许在差别位置之间建立上下文关联,可以或许处理长间隔的依赖关系。
  • 解码器,除自注意力层和前馈神经网络层,还包含一个编码器-解码器注意力层。交织注意力层将编码器中的信息与解码器的当前位置关联,在生成目标序列时获得更好的上下文信息。
  • Transformer端到端训练,最大化目标序列的条件概率来进行模子优化。训练中使用掩码注意力(Masked Attention)确保解码器只能看到当前位置之前输入,克制信息泄漏。
Transformer长处:


  • 能处理长间隔依赖标题,实用于处理包含长序列的使命。
  • 并行盘算效率好,使得模子在GPU上可以或许进行高效训练和推理。
  • 具有较好的表示本领和泛化本领,在多个NLP使命上取得了优秀的性能。
1、位置编码
单词在句子中的位置以及排列顺序是非常紧张的,引入词序信息有助于理解语义。循环神经网络本身就是一种顺序布局,天生就包含了词在序列中的位置信息。当抛弃循环神经网络布局,完全接纳Attention,这些词序信息就会丢失,模子就没有办法知道每个词在句子中的相对和绝对的位置信息。因此有须要把词序信号加到词向量上帮助模子学习这些信息,位置编码(Positional Encoding)就是用来办理这种标题的方法。
给定一个长度为n的输入序列,让t表示词在序列中的位置,                                                        P                               t                                      ⃗                                  ∈                                   R                            d                                       \vec{P_t} \in R^d                  Pt​             ​∈Rd表示t位置对应的向量,d是向量的维度,                                   f                         :                         N                         →                                   R                            d                                       f:N\to R^d                  f:N→Rd是生成位置向量                                                        P                               t                                      ⃗                                       \vec{P_t}                  Pt​             ​的函数,定义如下:
                                                                             P                                     t                                              ⃗                                                      (                                  i                                  )                                                 =                            f                            (                            t                                       )                                           (                                  i                                  )                                                 :                            =                                       {                                                                                                     s                                              i                                              n                                              (                                                               w                                                 k                                                              ⋅                                              t                                              )                                                                                                            if i=2k                                                                                                                                   c                                              o                                              s                                              (                                                               w                                                 k                                                              ⋅                                              t                                              )                                                                                                            if i=2k+1                                                                                              \vec{P_t}^{(i)}=f(t)^{(i)}:=\begin{cases} sin(w_k\cdot t)& \text{if i=2k}\\cos(w_k\cdot t)& \text{if i=2k+1} \end{cases}                     Pt​               ​(i)=f(t)(i):={sin(wk​⋅t)cos(wk​⋅t)​if i=2kif i=2k+1​
此中,频率                                             w                            k                                       w_k                  wk​定义如下:
                                                    w                               k                                      =                                       1                                           1000                                               0                                                                  2                                           k                                                      d                                                                                w_k=\frac{1}{10000^{\frac{2k}{d}}}                     wk​=10000d2k​1​
在Transformer中,位置编码是通过加法的方式联合到词向量中的。
2、多头自注意力
Transformer的多头注意力看上去是借鉴了CNN中同一卷积层内使用多个卷积核的思想,原文中使用 8 个“scaled dot-product attention”,在同一“multi-head attention”层中,输入均为“KQV”,同时进行注意力的盘算,彼此之前参数不共享,最终将结果拼接起来,这样可以允许模子在差别的表示子空间里学习到干系的信息。即渴望每个注意力头只关注最终输出序列中一个子空间,相互独立。核心思想在于抽取到更加丰富的特征信息。
3、Q、K、V


  • Q代表query查询,后续会和每一个k进行匹配,找到最相似的k
  • K代表key关键字,后续会被每一个q匹配
  • V代表value值,代表从输入中提到的信息
注意力机制的核心为:
                                         Q                            =                            X                                       W                               Q                                            Q=XW^Q                     Q=XWQ                                        K                            =                            X                                       W                               K                                            K=XW^K                     K=XWK                                        V                            =                            X                                       W                               V                                            V=XW^V                     V=XWV                                        A                            t                            t                            e                            n                            t                            i                            o                            n                            (                            Q                            ,                            K                            ,                            V                            )                            =                            s                            o                            f                            t                            m                            a                            x                            (                                                   Q                                               K                                     T                                                                               d                                     k                                                             )                            V                                  Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V                     Attention(Q,K,V)=softmax(dk​                    ​QKT​)V
每一个key,都对应一个value;盘算query和key的匹配水平就是盘算两者干系性,干系性越大,代表key对应value的权重也就越大。
                                              d                            k                                       d_k                  dk​是K的维度,除以一个根号d由于Q和K相乘之后的数值可能会相差很大,除以根号d可以平衡数据。利于模子收敛。
4、预测与推理阶段都使用mask缘故因由


  • 训练阶段:训练时盘算loss,是用当前decoder输入所有单词对应位置的输出                                                   y                               1                                      ,                                       y                               2                                      ,                                       y                               3                                      ,                            ⋯                             ,                                       y                               t                                            y_1,y_2,y_3,\cdots,y_t                     y1​,y2​,y3​,⋯,yt​与真实的翻译结果ground truth去分别算cross entropy loss,然后把t个loss加起来,如果使用self-attention,那么                                                   y                               1                                            y_1                     y1​这个输出里包含了                                                   x                               1                                            x_1                     x1​右侧单词信息(包含要预测下一个单词                                                   x                               2                                            x_2                     x2​的信息),用到了将来信息,属于信息泄漏。
  • 预测阶段:预测阶段要保持重复单词预测结果是一样的,这样不仅合理,而且可以增量更新(预测时会选择性忽略重复的预测词,只摘取最新预测的单词拼接到输入序列中),如果关掉dropout,那么当预测序列是                                                   x                               1                                      ,                                       x                               2                                      ,                                       x                               3                                            x_1,x_2,x_3                     x1​,x2​,x3​时的输出结果,应该是和预测序列是                                                   x                               1                                      ,                                       x                               2                                      ,                                       x                               3                                            x_1,x_2,x_3                     x1​,x2​,x3​的前3个位置结果是一样的(增量更新);同时与训练时的模子架构保持一致,前向传播的方式是一致的。
5、嵌入向量和位置向量用为什么add而不消concat


  • 在d维token嵌入向量上concat一个d维的位置向量,变成了2d维的向量,最终要得到d维的输出,必要*(2d,d)的矩阵。等价于:先对token嵌入向量做变更,然后再加上位置嵌入,并且concat会增长网络的盘算量。
  • 雷同的token在句子中差别位置语义应该是不一样的,token向量应该有差别,add可以在向量的各个维度上体现出差别,而concat会导致向量前面部门一样,只有后面部门差别。
6、为什么在进行Softmax之前必要对Attention进行scaled(为什么除以                                                               d                                  k                                                       \sqrt{d_k}                     dk​             ​)


  • 这取决于softmax函数的特性,如果softmax内盘算的数数量级太大,会输出近似one-hot编码的情势,导致梯度消散的标题,所以必要scale。
  • 那么至于为什么必要用维度开根号,假设向量q,k满足各分量独立同分布,均值为0,方差为1,那么qk点积均值为0,方差为dk,从统计学盘算,若果让qk点积的方差控制在1,必要将其除以dk的平方根,是的softmax更加平滑
4、Word2Vec

Word2Vec有两种主要的模子:CBOW和Skip-gram。这两种模子都是基于神经网络的模子,它们通过学习文本数据中的上下文信息来得到单词的向量表示。


  • CBOW。 全称是Continuous bag of words(连续词袋模子),通过context word(配景词)来预测Target word(目标词)。在每个窗口内它不考虑词序信息,它是直接把上下文的词向量相加,自然就损失了词序信息。
  • Skip-gram。 与CBOW相反,Skip-gram模子的输入是一个词汇,输出则是该词汇的上下文。(Skip-gram 出来的正确率比cbow 高)

5、BERT

BERT模子由多层Transformer编码器堆叠而成,通过预训练使命来学习语言的深层表示。这些预训练使命包罗:
(1)遮蔽语言模子(Masked Language Model,MLM)(类似于完形填空)。在MLM使命中,模子被训练来预测输入句子中被遮蔽的词;
(2)下一句预测(Next Sentence Prediction,NSP)。在NSP使命中,模子必要判断两个句子是否是连续的文本序列。
6、GPT

1、GPT-1:
Pretrain+finetune
在预训练阶段,给定tokens的语料:                                   U                         =                                   u                            1                                  ,                         ⋯                          ,                                   u                            t                                       U=u_1,\cdots,u_t                  U=u1​,⋯,ut​,目标函数为最大化似然函数:
                                                    L                               1                                      (                            U                            )                            =                                       ∑                               i                                                 l                               o                               g                               (                               P                               (                                           u                                  i                                          ∣                                           u                                               i                                     −                                     k                                                      ,                               ⋯                                ,                                           u                                               i                                     −                                     1                                                      ;                               θ                               )                                            L_1(U)=\sum_i{log(P(u_i|u_{i-k},\cdots,u_{i-1};\theta)}                     L1​(U)=i∑​log(P(ui​∣ui−k​,⋯,ui−1​;θ)
此中,                                   k                              k                  k是文本上下文窗口的大小


  • 12层的transformer,每个transformer块有12个头
  • 词编码的长度为768
  • Batchsize为64
2、GPT-2:
Zero-shot
GPT-2去掉了fine-tuning层:不再针对差别使命分别进行微调建模,而是不定义这个模子应该做什么使命,模子会自动识别出来必要做什么使命。GPT2依然相沿GPT1单向transformer的模式,只不外使用了更大的网络参数,和更大的数据集。
GPT-2试图通过“上下文学习In Context Learning”的方式来实现这一点,使用预训练语言模子的文本输入作为使命规范的一种情势:模子以自然语言指令和/或几个使命演示为条件,然后预期仅通过预测接下来会发生什么来完成更多的使命实例。
GPT-2的核心思想概括为:任何有监督使命都是语言模子的一个子集,当模子的容量非常大且数据量足够丰富时,仅仅靠训练语言模子的学习便可以完成其他有监督学习的使命。


  • 滑动窗口大小增长为1024
  • 将Transformer堆叠层数增长到48层,隐层的维度增至1600,参数量达15亿
  • Batchsize的大小增长为512
3、GPT-3:
希罕自注意力,(locally banded sparse attention,局部带状希罕注意力)


  • Dense Attention(传统 Self Attention):每个token之间两两盘算Attention
  • Sparse Attention:每个token只与其他token的一个子集盘算Attention
    网络容量的提拔:
  • GPT-3接纳了96层的多头transformer,头的个数为96
  • 词向量的长度是12888
  • 上下文滑动窗口的窗口大小提拔至2048个token
    具体来说,sparse Attention除了相对间隔不超过k,以及相对间隔为k,2k,3k,…的token,其他所有token的注意力都设为0。

4、GPT和BERT区别:


  • GPT用的是transformer中去掉中心Encoder-Decoder Attention的Decoder,(其实也可以等价地说,用到的是Encoder层,只是将Multi-Head Attention换成了Masked Multi-Head Attention),即:Masked Self Attention,是单向语言模子,即给定前几个词预测下一个词,更适合自然语言生成的使命;
  • 而BERT使用的是transformer的Encoder,即:Self Attention,是双向的语言模子,即给定周围上下文的词预测中心被mask的词,更适合自然语言理解的使命。
7、CLIP

使用对比学习,让模子学习文本-图像对的匹配关系,在同时输入文本和图像对的环境下,只有对角线上的位置才是真值。
为了实现这一目标,CLIP使用了一个多模态编码器,它由两个自编码器组成:图像编码器可以是基于卷积神经网络(CNN)或者VIT的模子;文本编码器则是一个基于Transformer的模子。作者通过一个线性投影将每个编码器的表示映射到多模态嵌入空间。通过联合训练图像编码器和文本编码器来最大化批次中的N个真实对的图像和文本嵌入的余弦相似度,同时最小化                                             N                            2                                  −                         N                              N^2-N                  N2−N个错误对的余弦相似度。
8、BPE(Byte Pair Encoder)字节对编码

1、构建词表:


  • 确定词表大小,即subword的最大个数V;
  • 在每个单词最后添加一个,并且统计每个单词出现的频率;
  • 将所有单词拆分为单个字符,构建出初始的词表,此时词表的subword就是字符;
  • 挑出频次最高的字符对,比如说t和h组成的th,将新字符加入词表,然后将预料中所有该字符对融合(merge),即所有t和h都变为th。新字符依然可以到场后续的merge,长处类似哈夫曼树,BPE现实上就是一种贪默算法;
  • 重复3、4的操作,直到词表中单词数量达到预设的阈值V或者下一个字符对的频数为1;
2、BPE编码:


  • 将词表中的单词按长度大小,从长到短排序;
  • 对于语料中的每个单词,遍历排序好的词表,判断词表中的单词/子词(subword)是否是该字符串的子串,如果匹配上了,则输出当前子词,并继续遍历单词剩下的字符串;
  • 如果遍历完词表,单词中仍然后子字符串没有被匹配,那我们将其替换为一个特殊的子词,比如< unk >
3、BPE解码:
将所有的输出子词拼在一起,直到碰到末端为。
例如:[“moun”, “tain”, “high”, “the”] 解码后:[“mountain”, “highthe”]
4、优缺点:


  • 长处: BPE算法是介于字符和单词粒度之间的一种以subword为粒度的分词算法。1)可以或许办理OOV标题(无法很好的处理未知或罕见的词汇);2)淘汰词汇表大小;3)具有一定的泛化本领;
  • 缺点: 是基于统计的分词算法,对语料依赖性很强,如果语料规模很小,则效果一般不佳。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表