【大厂AI实践】腾讯:微信搜一搜中的智能问答技术
🌟 嗨,你好,我是 青松 !
🌈 自小刺头深草里,而今渐觉出蓬蒿。
NLP Github 项目推荐:
-
【AI 藏经阁】:https://gitee.com/fasterai/ai-e-book
介绍:该仓库主要分享了数百本 AI 领域电子书
-
【AI 算法面经】:fasterai/nlp-interview-handbook#面经
介绍:该仓库一网打尽互联网大厂NLP算法面经,算法求职必备神器
-
【大模型(LLMs)面试笔记】:https://gitee.com/fasterai/nlp-interview-handbook
介绍:该仓库汇总了 NLP 算法工程师高频面题,适合大模型初学者和正在准备面试的小伙伴希望能帮助各位同学缩短面试准备时间,不错过金三银四涨薪窗口,迅速收获心仪的Offer 🎉🎉🎉
文章目录
- 大模型(LLMs)高频面题全面整理(🌟2025 Offer 必备🌟)
- 一、大模型进阶面
- 二、大模型微调面
- 三、大模型(LLMs)基础面
- 四、NLP 任务实战面
- 五、NLP 基础面
- [💯 分词(Tokenizer)篇](https://t.zsxq.com/YmHO4)
- [💯 词嵌入(Word2Vec)篇](https://t.zsxq.com/YmHO4)
- [💯 卷积神经网络(CNN)篇](https://t.zsxq.com/YmHO4)
- [💯 循环神经网络(RNN)篇](https://t.zsxq.com/YmHO4)
- 💯 长短期记忆网络(LSTM)篇
- [💯 BERT 模型篇](https://t.zsxq.com/YmHO4)
- [💯 BERT 变体篇](https://t.zsxq.com/YmHO4)
- [💯 BERT 实战篇](https://t.zsxq.com/YmHO4)
- 六、深度学习面
导读:今天给大家介绍微信搜一搜中的智能问答技术。
围绕下面四点展开:
- 背景介绍
- 基于图谱的问答
- 基于文档的问答
- 未来展望
01 背景介绍
1. 从搜索到问答
搜索引擎是人们获取信息的重要途径,其中包含了很多问答型的query。但传统的搜索只能返回TopK的网页,需要用户自己从网页中分析甄别答案,体验较差。原因是传统搜索引擎只是对query和doc做“匹配”,并不是真正细粒度地理解query。智能问答正好可以弥补这个局限,它的优势在于能够更好地分析query,直接返回精准、可靠的答案。
2. 搜索场景下的常见用户问答需求
- 基于图谱的问答事实型query,答案形式是实体短语类的短答案。例如“刘德华的妻子”,或者实体集合“中国四大名著”,还有时间/数字等。
- 第二类是观点型query,答案形式是“是或否”,例如像“高铁可以逃票吗”等。
- 第三类是摘要型query,不同于前两类短答案,答案可能需要用长句的摘要来回答,通常是“为什么”、“怎么办”、“怎么做”等问题。
- 最后一类是列表型query,通常是流程、步骤相关的问题,答案需要用列表做精确的回答。
3. 答案知识来源
- 结构化数据,来源于百科、豆瓣等垂类网站的infobox。优点是质量高,便于获取和加工;缺点是只覆盖头部知识,覆盖率不够。例如“易建联的身高”、“无间道1的导演是谁”。
- 非结构化的通用文本,来源于百科、公众号等互联网网页文本库。优点是覆盖面广,但缺点在于文本质量参差不齐,对医疗、法律等专业领域知识的覆盖度和权威度不够。
- 非结构化的专业垂类网站问答库,来源于专业领域垂类站点的问答数据,通常以问答对的形式存在。优点是在专业领域知识覆盖广、权威度高。
4. 智能问答的技术路线
支持智能问答的技术路线主要分两种:KBQA(基于图谱的问答) 和DocQA(基于文档的问答)。
- KBQA的优点是扩展性强,能查询实体的各种属性,同时支持推理,可以解析复杂查询。例如图中右边的一个例子,“姚明的老婆有多高”可以解析得到中间的语义表达式,从而转换成知识图谱的查询,得到问题的答案。涉及的关键技术是图谱构建(包括schema构建、实体挖掘、关系抽取、开放信息抽取技术)和问题解析(包括实体链接、基于semantic parsing的问题解析方法、基于检索的问题解析方法等技术)。
- DocQA相较于KBQA的优点是覆盖面更广,能覆盖更多中长尾的问题,同时能解决一些KBQA难以解析的问题。例如,“中国历史上第一个不平等条约”这个query,很难解析成结构化的表达,涉及到的技术主要包括阅读理解(MRC)、开放域问答(OpenQA)。
—
02 基于图谱的问答
KBQA的定义:给定自然语言问题,通过对问题进行语义理解和解析,进而利用知识库进行查询、推理得出答案。面临的难点主要有以下几点:
- 开放领域知识库中存在大量的歧义实体,例如“长城”、“苹果”,可能在知识库中存在多种类型的同名实体。从query中识别出正确的实体是整个KBQA中一个比较关键的模块。
- 开放域的知识图谱属性众多,需要从4000+属性中识别出正确的属性。
- 自然语言的问法多样,同一个属性有不同问法,例如询问李白的出生地,可以有“李白是哪里人”、“李白老家是哪里的”等多种不同的表达。同一个问法也可能针对不同的属性,例如“姚明有多高”、“珠穆朗玛峰有多高”,同样是“有多高”,但询问属性分别是身高和海拔。
1. KBQA技术方案
- 方案一:检索式的方法。把query和候选答案(知识图谱中的候选节点)表征为向量计算相似度。优点是可以进行端到端的训练,但可解释性和可扩展性差,难以处理限定、聚合等复杂类型的query。
- 方案二:基于解析的方法。把query解析成可查询的结构化表示,然后去知识图谱中查询。这种方法的优点是可解释性强,符合人能理解的图谱显示推理过程,但依赖高质量的解析算法。综合考虑优缺点,我们在实际工作中主要采用的是这种方法。
2. KBQA整体流程
首先以一个例子介绍KBQA的整体流程:
- 实体链接,识别出query中的实体,并关联到图谱中的节点;
- 关系识别,query询问的具体属性;
- Topic实体识别,当query涉及到多个实体时,判断哪个实体是问题的主实体;
- 条件/约束识别,解析query中涉及到的一些约束条件;
- 查询推理,将前几步的结果组合成查询推理的语句,通过知识图谱获得答案。
在整个流程中,比较关键的是实体链接和关系识别这两个模块,下面对这两个模块做重点介绍。
3. KBQA-实体链接
实体链接,从文本中识别出所有的实体mention,然后再把他们链接到对应的知识图谱上。这里展示了一个实体链接的例子。
首先通过NER、SpanNER等方法,对query进行mention识别;根据识别出的mention,在知识图谱中召回候选多个实体,并进行实体消歧,本质上也就是对召回实体的排序打分。有时由于知识图谱数据不全,库中根本不存在对应的实体,因此通常会有一步“Top1验证”,即对排序后的top1结果再进行一次打分,确定top1结果是否是最终的实体。
这里简单介绍一下我们在工作中用到的一个知识图谱——TopBase。它是由TEG-AI平台部构建并维护的一个专注于通用领域的知识图谱。在数据层面有五十多个领域,三百多个实体类型,亿级实体和十亿级三元组。对这个图谱我们做了一个比较完善的自动化的构建流程,包括下载、抽取、去噪、融合、计算和索引步骤。由于结构化的InfoBox数据可能是不全的,我们也构建了一个非结构化数据的抽取平台。
接下来介绍候选实体召回模块。传统的做法一般是用实体词表,把知识图谱中所有实体的原名和别名做成一个词表,在召回时用mention做词表召回。一般会有两个问题:
①词表不完整导致召回率较低,比如图中的宝龙和索八,如果没有挖掘出别名就无法召回。
②有些实体mention召回的实体较多,会导致后面消歧模块的耗时比较长,比如图中的张伟,在知识库中可能有几十上百个不同类型的人物。
针对这两个问题,主要采用的是基于向量召回的解决方案:将Query和实体分别表征成向量,然后计算相似度。匹配模型是一个双塔模型,训练数据是Query和它对应的实体mention。对于候选实体会用到名字、描述信息和简介做为模型输入,通过这个模型进行匹配做召回。
在训练过程中存在一个问题,这个任务中负例很多,如果直接采用随机采样的方式,会导致大部分负例比较简单,使得困难负例学得不好。采用的解决方案是:用上一轮的模型获得query的候选实体当做负例,和当前的训练集融合到一起训练模型,不断迭代这个流程。这样做的好处是,在迭代训练的过程中,每一轮都会加入困难的负例,让困难负例学得更好。从表格里可以看到这样的训练效果更好。
在召回实体后,下一个流程是实体消歧,采用的模型是交互式BERT匹配模型,将Query和实体的简介、描述信息拼接在一起打分。但是对实体的描述只有简介信息是不够的,例如在《唐人街探案》中,“长泽雅美”没有出现在简介里,只在演员属性里。因此,更重要的是将实体的属性值也加入到消歧的模型里。但实体的属性值量非常大,不可能全部加入,采用的方案是对属性进行粗召回,用query与实体的属性值做轻量级的相似度计算,例如词袋、word2vec的向量选出TopK等方法,拼接到这里做消歧。
4. KBQA-关系识别
关系识别是识别出这个问题问的是实体的哪一个关系或属性,要完成这个任务,不管是基于规则策略的方法还是基于模型的方法,首先要做的是挖关系的模板库,常用的方法:
① 基于种子三元组的回标,这是一个比较经典的方法。从知识图谱中找到属性和关系的一些常见的三元组,去回标这种问答对,像问题匹配到主语,段落答案匹配到宾语,就有理由认为这个问题是在问这个属性。在匹配一些数据之后,可以通过策略或者人工的方式,为每种关系或属性挖掘出模板。
② 对于有种子问法的属性,可以采用基于问法pattern扩展的方式:利用同义匹配模型从query log中检索出同义的扩展问法,可以利用query点击日志或者开源数据集训练模型,当有一个属性的种子问法后,用这个模型去匹配query log得到数据,结合人工或机器的验证来获得扩展问法。
刚才介绍了模板库的构建,我们的模型也是基于匹配的模型。如图左边把识别出的mention用它的type去替代,通过Encoder得到向量;如图右边,是对关系的encode。关系的表示有两部分,第一部分是对每个关系独立one-hot表示,第二部分是将每个关系的字符串拆分成文本token。这个模型还有一个好处是可以增加一些新的特征,用于丰富关系的表示,如图右边这一部分。比如关系的宾语类型,还有预训练表示向量,可以进一步提升模型的训练效果。
在做关系模型的过程中经常会遇到鲁棒性较差的问题,原因如下:
① 用户Query经常很短,而且表达多样。
② Query表达的细小改变很容易导致模型预测错误。
对于这个问题可以采用的解决方案是引入对抗学习,主要用在样本侧和训练侧。
在样本侧可以通过多种方式生成更多的“对抗样本”,通过样本增强来提升模型鲁棒性和泛化能力。如图对于原始样本,可以通过seq2seq、回译或者同义词替换的方式去生成扩展的对抗样本,但生成的样本中可能有一些并不是同义的,而是噪声,这可以用一个同义的模型或策略来判别。最后将生成的样本和原始样本合并在一起训练,提升模型的鲁棒性。
在训练侧,可以在训练过程中加入扰动,采用对抗学习的方式,隐式构造“对抗样本”。对抗训练一般就是两个步骤,第一是生成扰动:选择梯度方向(使loss最大的方向);第二是Embedding层加上扰动后重新正常训练模型(使loss最小)。
5. KBQA-复杂查询解析
大家通常搜的都是一些简单Query,但也有一部分复杂Query,刚才介绍的关系识别模型是比较难处理复杂Query的。图中列举了一些复杂Query的例子,多跳、多限定、序数、是否和计数问题都是用户常搜的复杂Query类型。
这些Query涉及到的关系可能是多个,而且涉及到的实体也是多个。所以用刚才的关系识别模型是难以处理这种情况的。由于是多关系、多实体,可以将其表示为一个图,这里介绍几个查询图,通过这种方式,将刚才的简单单实体、单跳的问答扩展成Query Graph的结构,我们希望用这样一个更复杂的图结构来解析更复杂的Query。
对复杂查询有两个关键的模块,一个是候选路径生成,依据query graph模板生成各种候选路径,但生成的路径数量非常大,几种常见的剪枝方案:
- 二分类判别:简单问题还是复杂问题
- 一跳关系剪枝:减少中间节点数量
- 基于启发式规则剪枝
通过这些方法,在保证一定召回率的基础上,候选可以减少百分之八九十。
对于候选路径排序一般有两种方案:
① 基于BERT语义匹配的排序模型。BERT需要输入一个句子,因此首先将查询图序列化成一段文本,再和问题拼接一起去搜,得到匹配分,再基于pair-wise的方法训练。这种方法的不足是,将查询图进行了序列化,没有更好地利用图的结构化信息。
② 基于图表示的模型。Query Graph是一些三元组组成的,分别去encode这些三元组,得到encode向量,通过Transformer层去做他们之间的交互,最后将它们aggregation起来得到候选查询图的表征。这种方法要比之间序列化的方法要好。
除了这些深度语义的话,也可以融入一些相关的人工特征来进一步提升效果。
除了刚才介绍的方法,还有一类Query解析方法是基于文法的解析。支持快速配置,支持复杂的和新的查询。
采用的文法表示是上下文无关文法(CFG),语义表示用的是抽象语义表示(AMR)。
如图列举了一个简单的流程。对于一个Query,首先会去做实体和属性的识别,然后进行标签化,再通过标签依据配置的语法规则进行语法解析,例如CYK等经典算法,得到形式化表示。接下来还要推理相关谓语,就是一些属性关系,最终生成一个实际的查询。
03 基于文档的问答
DocQA是指利用检索+机器阅读理解等技术,从开放文本库中抽取出用户问题的答案。主要面临了几个难点:
① 抽取的答案片段的准确性。
② 对无答案段落的据识能力。很多时候段落中并不包含答案,所以要尽量避免从段落中抽取出一些错误的答案。
③ 召回段落与问题的相关性。只有保证了相关性,后面的模型才能抽取出正确的答案。
1. DocQA总体流程
① 针对Query Log进行问答意图的过滤。
② 通过检索模块去段落库中检索相应的一些段落。
③ 对检索到的TopK段落,做一个Reader模型(多段落-MRC)。
④ 对答案进行重排序和拒识判定。
⑤ 输出最终答案。
可以看到全流程中比较重要的是检索模块和多段落的MRC模块。
2. DocQA-语义检索
对于检索模块,常遇到的问题如下:
① 特定领域相关性标注样本有限,如何利用有限的标注进一步提升模型泛化能力。
② 训练和预测的不一致问题:匹配模型在训练过程中,一般采用的都是In Batch Negative的方式,从Batch内的其他的Query对应的段落作为这个Query的负例,由于我们在预测过程中采用的是全库检索,可能整个库达到数百万或者数千万规模,会导致检索预测时的过召回问题,召回了很多错误的段落,这种方式会造成训练和预测的不一致问题。
针对这个问题有几种优化方案:
① 利用大量(问题、段落)问答对通过策略和人工筛选出一些质量比较高的来构造预训练任务,相当于在BERT训练模型基础之上,通过二次预训练来提升模型的效果。从Batch内部选Negative换成从Batch外部去选Negative,一般在训练匹配模型时,如果采用多机多卡的方式时,可以把别的卡的Query段落作为当前卡的Query的负例,每个Query的负例规模,就会从batch_size提升到gpu_num * batch_size,这样见到的负例就会更多,模型就会训练得更充分一些,可以较大地缓解训练和预测不一致的问题
② 可以利用大量<问题,答案>pair对产生远监督训练样本来增强模型训练样本。<问题,答案>对的来源有很多方式,可以搜集一些开源数据集的问答对,或者KBQA这种去回答的问答对,有了问答对之后就可以引入他们进行远监督的样本生成。
如图就是整个流程:首先会用当前模型对收集到的QA对的Q去召回TopK的段落,如果是第一次,可以采用bm25这种无监督的方式去召回段落。召回段落后就可以用QA对的A去回标这些段落。回标到的当做正例,没回标到的当做负例。这样可以将生成的远监督样本和标注样本结合到一起去训练匹配模型,然后继续迭代。这种迭代方式可以引入更多困难负例,让模型学得更好。
3. DocQA-答案抽取
接下来介绍答案抽取(MRC)。
一般对于实体短语类(短答案)抽取,会将问题和段落拼接到一起,用一个BERT去预测片段的开始和结束。但这种方式不能很好地应用在长答案和是否类答案的抽取上,此时需要对模型进行一些改造。例如增加分类图,针对是否类答案去判断是“是”还是“否”;对长答案类,对句子进行聚合,从token级聚合成句子表征,得到了句子级的表征之后,就可以预测句子级的开始和结束。
对于答案抽取这个模块,第一个问题是MRC样本标注成本高,难以获取大规模领域内标注样本。一般采用预训练语言模型(BERT)+Finetune方式,借鉴了预训练模型BERT已经学好的一些知识,可以较大地提升模型效果。但MLM和MRC任务差异较大,MLM任务主要是mask一些token,利用句子上下文去预测这些token,主要学习词之间的词法、语法等语言模型特征。MRC则是给定一个问题和相关段落,去段落里寻找问题的答案,主要学习对问题和段落的理解。
因此对于这个问题,更好的一个解决方案是能否构建一个与MRC任务接近的预训练任务。去年论文里的一种方式是利用片段选择 Mask+ 检索来构造类似MRC的预训练样本。
具体流程如图:首先需要具备一个文本库,从中选择一些句子去做实体识别,随后随机地mask掉其中的实体,用通配符来替代。这时可以将这个句子当做一个Query,去段落库中检索出TopK的段落,通过策略筛选之后,这些段落可以当做SSPT的一个样本,这个样本的形态和MRC样本的形态是比较接近的。
**第二个问题是:SSPT构造的样本包含的噪声如何处理?**其中采用的一个解决方案是新增一个问答上下文预测任务。通过建模答案周围的词和问题的语义相关性来判定是否噪声样本。对于一个噪声样本,答案项周围的词和问题无关,我们希望问答上下文预测任务的损失大,而对于正常样本,答案项周围的词和问题相关,问答上下文预测任务的损失小。
具体的做法有三个步骤:
① 定义上下文中每个词的label,将段落里的一些上下文中的一些词作为它的相关词,我们假设距离答案越近的词,越可能成为相关词。因此,启发式定义了段落中每个词属于上下文的概率label,相当于越靠近答案概率越高,越远概率越低,呈指数级衰减。
② 估计每个词属于上下文的概率。用BERT的向量和一个额外的矩阵去算开始和结束,会对每一个词累计其区间,去算出这个词属于上下文的概率。
③ 最后得到每个词的label和概率,就可以通过交叉熵的算法来计算预测任务上下文的损失,最后我们的损失函数就是answer抽取的损失加上这个任务的损失。
希望针对这种噪声样本损失偏大一些,对正常样本损失偏小一些。最后定义了整体的损失之后,就可以采用co-teaching去噪算法去训练模型,样本损失越大,权重越低,来达到样本去噪的目的。
第三个问题是段落独立训练导致多段落抽取效果不好。图中展示的是多段落抽取流程,抽取时每个段落都会抽取出一个答案,会依据分数选择最后的答案。
但由于训练时每个段落是独立训练的,分数在不同段落之间是不可比的。针对这个问题可以采用的方案是段落共同归一,即针对每个段落,通过encoder得到向量后,将向量进行拼接,做一个全局的softmax去做全局的损失。这样做的好处是,最后得到的分数即使是跨段落也是可比的。
还有一个常见的问题:预测开始和结束一般会采用0/1标签,无法区分错误候选答案的优劣。相应的解决方案是将标签soft化,通过计算候选答案和标准答案的词重合率来计算得到不同候选答案的优劣程度的分布。将整个答案span的优劣程度转化为开始和结束标签的概率分布。首先计算所有候选答案的优劣矩阵,将其转化成概率分布,接下来得到每个答案开始/结束位置的概率分布。就将原来0/1的hard表示,转化成了一种soft表示。
04 未来展望
① 复杂问题的解析。除了刚才列举的一些,其实还有很多用户常问的复杂问题,比如多意图、多条件问题。对这些Query进行很好地解析和解答比较困难,需要更强大的query graph表示和更高校的解析算法。
② 提高MRC模型的稳定性。当问题换一种问法,或者段落中存在和答案类型相同的实体且上下文和问题比较相似,容易造成模型抽取错误。这也是学术界研究的热点,也有很多成果,例如加入一些对抗样本或者对抗句子。这也是未来一个比较重要的工作。
③ 带条件且跨片段的实体类短答案抽取。很多时候一个问题虽然是实体短语类的一个短答案问题,但可能在段落里面是带条件的,不同条件下,短实体的答案可能是不一样的。所以,不仅要抽出长句子,更精准的是要抽出这些条件以及条件对应的答案。
05 Q&A
Q1:KBQA中基于基于种子的三元组的回标部分,是不是需要维护一个标准问和相似问的表?
A1:不需要,我们对属性会选出一些三元组,去回标一些问答对,对于回标上的那些问题,就是疑似问这个属性的。对这些问题再做一些去噪,加上人工策略或人工审核,最终拿到每个属性比较干净的训练数据,没有涉及到维护相似问的表。刚才介绍了一种方法,得到一些pattern之后,通过同义模型去Query log中匹配出一些扩展的问法,这些问法再通过策略处理,最后得到这个关系的更多的一些问法。
Q2:KBQA的关系识别里识别除了关系后,怎么去区分识别出的实体是主语还是宾语?
A2:一般会在识别过程中单独通过一个模型去判别,问的是已知SP得O还是根据PO得S。
Q3:在关系识别中,负样本该如何选择?怎么处理字面相似但含义不同的属性?
A3:如果随机抽取负例的话会比较简单,一般采用的方法是引入人工的方法标注,例如扩展问,同义匹配这种方式去获取样本。标注的时候就会自然把那些看着很相似,但其实是错误的问法给标注出来,通过类似主动学习的方式,不断加入一些困难负样本,来提升困难负例样本识别的准确率。
分享嘉宾:杨韬 腾讯 专家研究员
大模型(LLMs)高频面题全面整理(🌟2025 Offer 必备🌟)
全面总结了【大模型面试】的高频面题和答案解析,答案尽量保证通俗易懂且有一定深度。
适合大模型初学者和正在准备面试的小伙伴。
希望也能帮助你快速完成面试准备,先人一步顺利拿到高薪 Offer 🎉🎉🎉
一、大模型进阶面
💯 DeepSeek篇
【大模型进阶面 之 DeepSeek篇】 你必须要会的高频面题 查看答案
- 一、概念篇
- 二、模型结构篇
- 三、预训练篇
- **四、有监督微调篇
- 五、强化学习篇
💯 大模型编辑篇
【大模型进阶面 之 模型魔改篇】 你必须要会的高频面题 查看答案
- 模型编辑(Model Editing)核心目标是什么?
- 对比重新预训练和微调,模型编辑的优势和适用场景是什么?
- 如何用模型编辑修正大语言模型中的知识错误?
- 如何量化评估模型编辑的五大性质?
- 模型编辑局部性如何避免“牵一发而动全身”的问题?
- 知识缓存法(如SERAC)的工作原理是什么?
- 附加参数法(如T-Patcher)如何在不改变原始模型架构的情况下实现编辑?
- 知识缓存法和附加参数法的优缺点有何优缺点?
- ROME方法如何通过因果跟踪实验定位知识存储位置?
- 元学习法(如MEND)如何实现“学习如何编辑”?
- 元学习法的双层优化框架如何设计?
- More …
💯 大模型压缩篇
【大模型进阶面 之 模型压缩篇】 你必须要会的高频面题 查看答案
- 💯 为什么需要对大模型进行压缩和加速?
- 💯 什么是低秩分解?
- 💯 什么是奇异值分解(SVD)?
- 💯 权值共享为什么有效?
- 💯 什么是模型量化?
- 💯 什么是混合精度分解?
- 💯 什么是基于反馈的知识蒸馏?
- 💯 什么是基于特征的知识蒸馏?
- 💯 模型蒸馏的损失函数是什么?
- 💯 描述一下剪枝的基本步骤?
- More …
💯 分布式训练篇
【大模型进阶面 之 分布式训练篇】 你必须要会的高频面题 查看答案
- PS架构和Ring-AllReduce架构有何不同?
- 什么是张量并行,如何使用集群计算超大矩阵?
- 讲一讲谷歌的GPipe算法?
- 讲一讲微软的PipeDream算法?
- ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?
- 用DeepSpeed进行训练时主要配置哪些参数?
- More …
二、大模型微调面
💯 有监督微调(SFT)篇
【大模型微调面 之 SFT篇】 你必须要会的高频面题 查看答案
- 💯 从零训练一个大模型有哪几个核心步骤?
- 💯 为什么要对LLM做有监督微调(SFT)?
- 💯 如何将一个基础模型训练成一个行业模型?
- 💯 如何准备SFT阶段的训练数据?
- 💯 如何自动生成指令构建SFT的训练数据?
- 💯 LM做有监督微调(SFT)变傻了怎么办?
- 💯 有监督微调(SFT)和人工偏好对齐(RLHF)有何区别?
- More …
💯 高效微调篇
【大模型微调面 之 PEFT篇】 你必须要会的高频面题 查看答案
- 💯 全量微调与参数高效微调的区别是什么?
- 💯 什么是轻度微调?轻度微调有哪些常用方法?
- 💯 什么是BitFit微调?
- 💯 分层微调如何设置学习率?
- 💯 什么是适配器微调?适配器微调有哪些优势?
- 💯 讲一讲IA3微调?
- 💯 提示学习(Prompting) 代表方法有哪些?
- 💯 指令微调(Instruct-tuning) 和 提示学习(Prompting)的区别是什么?
- 💯 详细说明LoRA的工作原理及其优势?
- 💯 LoRA存在低秩瓶颈问题,ReLoRA和AdaLoRA分别通过哪些方法改进?
- 💯 动态秩分配(如AdaLoRA)如何根据层的重要性调整秩?
- More …
💯 提示学习篇
【大模型微调面 之 提示学习篇】 你必须要会的高频面题 查看答案
- 💯 提示学习(Prompting) 代表方法有哪些?
- 💯 前缀微调(Prefix-tining)的核心思想?
- 💯 提示微调(Prompt-tuning)的核心思想?
- 💯 P-tuning 的动机是什么?
- 💯 P-tuning v2 进行了哪些改进?
- 💯 提示微调(Prompt-tuning)与 Prefix-tuning 区别是什么?
- 💯 提示微调(Prompt-tuning)与 fine-tuning 区别是什么?
- More …
💯 人类对齐训练(RLHF)篇
【大模型微调面 之 RLHF篇】 你必须要会的高频面题 查看答案
- 💯 RLHF有哪几个核心流程?
- 💯 RLHF与SFT的本质区别是什么?为什么不能只用SFT?
- 💯 什么是人类偏好对齐中的"对齐税"(Alignment Tax)?如何缓解?
- 💯 在强化学习中,基于值函数的和基于策略的的优化方法有何区别?
- 💯 什么是近端策略优化(PPO)?
- 💯 RLHF中的PPO主要分哪些步骤?
- 💯 PPO中的重要性采样(Importance Sampling)如何修正策略差异?
- 💯 DPO如何通过隐式奖励建模规避强化学习阶段?
- 💯 DPO vs PPO:训练效率与性能上限的对比分析?
- 💯 RLHF训练数据的格式是什么样的?
- 💯 如何选择人类偏好对齐训练算法?
- More …
💯 Prompt 工程篇
【大模型微调面 之 提示工程篇】 你必须要会的高频面题 查看答案
- 💯 Prompt工程与传统微调的区别是什么?
- 💯 如何规范编写Prompt?
- 💯 上下文学习三种形式(零样本、单样本、少样本)的区别?
- 💯 如何通过预训练数据分布和模型规模优化上下文学习效果?
- 💯 思维链(CoT)的核心思想是什么?
- 💯 按部就班(如 Zero-Shot CoT、Auto-CoT)、三思后行(如 ToT、GoT)、集思广益(如 Self-Consistency)三种 CoT 模式有何异同?
- More …
三、大模型(LLMs)基础面
💯 大模型(LLMs)架构篇
【大模型基础面 之 LLM架构篇】 你必须要会的高频面题 查看答案
- 💯 LLM架构对Transformer都有哪些优化?
- 💯 什么是正弦(Sinusoidal)位置编码?
- 💯 什么是旋转位置编码(RoPE)?
- 💯 RoPE相对正弦位置编码有哪些优势?
- 💯 RoPE如何进行外推?
- 💯 如何进行位置线性内插(Position Interpolation)?
- 💯 NTK-Aware Scaled RoPE 和位置线性内插的区别是什么?
- 💯 PreNorm和PostNorm有何不同?
- 💯 为什么PreNorm通常能提升训练稳定性?
- 💯 为何使用 RMSNorm 代替 LayerNorm?
- 💯 LLM使用SwiGLU相对于ReLU有什么好处?
- 💯 SwiGLU的参数量是否会显著增加?如何优化?
- More …
💯 注意力机制(Attention)篇
【大模型基础面 之 注意力机制篇】 你必须要会的高频面题 查看答案
- 💯 为什么要引入 Attention 机制?
- 💯 Soft Attention 是什么?
- 💯 Hard Attention 是什么?
- 💯 Self-Attention 是什么?
- 💯 多查询注意力(Multi-Query Attention)是什么?
- 💯 分组查询注意力(Grouped Query Attention)是什么?
- 💯 分页注意力(Paged Attention)是什么?
- 💯 闪存注意力(Flash Attention)是什么?
- More …
💯 Transformer 理论篇
【大模型基础面 之 提示工程Transformer篇】 你必须要会的高频面题 查看答案
- 💯 Transformer 整体结构是怎么样的?
- 💯 Transformer的输入中为什么要添加位置编码?
- 💯 Transformer的位置编码是如何计算的?
- 💯 Position encoding为什么选择相加而不是拼接呢?
- 💯 多头注意力相对于单头注意力有什么优势?
- 💯 Transformer中自注意力模块的计算过程?
- 💯 什么是缩放点积注意力,为什么要除以根号d_k?
- 💯 批归一化和层归一化的区别?
- 💯 Layer Normalization 有哪几个可训练参数?
- 💯 Transformer 中有几种 Mask?
- More …
四、NLP 任务实战面
💯 文本分类篇
【NLP 任务实战面 之 文本分类篇】 你必须要会的高频面题 查看答案
- 如何用检索的方式做文本分类?
- 如何用Prompt的方式做文本分类?
- 使用LLM做文本分类任务为何需要做标签词映射(Verbalizer)?
- 文本分类任务中有哪些难点?
- 如何解决样本不均衡的问题?
- 如果类别会变化如何设计文本分类架构?
- More …
💯 命名实体识别(NER)篇
【NLP 任务实战面 之 实体识别篇】 你必须要会的高频面题 查看答案
- 实体识别中有哪些难点?
- CRF为什么比Softmax更适合NER?
- 如何使用指针标注方式做NER任务?
- 如何使用多头标注方式做NER任务?
- 如何使用片段排列方式做NER任务?
- 实体识别有哪些常用的解码方式?
- 如何解决实体嵌套问题?
- 实体识别的数据是如何进行标注的?
- 如何解决超长实体识别问题?
- More …
💯 关系抽取篇
【NLP 任务实战面 之 关系抽取篇】 你必须要会的高频面题 查看答案
- 常见关系抽取流程的步骤是怎样的?
- 如何抽取重叠关系和复杂关系?
- 介绍下基于共享参数的联合抽取方法?
- 介绍下基于联合解码的联合抽取方法?
- 关系抽取的端到端方法和流水线方法各有什么优缺点?
- 在进行跨句子甚至跨段落的关系抽取时,会遇到哪些特有的挑战?
💯 检索增强生成(RAG)篇
【NLP 任务实战面 之 RAG篇】 你必须要会的高频面题 查看答案
- 用户问题总是召回不准确,在用户理解阶段可以做哪些优化?
- 文档问答中,如何构建索引,提升对用户问题的泛化能力?
- 如何合并多路检索的结果,对它们做排序?
- BM25检索器总是召回无关的知识,最可能的原因是什么?
- 如何构建重排序模型的微调数据?
- More …
五、NLP 基础面
💯 分词(Tokenizer)篇
【NLP 基础面 之 分词篇】 你必须要会的高频面题 查看答案
💯 词嵌入(Word2Vec)篇
【NLP 基础面 之 词嵌入篇】 你必须要会的高频面题 查看答案
- 基于计数的表示方法存在哪些问题?
- CBOW 和 Skip-gram 哪个模型的词嵌入更好?
- Word2Vec的词向量存在哪些问题?
- 为什么说Word2vec的词向量是静态的?
- Word2Vec如何优化从中间层到输出层的计算?
- 负采样方法的关键思想的关键思想是什么?
- More …
💯 卷积神经网络(CNN)篇
【NLP 基础面 之 CNN篇】 你必须要会的高频面题 查看答案
💯 循环神经网络(RNN)篇
【NLP 基础面 之 RNN篇】 你必须要会的高频面题 查看答案
💯 长短期记忆网络(LSTM)篇
【NLP 基础面 之 LSTM篇】 你必须要会的高频面题 查看答案
- LSTM 如何缓解 RNN 梯度消失的问题?
- LSTM中记忆单元的作用是什么?
- LSTM有几个门,分别起什么作用?
- LSTM的前向计算如何进行加速?
- LSTM中的tanh和sigmoid分别用在什么地方?为什么?
- More …
💯 BERT 模型篇
【NLP 基础面 之 BERT模型篇】 你必须要会的高频面题 查看答案
- 为什么说BERT是双向的编码语言模型?
- BERT 是如何区分一词多义的?
- BERT的输入包含哪几种嵌入?
- BERT的三个Embedding直接相加会对语义有影响吗?
- BERT模型输入长度超过512如何解决?
- 什么是 80-10-10 规则,它解决了什么问题?
- BERT 嵌入与 Word2Vec 嵌入有何不同?
- More …
💯 BERT 变体篇
【NLP 基础面 之 BERT变体篇】 你必须要会的高频面题 查看答案
- ALBERT 使用的参数缩减技术是什么?
- RoBERTa 与 BERT 有什么不同?
- 在 ELECTRA 中,什么是替换标记检测任务?
- 如何在 SpanBERT 中掩盖标记?
- Transformer-XL 是怎么实现对长文本建模的?
- More …
💯 BERT 实战篇
【NLP 基础面 之 BERT实战篇】 你必须要会的高频面题 查看答案
- BERT为什么不适用于自然语言生成任务(NLG)?
- 在问答任务中,如何计算答案的起始索引和结束索引?
- 如何将 BERT 应用于命名实体识别任务?
- 如何进行继续预训练?
- Bert 未登录词如何处理?
- BERT在输入层如何引入额外特征?
- More …
六、深度学习面
💯 激活函数篇
【深度学习面 之 激活函数篇】 你必须要会的高频面题 查看答案
- 💯 为什么激活函数需要非线性函数?
- 💯 sigmoid 函数有什么缺点?
- 💯 tanh 函数作为激活函数有什么缺点?
- 💯 为什么选 relu 函数作为激活函数?
- 💯 为什么tanh收敛速度比sigmoid快?
- 💯 LLM使用SwiGLU相对于ReLU有什么好处?
- 💯 SwiGLU的参数量是否会显著增加?如何优化?
- More …
💯 优化器篇
【深度学习面 之 优化器篇】 你必须要会的高频面题 查看答案
- 💯 SGD是如何实现的?
- 💯 Momentum 是什么?
- 💯 Adagrad 是什么?
- 💯 RMSProp是什么?
- 💯 Adam 是什么?
- 💯 批量梯度下降(BGD)、随机梯度下降(SGD)与小批量随机梯度下降(Mini-Batch GD)的区别?
- More …
💯 正则化篇
【深度学习面 之 正则化篇】 你必须要会的高频面题 查看答案
- 💯 权重衰减的目的?
- 💯 L1 与 L2 的异同?
- 💯 为什么 L1 正则化 可以产生稀疏值,而 L2 不会?
- 💯 为什么Dropout可以解决过拟合问题?
- 💯 Dropout 在训练和测试阶段的区别是什么?
- 💯 如何选择合适的 Dropout 率?
- 💯 Dropout 和其他正则化方法(如 L1、L2 正则化)有何不同?
- More …
💯 归一化篇
【深度学习面 之 归一化篇】 你必须要会的高频面题 查看答案
- 💯 为什么归一化能提高求最优解速度?
- 💯 Batch Normalization 是什么?
- 💯 Layer Normalization 是什么?
- 💯 批归一化和组归一化的比较?
- 💯 批归一化和权重归一化的比较?
- 💯 批归一化和层归一化的比较?
- More …
💯 参数初始化篇
【深度学习面 之 参数初始化篇】 你必须要会的高频面题 查看答案
💯 过拟合篇
【深度学习面 之 过拟合篇】 你必须要会的高频面题 查看答案
💯 集成学习篇
【深度学习面 之 集成学习篇】 你必须要会的高频面题 查看答案
- 集成学习与传统单一模型相比有哪些本质区别?
- GBDT与 XGBoost 的核心差异是什么?
- 为什么XGBoost要引入二阶泰勒展开?对模型性能有何影响?
- Bagging的并行训练机制如何提升模型稳定性?
- 对比Bagging与Dropout在神经网络中的异同?
- Stacking中为什么要用K折预测生成元特征?
- 如何避免Stacking中信息泄露问题?
- 对比Boosting/Bagging/Stacking三大范式的核心差异(目标、训练方式、基学习器关系)?
- More …
💯 模型评估篇
【深度学习面 之 模型评估篇】 你必须要会的高频面题 查看答案
- 💯 混淆矩阵有何作用?
- 💯 什么是 F1-Score?
- 💯 什么是 Macro F1?
- 💯 什么是 Micro F1?
- 💯 什么是 Weight F1?
- 💯 Macro 和 Micro 有什么区别?
- 💯 ROC 曲线主要有什么作用?
- 💯 P-R 曲线有何作用?
- More …