跳转至

某大厂大语言模型面试题

本又讨论了某大1大语言模型面试题相关内容,涵盖AI大模型教程、就业现状、常见面试问题及解答等。关键要点包括:

教程资源:提供AI大模型全套教程、企业级应用开发教程、MCP Server开发零基础教程等。

就业思考:探讨AI大模型工程师就业现状,如开发与算法方向选择、技术门槛、学历要求及学习方法。

面试问题解答:解答27个大型语言模型面试问题,涉及Transformers架构、NSP应用、模型性能评估等。

模型架构优势:对比Transformer与LSTM、CNN、RNN架构优势,如训练速度快、对噪声和缺失数据鲁棒性强等。

训练与学习技术:介绍训练大型语言模型存储特定上下文方法、迁移学习技术及训练方式。

模型相关概念:解释标记、对齐问题、自适应Softmax等概念及用途。

训练技术区别:说明next-token-prediction和masked-language-modeling等训练技术区别。

问题1:能否概述一下 Transformers 的架构?

我们首先将模型视为一个黑盒子。在机器翻译应用程序中,它会接受一种语言的句子,然后输出另一种语言的翻译,如下所示:

Image

深入研究黑匣子,变压器内部有:

编码组件:它是一堆 N 编码器

解码组件:解码器堆栈N

以及它们之间的联系

Image

输入首先流经 自注意力层 , 自注意力层 的输出被馈送到 前馈神经网络 。这个序列不断重复,直到到达最后一个编码器

最后,解码器接收编码器组件的输出,同样具有自注意层和前馈层,流程与之前类似,但是在它们之间有一个注意层,帮助解码器关注输入句子的相关部分

问题2:下一句预测(NSP)在语言建模中是如何使用的?

下一句预测(NSP)用于语言建模,是 BERT 模型背后训练过程的一半(另一半是 掩码语言建模(MLM))。下一句预测训练的目标是预测一个句子是否在逻辑上跟随呈现给模型的另一个句子。

在训练过程中,模型会得到成对的句子,其中一些句子在原文中是连续的,而另一些则不是。然后,模型会接受训练,以预测给定的一对句子是否相邻。这使模型能够理句子之间的长期依赖关系。

研究人员发现,如果没有 $ \underline{\text{NSP}} $, $ \underline{\text{BERT}} $ 在每个指标上的表现都会变差——因此它的使用与语言建模相关。

问题3:如何评价语言模型的性能?

在 NLP 中,评估语言模型有两种方式:外部评估和内部评估。

内在评估可以捕获模型捕获其应该捕获的内容(例如概率)的程度。

外部评估(或基于任务的评估))捕捉模型在特定任务中的有用程度。

LM 的一个常见内在评估是困惑度。它是模型预测单词的逆概率的几何平均值。直观地说,困惑度意味着惊讶。我们测量模型看到新数据时的惊讶程度。困惑度越低,训练效果越好。另一个常见的衡量标准是交叉熵,它是困惑度的对数(底数)。根据经验法则,困惑度的降低是值得注意的。

外部评估 将取决于任务。例如:对于语音识别,我们可以通过运行语音识别器两次(每个语言模型各一次)来比较两种语言模型的性能,看看哪个模型的转录更准确。

问题4:生成语言模型如何工作?

最基本的想法如下:它们将 n 标记作为输入,并产生 one 标记作为输出。

Image

标记是一段文本。在 OpenAI GPT 模型中,常用短词通常对应单个标记,而长词和不常用词通常会被拆分成多个标记。

这个基本思想应用于扩展窗口模式。你给它,输入标记,它产生one标记输出,然后它将输出标记合并为下一次送代的输入的一部分,产生新的标记输出,依此类推。这个模式不断重复,直到达到停


止条件,表明它已完成生成您需要的所有文本。

现在,输出背后是所有可能标记的概率分布。模型的作用是返回一个向量,其中每个条目表示选择特定标记的概率。

Image

此概率分布来自训练阶段。在训练期间,模型会接触大量文本,并调整其权重以在给定输入标记序列的情,况下预测良好的概率分布。

GPT生成模型是通过大量互联网数据进行训练的,因此它们的预测反映了它们所见过的各种信息。

问题5:大型语言模型上下文中的标记是什么?

ChatGPT 和其他 $ \underline{LLM} $ 依赖于将输入文本分解成片段。每个片段大约是一个单词大小的字符序列或更小的片段。我们称这些为子词标记。该过程称为标记化,使用标记器完成。

标记可以是单词,也可以是字符块。例如,“hamburger”一词被分解为标记“ham”、“bur”和“ger”,而“pear”等简短而常见的单词则是单个标记。许多标记以空格开头,例如“hello”和“bye”。

这些模型理解这些标记之间的统计关系,并且擅长生成标记序列中的下一个标记。

给定 API 请求中处理的令牌数量取决于输入和输出的长度。根据粗略的经验法则,令牌 $ \boxed{1} $ 大约为英文文本的 $ \boxed{4} $ 字符或单词。

Image
问题6:在 NLP 中使用基于 Transformer 的架构与基于 LSTM 的架构有何优势?

为了在Transformer之前创建序列到序列模型,我们使用了著名的LSTM及其编码器-解码器架构,其中

“编码器”部分创建了单词序列的矢量表示。

“解码器”从向量表示中返回一个单词序列。

LSTM模型考虑到了单词之间的相互依赖性,因此我们需要前一个状态的输入才能对当前状态进行任何操作。该模型有一个限制:训练速度相对较慢,输入序列不能并行传递。

现在,Transformer的理念是不使用循环网络,而是仅使用位于其架构核心的注意力机制来保持序列中单词的相互依赖性。注意力机制衡量两个序列中两个元素之间的关联程度。

在基于 Transformer 的架构中,注意力机制应用于单个序列(也称为 自注意力层)。自注意力层 确定同一序列中 不同单词的相互依赖性,以将相关表示与其关联。以这句话为例:“狗没有过马路,因为它太累了”。对人类来说,“它”显然指的是 “狗”,而不是 “街道”。因此,自注意力过程的目标是检测 “狗” 和 “它” 之间的联系。与前代产品相比,这一特性使 Transformer 的训练速度更快,而且事实证明,它们对噪声和缺失数据的鲁棒性更强。

另外,在上下文嵌入中,Transformer可以从上下文中提取信息来纠正缺失或噪声数据,这是其他神经网络无法提供的功能。

问题7:能提供一些大型语言模型中对齐问题的例子吗?

一致性问题是指模型的目标和行为与人类价值观和期望的一致程度。

大型语言模型,例如 GPT-3 ,基于来自互联网的大量文本数据进行训练,能够生成类似人类的文本,但它们可能并不总是产生符合人类期望或理想值的输出。

大型语言模型中的对齐问题通常表现为:

缺乏帮助:当模型没有遵循用户的明确指示时。

幻觉:当模型编造不存在或错误的事实时。

缺乏可解释性:人类很难理解模型如何得出特定的决定或预测。

产生有偏见或有害的输出:当使用有偏见/有害数据训练的语言模型时,即使没有明确指示这样做,也可能在其输出中重现这种输出。

问题8:自适应 Softmax 在大型语言模型中有何用处?

自适应 softmax 在大型语言模型中非常有用,因为它可以在处理大型词汇表时进行高效的训练和推理。传统的 softmax 涉及计算词汇表中每个单词的概率,随着词汇量的增长,计算成本会变得很高。

自适应 softmax 根据单词的常见程度将单词分组到聚类中,从而减少了所需的计算次数。

这减少了计算词汇表概率分布所需的计算次数。通过使用自适应 softmax,大型语言模型可以得到更高效的训练和运行,从而实现更快的实验和开发。


问题9:BERT训练如何进行?

BERT(来自 Transformers 的双向编码器表示)利用 变换器架构 来学习文本中单词之间的上下文关系,并且由于 BERT 的目标是生成语言表示模型,因此它只需要 编码器 部分。

BERT编码器的输入是一系列token,这些 token 首先被转换成/向量,然后在神经网络中处理。然后,BERT算法利用以下两种训练技术:

掩码 LM (MLM):在将单词序列输入BERT之前,每个序列中的一定比例的单词会被替换为一个【MASK】标记。然后,该模型会尝试根据序列中其他非掩码单词提供的上下文来预测掩码单词的原始值。

下一句预测(NSP):模型在预训练期间将两个掩码句子连接起来作为输入。有时它们对应于原文中彼此相邻的句子,有时则不是。然后,模型必须预测这两个句子是否彼此相连。

Image

然后,为了预测第二句话是否确实与第一句话有关,执行以下步骤:

整个输入序列都经过 Transformer 模型。

使用一个简单的分类层(学习到的权重和偏差矩阵),将标记的输出 [CLS] 转换为形状向量。

IsNextSequence 用 softmax 计算的概率。

在训练BERT模型时,Masked LM和Next Sentence Prediction一起训练,目标是最小化两种策略的组合损失函数。

问题10:Transformer 网络比 CNN 和 RNN 有何优势?

使用 RNN ,您必须逐字逐句地访问最后一个单词的单元。如果网络形成的范围很长,则可能需要几个步骤才能记住,每个掩码状态(单词中的输出向量)都依赖于前一个掩码状态。这对 GPU 来说是一个主要问题。这种顺序性是并行化过程的障碍。此外,在这种序列太长的情况下,模型往往会一个接一个地忘记远处位置的内容,或者与后面位置的内容混合在一起。通常,每当涉及到长期依赖关系时,我们都知道RNN会受到消失梯度问题的影响。

早期的努力是尝试使用顺序卷积来解决依赖性问题,以解决RNM问题。采用长序列并应用卷积。缺点是CNN方法需要很多层来摘获顺序数据结构中的长期依赖性,但永远不会成功,或者使网络变得太大而最终变得不切实际。


Transformer提出了一种新方法,它提出对每个单词进行编码并应用注意力机制来连接两个较远的单词,然后解码器根据当前单词之前的所有单词来预测句子。此工作流程可以并行化,从而加速学习并解决长期依赖问题。

问题11:有没有办法训练大型语言模型(LLM)来存储特定的上下文?

目前“记住”过去对话的唯一方法是将过去的对话包含在提示中。

You are a friendly support person. The customer will ask you questions, and you will provide polite responses.

Q: My phone won't start. What do I do? — This is a past question.

A: Try plugging your phone into the charger for an hour and then turns it on. The most common cause for a phone not starting is that the battery is not full.

Q: I've tried that. What else can I try? — This is a past question.

A: Hold the button for 15 seconds. It may need a reset.

Q: I did that. It worried, but the screen is blank. — This is a current question.

在某些时候,你会达到令牌限制(如果你聊天的时间足够长)。每个 GPT-3 模型都有你可以传递给它的令牌的最大数量。在的情况下 $ \uwave{\text{text-davinci-003}} $,它是 $ \uwave{\text{4096}} $ 令牌。当你达到此限制时,OpenAI API 将抛出错误。

问题12:您可以在 LLM 中使用哪些迁移学习技术?

有几种迁移学习技术在LLM中常用。以下是三种最流行的技术:

基于特征的迁移学习:该技术涉及使用预先训练的语言模型作为特征提取器,然后在提取的特征之上为目标任务训练单独的模型。

微调:涉及采用预先训练的语言模型并针对特定任务进行训练。有时在微调时,您可以保持模型权重不变,只需添加要训练的新层。其他时候,您可以一次慢慢解冻一个层。您还可以在预训练时使用未标记的数据,通过屏蔽单词并尝试预测哪个单词被屏蔽。

多任务学习:涉及同时在多个相关任务上训练单个模型。其理念是,模型将学会在任务之间共享信息,从而提高每个任务的性能。

问题13:什么是迁移学习?为什么它很重要?

预先训练的模型(例如 GPT-3)本质上为开发人员承担了大量艰苦的工作:它教会模型对问题有基本的了解,并以通用格式提供解决方案。

通过迁移学习,假设预先训练的模型可以生成基本解决方案,我们可以将学习迁移到另一个环境中。因此,我们将能够使用微调根据我们的要求定制模型,而无需重新训练整个模型。

问题14:编码器和解码器模型有什么区别?

它们只使用了 Transformer 模型 的编码器。在每个阶段,注意力层都可以访问 初始句子 中的 所有单词。


这些模型的预训练通常围绕以某种方式破坏给定的句子(例如,通过掩盖其中的随机单词)并要求模型查找或重建初始句子。

它们最适合需要理解完整句子的任务,例如句子分类、命名实体识别(以及更一般的词分类)和提取问答。

它们只使用 Transformer 模型 的解码器。在每个阶段,对于给定的单词,注意力层 只能访问句子中位于该单词之前的单词。

解码器模型的预训练通常围绕预测句子中的下一个单词进行。

它们最适合涉及文本生成的任务。

Image

问题15:Wordpiece和BPE有什么区别?

WordPiece 和 BPE 都是子词标记算法。它们的工作原理是将单词分解为更小的单位,称为子词。然后我们定义所需的词汇量并不断添加子词,直到达到限制。

BPE 从训练数据中所有字符的词汇表开始。然后,它会迭代合并最常见的字符对,直到达到所需的词汇表大小。合并是贪婪的,这意味着最频繁的字符对总是首先合并。

WordPiece 也从训练数据中所有字符的词汇表开始。然后,它使用统计模型来选择最有可能提高训练数据可能性的字符对,直到达到词汇量。

问题16:(LLM)中的全局注意力和局部注意力有何区别?

考虑例句 “Wally 在哪里”,应将其翻译为意大利语 “Dove e Wally”。在 Transformer 架构中,编码器逐字处理输入,产生三个不同的隐藏状态。

然后,注意层从所有编码器隐藏状态(通常带有加权和)中生成单个固定大小的上下文向量,它表示在处理此类输入词时必须给予该上下文的“注意力”这时全局和局部注意力就会发挥作用。

全局注意力机制 在创建 上下文向量 时会考虑所有隐藏状态。应用时会产生大量计算。这是因为必须考虑所有隐藏状态,将它们连接成矩阵,然后由 NN 处理以计算它们的权重。

另一方面,局部注意力在创建上下文向量时只考虑所有隐藏状态的子集。子集可以通过多种不同的方式获得,例如使用单调对齐和预测对齐。


Image

问题17:LLM 中的next-token-prediction和 masked-language-modeling有什么区别?

两者都是训练大型语言模型的技术,涉及预测单词序列中的单词。

下一个标记预测:模型被赋予一个单词序列,目标是预测下一个单词。例如,给定短语Hannah is.___该模型将尝试预测:

汉娜(Hannah)是姐姐

汉娜是朋友

汉娜(Hannah)是一名营销人员

汉娜(Hannah)是一名喜剧演员

掩码语言建模:为模型提供一系列单词,目标是预测中间的掩码单词。例如,给定短语 “Jako mask reading”,模型将尝试填补空白,因为,

Jacob 害怕读书

Jacob 喜欢读书

Jacob 喜欢读书

Jacon 讨厌读书

问题18:为什么基于 Transformer 的架构中需要多头注意力机制?

就拿这个句子为例:

这里,如果我们以单词“ $ \underline{\text{dog}} $”为例,从语法上讲,我们可以理解单词“ $ \underline{\text{Bark}} $”“ $ \underline{\text{cute}} $”和“ $ \underline{\text{he}} $”应该与单词“ $ \underline{\text{dog}} $”具有某种意义或相关性。这些单词表示这只狗的名字叫Bark,它是一只公狗,它是一只可爱的狗。

简单来说,单靠一个注意力机制可能无法正确识别这三个词与 ‘ $ \underline{\text{dog}} $’ 相关,而我们可以感觉到,在这里最好使用三个注意力来表示与 ‘ $ \underline{\text{dog}} $’ 相关的三个词。

因此,为了克服使用单一注意力机制的一些缺陷,我们使用了多头注意力机制。这减少了单一注意力机制查找所有重要单词的负担,也增加了轻松找到更多相关单词的机会。


问题19:为什么要使用编码器-解码器 RNN 而不是普通的序列到序列 RNN 进行自动翻译?

简单的序列到序列 RNN 会在读取句子的第一个单词后立即开始翻译该句子,而编码器-解码器 RNN 会先读取整个句子,然后进行翻译。

一般来说,如果你一次翻译一个句子中的一个单词,结果会很糟糕。例如,法语句子“Je vous en prie”的意思是“不客气”但如果你使用简单的序列到序列 RNN一次翻译一个单词,你会得到“我为你祈祷”,这是没有意义的。所以在自动翻译的情况下,最好使用编码器-解码器 RNN 先阅读整个句子,然后再翻译。

问题20:解释一下Transformer 架构中的Self-Attention机制是什么?

我们可以将自注意力机制视为一种通过包含输入上下文信息来增强输入嵌入信息内容的机制。换句话说,自注意力机制使模型能够权衡输入序列中不同元素的重要性,态调整它们对输出的影响。

假设我们有一个文本x,我们使用嵌入算法将其从原始文本转换而来。然后为了应用注意力机制,我们将查询(q)以及一组键值对(k,v)映射到输出x。q、k和v都是向量。结果称为注意力头,然后沿着简单的前馈神经网络发送。

Image

问题21:迁移学习如何在(LLM)中发挥作用?

LLM 中的迁移学习涉及在大量文本语料库上训练语言模型,然后在特定任务上对模型进行微调。该过程涉及几个步骤:

预训练:在此步骤中,语言模型在大量文本语料库上进行训练,以学习语言中的模式和关系。预训练的目标是生成一组可用于各种 NLP 任务的通用语言表示。


微调:语言模型经过预训练后,可以针对特定的NLP任务进行微调,例如情绪分析或文本分类。微调涉及采用预训练模型并在特定于目标任务的较小数据集上对其进行训练。微调的目标是使通用语言表示适应手头的特定任务。

推理:模型经过微调后,即可用于对新数据进行预测。在推理过程中,模型会接收输入文本并生成输出,该输出表示模型对当前任务的预测。

Image

问题22:LLM参数与神经网络中的权重有何关系?

是的,大型语言模型(LLM)中的参数与标准神经网络中的权重类似。在 LLM 和神经网络中,这些参数都是数值,它们以随机系数开始,并在训练期间进行调整以最大限度地减少损失。这些参数不仅包括决定神经元之间连接强度的权重,还包括影响神经元输出的偏差。在 GPT-4 或其他基于Transformer 的模型等大型语言模型(LLM)中, $ \cdot $ 参数”词是指决定模型行为的数值。这些参数包括权重和偏差,它们共同定义了模型内神经元的连接和激活。以下是更详细的解释:

权重:权重是定义模型中不同层之间神经元连接强度的数值。在 LLM 中,权重主要用于构成模型架构的注意力机制和前馈神经网络。它们在训练过程中进行调整,化模型生成相关且连贯的文本的能力。

偏差:偏差是添加到输入加权总和中的额外数值,然后通过激活函数传递。它们有助于控制神经元的输出,并为模型的学习过程提供灵活性。偏差可以被认为是一种将激活函数向左或向右移动的方法,使模型能够学习输入数据中更复杂的模式和关系。

训练过程涉及迭代调整这些参数(权重和偏差)以最小化损失函数。这通常使用梯度下降或其变体(例如随机梯度下降或 Adam 优化器)来完成。损失函数测量模型预测与真实值(例如句子中正确的下一个单词)之间的差异。通过最小化损失,模型可以学习生成与其训练数据中的模式非常相似的文本。

研究人员经常使用术语“参数”而不是“权重”来强调权重和偏差在模型的学习过程中都起着至关重要的作用。

问题23:精细调整LLM有哪些缺点?

微调需要手动创建大量数据,并且模型可能会记住您提供的部分数据。

每次您想要添加新功能时,您都需要创建一堆虚假数据,然后运行微调过程,然后使用新微调的模型,而不是在提示中添加几行。

它比较贵。


问题24:BERT 中的Word Embedding、Position Embedding和PositionalEncoding有什么区别?

词嵌入是一个学习到的查找图,即每个单词都被赋予一个独热编码,然后将其作为索引,并且与该索引相对应的是一个n维向量,其中的系数是在训练模型时学习到的。

位置嵌入类似于词嵌入。不同之处在于,它使用句子中的位置作为索引,而不是独热编码。然后,这些位置对应于一个-向量,其系数来自训练模型。

另一方面,位置编码是一个静态西数,它将整数输入映射到实值向量,以捕捉位置之间的固有关系。也就是说,它捕捉到这样一个事实:输入中的位置与位置的关系比与位置的4关系更密切。换句话说,位置编码不是学习而是一个选择的数学函数,517否—Rn

问题25:基于特征的迁移学习与(LLM)中的微调有何区别?

在基于特征的迁移学习中,你可以通过运行模型来训练词嵌入,然后在不同的任务或模型上使用模型中的那些特征(即词向量)

进行微调时,您可以使用完全相同的模型A,只是将其运行在不同的任务上。有时在进行微调时,您可以保持模型权重不变,只需添加一个要训练的新层。其他时候,您可以一次慢慢解冻一个层。您还可以在预训练时使用未标记的数据,通过屏蔽单词并尝试预测哪个单词被屏蔽。

Image

问题26:为什么 transformer 需要位置编码?

在 RNN 中,我们将句子逐字逐句地输入到网络中。也就是说,首先将单词 "工" 作为输入传递,然后传递单词 "am",依此类推。我们逐字逐句地输入句子,以便我们的网络完全理解句子。

Image

但是对于 Transformer 网络,我们不遵循循环机制。因此,我们不是逐字逐句地输入句子,而是将句子中的所有单词并行输入到网络中。并行输入单词有助于减少训练时间,也有助于学习长期依赖关


系。

当我们将单词并行输入到 Transformer 时,词序(单词在句子中的位置)很重要。因此,我们应该向 Transformer 提供一些有关词序的信息,以便它能够理解句子。

如果我们将输入矩阵直接传递给 Transformer,它就无法理解词序。因此,我们不需要将输入矩阵直接输入 Transformer,而是需要添加一些指示词序(单词的位置)的信息,以便我们的网络能够理解句子的含义。为此,我们引入了一种称为位置编码的技术。顾名思义,位置编码是一种指示单词在句子中的位置(词序)的编码。