更多2024最新AI大模型-LLm八股合集可以拉到文末!!!

Transformer

2.1 transformer中multi-head attention中每个head为什么要进行降维?

在Transformer的Multi-Head Attention中,对每个head进行降维是为了增加模型的表达能力和效率。

每个head是独立的注意力机制,它们可以学习不同类型的特征和关系。通过使用多个注意力头,Transformer可以并行地学习多种不同的特征表示,从而增强了模型的表示能力。

然而,在使用多个注意力头的同时,注意力机制的计算复杂度也会增加。原始的Scaled Dot-Product Attention的计算复杂度为O(d2)O(d2)O(d2),其中d是输入向量的维度。如果使用h个注意力头,计算复杂度将增加到O(hd2)O(hd2)O(hd2)。这可能会导致Transformer在处理大规模输入时变得非常耗时。

为了缓解计算复杂度的问题,Transformer中在每个head上进行降维。在每个注意力头中,输入向量通过线性变换被映射到一个较低维度的空间。这个降维过程使用两个矩阵:一个是查询(Q)和键(K)的降维矩阵WqW_qWq和WkW_kWk,另一个是值(V)的降维矩阵WvW_vWv。

通过降低每个head的维度,Transformer可以在保持较高的表达能力的同时,大大减少计算复杂度。降维后的计算复杂度为(hd^2)(h\hat d ^ 2)(hd2),其中d\hat dd是降维后的维度。通常情况下,d\hat dd^会远小于原始维度d,这样就可以显著提高模型的计算效率。

2.2 transformer在哪里做了权重共享,为什么可以做权重共享?

Transformer在Encoder和Decoder中都进行了权重共享。

在Transformer中,Encoder和Decoder是由多层的Self-Attention Layer和前馈神经网络层交叉堆叠而成。权重共享是指在这些堆叠的层中,相同位置的层共用相同的参数
😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

在Encoder中,所有的自注意力层和前馈神经网络层都共享相同的参数。这意味着每一层的自注意力机制和前馈神经网络都使用相同的权重矩阵来进行计算。这种共享保证了每一层都执行相同的计算过程,使得模型能够更好地捕捉输入序列的不同位置之间的关联性。

在Decoder中,除了和Encoder相同的权重共享方式外,还存在另一种特殊的权重共享:Decoder的自注意力层和Encoder的自注意力层之间也进行了共享。这种共享方式被称为"masked self-attention",因为在解码过程中,当前位置的注意力不能关注到未来的位置(后续位置),以避免信息泄漏。通过这种共享方式,Decoder可以利用Encoder的表示来理解输入序列并生成输出序列。权重共享的好处是大大减少了模型的参数数量,使得Transformer可以更有效地训练,并且更容易进行推理。此外,共享参数还有助于加快训练速度和提高模型的泛化能力,因为模型可以在不同位置共享并学习通用的特征表示。

2.3 transformer的点积模型做缩放的原因是什么?

使用缩放的原因是为了控制注意力权重的尺度,以避免在计算过程中出现梯度爆炸的问题。

Attention的计算是在内积之后进行softmax,主要涉及的运算是eq⋅ke^{q \cdot k}eq⋅k,可以大致认为内积之后、softmax之前的数值在−3d-3\sqrt{d}−3d到3d3\sqrt{d}3d这个范围内,由于d通常都至少是64,所以e3de^{3\sqrt{d}}e3d比较大而 e−3de^{-3\sqrt{d}}e−3d比较小,因此经过softmax之后,Attention的分布非常接近一个one hot分布了,这带来严重的梯度消失问题,导致训练效果差。(例如y=softmax(x)在|x|较大时进入了饱和区,x继续变化y值也几乎不变,即饱和区梯度消失)

相应地,解决方法就有两个:

像NTK参数化那样,在内积之后除以

d\sqrt{d}d

,使q⋅k的方差变为1,对应

e3,e−3e3,e{−3}e3,e−3

都不至于过大过小,这样softmax之后也不至于变成one hot而梯度消失了,这也是常规的Transformer如BERT里边的Self Attention的做法

另外就是不除以

d\sqrt{d}d

,但是初始化q,k的全连接层的时候,其初始化方差要多除以一个d,这同样能使得使q⋅k的初始方差变为1,T5采用了这样的做法。

3.BERT

3.1 BERT用字粒度和词粒度的优缺点有哪些?

BERT可以使用字粒度(character-level)和词粒度(word-level)两种方式来进行文本表示,它们各自有优缺点:

字粒度(Character-level):

优点

:处理未登录词(Out-of-Vocabulary,OOV):

字粒度可以处理任意字符串,包括未登录词

,不需要像词粒度那样遇到未登录词就忽略或使用特殊标记。对于少见词和低频词,字粒度可以学习更丰富的字符级别表示,使得模型能够更好地捕捉词汇的细粒度信息。

缺点

计算复杂度高

:使用字粒度会导致输入序列的长度大大增加,进而增加模型的计算复杂度和内存消耗。

需要更多的训练数据

:字粒度模型对于少见词和低频词需要更多的训练数据来学习有效的字符级别表示,否则可能会导致过拟合。

词粒度(Word-level):

优点

计算效率高

:使用词粒度可以大大减少输入序列的长度,从而降低模型的计算复杂度和内存消耗。

学习到更加稳定的词级别表示

:词粒度模型可以学习到更加稳定的词级别表示,特别是对于高频词和常见词,有更好的表示能力。

缺点

处理未登录词(OOV)

:词粒度模型无法处理未登录词,遇到未登录词时需要采用特殊处理(如使用未登录词的特殊标记或直接忽略)。对于多音字等形态复杂的词汇,可能无法准确捕捉其细粒度的信息。

3.2 BERT的Encoder与Decoder掩码有什么区别?

Encoder主要使用自注意力掩码和填充掩码,而Decoder除了自注意力掩码外,还需要使用编码器-解码器注意力掩码来避免未来位置信息的泄露。这些掩码操作保证了Transformer在处理自然语言序列时能够准确、有效地进行计算,从而获得更好的表现。

3.3 BERT用的是transformer里面的encoder还是decoder?

BERT使用的是Transformer中的Encoder部分,而不是Decoder部分。

Transformer模型由Encoder和Decoder两个部分组成。Encoder用于将输入序列编码为一系列高级表示,而Decoder用于基于这些表示生成输出序列。

在BERT模型中,只使用了Transformer的Encoder部分,并且对其进行了一些修改和自定义的预训练任务,而没有使用Transformer的Decoder部分。

3.4 为什么BERT选择mask掉15%这个比例的词,可以是其他的比例吗?

BERT选择mask掉15%的词是一种经验性的选择,是原论文中的一种选择,并没有一个固定的理论依据,实际中当然可以尝试不同的比例,15%的比例是由BERT的作者在原始论文中提出,并在实验中发现对于BERT的训练效果是有效的。

3.5 为什么BERT在第一句前会加一个[CLS] 标志?

BERT在第一句前会加一个 [CLS] 标志,最后一层该位对应向量可以作为整句话的语义表示,从而用于下游的分类任务等。为什么选它?因为与文本中已有的其它词相比,这个无明显语义信息的符号会更“公平”地融合文本中各个词的语义信息,从而更好的表示整句话的语义。

具体来说,self-attention是用文本中的其它词来增强目标词的语义表示,但是目标词本身的语义还是会占主要部分的,因此,经过BERT的12层,每次词的embedding融合了所有词的信息,可以去更好的表示自己的语义。而 [CLS] 位本身没有语义,经过12层,得到的是attention后所有词的加权平均,相比其他正常词,可以更好的表征句子语义。

3.6 BERT非线性的来源在哪里?

主要来自两个地方:前馈层的gelu激活函数self-attention

前馈神经网络层:在BERT的Encoder中,每个自注意力层之后都跟着一个前馈神经网络层。前馈神经网络层是全连接的神经网络,通常包括一个线性变换和一个非线性的激活函数,如gelu。这样的非线性激活函数引入了非线性变换,使得模型能够学习更加复杂的特征表示。

self-attention layer:在自注意力层中,查询(Query)、键(Key)、值(Value)之间的点积得分会经过softmax操作,形成注意力权重,然后将这些权重与值向量相乘得到每个位置的自注意输出。这个过程中涉及了softmax操作,使得模型的计算是非线性的。

3.7 BERT训练时使用的学习率 warm-up 策略是怎样的?为什么要这么做?

在BERT的训练中,使用了学习率warm-up策略,这是为了在训练的早期阶段增加学习率,以提高训练的稳定性和加快模型收敛

学习率warm-up策略的具体做法是,在训练开始的若干个步骤(通常是一小部分训练数据的迭代次数)内,将学习率逐渐从一个较小的初始值增加到预定的最大学习率。在这个过程中,学习率的变化是线性的,即学习率在warm-up阶段的每个步骤按固定的步幅逐渐增加。学习率warm-up的目的是为了解决BERT在训练初期的两个问题:

不稳定性

:在训练初期,由于模型参数的随机初始化以及模型的复杂性,模型可能处于一个较不稳定的状态。此时使用较大的学习率可能导致模型的参数变动太大,使得模型很难收敛,学习率warm-up可以在这个阶段将学习率保持较小,提高模型训练的稳定性。

避免过拟合

:BERT模型往往需要较长的训练时间来获得高质量的表示。如果在训练的早期阶段就使用较大的学习率,可能会导致模型在训练初期就过度拟合训练数据,降低模型的泛化能力。通过学习率warm-up,在训练初期使用较小的学习率,可以避免过度拟合,等模型逐渐稳定后再使用较大的学习率进行更快的收敛。

3.8 在BERT应用中,如何解决长文本问题?

在BERT应用中,处理长文本问题有以下几种常见的解决方案:

截断与填充

:将长文本截断为固定长度或者进行填充。BERT模型的输入是一个固定长度的序列,因此当输入的文本长度超过模型的最大输入长度时,需要进行截断或者填充。通常,可以根据任务的要求,选择适当的最大长度,并对文本进行截断或者填充,使其满足模型输入的要求。

Sliding Window

:将长文本分成多个短文本,然后分别输入BERT模型。这种方法被称为Sliding Window技术。具体来说,将长文本按照固定的步长切分成多个片段,然后分别输入BERT模型进行处理。每个片段的输出可以进行进一步的汇总或者融合,得到最终的表示。

Hierarchical Model

:使用分层模型来处理长文本,其中底层模型用于处理短文本片段,然后将不同片段的表示进行汇总或者融合得到整个长文本的表示。这样的分层模型可以充分利用BERT模型的表示能力,同时处理长文本。

Longformer、BigBird等模型

:使用专门针对长文本的模型,如Longformer和BigBird。这些模型采用了不同的注意力机制,以处理超长序列,并且通常在处理长文本时具有更高的效率。

Document-Level Model

:将文本看作是一个整体,而不是将其拆分成句子或段落,然后输入BERT模型进行处理。这样的文档级模型可以更好地捕捉整个文档的上下文信息,但需要更多的计算资源。

面试题笔记分享

为了助力朋友们跳槽面试、升职加薪、职业困境,提高自己的技术,本文给大家整了一套涵盖Android所有技术栈的快速学习方法和笔记。目前已经收到了七八个网友的反馈,说是面试问到了很多这里面的知识点。

每一章节都是站在企业考察思维出发,作为招聘者角度回答。从考察问题延展到考察知识点,再到如何优雅回答一面俱全,可以说是求职面试的必备宝典,每一部分都有上百页内容,接下来具体展示,完整版可直接下方扫码领取。
😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

## 大模型(LLMs)基础面

1.目前 主流的开源模型体系 有哪些?
2.prefix LM 和 causal LM 区别是什么?
3.涌现能力是啥原因?
4.大模型 LLM的架构介绍?
大模型(LLMs)进阶面
1.llama 输入句子长度理论上可以无限长吗?
2.什么是 LLMs 复读机问题?
3.为什么会出现 LLMs 复读机问题?
4.如何缓解 LLMs 复读机问题?
5.LLMs 复读机问题
6.lama 系列问题
7.什么情况用 Bert模型,什么情况用LLaMA、ChatGLM类大模型,咋选?8.各个专业领域是否需要各自的大模型来服务?
9.如何让大模型处理更长的文本?

大模型(LLMs)微调面

1.如果想要在某个模型基础上做全参数微调,究竟需要多少显存?
2.为什么 SFT之后感觉 LLM傻了?
3.SFT 指令微调数据 如何构建?
4.领域模型 Continue PreTrain 数据选取?5.领域数据训练后,通用能力往往会有所下降,如何缓解模型遗忘通用能力?
6.领域模型 Continue PreTrain ,如何 让模型在预训练过程中就学习到更多的知识?7.进行 SFT操作的时候,基座模型选用Chat还是 Base?
8.领域模型微调 指令&数据输入格式 要求?
9.领域模型微调 领域评测集 构建?
10.领域模型词表扩增是不是有必要的?
11.如何训练自己的大模型?
12.训练中文大模型有啥经验?
13.指令微调的好处?
14.预训练和微调哪个阶段注入知识的?15.想让模型学习某个领域或行业的知识,是
应该预训练还是应该微调?
16.多轮对话任务如何微调模型?
17.微调后的模型出现能力劣化,灾难性遗忘
是怎么回事?

大模型(LLMs)langchain面

1.基于 LLM+向量库的文档对话 基础面
2.基于 LLM+向量库的文档对话 优化面
3.LLMs 存在模型幻觉问题,请问如何处理?
4.基于 LLM+向量库的文档对话 思路是怎么样?
5.基于 LLM+向量库的文档对话 核心技术是什么?
6.基于 LLM+向量库的文档对话 prompt 模板如何构建?
7.痛点1:文档切分粒度不好把控,既担心噪声太多又担心语义信息丢失
2.痛点2:在基于垂直领域 表现不佳
3.痛点 3:langchain 内置 问答分句效果不佳问题
4.痛点 4:如何 尽可能召回与 query相关的Document 问题
5.痛点5:如何让 LLM基于 query和 context
得到高质量的response
6.什么是 LangChain?
7.LangChain 包含哪些 核心概念?
8.什么是 LangChain Agent?
9.如何使用 LangChain ?
10.LangChain 支持哪些功能?
11.什么是 LangChain model?
12.LangChain 包含哪些特点?

大模型(LLMs):参数高效微调(PEFT)面

1.LORA篇2.QLoRA篇
3.AdaLoRA篇
4.LORA权重是否可以合入原模型?
5.LORA 微调优点是什么?
6.LORA微调方法为啥能加速训练?
7.如何在已有 LORA模型上继续训练?
1.1 什么是 LORA?
1.2 LORA 的思路是什么?
1.3 LORA 的特点是什么?
2.1 QLORA 的思路是怎么样的?
2.2 QLORA 的特点是什么?
8.3.1 AdaLoRA 的思路是怎么样的?为什么需
要 提示学习(Prompting)?
9.什么是 提示学习(Prompting)?10.提示学习(Prompting)有什么优点?11.提示学习(Prompting)有哪些方法,能不能稍微介绍一下它们间?
4.4.1为什么需要 P-tuning v2?
4.4.2 P-tuning v2 思路是什么?
4.4.3 P-tuning v2 优点是什么?
4.4.4 P-tuning v2 缺点是什么?
4.3.1为什么需要 P-tuning?

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

## 大模型评测面(LLMs)三

大模型怎么评测?
大模型的 honest原则是如何实现的?模型如何判断回答的知识是训练过的已知的知识,怎么训练这种能力?大模型(LLMs)强化学习面奖励模型需要和基础模型一致吗?RLHF 在实践过程中存在哪些不足?如何解决 人工产生的偏好数据集成本较高很难量产问题?如何解决三个阶段的训练(SFT->RM->PPO)过程较长,更新迭代较慢问题?如何解决 PPO 的训练过程同时存在4个模型(2训练,2推理),对计算资源的要求较高问题?

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐