NLP自然语言处理,是人工智能领域的一个分支,是一种学科/应用领域。而LLM大型语言模型,是NLP领域中的一种特定类型的语言模型,是指一个广泛的分类,涵盖了所有使用大量数据进行训练的、能够处理和生成自然语言的AI模型。而GPT是这一类模型中的一个特定例子,是LLM的一种实现,通过海量数据训练的深度学习模型,能够识别人的语言、执行语言类任务,并拥有大量参数。它使用Transformer架构,并通过大规模的预训练,学习语言的模式和结构;ChatGPT则是基于这些内容而实现出来供我们使用的产品。

LLM大模型术语

参数

参数是指模型的大小,一般来说参数越大,模型的能力越强。大模型的参数单位一般用“B”来表示,1B代表10亿参数。
模型基本都会按照“名称”+“版本”+“参数”的形式分类。
参数的单位基本都是“B”,但是因为有些模型不是通用大模型,而只是适用于某些领域的小模型,所以参数量会比较小,单位为“K”或“M”。
单位包括:K(千)、M(百万)、B(十亿)、T(万亿)。

token

token是大模型处理数据的最小单位,比如一个字、一个词、一个像素、一段音轨等。对于大模型的提供方已经内置分词功能,或者说大模型本身就有分词能力,形成token,token相对于TensorFlow于Tensor张量。

上下文

一段话的周围信息就是上下文,例如连续问大模型两个问题,这两个问题及回答互为上下文。相当于卷积神经网络中卷的概念,有相关性和连续性。

多模态

是指可以处理多种类型的数据,比如纯文字、图片、文档等,而单一模态的模型是指只能处理文字或图片或声音的模型。

温度

是一个调整模型回复的随机性的值,值越大随机性越高,回复越有创造性;值越小随机性越小,回复越重复老套。
这个名词来源于英语单词temperature,可以将其翻译为温度、热度等。在使用模型时,默认系统温度值即可;如果在回复中感觉到模型的回复会重复,这时就可以提高温度值,如果感觉到模型回复漫无边际,就可以降低温度值,下图为智谱清言对于温度的介绍。

向量值(词向量)

向量是用来描述token在高维世界的特征,数学领域中的向量是一个的数字列表,在一维空间中,位置可以用(x)表示;在二维空间中,则用(x, y,)表示。以此类推,三维空间(x, y, z),四维空间(x1,x2,x3,x4)……

如果道单选题,题目给出了海豚、马、兔子、骆驼这四种动物,让我们挑选出不一样的一种动物,应该怎么选?
alt text
我希望你的答案是海豚,因为海豚生活在海里,其他动物生活在陆地上。当然你要非说是骆驼,因为体型大;非说是兔子,因为兔子钻洞;非说是马,因为速度快,那我也没办法。毕竟人就是通过各种各样的特征去了解事物的,总能找到那个不一样的特征。

那怎么让计算机知道这些特征从而理解世界呢?我们可以将这些特征提取出来,如果提取1个特征,比如是不是陆地生物;如果提取两个特征,比如体型的大小。
alt text
只有“陆地生物”这一个特征的时候,越是符合这个特征则越靠近右侧,为了方便知道其位置,可以给一个坐标。如果增加“体型”这个特征的时候,那么每一个动物也就拥有了二维坐标。如果继续增加特征呢,那每个动物就会拥有三维坐标、四维坐标、五维坐标……

用图像肯定不方便表示,计算机中也不可能放一张无限维度的坐标图,但是计算机中可以存储每个动物的坐标位置,每一个数字就是对应了一个特征的值,通过动物之间数字的对比就可以知道每个动物之间的差异及内涵。
alt text
那计算机是怎么知道这些特征和数值大小的呢?可以靠计算机学习,让神经网络学习大量资料后,让计算机去区分每一个token的特征和特征的值。

大语言模型(LLM)

为什么叫大语言模型?

能听懂人话并且和人沟通的模型,叫做大语言模型。
大语言模型主要是处理语言的,处理什么数据就叫什么模型,除了语言模型还有处理视觉、音频、生成数据等其他作用的模型。
如果有人开发出了画原型图的模型,也可以叫它“原型图模型”。
多模态模型也就是综合了语言模型、视觉模型等多种模型能力的大模型。因为每一种模型的作用是不相同的,为了让大模型的能力更强更方便使用,所以产生了多模态大模型,也就是即可以听懂人话,也可以看懂图片是什么意思。

为什么大模型能够听懂人话?

我们并不确定计算机理解人类的语言还是概率运算的结果。
我们可以教会鹦鹉说“你好”,那我们可以说鹦鹉听懂了人类的语言吗?不可以,因为我们明确的科学的可以知道鹦鹉只是重复音节。
大模型则是通过了大量的文本训练,学会了语言中的各种沟通方式、文字与文字之间的排列规则、语法的结构。通过这一系列的规则运算,给人一种可以听懂人话的感觉。

LLM、GPT、Transformer、ChatGPT的关系

alt text

由图可见Transformer是基础架构,LLM是建立在这种架构上的一类复杂系统,GPT是LLM中的一种特定实现,并通过大量的预训练,获得了强大的语言处理能力。而已发布的ChatGPT使用了GPT技术进行了产品的呈现。

为了更好理解LLM、GPT、Transformer三者的关系,我们可将他比作建筑的不同部分:

1)Transformer:基础结构

将其想象为一座大楼的框架,Transformer提供了基本的支撑和形状,里面详细设计为空,决定了建筑的整体设计和功能;

2)LLM:整体建筑

可理解为是建立在前面框架上的整体建筑,不仅有框架(即Transformer架构),还包含了房间、电梯、装饰等,使建筑完整,功能丰富;

3)GPT:特定类型的建筑

可被视为大型建筑中的一种特定类型,如一座特别的摩天大楼,他不仅使用了Transformer架构,还通过特定的方式进行了设计和优化(即大规模预训练),以实现特定的功能,如高效的文本生成和语言理解。

要了解大模型是怎么变得这么厉害的,那就需要从头开始说了。

最早有关人工智能的概念来源于图灵,他在《计算机器与智能》的论文里提出了“图灵测试”,什么是图灵测试呢?就是让一台机器和人对话,如果这个人没法辨别和他对话的是机器还是真人,那么就可以说这台机器具备了智能。

为了使机器能够通过图灵测试,研究人员开始研究人类语言。因为人是地球上拥有最高智慧的物种,而语言是人类沟通过程中最重要工具,更是智能的表现形式。

具体怎么研究语言呢?最直接的方式就是从语言的规则下手。比如n-gram模型,就是根据人类的语言习惯,通过前面的字来预测后面字的方式让计算机实现语言功能的,而且现在的大模型也是站在n-gram模型的肩膀上发展出来的,了解n-gram模型就能够很清楚的知道现在的大模型的实现逻辑。

1、入门级模型:n-gram模型

n-gram模型前面的N是指用几个词来预测下一个词;如果我们用前面的两个词来预测下一个词,这就叫做2-gram;如果用前面的三个词来预测下一个词,这就叫做3-gram。

为了能够理解n-gram模型,我们可以举个例子。

有一个数据集,里面只有两句话。

我们需要先将这两句话拆分token,也就是“我”“喜欢”“吃”“苹果”“香蕉”。

根据概率推算,“我”后面必然会跟着“喜欢”两个字,概率是100%;那么当我们输入“我”这个汉字的时候,系统就会根据概率,输出“喜欢”这个词,可见下图。
alt text
如果规定模型持续运行直到生成一句话,那么模型就会根据概率生成“我喜欢吃苹果”或者“我喜欢吃香蕉”,因为“苹果”和“香蕉”两个词的概率都是50%,那么系统会随机生成。

但是n-gram模型也有很多缺陷,因为n-gram模型是先假设每一个词都是互相独立存在,彼此没有关系的。但词语和文字却是有实际意义的,所以就导致模型没法理解上下文,没办法解决句子中的逻辑关系。如果出现了新词语,也没法理解其用法,纯粹是概率计算。

直到后来,出现了神经网络技术。

2、大模型核心角色-神经网络

神经网络是通过模仿大脑处理信息的方式而产生的计算模型,是为了解决图像识别和逻辑运算的。

神经网络的设计灵感来源于人脑的结构,每个神经元代表一个基本的计算单元,单个神经元实际上是一串代码,用来处理简单的数学运算。尽管单个神经元的功能相对简单,但当大量这样的神经元连接起来形成网络后,整个网络就能够去处理复杂的任务。

经典的神经网络可以分为三层结构,输入层、隐藏层、输出层,每一层都是由一堆神经元组成。
alt text

  • 输入层:接收原始数据,将原始数据经过预处理后传递给隐藏层。
  • 隐藏层:通过线性加权求和、激活函数、权重等一系列运算,将结果传递给输出层。
  • 输出层:处理接收到的数据并输出结果,将结果反馈给用户。
    总结一下就是,每个神经元作为一个计算单元,通过对输入数据进行加权求和并应用激活函数来提取有用的特征,然后将处理后的信息传递到网络的下一层。在网络的输出层,对于分类任务,神经元可以输出表示不同类别的概率值。

具体到图像识别任务,图像是由像素构成的,每个像素都有其特定的色值。以数字“6”为例,我们可以给计算机大量数字6的图片,计算机会将图像分解为像素,然后将颜色转换成色值,并分析这些色值的分布规律。
alt text
最终,当模型遇到新的、未见过的数字6图片时,它能够基于已学到的规则将其识别出来。如果给神经网络提供大量高质量且标注准确的数据,那么神经网络就可以拥有解释图像信息的能力。

虽然神经网络这么厉害,但因为早期的硬件限制,导致发展并不顺利。前面我们可以得知,神经网络是通过大量神经元构成的,而每个神经元只负责简单的运算,这种方式要求硬件能提供强大的并行处理能力,以同时执行这些大量的简单运算任务。但当时训练神经网络只能依靠CPU且性能还有限。

随着计算机硬件技术的发展,特别是GPU的引入,这才让神经网络的硬件环境得到改善。硬件技术的发展让研究人员能够去设计和训练更复杂的神经网络结构,比如卷积神经网络、循环神经网络、注意力机制、预训练等。而现在的大模型都是基于神经网络架构的,可以说没有硬件的发展、没有神经网络的发展,就没有目前的大模型。

而Transformer架构是神经网络中最主流的,当前的大语言模型几乎都是基于Transformer架构搭建的。

3、主流架构-Transformer架构

Transformer架构是特别适用于自然语言处理的神经网络模型。

Transformer架构能够如此厉害,在于Transformer架构能够通过向量数据、自注意力机制、神经网络等能力,高效地处理和理解自然语言

  • 向量数据:每个token被转换为了高维向量,通过token的向量值,可以知道词汇本身的语义信息、特征,还能分析出token与token之间的复杂关系。

  • 自注意力机制:输入到神经网络的每一个token都可以与其他token发生联系,并且通过“权重”来区分链接过程中的重要程度,这样可以让大模型解决上下文关联问题,避免提问第二个问题的时候忘记第一个问题。

  • 神经网络的能力:通过全新的神经网络结构,不仅能捕捉局部特征,还能理解全局信息,从而支持更深层次的语言理解和生成任务。

Transformer架构

语言大模型的核心是Transformer,是基于注意力机制的深度学习模型(神经网络架构),用于处理序列到序列的任务。简单来说,就是捕捉句子中不同位置的词之间的关系,用于如理解上下文信息、生成连贯逻辑一致的文本等,且能高效并行计算。

1. Transformer主要核心结构

如下:

alt text

Transformer内部有多个编码器、解码器堆叠;

  • 编码器:主要捕捉输入序列中的信息并建模特征;
  • 解码器:主要生成输出序列;

编码器/解码器堆叠的作用:增加模型性能,有助于处理复杂的输入输出关系。

下面我们深入了解一下Transformer架构:

1)其核心组成部分包含:

i.编码器:
由多个编码器层堆叠而成,内部包含多头自注意力机制+前馈神经网络,整体主要作用是捕捉输入序列的上下文信息,并生成一系列编码向量;

ii.解码器:
由多个解码器层堆叠而成, 内部包含带掩码的多头自注意力机制+编码器到解码器的多头注意力机制(常称为编码器-解码器注意力)+前馈神经网络,整体主要作用是利用编码器的输出生成输出序列。

iii.嵌入层:
将输入序列中的词转换为用向量表示(即词向量),以便模型能够处理;
词向量:
将单词转换为向量,或者说将语言的基本单位转换为数字组合(如将英文单词转换为一串数字,让计算机可识别),核心思想是具有相似语意的词在向量空间中更接近;
向量:表示具有大小和方向的量,如在直角坐标系中(x,y)、在三维空间表示为(x,y,z);
矩阵:
iv.位置编码:

把表示各个词本文顺序的向量和上一步得到的词向量相加;
由于Transformer并行处理输入序列中的所有单词,所以不知道输入序列的顺序信息,因此需要生成每个单词在序列中的位置信息;

2)主要涉及的工作原理:

i.自注意力机制:
允许模型在处理每个单词时关注输入序列中的其他单词,这种机制能给每个词分配一个权重,计算当前词与其他所有词之间的相关性;
作用:理解上下文和语言流的关键(捕捉序列数据中的依赖关系);

ii.多头自注意力机制:
将输入序列分成多个头,并对每个头进行自注意力计算,然后将多个头的结果拼接在一起,最终通过线性变化得到输出。简单的说,每个注意头专注于句子中的某个特定关系(如某一个单头自注意力只关注主谓关系、另一个单头自注意力只关注形容词与名词的关系等),使模型能够从不同角度或多个层面捕捉语意信息;

作用:生成更准确的表示,提高了对复杂关系的建模能力;

iii.前馈神经网络:

在每个编码器与解码器层中,还包括一个位置独立的前馈神经网络,由两个线性层和一个激活函数(通常为ReLu)组成;

作用:对自注意力层的输出进行进一步的非线性变换,强化位置的表示/提取更复杂的特征,增强模型的表达能力;

2. Transformer的内部结构

基于以上的了解,我们来补全一下Transformer的内部结构如下:
alt text

1)编码器及其输入/出部分:

i.输入:原始的海量数据
ii.嵌入层、位置编码:对原始输入数据进行处理

作用:将输入的词转化为向量,并加上位置信息,供编码器使用

iii.编码器内部:

多头自注意力:捕捉原始序列信息
前馈神经网络:增强模型表达能力

iv:输出:包含了原始输入信息的上下文信息与位置信息的向量序列,是后续解码过程的基础

2)解码器及其输入/出部分:

i.输入:分为2大部分

解码器自身的输入:

开始符号:表示输出序列的开头(作用:告诉解码器开始生成目标序列)
先前生成的词:指开始后,前一个时间步解码器的输出,也作为输入(作用:为下一步掩码多头自注意力机制提供实际内容,如上下文信息、位置信息等)
前一时间步:指在时间序列或序列数据中,当前元素(词、字符或时间点的数据)之前的那个元素或时间点
编码器的输出:
编码器的输出作为解码器的输入(作用:编码器的输出综合了原始序列位置与上下文信息,来指导解码过程的注意力分配)

ii.嵌入层、位置编码:仅对解码器“先前生成的词”进行处理

作用:将输入的词转化为向量,并加上位置信息,供解码器中的多头自注意力机制使用

iii.解码器内部:

多头自注意力机制:详指带掩码的多头自注意力机制,针对已生成的输出序列(指前面说的“先前生成的词”被嵌入层与位置编码处理后的)进行处理,

(作用:防止未来的信息被利用,维护序列生成的因果顺序,确保模型生成目标序列时的连贯性与一致性)

·编码-解码注意力机制:捕捉编码器的输出与解码器即将生成的输出序列之间的复杂依赖关系,从而将原始序列的信息融合到输出序列的生成过程中(作用:有助于解码器生成准确的目标序列输出)

前馈神经网络:增强模型表达能力

iv.输出:一步步生成一个完整的输出序列

3)线性层与Softmax函数

i.线性层(Linera):主要用于对输入数据进行线性变换,调整数据的维度或简单的线性组合,转换维度;

ii.Softmax函数:主要用于将线性层的输出转换为词汇表的概率分布,选择最可能的输出序列(词汇表的概率分布代表下一个词(token)被生成的概率)。

线性层+softmax函数整体作用:把解码器输出的表示,转换为词汇表的概率分布(

从特征空间到最终输出结果的转换),从而进行词汇预测和生成任务。

3. Transformer与其他神经网络模型的对比

1)Transformer:基于自注意力机制的模型

能够高效处理序列数据

优点:

i.并行处理能力强:可并行处理整个序列,显著提高计算效率

ii.捕捉长距离依赖关系:能直接访问序列中的任意位置,有效捕捉长距离(上下文)依赖关系

iii.通用性强:能处理复杂任务,不仅适用于自然语言领域,还适用于图像处理等其他领域的序列建模任务

缺点:

i.资源消耗大:对于长序列处理时,计算和内存资源需求较高

ii.训练数据量要求高:通常需要大量的训练数据来获得良好的性能,特别是在处理复杂任务时

2)CNNs:卷积神经网络

主要适用于图像识别任务,提取图片的空间特征(图片中各部分之间的空间布局和相对位置,如连接、包含等关系)

优点:

i.空间特征提取能力强:无论图像如何移动,都能提取到相同的特征;

ii.参数共享和局部链接:减少模型参数数量,降低计算成本;

缺点:

i.无法处理序列数据:不适合捕捉长序列内的依赖关系;

ii.平移不变性:可能导致某些任务表现不佳

3)RNNs:循环神经网络

主要用于处理序列数据,能够捕捉数据中的时间依赖关系,适合处理如时间序列数据(如近3个月的股票价格数据、近一周的气温数据);

优点:

i.处理序列数据:擅长处理具有时间关系的序列数据,如文本、语音

ii.参数共享:在时间步上参数共享,减少了模型的参数数量

iii.短期记忆:能够记住短句子中前面的信息,理解上下文依赖关系

缺点:

i.长依赖问题:难以捕捉到远距离的时间依赖关系,如长句子中距离远的词,依赖关系无法捕捉;

ii.计算效率低:难以并行计算,导致训练速度较慢;

4)LSTM:是RNN的一种变体,长短期记忆网络

适合处理时间相关性较强的短序列数据;

优点:

i.处理长期依赖:有效处理序列处理中的长期依赖关系

ii.梯度问题:相比RNN,LSTM更好的解决了梯度消失/梯度爆炸的问题

缺点:

i.训练时间长:计算复杂度高,且难以并行

ii.资源消耗大:随着序列长度的增加,训练难度与资源消耗也会增加

4. 应用现状

在Transformer原始架构的基础上后续出现了变种:

主要分为3类:

1)仅编码器:如 Bert,适用于理解语言的任务,如掩码语言建模(让模型猜被遮住的词是什么)、情感分析(让模型猜文本情感是积极还是消极)等

2)仅解码器:如GPT系列(ChatGPT),擅长通过预测下一个词,来实现文本生成等

3)编码器+解码器:如T5、BART,适用于把一个序列转换成另一个序列的任务,如翻译、 总结等

以上就是对Transformer原理、结构等的简单分享,希望可以帮到你,欢迎一起交流学习。
国外的openai、谷歌、微软,到国内的阿里、腾讯、清华的团队等,都是基于或借鉴Transformer架构开发的大模型。
alt text

https://bbycroft.net/llm,这是一个LLM可视化网站,可以清楚的看到大模型每一步的工作细节。

大模型实践

提示词工程

提示词功能的作用在于通过设定提示,让大模型的回答更加精准。

大模型训练时并不会针对特定领域,是为广泛问题进行设计的。而提示词工程(Prompt Engineering)也叫上下文提示,目的是希望大模型在回答问题时,可以得知前因后果,聚焦用户的特定需求。

也就是无论形式如何,只要能够让大模型得知你的需求就是提示词,只要让大模型给你想要的答案就是好的提示词,哪怕你问的是“1+1等于几?”。

比如你让大模型扮演某个角色,你可以告诉大模型:“你要扮演鲁迅,回答的风格要与鲁迅的作品类似”。那么大模型就会扮演鲁迅且通过鲁迅的说话风格回答你的问题。
alt text
而在创建智能体时,也会让用户填写智能体的设定,这个设定就起到了提示词的功能。
alt text
针对复杂问题,为了从大型语言模型中获得高质量的回答,我们需要提供更加详尽的问题描述。在2023年11月,新加坡举办了首届提示词功能大赛,冠军Sheila Tao撰写了一篇文章,探讨了她对提示词的理解,并介绍了CO-STAR框架的应用方法。
alt text
工作原理如下:
-(C)背景:提供任务的背景信息

这有助于 LLM 了解正在讨论的具体场景,确保其回应是相关的。

-(O)目标:明确你希望 LLM 执行的任务是什么

明确你的目标有助于 LLM 集中精力实现该特定目标。

-(S)风格:指定您希望 LLM 使用的写作风格

这可能是某个名人的写作风格,也可能是某个行业的某个专家,比如商业分析师或 CEO。这将指导 LLM 以符合您需求的方式和措辞进行回复。

-(T)语气:设定回应的态度

这确保 LLM 的回应与预期的情绪或情感背景产生共鸣。例如正式、幽默、富有同理心等。

-(A)受众:确定回复针对的对象

根据受众(例如某个领域的专家、初学者、儿童等)定制 LLM 的回应,确保它在您需要的背景下是适当且易于理解的。

-(R)回复:提供回复格式

这可确保 LLM 输出的格式与您执行下游任务所需的格式完全一致。示例包括列表、JSON、专业报告等。对于大多数以编程方式处理 LLM 响应以进行下游操作的 LLM 应用程序而言,JSON 输出格式是理想的选择。

如果我们希望大模型可以帮产品经历写一份年终总结,就可以按照CO-STAR框架编写提示词。

  • 背景:我是“XXXXX”公司的产品经理,负责XXXXXX应用。在过去的一年中,我们实现了多项功能升级,并且用户基数有了显著增长。

  • 目标:编写一份全面的年终总结报告,概述本年度的关键成就、遇到的主要挑战及解决策略,并简要介绍下一年的战略规划。

  • 风格:采用清晰、专业的商务写作风格,类似于业界公认的产品经理或公司领导人的表达方式。

  • 语气:正式而积极,体现对团队努力的认可以及对未来发展的乐观态度。

  • 受众:这份报告将提交给公司的高级管理层以及我的直接上司,并会在内部分享给整个产品团队。

  • 回复:请按照标准的年终总结格式提供文档,包括封面页、目录、引言、年度回顾、主要成就、面临的挑战与解决方案、未来展望等部分。文档需保持专业性,重点突出。

如果不会写提示词怎么办?没关系,可以复制文中的工作原理,把写提示词的工作交给大模型。

虽然可以通过CO-STAR框架中说明了提示词该怎么写,但我们的重点并不在于如何编写提示词,而在于让大模型给出我们满意的答案。

知识库

知识库就是资料库,目的就是为大模型处理问题提供必要背景知识

虽然大模型擅长处理广泛领域的常见问题,但在面对特定领域内深入且专业的问题时存在局限性,而知识库提供了特定领域的信息,帮助其解决特定问题。

如果希望大模型帮助企业优化供应链管理,那么大模型就需要知道供应商信息、库存水平、物流数据、采购数据等信息。如果希望大模型能够帮助系统应用,那么大模型就需要知道项目管理流程、技术文档、操作说明书等信息。而这些信息就需要存放到知识库,作为大模型的知识储备。

这里需要注意,大模型和知识库是两种不同的技术,只是针对于特殊问题需要知识库提供特定信息。

所有的数据都需要存储在服务器上,常见的数据库类型包括关系型数据库、非关系型数据库,这些数据库可以有效地存储和管理结构化与非结构化数据。然而对于大模型来说,这些传统的存储方式并无本质区别,它们更像是文件夹,用于存储和检索信息。

并不是知识库的数据就需要向量存储,只是需要处理相似性任务的时候,需要用到向量数据库。
alt text

前面提到大模型时也有提到,大模型的本质是概率计算,通过token与token之间向量值的对比来生成数据,这种基于向量的计算方式使得大模型能够理解和处理复杂的模式和关系。只要任务需要用到数据与数据的相似性对比,那么就需要用到向量数据库,可见第一部分的向量词。

微调

微调就是让通用的大模型,更加适用于某个特定项目。
如果大模型是一个大学生,知识库相当于公司资料,而微调工作就相当于入职培训,培训其如何与客户继续沟通。
听起来微调似乎很高深,但其实大模型厂商都会提供对应的微调功能,我们可以通过平台提供的微调模板,了解微调是什么。
alt text
微调的目的是通过使用实际案例来优化大模型的表现能力,使其更符合特定应用场景的需求。无论是像ChatGPT还是通义这样的大模型,都是采用一问一答的形式进行。
通过提供企业自身的实际案例,微调过程可以让大模型学习到更加精准和符合企业需求的回复方式,从而使通用的大模型能够高度适配企业的具体业务场景。这样不仅提升了模型的实用性,还增强了其在特定领域中的表现力和准确性。

参考文献或转载相关: