参考:NLP(自然语言处理)介绍 - 知乎 (zhihu.com)
一、NLP是什么
自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。
自然语言处理,即实现人机间自然语言通信,或实现自然语言理解和自然语言生成是十分困难的。造成困难的根本原因是自然语言文本和对话的各个层次上广泛存在的各种各样的歧义性或多义性(ambiguity)。
自然语言的形式(字符串)与其意义之间是一种多对多的关系。但从计算机处理的角度看,我们必须消除歧义,而且有人认为它正是自然语言理解中的中心问题,即要把带有潜在歧义的自然语言输入转换成某种无歧义的计算机内部表示。
目前存在的问题有两个方面:一方面,迄今为止的语法都限于分析一个孤立的句子,上下文关系和谈话环境对本句的约束和影响还缺乏系统的研究,因此分析歧义、词语省略、代词所指、同一句话在不同场合或由不同的人说出来所具有的不同含义等问题,尚无明确规律可循,需要加强语用学的研究才能逐步解决。另一方面,人理解一个句子不是单凭语法,还运用了大量的有关知识,包括生活知识和专门知识,这些知识无法全部贮存在计算机里。因此一个书面理解系统只能建立在有限的词汇、句型和特定的主题范围内;计算机的贮存量和运转速度大大提高之后,才有可能适当扩大范围.
二、NLP类别
1、文本挖掘:主要包含了文本的分类、聚类、信息抽取、摘要、情感分析以及对挖掘的信息和知识的可视化、交互式的呈现界面,这些统称为文本挖掘任务。
2、信息检索:对大规模文档进行索引。可简单对文档中的词汇,赋予不同的权重来建立索引,也可以使用算法来建立更深层的索引。查询时,首先对输入进行分析,然后在索引里面查找匹配的候选文档,再根据一个排序机制把候选文档排序,最后输出排序得分最高的文档。
3、句法语义分析:针对目标句子,进行各种句法分析,如分词、词性标记、命名实体识别及句法分析、语义角色识别和多义词消歧等。
4、机器翻译:随着通信技术与互联网技术的飞速发展、信息的急剧增加以及国际联系愈加紧密,让世界上所有人都能跨越语言障碍获取信息的挑战已经超出了人类翻译的能力范围。
5、问答系统:随着互联网的快速发展,网络信息量不断增加,人们需要获取更加精确的信息。传统的搜索引擎技术已经不能满足人们越来越高的需求,而自动问答技术成为了解决这一问题的有效手段。
自动问答是指利用计算机自动回答用户所提出的问题以满足用户知识需求的任务,在回答用户问题时,首先要正确理解用户所提出的问题,抽取其中关键的信息,在已有的语料库或者知识库中进行检索、匹配,将获取的答案反馈给用户。
6、对话系统:系统通过多回合对话,跟用户进行聊天、回答、完成某项任务,主要涉及用户意图识别、通用聊天引擎、问答引擎、对话管理系统等技术。此外,为了提现上下文相关,要具备多轮对话能力。同时,为了提现个性化,对话系统还需要基于用户画像做个性化回复。
总的来看,自然语言处理有2大核心任务,自然语言理解(NLU)和自然语言生成(NLG)。
语言的鲁棒性都是导致自然语言理解的主要难点,其中包括:语言的多样性、歧义性、知识依赖、上下文关系等。这些难点也将会带来实际处理时的一系列困难:生成语句的语法结构、语义表达是否准确,信息是否重复等。
鲁棒性(Robustness)是一个广泛应用于计算机科学、控制理论、统计学和工程学等领域的概念,用来描述一个系统或算法在面对各种变化、异常情况、错误输入或干扰时的稳定性、可靠性和适应性。简而言之,鲁棒性是指系统的健壮程度。
在不同的上下文中,鲁棒性有不同的含义:
- 在软件工程中,鲁棒性指软件能够处理错误数据、不正确使用或者恶意攻击的能力。例如,一个具有鲁棒性的Web服务器应该能够在遭受拒绝服务攻击时保持运行,而不是崩溃。
- 在控制系统设计中,鲁棒性意味着控制器能在参数变化、模型不确定性或外部扰动下保持性能稳定。
- 在优化领域,鲁棒优化关注的是找到对问题参数变化有抵抗力的解决方案。
- 在机器学习和人工智能中,鲁棒性是指模型在遇到训练集中未出现的数据分布变化时仍然能保持准确预测的能力。
实现鲁棒性的方法包括但不限于:
- 异常检测和处理:通过监测系统状态来识别异常,并采取相应的恢复措施。
- 系统冗余:通过复制关键组件或增加备用路径来提高系统的可靠性。
- 输入验证:确保所有输入都在预期范围内,以防止意外情况。
- 自适应算法:根据环境的变化动态调整系统行为。
- 鲁棒优化技术:寻找对模型参数或数据扰动具有稳健性的最优解。
总的来说,鲁棒性是评估系统质量和安全的重要指标,特别是在复杂、不确定或不断变化的环境中。
为了解决上述问题,一些基本的自然语言处理方向便应运而生,包括:分词、词性标注、词形还原、依赖关系解析、命名实体识别、序列标注、句子关系识别等。
除此之外,自然语言处理还包括了很多具体应用,例如:信息检索、信息抽取、文本分类与聚类、机器翻译、摘要生成、聊天机器人等等。它涉及与语言处理相关的数据挖掘、机器学习、语言学研究,以及近年来非常流行的深度学习等。
参考:什么是自然语言处理?看这篇文章就够了! - 知乎 (zhihu.com)
熵(entropy)是热力学中的一个核心概念,它表征了一个系统中无序或混乱的程度。在物理学中,它是描述物质状态的参量之一,用符号S表示。克劳修斯(Rudolf Clausius)于1865年提出了熵的概念。
熵的基本性质和意义:
- 熵是一个状态函数,这意味着它只取决于系统的当前状态,而不依赖于达到该状态的过程。
- 在封闭系统中,根据热力学第二定律,自发过程总是导致整个系统的熵增加。
- 当两个热力学系统处于热平衡时,它们具有相同的温度,并且当它们互相接触时不会发生热量交换。这种情况下,可以定义一个共同的熵值。
- 克劳修斯提出了著名的熵增原理,即在一个孤立系统中,自然发生的任何过程都使系统的总熵增大,直到达到最大熵状态,这时系统达到最稳定的热力学平衡状态。
- 系统的熵可以通过其微观状态的统计来计算,这就是统计力学的基础。玻尔兹曼(Ludwig Boltzmann)提出了熵与微观状态数目的关系,即著名的玻尔兹曼熵公式:S = k ln W,其中k是玻尔兹曼常数,W是系统的微观状态数。
熵在信息论中的应用:
除了在物理学中的应用外,熵也被引入到信息论中,作为衡量不确定性或信息含量的度量。香农(Claude Shannon)将这个概念应用于通信理论,提出信息熵的概念,用于描述信号源的信息内容。
信息熵通常以比特为单位进行测量,它可以用来量化消息的不确定度或编码的效率。例如,在数据压缩中,高熵的数据更难被有效地压缩,因为它们包含更多的不确定性;而在密码学中,随机密钥的熵越高,就越难以破解。
简而言之,熵是一个非常重要的跨学科概念,它不仅限于物理领域,还广泛应用于工程、计算机科学、生物信息学等多个领域。
最大熵原理(Principle of Maximum Entropy)是概率论和统计学中的一种方法,它用于从一组已知约束条件下推断出最合理的概率分布。该原理是由物理学家E.T. Jaynes在1957年提出的,并且在信息理论、决策理论、信号处理、机器学习等领域有着广泛的应用。
最大熵原理的基本思想:
- 在给定一些关于随机变量的有限知识的情况下,应该选择熵最大的概率分布来描述这个随机变量。
- 假设我们只知道一个随机变量的一些期望值或均值(即某些特定函数的期望),那么所有满足这些期望值的概率分布构成了一个可能性空间。
- 最大熵原理建议我们在这些可能的概率分布中选择熵最大的那个,因为它对未知的信息做出了最少的假设。
为什么选择具有最大熵的分布?
- 熵是衡量不确定性的一个度量。熵越大,表示随机变量越不确定或者越随机。
- 选择最大熵分布可以确保我们的预测尽可能地不偏不倚,因为我们没有额外引入任何不必要的结构或假设。
- 这种选择避免了过拟合问题,因为最大熵分布不会过度依赖于已知的数据,而是保持了一定程度的灵活性来适应未来的观测结果。
应用示例:
- 文本分类:当需要为文档分配类别时,可以根据每个类别的频率和文档中的单词出现频率来计算条件熵,然后选择使整体熵最小的类别分配。
- 自然语言处理:在构建语言模型时,可以使用最大熵模型来估计下一个词的概率,其中考虑到了词汇、语法和其他上下文信息的影响。
总之,最大熵原理提供了一个系统的框架,用于从部分信息出发推断完整的概率分布,它强调了保守性和不确定性原则,在许多情况下被证明是一个有效的工具。
2、国内外发展
进入21世纪,尤其是近十年来,深度学习技术的发展极大地推动了自然语言处理的进步。基于深度神经网络的模型,如循环神经网络(RNN)、长短时记忆网络(LSTM)和Transformer等,这些技术大大提高了自然语言处理的效率和准确性。百度的ERNIE、阿里巴巴的BERT等预训练模型在多种中文自然语言处理任务上表现出色。在国际上,谷歌、Facebook、OpenAI等科技巨头在自然语言处理领域也取得了一系列重要的突破。例如,谷歌推出的BERT模型和OpenAI的GPT系列模型,都在多个自然语言处理任务上取得了超过人类水平的表现。
3、底层原理
自然语言处理的底层原理涉及多个层面,包括语言学、计算机科学和统计学等。它涉及对语言的结构、语义、语法和语用等方面的研究,以及对大规模语料库的统计分析和模型建立。在具体实现过程中,需要对自然语言进行多个层次的处理,主要包括以下几个方面:
3.1、语言模型
语言模型是自然语言处理中最重要的概念之一,它用于计算给定文本序列的概率。语言模型可以基于规则、统计或深度学习等方法构建。在语言模型中,通常会使用一些概率模型来表示文本的生成概率,如n-gram模型、隐马尔可夫模型(HMM)和条件随机场(CRF)等。
3.2、词向量表示和语义分析
词向量表示是将自然语言文本转换为计算机可以处理的向量形式。在词向量表示中,通常会使用词袋模型(Bag of Words Model)或者分布式表示(Distributional Representation)等方法。
语义分析关注句子的意义,其目标是将自然语言表示转换为一种计算机可以理解的形式。这通常涉及实体识别、关系抽取和指代消解等任务。在语义分析中,通常会使用词向量的平均值、加权平均值或者递归神经网络(Recursive Neural Network)等方法来表示句子的语义信息。
3.3、深度学习
深度学习是自然语言处理中的一种重要技术,它可以通过训练大量的数据来提高自然语言处理的准确性。在深度学习中,常用的模型包括卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurrent Neural Network,RNN)和Transformer等。
4、流程逻辑
数据收集和预处理:获取和清洗原始语言数据,包括文本、语料库或语音数据;
分词和词法分析:将原始文本数据转换为适合模型输入的格式,如分词、去除停用词、词干提取等。
特征提取:将文本转换为计算机可以处理的向量形式,如词向量表示、句子向量表示等。常用的特征提取方法包括词袋模型、TF-IDF、词嵌入等。
模型训练:利用训练数据集,采用机器学习或深度学习方法训练自然语言处理模型。
模型评估:使用验证数据集评估模型的性能,如准确率、召回率、F1值等指标。
模型应用:将训练好的模型应用于实际问题,如文本分类、情感分析、机器翻译等任务。
5、实现方法
在实现自然语言处理时,首先需要考虑数据集的选择和预处理。因此需要选择合适的数据集,并进行数据清洗和预处理。
其次还需要采用一些自然语言处理工具和技术。常用的自然语言处理工具包括NLTK、spaCy、Stanford CoreNLP等。这些工具包提供了很多自然语言处理的功能,如分词、词性标注、命名实体识别、句法分析等。
最后,还需要选择合适的算法和模型。常用的算法包括朴素贝叶斯、支持向量机、决策树、随机森林等。同时,深度学习也成为自然语言处理中的主流技术,常用的模型包括卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurrent Neural Network,RNN)和Transformer等。
自然语言处理领域的具体实现主要包括以下几类:
5.1、规则和基于知识的方法
规则和基于知识的方法主要依赖于预先编写的语法规则和词典来实现自然语言处理任务。
知识图谱
知识图谱是一种表示知识的方式,它可以用于实现基于知识的自然语言处理算法。
规则引擎
规则引擎是一种将规则映射到行动的软件,可以用于实现基于规则的自然语言处理算法。
5.2、基于统计的方法
基于统计的方法利用大量语料库来学习自然语言的规律。
5.3、基于深度学习的方法
基于深度学习的方法使用人工神经网络来学习自然语言的表示和处理能力。这类方法在近十年来取得了显著的进展,如CNN、RNN和Transformer等。
7、模型评估
在自然语言处理任务的结果分析中,通常需要关注以下几个方面:
模型性能:通过准确率、召回率、F1值等指标评估模型在各个任务上的表现。
泛化能力:评估模型在未见过的数据上的表现,以验证其在实际应用中的可靠性。
模型可解释性:分析模型的内部结构和参数,以理解其模型的预测结果和行为。
参考:一文读懂"大语言模型" - 知乎 (zhihu.com)
2、大语言模型介绍
大语言模型是深度学习的分支
深度学习是机器学习的分支,大语言模型是深度学习的分支。
机器学习是人工智能(AI)的一个子领域,它的核心是让计算机系统能够通过对数据的学习来提高性能。在机器学习中,我们不是直接编程告诉计算机如何完成任务,而是提供大量的数据,让机器通过数据找出隐藏的模式或规律,然后用这些规律来预测新的、未知的数据。
深度学习是机器学习的一个子领域,它尝试模拟人脑的工作方式,创建所谓的人工神经网络来处理数据。这些神经网络包含多个处理层,因此被称为"深度"学习。深度学习模型能够学习和表示大量复杂的模式,这使它们在诸如图像识别、语音识别和自然语言处理等任务中非常有效。
大语言模型是深度学习的应用之一,尤其在自然语言处理(NLP)领域。这些模型的目标是理解和生成人类语言。为了实现这个目标,模型需要在大量文本数据上进行训练,以学习语言的各种模式和结构。如 ChatGPT,就是一个大语言模型的例子。被训练来理解和生成人类语言,以便进行有效的对话和解答各种问题。
大语言模型和生成式 AI 存在交集
生成式AI是一种能够创造新的内容或预测未来数据的人工智能技术。
这种技术包括用于生成文本、图像、音频和视频等各种类型的内容的模型。生成式AI的一个关键特性是,它不仅可以理解和分析数据,还可以创造新的、独特的输出,这些输出是从学习的数据模式中派生出来的。
大型通用语言模型预训练和微调
大型通用语言模型可以进行预训练,然后针对特定目标进行微调。
fine-tuned意思是微调 或调整。
训练: 训练狗狗为例,可以训练它坐、跑过来、蹲下、保持不动。
如果想训练警犬、导盲犬和猎犬,则需要特殊的训练方法。
大语言模型的训练也采用与之类似的思路。
大型语言模型被训练来解决通用(常见)的语言问题,如文本分类、问答、文档总结和文本生成等。
(1)文本分类:大型语言模型可以通过对输入文本进行分析和学习,将其归类到一个或多个预定义的类别中。
(2)问答:大型语言模型可以回答用户提出的自然语言问题。例如,可以使用大型语言模型来回答搜索引擎中的用户查询,或者回答智能助手中的用户问题。
(3)文档总结:大型语言模型可以自动提取文本中的主要信息,以生成文档摘要或摘录。
(4)文本生成:大型语言模型可以使用先前学习的模式和结构来生成新的文本。例如,可以使用大型语言模型来生成诗歌、短故事、或者以特定主题的文章。
大语言模型(LLMs)可以基于特定领域的小规模的数据集上进行训练,来定制化解决不同领域如零售、金融、娱乐等的特定问题。
Large(大) :在"大语言模型"的上下文中,"大"主要有两层含义。一方面,它指的是模型的参数数量 。在这些模型中,参数的数量通常会非常大,达到数十亿甚至数百亿。这使得模型能够学习和表示非常复杂的模式。另一方面,"大"也指的是训练数据的规模。大语言模型通常在大规模的文本数据上进行训练,这种数据可以来自互联网、书籍、新闻等各种来源。
大语言模型(Large Language Model, LLM)的参数指的是神经网络中的权重和偏置,这些参数在训练过程中被学习以优化模型的性能。在自然语言处理中,这些参数的数量通常非常庞大,可以达到数十亿甚至数千亿个。
具体来说,每个神经元都有与其相连的其他神经元的连接,每个连接都有一个对应的权重值,用来衡量两个神经元之间的信号强度。此外,每个神经元还有一个偏置值,它影响神经元激活的程度。在多层神经网络中,每层都有许多神经元,所以总参数数量是所有神经元上的权重和偏置之和。
例如,GPT-3是一个著名的大规模预训练语言模型,它有1750亿个参数,这个数字反映了模型复杂性和对大量数据的学习能力。然而,如此庞大的参数量也带来了一些挑战,比如计算资源需求、存储成本以及微调时的效率问题。
为了解决这些问题,研究人员提出了各种方法来提高参数的有效性,如LoRA(Low-Rank Adaptation),这是一种微调技术,允许仅更新部分参数而不是整个模型,从而降低计算和存储负担。
总之,大语言模型的参数是神经网络内部表示的关键组成部分,它们控制着模型如何解释输入信息并生成输出结果。通过调整这些参数,模型可以在训练过程中学习到复杂的语言结构和模式,从而实现高级的语言理解和生成任务。
General-purpose(通用):这个词描述的是模型的应用范围。通用语言模型在训练时使用了来自各种领域的数据,因此它们能够处理各种类型的任务,不仅限于某一个特定的任务或领域。这使得这些模型在处理新的、未见过的任务时具有很强的泛化能力。
Pre-trained and fine-tuned(预训练和微调):这是描述模型训练过程的关键词。在预训练阶段,模型在大规模的通用文本数据上进行训练,学习语言的基本结构和各种常识。然后,在微调阶段,模型在更小、更特定的数据集上进行进一步的训练。这个数据集通常是针对某个特定任务或领域的,例如医学文本、法律文本,或者是特定的对话数据。微调可以让模型更好地理解和生成这个特定领域的语言,从而更好地完成特定的任务。
大语言模型的好处
单一模型可用于不同任务:使用同一个预训练的模型来处理不同的任务,只需要进行相应的微调就可以。这大大减少了开发和维护不同模型的复杂性和成本。
微调过程只需要最小的数据:但在微调阶段,它们通常只需要相对较小的领域特定数据。微调阶段主要是让模型适应特定的任务或领域。这使得大语言模型能够在数据稀缺的领域中也能表现出色。
随着更多的数据和参数,性能持续提升:通过训练更大的模型,并使用更多的数据,我们可以获得更好的性能。这是因为更大的模型有更多的参数,能够学习和表示更复杂的模式;同时,更多的数据能够提供更丰富的信息,帮助模型更好地理解语言。
PaLM是Google的研究团队开发的一个大规模预训练语言模型(Large Language Model, LLM),全称为Pathways Language Model。它是基于Transformer架构的神经网络,用于处理自然语言理解和生成任务。
PaLM的特点和能力:
- 参数量大:PaLM具有高达5400亿个参数,这使得它在众多LLM中脱颖而出,成为目前最大的预训练语言模型之一。
- 跨语言理解:PaLM能够处理多种语言,并在不同语言之间进行翻译和交流。
- 上下文学习:由于其巨大的参数数量和强大的计算能力,PaLM可以理解和利用非常长的文本上下文,从而实现更准确的推理和生成。
- 零样本学习: PaLM能够在没有特定领域数据的情况下解决一些问题,这被称为零样本或少样本学习,因为它不需要额外的训练就能完成任务。
- 代码理解和生成: PaLM还展示了对编程语言的理解能力,可以在给定的代码片段上执行操作并生成新的代码。
PaLM的应用包括但不限于:
- 自动文本生成:例如创作故事、文章、诗歌等。
- 问答系统:为用户提供有关各种主题的信息查询服务。
- 代码助手:帮助程序员编写和调试代码。
- 翻译:在不同的语言之间进行准确的翻译。
- 聊天机器人:与用户进行对话,提供信息或娱乐服务。
尽管PaLM和其他LLM在许多方面取得了显著的进步,但它们也面临着一些挑战,如潜在的偏见、不准确性以及滥用风险。因此,研究者们正在努力提高这些模型的透明度、公平性和可控性,以确保它们的安全使用。
Transformer 模型
Transformer 模型是一种在自然语言处理(NLP)领域中广泛使用的深度学习模型,它最初在 "Attention is All You Need" 这篇论文中被介绍。Transformer 模型的主要特点是使用了自注意力(self-attention)机制,这种机制允许模型在处理序列数据时考虑到序列中所有元素的上下文关系。
Transformer 模型主要由两个部分组成:编码器(Encoder)和解码器(Decoder)。
编码器(Encoder):编码器由多个相同的层组成,每一层都有两个子层。第一个子层是自注意力层,它可以考虑到输入序列中所有元素的上下文关系。第二个子层是一个前馈神经网络(Feed Forward Neural Network)。每个子层后面都跟有一个残差连接和层归一化。编码器的任务是将输入序列转换为一组连续的表示,这些表示考虑了输入序列中每个元素的上下文。
解码器(Decoder):解码器也由多个相同的层组成,每一层有三个子层。第一个子层是自注意力层,但它在处理当前元素时,只考虑到该元素及其之前的元素,不考虑其后的元素,这种机制被称为掩码自注意力。第二个子层是一个编码器-解码器注意力层,它使解码器可以关注到编码器的输出。第三个子层是一个前馈神经网络。每个子层后面都跟有一个残差连接和层归一化。解码器的任务是基于编码器的输出和前面已经生成的元素,生成下一个元素。
生成式语言模型,如 LaMDA、PaLM、GPT 等,它们可以阅读大量的资料,和海量的关于猫相关的知识。我们就可以对它提问,猫是什么?它可以回答出它知道的关于猫的所有特征。
大语言模型开发 VS 传统机器学习开发
使用预训练的大型语言模型(LLM)进行开发和传统的机器学习开发存在很多不同之处。
使用预训练的大型语言模型(LLM)开发:
不需要机器学习专业知识:因为大型语言模型已经预训练完成,开发者无需对机器学习的专业知识有深入理解,只需要知道如何调用模型API,即可使用模型生成相应的语言输出。
不需要训练样本:在许多情况下,只需要向模型提供合适的提示(prompt),模型就能生成相应的输出,而无需大量的训练样本。
不需要训练模型:模型已经在大规模数据集上进行了预训练,开发者无需再次训练模型。
主要关注提示词设计:开发者的主要工作变为设计有效的提示词,使模型能够理解并生成合适的输出。
传统的机器学习开发:
需要机器学习专业知识:开发者需要理解不同的机器学习算法,知道如何选择合适的算法,如何设置参数,以及如何解决可能出现的问题。
需要训练样本:开发者需要收集和准备大量的训练样本,以便训练模型。
需要训练模型:开发者需要使用训练样本来训练模型,这通常需要消耗大量的时间和计算资源。
需要计算时间和硬件资源:传统的机器学习模型训练通常需要大量的计算时间和硬件资源。
主要关注最小化损失函数:开发者需要设计和优化损失函数,以便模型在训练过程中尽可能地减小损失,提高模型的性能。
大语言模型的典型应用场景是问答系统
问答模型能够从给定的文本中检索出问题的答案。这在从文档中搜索答案时非常有用。根据所使用的模型不同,问答系统可以直接从文本中提取答案,也可以生成新的文本作为答案。
生成式 QA,可以直接根据上下文生成自由文本。利用的是文本生成模型,不需要领域知识。
生成式问答是一种自然语言处理中的问答技术,其特点是直接根据上下文生成自由文本作为答案,而不是从原文中提取答案。这种技术通常利用的是文本生成模型,例如Transformer等。
生成式问答"不需要领域知识"。这可能是指在一般情况下,生成式问答模型可以通过训练数据学习到一般的语言知识,而不需要特定领域的知识。然而,这并不意味着领域知识对生成式问答模型没有帮助。在处理特定领域的问题时,如果模型具有相关的领域知识,往往能够生成更准确、更具深度的答案。
2.3 提示词调优
提示词设计是创建能引导语言模型产生期望响应的提示的过程。
在使用语言模型,尤其是生成式语言模型时,如何设计输入的提示词(Prompt)是非常重要的。因为模型的输出(即生成的文本)将根据输入的提示进行生成。好的提示可以引导模型生成有用、准确的文本,而差的提示可能导致模型的输出偏离期望,或者产生含糊不清、语义不明确的结果。
提示设计的过程可能包括考虑提示的语法结构、使用的词汇、上下文信息等因素,以尽可能地引导模型生成期望的响应。
**提示词设计(Prompt Design)**指的是传递给语言模型的指令或信息,它们告诉模型要做什么。提示通常包括一些上下文信息和具体的任务指示。
**提示词工程(Prompt Engineering)**是一种实践,它涉及到开发和优化这些提示,以便更有效地使用语言模型。这可能包括测试不同的提示格式、考虑不同的上下文信息,以及使用一些技术手段(如微调等)来改进模型对提示的理解和响应。在许多情况下,通过精心设计和优化的提示,可以显著提高模型的性能,使其更好地适应各种任务和应用场景。
主要有三种类型的大语言模型,每种都需要以不同的方式进行提示。
1、通用(或原始)语言模型:这些模型根据训练数据中的语言预测下一个词(技术上说,是预测下一个词元)。这种模型通常使用大量的未标记文本进行训练,学习语言的统计规律,但没有特定的任务指向。
2、指令调整模型:这些模型经过训练,以预测对输入中给出的指令的响应。这种模型在通用语言模型的基础上,通过对特定任务数据的训练,使其能够对给定的指令做出适当的响应。这类模型可以理解和执行特定的语言任务,如问答、文本分类、总结、写作、关键词提取等。
Instruction tuning是一种机器学习方法,旨在改进模型在执行指令或任务时的性能。这种技术通常应用于大型语言模型(LLM),如GPT-3、PaLM等。
通过instruction tuning,研究人员使用特定的任务数据集来微调预训练模型,以便让模型更好地理解和遵循人类提供的指令。这有助于提高模型在各种任务上的表现,包括文本生成、问题解答、代码编写等。
Instruction tuning的基本过程包括以下步骤:
- 选择一个预训练模型:首先选择一个已经经过大规模训练的语言模型作为基础。
- 收集和准备指令数据:创建一个包含多种任务指令的数据集,这些指令应清楚地说明期望模型完成的任务。
- 微调模型:使用指令数据集对模型进行额外的训练,以使其适应理解并执行指令。
- 评估和调整:评估微调后的模型在处理指令任务上的性能,并根据需要进行进一步的调整。
通过这种方法,预训练模型可以更好地理解和响应人类给出的指令,从而在实际应用中提供更准确、有用的输出。然而,需要注意的是,即使经过了instruction tuning,LLM仍然可能会产生错误或不合适的输出,因此需要谨慎使用并持续监控其行为。
3、对话调整模型:这些模型经过训练,以通过预测下一个响应进行对话。这种模型在通用语言模型的基础上,通过对对话数据的训练,使其能够进行对话。这类模型可以理解和生成对话,例如生成聊天机器人的回答。
链式思考推理
当模型在给出答案之前首先输出解释答案原因的文本时,它们更有可能得到正确的答案。这被称为"链式思维推理"。也就是说,模型在进行推理时,不仅仅直接给出答案,而是先阐述出达到答案的推理过程或原因,这样可以提高答案的准确性。
分三步输出了正确的答案。
一个通用模型在实际应用中有其局限性。针对特定任务的调优可以使大型语言模型(LLMs)变得更可靠。
"一个通用的模型在实际应用中有其局限性",意味着尽管 LLMs 被训练为理解和生成自然语言,并能够处理广泛的任务,但在实际应用中,它们仍然有限制。例如,它们可能在理解复杂或专业领域的内容方面表现不佳,或者在没有足够相关训练数据的情况下,其预测可能偏离实际。
"针对特定任务的调优可以使大型语言模型(LLMs)变得更可靠",是在指出通过特定任务的微调,可以改进LLMs 的表现。这种微调通常涉及在特定任务的数据上进一步训练模型,使其更好地适应该任务。例如,如果我们有一个在广泛语料库上预训练的 LLM,我们可以在法律文档上对其进行微调,以提高其在法律问题解答任务上的表现。这种任务特定的调优可以使模型在特定应用上更加可靠和准确。
"微调 (Fine tuning)" 是一种训练方法,你可以带来自己的数据集,并通过调整 LLM 中的每个权重来重新训练模型。这需要一个大型的训练任务(真的很大),并且你需要托管你自己微调过的模型。具体来说,微调过程中,你会在你的特定任务数据上继续训练预训练的大型语言模型,使模型的所有参数更适应你的任务。这种方法通常需要大量的计算资源,因为你需要在整个模型上进行训练。
- "Healthcare data (Millions of EHRs)":这是模型训练的第一步,需要大量的医疗健康数据。EHRs 是电子健康记录(Electronic Health Records)的缩写,这里指的是数百万份的电子健康记录数据。
- "Reusable Components (Medical Foundation Model)":在拥有大量的医疗健康数据后,接下来的步骤是使用这些数据来训练一个基础模型,这个模型被称为 "Medical Foundation Model"。这个模型可以被看作是一个可复用的组件,因为它可以被用于多个不同的任务。
- "Task adoption (Question answering, Chart summarizing, Image analysis -> risk stratification, finding similar patients)":这一步是对基础模型进行微调,使其适应特定的任务。这里列举的任务包括问题回答(Question answering)、图表总结(Chart summarizing)和图像分析/打标(Image analysis/ 打标)。这些任务的目标可能是风险分层(risk stratification)和寻找相似的患者(finding similar patients)。
- "Human-AI collaboration (Natural language interactions)":这一步是实现人工智能与人类的协同工作。在这个过程中,人类可以通过自然语言交互(Natural language interactions)与 AI 进行沟通,这可以帮助人类更好地理解 AI 的分析结果,也可以帮助 AI 更好地理解人类的需求。
参考:https://blog.csdn.net/w605283073/article/details/130717817
这里介绍两种更有效率的大型语言模型(LLM)调优方法:参数高效方法(Parameter-Efficient Methods,PETM)和提示调优(Prompt Tuning)。
参数高效方法(PETM):这是一种在不复制模型的情况下在自定义数据上调优LLM的方法。基础模型本身并未被改变。相反,会调优一小部分可添加的层,这些层可以在推理时刻加入和移出。这种方法的主要优势在于,它只需要修改模型的一小部分参数,因此在计算和存储需求上比全模型微调更为经济。
提示词调优:这是参数高效调优方法中最简单的一种。它的基本思想是优化模型生成的提示词,而不是改变模型的参数。通过精心设计的提示,可以引导模型生成特定的输出,而不需要昂贵的模型重新训练过程。这种方法的优点是,它在不需要大量计算资源的情况下,可以有效地利用大型语言模型。 举例来说,如果我们有一个预训练的语言模型,但是要应用于某特定领域(比如法律领域)的文档,我们可以在输入端添加一个"这是一篇法律文档"的提示,让模型学习对法律文档进行正确推理,而无需调整模型中的绝大部分参数。这就是 Prompt Tuning 的基本思想。
二、大型语言模型如何工作?
大型语言模型使用了一种名为"变换器"的网络结构,该结构可以处理序列的输入,比如一段文字。这些模型的训练要求大量的计算资源和海量的文本数据,训练过程通常会持续数周甚至数月。