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

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

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

目录

    • 1、RNN
    • 2、LSTM
    • 3、Transformer
    • 4、Word2Vec
    • 5、BERT
    • 6、GPT
    • 7、CLIP
    • 8、BPE(Byte Pair Encoder)字节对编码

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:NRd是生成位置向量 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(wkt)cos(wkt)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=10000d2k1
在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)=ilog(P(uiuik,,ui1;θ)
其中, 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 N2N个错误对的余弦相似度。

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)具有一定的泛化能力;
  • 缺点: 是基于统计的分词算法,对语料依赖性很强,如果语料规模很小,则效果一般不佳。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148289.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

cmd快速进入文件夹目录下

首先&#xff0c;将文件夹直接点击左键拖动至cmd窗口中&#xff0c;就可以得到目录路径。 还有就是&#xff0c;在命令行直接敲入D:或者C:就可以在磁盘之间进行转换&#xff0c;注意冒号不要丢。 再有&#xff0c;如果进入某磁盘中的一个文件夹&#xff0c;使用cd命令。路径获取…

新质农业——水肥一体化技术

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案&#xff0c;帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、埃域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&…

开机容易关机难?合宙Air201资产定位模组LuatOS的PWRKEY控制来实现!

关于合宙Air201&#xff0c;我们已经发布了5期基础知识啦&#xff01;你是不是已经都学会了&#xff1f; 来来来&#xff0c;我们继续高阶学习&#xff1a;合宙Air201应用示例——PWRKEY控制关机功能 PWRKEY控制关机功能 合宙Air201资产定位模组——是一个集成超低功耗4G通信…

命名管道详解

命名管道 匿名管道应用的限制就是只能在具有共同祖先的进程间通信。如果我们想要在不相关的进程之间交换数据&#xff0c;可以使用使用FIFO文件来做这项工作&#xff0c;它被称为命名管道。命名管道是一种特殊类型的文件。 mkfifo函数 命名管道可以从命名行上创建&#xff0c…

iOS V2签名网站系统源码,开源免授权(含视频教程)

这是一款iOS签名站的开源源码&#xff0c;免去了授权&#xff0c;它支持UDID获取、软件选择以及签名码功能。 同时&#xff0c;用户可以多开APP进行安装。这是一个自主可下载的版本&#xff0c;感兴趣的用户可以自行获取。 源码下载&#xff1a;https://download.csdn.net/do…

云和恩墨携手华为,发布zCloud数据库备份管理一体机并宣布共建数据保护生态...

为期三天的第九届华为全联接大会&#xff08;HUAWEI CONNECT 2024&#xff09;于9月19日在上海世博中心&展览馆盛大召开。20日下午&#xff0c;一场围绕“全场景数据保护&#xff0c;护航数智化时代”的专题论坛举办&#xff0c;云和恩墨受邀参加&#xff0c;并期待与华为合…

【Linux的进程管理】

进程管理 Linux的进程进程的管理进程的状态不同状态的进程由不同的功能的链表进行管理Linux的进程切换和进程上下文进程调度抢占和非抢占式调度调度算法先来先服务CPU密集和I/O密集 最短作业优先调度算法高响应比优先调度算法时间片轮转调度算法时间片的长度设置 最高优先级调度…

ava总结篇系列:Java泛型Java sort用法详解

一. 泛型概念的提出&#xff08;为什么需要泛型&#xff09;&#xff1f; 首先&#xff0c;我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(String[] args) { 4 List list new ArrayList(); 5 list.add(&q…

(学习记录)使用 STM32CubeMX——GPIO引脚输出配置

学习总结&#xff1a;&#xff08;学习总结&#xff09;STM32CubeMX HAL库 学习笔记撰写心得https://blog.csdn.net/Wang2869902214/article/details/142435481 STM32F103C8T6的GPIO引脚输出配置 时钟配置 &#xff08;学习记录&#xff09;使用 STM32CubeMX——配置时钟&…

原子结构与电荷

1.原子结构与电荷 1.1 物质到底是由什么构成的 阴极射线 电磁波 电磁波 我们生活中的物质。究竟是由什么构成的呢&#xff1f;这个问题其实困扰了人们很久。 1.提出“原子”的概念 早在2400年前&#xff0c;古希腊哲学家德莫克里特就提出了原子的概念。当时他就认为&…

鸿蒙操作系统(HarmonyOS)生态与机遇

HarmonyOS技术特点 鸿蒙操作系统&#xff08;HarmonyOS&#xff09;是华为公司开发的一款面向全场景的分布式操作系统。 架构特点&#xff1a; 分布式架构&#xff1a;这是鸿蒙系统的显著特点之一。它支持跨设备无缝协同体验&#xff0c;使不同设备能够快速连接、能力互助和资…

Qt --- 常用控件的介绍 --- 其他控件

一、QPushButton QWidget中设计到的各种属性/函数/使用方法&#xff0c;针对接下来要介绍的Qt的各种控件都是有效的。 使用QPushButton表示一个按钮&#xff0c;这也是当前我们最熟悉的一个控件了。这个类继承了QAbstractButton&#xff0c;这个类是一个抽象类&#xff0c;是…

逆元 P3811

【模板】模意义下的乘法逆元 - 洛谷 费马太典了。 ax py 1 (mod p) 所求 x 即逆元 exgcd. 递推: 转自zjp_shadow 由整除性得 -p/i p-p/i; 故有代码&#xff08;只用了递推 #include<bits/stdc.h> #define int long long using namespace std; int exgcd(int a,…

代码随想录算法训练营第58天|卡码网 117. 软件构建、47. 参加科学大会

1. 卡码网 117. 软件构建 题目链接&#xff1a;https://kamacoder.com/problempage.php?pid1191 文章链接&#xff1a;https://www.programmercarl.com/kamacoder/0117.软件构建.html 思路&#xff1a;使用BFS BFS的实现思路&#xff1a; 拓扑排序的过程&#xff0c;其实就两步…

win11永久关闭Windows Defend

# Win11 Microsoft Defender 防病毒 彻底关闭 Win11 Microsoft Defender 防病毒关闭 **WinR****——输入 gpedit.msc &#xff0c;打开本地组策略编辑器——计算机配置——管理模板——Windows组件——Microsoft Defender 防病毒——关闭 Microsoft Defender 防病毒策略——设置…

大厂面试真题:SpringBoot的核心注解

其实理解一个注解就行了&#xff20;SpringBootApplication&#xff0c;我们的启动类其实就加了这一个 但是这么答也不行&#xff0c;因为面试官要的答案肯定不止这一个 我们打开SpringBootApplication的源码&#xff0c;会发现上面加了一堆的注解 相对而言比较重要是下面三个…

《Learning Interactive Real-World Simulators》论文导读

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl引言与背景 为了构建一个能够真实反映现实世界并允许智能体进行交互的模拟器,《Learning Interactive Real-World Simulators》这篇论文提出了一种通过学习生成模型来创建交互式现实世界模拟器的…

C++--模板(template)详解—— 函数模板与类模板

目录 1.泛型编程 2.函数模板 2.1 函数模板概念 2.2 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3.类模板 3.1 类模板的定义格式 3.2 类模板的实例化 1.泛型编程 在C中如果让你写一个交换函数&#xff0c;应该怎么做呢&#xff1f…

Leetcode990.等式方程的可满足性

题目 原题链接 等式方程的可满足性 思路 定义一个长度为26&#xff08;变量为小写字母&#xff09;的数组充当并查集&#xff0c;并将数组中的元素初始化为 -1判断“”并合并元素&#xff0c;将相等的放在一个集合中判断“!”&#xff1b;不等的如果在一个集合中&#xff0c;则…

2021世界人工智能大会召开 百度展示量子技术影响力

姓 名&#xff1a;王芷若 学 号&#xff1a;19020100180 学 院&#xff1a;电子工程学院 转载自&#xff1a;钥成网 原文链接&#xff1a; https://baijiahao.baidu.com/s?id1704906954970597725&wfrspider&forpc&searchword2021%E4%B8%9…