【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: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=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(dkQKT)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)具有一定的泛化能力;
- 缺点: 是基于统计的分词算法,对语料依赖性很强,如果语料规模很小,则效果一般不佳。
相关文章:
【AI算法岗面试八股面经【超全整理】——NLP】
AI算法岗面试八股面经【超全整理】 概率论【AI算法岗面试八股面经【超全整理】——概率论】信息论【AI算法岗面试八股面经【超全整理】——信息论】机器学习【AI算法岗面试八股面经【超全整理】——机器学习】深度学习【AI算法岗面试八股面经【超全整理】——深度学习】NLP【A…...
Unity 设计模式 之 创建型模式 -【单例模式】【原型模式】 【建造者模式】
Unity 设计模式 之 创建型模式 -【单例模式】【原型模式】 【建造者模式】 目录 Unity 设计模式 之 创建型模式 -【单例模式】【原型模式】 【建造者模式】 一、简单介绍 二、单例模式 (Singleton Pattern) 1、什么时候使用单例模式 2、单例模式的好处 3、使用单例模式的…...
CSS中的字体样式、文本样式、列表样式以及背景和渐变
一、字体样式和文本样式 1.span标签 span标签的作用:能让某几个文字或者是词语凸显出来 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-…...
教你如何在Java中操作Redis
Redis的Java客户端 Redis 的 Java 客户端很多,常用的几种: Jedis:基于 Java 的 Redis 客户端,提供了 Redis 命令的全面支持。Lettuce:高性能的 Java 客户端库,用于与 Redis 数据库进行交互。它支持同步、…...
nsight-system教程
一 安装 参考 nsight-compute使用教程-CSDN博客https://blog.csdn.net/youzjuer/article/details/142549332 二 使用 nsys profile -t cuda,nvtx --force-overwrite true -o xxxx python xxx.py xxxx表示生成文档的名字 如果是cuda c 则 python xxx.py替换为./xxx即可 这…...
进程的那些事--进程控制
目录 前言 一、创建进程 二、退出进程 void exit (int retval) 三、进程等待 四、进程替换 前言 提示:这里可以添加本文要记录的大概内容: 前面我们认识了进程,现在让我们认识几个进程的接口 提示:以下是本篇文章正文内容…...
FortiOS SSL VPN 用户访问权限配置
简介 使用不同用户组或用户登录 SSL VPN 隧道模式后,可配置不同的访问权限。 本文介绍为不同用户组分配不同访问权限的配置方法。 相关组件 FortiGate:FortiOS v6.4.14 build2093 (GA) 客户端:Windows11,安装 FortiClient VPN 7.…...
C++_vector类
欢迎来到本期节目- - - vector类 本期直接先上代码,然后以代码为例介绍需要注意的问题. 模拟实现: #pragma once #include<iostream> #include<assert.h> using namespace std;namespace my_room {template<class T>class vector{p…...
Spring Boot入门到精通:网上购物商城系统
第3章 系统分析 3.1 可行性分析 在系统开发之初要进行系统可行分析,这样做的目的就是使用最小成本解决最大问题,一旦程序开发满足用户需要,带来的好处也是很多的。下面我们将从技术上、操作上、经济上等方面来考虑这个系统到底值不值得开发。…...
在Vue.js中,你可以使用Element UI的el-input组件结合计算属性来实现模糊查询
<template><div><el-input v-model"searchQuery" placeholder"请输入查询内容"></el-input><div v-for"item in filteredList" :key"item">{{ item }}</div></div> </template><s…...
delphi制作漂亮的农历窗体(IntraWeb+Layui的完美结合)
delphi制作漂亮的农历窗体(IntraWebLayui的完美结合) 不需要安装服务器,Apache和IIS都不需要,自带企业级服务器。 运行exe服务器就架好了,直接打开手机浏览器或者电脑浏览器,网页就出来了,如果…...
发票OFD格式转换成PDF
引入依赖,低版本的报错,2.0.2能够实现转换 <dependency><groupId>org.ofdrw</groupId><artifactId>ofdrw-converter</artifactId><version>2.0.2</version><exclusions><exclusion><groupId&g…...
高通AI应用程序开发3:网络模型(一)
1. 支持的网络模型 Qualcomm神经处理SDK支持下表所列的网络模型。 有关支持的运行时和单个图层类型的限制和约束的详细信息,请参阅 限制 。 GPU运行时中支持的所有层对两种GPU模式都有效:GPU_FLOAT32_16_HYBRID和GPU_FLAAT16。GPU_FLOAT32_16_HYBRID-…...
03. 前端面试题之ts : typescript 的数据类型有哪些?
文章目录 一、typescript是什么二、typescript有哪些数据类型booleannumberstringarraytupleenumanynull 和 和 undefinedvoidneverobject 三、总结 一、typescript是什么 typescript 和 javascript几乎一样,拥有相同的数据类型,另外在javascript基础上…...
PyCharm和VS Code 安装通义灵码,可本地安装包安装,解决插件安装不上问题
PyCharm和VS Code 安装通义灵码,可本地安装包安装,解决插件安装不上问题 PyCharm、VS Code 安装通义灵码介绍主要应用场景支持编程语言安装指南JetBrains IDEs 中安装指南步骤 1:准备工作步骤 2:在 JetBrains IDEs 中安装通义灵码…...
机器人速度雅可比矩阵求解(2自由度平面关节机器人)
关节速度和末端速度空间的映射需要计算雅可比矩阵的逆矩阵,在博途PLC里如何计算一个方阵的逆矩阵,大家可以参考下面这篇文章: 博途PLC矩阵求逆 矩阵求逆 博图SCL_博图矩阵运算-CSDN博客文章浏览阅读839次。本文介绍如何用C语言实现矩阵求逆的过程,详细解析了相关代码,适…...
【AI大模型-文心-思维树解读-开篇】
提问:什么是“”“思维树”“”模型框架 回答:如下 版本:文心大模型3.5 “思维树”(Tree of Thoughts, ToT)模型框架是一个利用大型语言模型进行问题解决的框架。它借鉴了人类认知研究的成果,特别是关于人…...
2、electron vue3 怎么创建子窗口,并给子窗口路由传参
接上回初始化vue3 electron项目,创建完vue3 electron项目后,现在要实现在渲染进程中点击按钮创建一个新的子窗口 开始 子窗口创建操作只能在主线程内完成,而创建操作是在渲染线程触发,因此就需要进行两者间的通讯。 1、创建子窗…...
8.pod数据持久化
💂 个人主页: Java程序鱼 💬 如果文章对你有帮助,欢迎关注、点赞、收藏(一键三连)和订阅专栏 👤 微信号:hzy1014211086,想加入技术交流群的小伙伴可以加我好友,群里会分享学习资料、学习方法…...
C语言 | Leetcode C语言题解之第436题寻找右区间
题目: 题解: typedef struct {int start;int index; } Node;int cmp(const void *pa, const void *pb) {return ((Node *)pa)->start - ((Node *)pb)->start; }int* findRightInterval(int** intervals, int intervalsSize, int* intervalsColSiz…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
