目录

前言

一、 NLP基础词汇与应用场景

二、 词表示与语言模型

2.1、独热(One hot)编码

2.2、词频-逆文档词频(Term Frequency-Inverse Term Frequency, TF-IDF)

2.3、语境无关(Context-free/Non-contextual)的词表示:Word2vec

2.4、语境相关(Context-dependent/Contextual)的词表示:BERT

三、 大模型与NLP

3.1、大模型与传统NLP的区别

3.2、大模型的微调


前言

        本文主要介绍前期传统nlp学习和大模型的一些基础知识和相关概念,方面小白更好的入门和理解。

一、 NLP基础词汇与应用场景

        自然语言处理(Natural Language Processing, NLP)是涉及计算语言学(Computational Linguistics)、计算机科学与工程(Computer Science and Engineering)与人工智能(Artificial Intelligence)的一个跨学科领域,主要研究如何利用计算机程序对海量的自然语言信息进行高效的处理与分析,以及如何实现计算机与人类自然语言之间的有效互动。

        大致地讲,自然语言处理分为自然语言理解(Natural Language Understanding, NLU)、自然语言转换(Natural Language Transformation, NLT)和自然语言生成(Natural Language Generation, NLG)这些领域。

典型的自然语言理解(NLU)任务包括:

  1. 情感分析:对给定的文本输入,在给定的选项范围内分析文本的情绪是正面还是负面;
  2. 文本分类:对给定的文本输入,在给定的选项范围内对文本进行二分类或多分类;
  3. 意图识别:对给定的文本输入,在给定的选项范围内对文本的意图进行识别归类;
  4. 抽取式阅读理解:对给定的文本输入,用文本中的内容回答问题;
  5. 语义匹配:对给定的两个文本输入,判断是否相似;
  6. 自然语言推理:对给定的两个文本输入,判断是蕴涵、矛盾还是无关;
  7. 命名实体识别:对给定的文本输入,返回含有命名实体及其对应标签的映射,例如{'糖尿病':'疾病'}
  8. 文本摘要:对给定的文本输入,用文本中的内容对文本进行摘要。

自然语言转换(NLT)任务包括但不限于:

  1. 机器翻译:将一种自然语言转换为另一种自然语言,包括从源语言到目标语言的文本或语音的转换;
  2. 非抽取式阅读理解:接受给定文本的输入,能够理解自然语言问题,并回答问题;
  3. 文本风格转换:将文本从一种风格转换为另一种风格,如将正式文本转换为非正式文本;
  4. 语音识别:将人类的语音转换为文本,用于语音指令、口述文本、会议记录等。
  5. 意图改写:对给定的文本输入,将原始文本中的意图或核心信息重新表述,以不同的词汇和句式表达相同的意思,同时保持原意的准确性和完整性;

自然语言生成(NLG)任务则更为灵活了:

  1. 文本生成:根据给定的上下文或提示,自动生成文本,如自动写作、诗歌创作、故事生成等。
  2. 语音合成:将文本转换为听起来自然的语音,用于有声书、导航系统、虚拟助手等。
  3. 聊天机器人:能够与人类实现多轮对话的聊天助手;
  4. 文本到知识:从文本中提取知识,构建知识图谱或语义网络;
  5. 语义解析:将自然语言表达转换为形式化的逻辑表示,用于命令解析、查询理解等。

我们将会看到,上面的三类自然语言处理任务刚好分别对应了三类 Transformer 架构:NLU 任务适合仅编码器式的(encoder-only),例如BERT(Bidirectional Encoder Representation of Transformer),它们是对自然语言理解深刻的“评论家”;NLT 任务适合编码器-解码器式的(encoder-decoder),例如T5(Text-to-Text Transfer Transformer),它们是能熟练进行序列到序列(seq2seq)转换的“翻译家”;NLG 任务仅解码器式的(decoder-only),例如 GPT(Generative Pretrained Transformer),它们是充满创意的“作家”。

        这些应用场景展示了自然语言转换技术的多样性和广泛性。例如,在医学领域,可以利用命名实体识别(Named Entity Recognition, NER)方法来对医学文献中的名词进行识别,进而制作医学知识图谱;在法律和金融领域,我们经常需要用到语义匹配功能,对海量的文本知识库进行检索(Retrieval)离不开对语义相似度(Semantic Similarity)的精确测量;文本摘要减少了人类的阅读时间,提升了工作效率,方便了信息提取;语音识别语音合成翻译机器人提供了真正的全球化服务;更一般地讲,实体识别意图识别自然语言推理知识抽取等功能则构成了的知识表示(Knowledge Representation)和知识工程(Knowledge Engineering)的基础——把人类知识表示为计算机能理解的模式,从而更好地构建人工智能。

二、 词表示与语言模型

在上一节的末尾,我们提到了人工智能的核心概念——知识表示的问题。在 NLP 领域,这一问题同样关键:机器无法理解文字,却能进行复杂的数学运算——神经网络只要够深、够复杂,就能拟合足够复杂的数学模式。如果我们把文字嵌入(embed)到一个向量空间中去,机器是不是就更可能理解人类的语言了呢?这就是词表示(Word Representation,有的地方翻译为“词表征”),也即词嵌入(Word Embedding)的思想。

词表示的历史大概可以分为4代:

2.1、独热(One hot)编码

        假设中文字典有 n 个词元(token,不同的分词器 tokenizer 有不同的算法,简单起见,大家目前可以把一个词元理解为一个汉字),那么第 i(i=1,2,3,...,n)个词元的编码为一个长度为 n 的向量,它的第i位为1,其他为0。独热编码实现了对文本的向量化嵌入,但是具有下列两个问题:第一,向量的维度太长了,文本的表示过于稀疏;第二,词向量与词向量之间完全正交,不具有相关性,这显然是不合理的。我们需要考虑词在语境(context)中的含义。

2.2、词频-逆文档词频(Term Frequency-Inverse Term Frequency, TF-IDF)

        我们不妨用同一个词在不同文档中的“重要性”和它在全文中的“特殊性”合起来来构建词向量。TF-IDF正是基于下面的思想:根据 Zipf's Law(齐夫定律),在给定的自然语言语料库中,任何一个词的频率与它在频率表中的排名成反比。与独热编码相比,TF-IDF 词向量的维度明显降低了,并且能够衡量词的差异性。然而 NLP 研究者们并不止步于此。

前面两种词表示方法是前深度学习时代的,即使 TF-IDF 用到了一定统计学,但它们还不够精确。分布语义学(Distributed Semantics)则通过无监督的方法,训练神经网络来实现词的向量化表示。

2.3、语境无关(Context-free/Non-contextual)的词表示:Word2vec

        Word2vec 被称作语境无关,是因为它对每一个词生成一个相同的词表示,不考虑同一个词在不同语境下含义的差别。我们用一个浅层神经网络,依次遮住句子中的每一个词,然后用它的上下文来预测它,这被称作连续词袋法(continuous bag of words, CBOW);另一种方法则是与之对偶的,我们用一个 k 元词组来预测它的上下文,这被称作跳元法(skip-gram)。我们容易看到,这就是为什么说分布语义学使用无监督或者自监督预训练(self-supervised pretraining, SSP)的方法:通过“破坏”句子的一部分,让模型预测它,从而实现对词的更精确的表示。深度学习时代 NLP 的革命性时刻——BERT 的诞生,也是利用了这样的思想。

2.4、语境相关(Context-dependent/Contextual)的词表示:BERT

        语言的多义性是人类自然语言的重要特点。在 Word2vec 的基础上更进一步,BERT 考虑了三层嵌入:词嵌入位置嵌入(词在句子中的位置)和句子嵌入,并把它们加起来作为最后的嵌入表示(容易证明,把三种嵌入加起来,和把三种嵌入首尾拼接,再经过一个全连接层进行训练的效果相同)。BERT使用 WordPiece 分词器(tokenizer),借鉴了自监督训练的思想,在两个任务上进行预训练:下句预测(Next Sentence Prediction)和掩码语言建模(Masked Language Modeling)。下句预测是一个二分类任务:给定一个句子,判定另一个句子是否是它的下一句;掩码语言建模任务随机掩盖其中15%的单词,并训练模型来预测被掩盖的单词,为了预测被掩盖的单词,模型从两个方向阅读该句并进行预测(这也是为什么BERT叫做双向的Bidirectional)。BERT还有多种变体:Albert, RoBERTa,Electra和SpanBERT等,感兴趣的朋友可以自行了解。

三、 大模型与NLP

        大语言模型(large language models, LLM)是指参数量巨大的语言模型。广义上讲,1.1 节提到的 encoder-only 架构的 BERT,encoder-decoder 架构的 T5 和 decoder-only 架构的 GPT,它们都是大模型,例如 BERT-base 有1.1亿参数;狭义上指的是“生成式大模型”要求至少含有 decoder,则不包括 BERT 族。

3.1、大模型与传统NLP的区别

        大模型与传统 NLP 的区别在于大模型的泛化性和通用性更强,更加接近通用人工智能(artificial general intelligence, AGI)。我们不需要为不同的 NLP 任务选择不同的模型,一个大模型可以做许多事情。正如 1.1 节提到的,BERT 可以用作许多自然语言理解(NLU)任务的训练;而 decoder-only 架构的 GPT 的泛化性的表现则更加直接:如 OpenAI 的论文所述,“大语言模型是少样本学习器(LLMs are few shot learners)”,用户只需要在提示词(prompt)中给出少量相关例子,大模型就能“现学现卖”,回答新的问题。

        以 BERT 为例。在上一节的最后,通过介绍词表示的进化历史,我们最后提到了 BERT,这是第一款预训练的(pre-trained)大模型产品。BERT 诞生可以被视作 NLP 的革命性时刻。利用这个强大的词表示模型,作为 encoder-only 架构的大模型,BERT 可以在 1.1 节自然语言理解(NLU)部分提到的下游任务(downstream)上进行进一步训练,这被称作微调(fine-tune)。例如 NLU 的文本分类任务,过去,我们使用 TF-IDF 等方法嵌入文本,再使用机器学习分类器,例如朴素贝叶斯、GBDT 等;现在,我们使用 BERT 学习到的词表示作为词嵌入,再对输出进行二分类预测(例如使用一个浅层的神经网络作为分类器),在文本分类数据集上进一步进行训练,使得分类器的参数能充分学习到文本分类任务即可。

3.2、大模型的微调

        同样地,对于自然语言转换(NLT)任务,我们可以选择相应的 encoder-decoder 架构大模型,如T5,来进行相应任务的微调;对于自然语言生成(NLG)任务,我们可以选择相应的 decoder-only 架构大模型,如 GPT-2,来进行相应任务的微调。

        直觉来讲,参数量越大的模型,下游任务微调起来的计算成本越高。例如 decoder-only 的大模型,在预训练阶段之后还需要进行有监督微调(supervised fine tuning, SFT),来增强它的指令遵循和 agent 能力;随后还需要进行基于人类反馈的强化学习(reinforcement learning with human feedback, RLHF),来使得大模型和人类伦理对齐。每一步都要消耗大量的人力物力。

        我们容易想到的一个问题是:需要调整全部参数吗?固定作为预训练权重部分,只调整为下游任务而新增的额外参数层可以吗?当然可以,这被称作参数高效微调(parameter efficient fine-tuning, PEFT)。例如 LoRA(low rank adaptation)就是固定预训练权重而训练了额外的 LoRA 参数层,只需调整大模型不到 0.5% 参数量的规模,一些情况下实现了不差甚至更好的表现。

END 未完待续

AI疯人院公众号