在OpenAI Day2的演示中,一项名为"ReFT"的技术瞬间成为业界焦点。不过平心而论,这并非全新的发明,也并非OpenAI的原创成果。今天,我们就来系统梳理SFT、ReFT、RLHF、DPO、PPO这几种主流的大模型微调技术,深入剖析它们各自的核心原理与应用差异。
一、几种技术之间的关系
为了方便理解,我们首先将这些复杂技术之间的内在联系进行简化说明:
-
ReFT(强化微调,Reinforced Fine-Tuning)
- 组成:ReFT = SFT + PPO
- 过程:在完成有监督微调(SFT)的基础上,进一步采用PPO(近端策略优化)算法进行强化学习训练。
- 评估方式:主要依赖自动化程序对模型的输出进行评分,奖励信号由该程序生成。
-
RLHF(基于人类反馈的强化学习,Reinforcement Learning from Human Feedback)
- 组成:RLHF = SFT + PPO + 人类反馈
- 过程:在SFT的基础上,使用PPO进行强化学习,其奖励信号来源于人类的评价。
- 评估方式:由人类直接对模型输出进行评判,或借助基于人类反馈训练的奖励模型进行间接评估。
-
DPO(直接偏好优化,Direct Preference Optimization)
- 组成:DPO = SFT + DPO算法
- 过程:在SFT的基础上,引入一个参考模型,并采用DPO方法直接对模型进行优化。
- 评估方式:通过人类偏好数据与参考模型构建专门的损失函数,直接对模型参数进行迭代更新。
-
RLAIF(基于AI反馈的强化学习,Reinforcement Learning from AI Feedback)
- 组成:RLAIF = SFT + PPO + AI反馈
- 过程:在SFT的基础上,运用PPO进行强化学习,其奖励信号源自其他AI模型的评判。
- 评估方式:辅助性的AI模型(如奖励模型)对主模型的输出进行评估,并提供奖励信号。
简单概括一下:
- ReFT:在监督微调后的模型上,利用PPO进行强化学习,奖励由自动化程序根据模型输出与标准答案的比对结果生成。
- RLHF:同样在SFT基础上使用PPO,但奖励信号是根据人类对模型输出的主观评价来设定的。
- DPO:在SFT基础上,运用DPO算法直接优化模型参数以契合人类偏好,过程中不涉及PPO等传统强化学习算法。
- RLAIF:与RLHF类似,但将人类反馈替换为AI模型的反馈,依然采用PPO算法进行强化学习。
ReFT、RLHF、DPO和RLAIF
这些技术均以监督微调(SFT)为起点,旨在进一步优化模型性能,但在具体的优化策略和反馈来源上存在明显区别。
1. ReFT(强化微调):它是有监督微调与PPO算法的融合。首先,模型通过SFT在有标签数据上进行训练,从而构建起基础的语言理解与生成能力。随后,引入PPO算法执行强化学习优化。在此阶段,模型的输出由自动化程序按照预设规则进行评价,并生成对应的奖励信号。模型依据这些奖励信号,利用PPO调整自身参数,以产生更优的输出。ReFT的一大特点是评估自动化,无需人类介入,尤其适合具有明确客观标准的任务,例如数学问题的求解。
2. RLHF(基于人类反馈的强化学习):在SFT的基础上,结合PPO算法,但奖励信号来源于人类的反馈。具体流程是,人类对模型的输出进行评价,指出更优的回答或通过偏好对比提供反馈。这些人类反馈可以直接用于指导模型优化,或用于训练一个奖励模型,后续由该奖励模型对输出进行评估。RLHF的优势在于引入了人类主观判断,使输出更契合人类偏好,适用于需要复杂评价和主观判断的任务。
3. DPO(直接偏好优化):与前两种方法不同,DPO不使用强化学习算法(如PPO),而是采用监督学习的方式直接优化模型。在SFT之后,利用人类偏好数据和参考模型构建损失函数,对模型进行直接微调。具体步骤是收集人类对模型输出的偏好数据(例如,在多个回答中标注出更受青睐的那个),然后设计损失函数,使模型倾向于生成被人类偏好的输出。通过最小化这个损失函数,直接调整模型参数。DPO避免了强化学习中的试错过程,训练更为稳定、高效,适用于拥有大量人类偏好数据的场景。
4. RLAIF(基于AI反馈的强化学习):这是SFT、PPO与AI反馈的结合产物。在SFT之后,使用PPO进行强化学习,但奖励信号并非来自人类,而是源于辅助AI模型(如奖励模型)的反馈。AI模型对主模型的输出进行评估,并提供奖励信号。这种方法有效节省了人类评价的成本,但高度依赖辅助AI模型的质量。
总结一下:在这四种方法中,ReFT、RLHF和RLAIF都采用了PPO作为强化学习算法,它们之间的核心差异在于奖励信号的来源——ReFT来自自动化程序,RLHF来自人类反馈,而RLAIF则来自AI模型的反馈。唯有DPO采用了监督学习方式,不依赖PPO等强化学习算法,而是直接利用人类偏好数据优化模型。
那么,为什么DPO不用强化学习,而采用监督学习?
强化学习方法(如PPO)要求模型在环境中自主探索,通过试错过程来获得奖励信号,这个过程较为复杂,训练不够稳定,且参数调优困难。相比之下,监督学习的方法更为直接高效:通过人类提供的偏好数据,直接告知模型什么样的输出是好的,并据此构建损失函数来调整模型参数。这样做有效规避了强化学习的复杂性,使得训练过程更加稳定、高效,尤其适用于拥有大量人类偏好数据的情况。
举个例子
使用强化学习的模型像是在黑暗中摸索前进,需要不断试错;而采用监督学习的DPO方法,则像是有人直接提供了一张地图,指明了正确的行进路线。采用监督学习,可以更快地达成目标。
选择方法的依据
如果任务具备明确的客观评价标准,那么ReFT是合适的选择,可以通过自动化程序来评估模型输出。如果期望模型输出更符合人类的主观偏好,并且拥有大量的人类反馈数据,可以选择RLHF或DPO方法。其中,RLHF使用强化学习算法,需要模型与环境交互,训练过程较为复杂;而DPO则采用监督学习,训练更为简单高效。如果人类反馈的成本较高,可以考虑RLAIF,利用辅助AI模型来提供反馈信号。
二、ReFT简介
我们先来看一下ReFT论文中的流程图示:

如上图所示,ReFT这个框架整合了监督微调(SFT)与强化微调(ReFT)两种方法。接下来,我们对图中的各个部分进行详细解读:
-
监督微调(Supervised Fine-Tuning)
- 模型(Model):初始模型通过多个SFT周期(epochs)在训练数据上进行迭代训练。训练数据包含问题(x)、推理链(CoT,e)以及答案(y)。
- SFT Epochs:模型在训练数据上经历多个训练周期,学习如何从给定的问题(x)和推理链(e)中生成正确的答案(y)。
- 不同阶段的模型:图中通过模型表情的变化,形象地展示了经过不同训练阶段后模型性能逐步提升的过程。
-
强化微调(Reinforced Fine-Tuning)
- 预热阶段(Warm-up):在正式进入强化学习阶段之前,模型首先通过SFT进行预热训练。
- 问题(question):模型接收一个输入问题(x)。
- On-Policy Sampling:采用在策略内采样的方式,模型生成一个推理链和相应的答案(e', y')。
- Golden Reward:将生成的答案(y')与正确答案(y)进行比对,据此给予奖励信号。若答案正确,则给予正向奖励(√),否则给予负向奖励(×)。
- 强化学习(Reinforcement Learning):利用奖励信号来调整模型参数,从而提升模型在相同数据集上的表现。
-
最终策略(Final Policy)
- 经过SFT和ReFT两个阶段的训练后,模型形成了最终策略,能够更准确地回答问题。
图例展示了在GSM8K数据集上,一个问题(x)、推理链(e)和答案(y)的具体示例。通过多个SFT周期对训练数据进行迭代,并使用ReFT方法从SFT预热开始,进而在相同数据集上执行强化学习训练。
三、几种技术的对比
| 比较维度 | SFT(有监督微调) | ReFT(强化微调) | RLHF(基于人类反馈的强化学习) | DPO(直接偏好优化) | PPO(近端策略优化) |
|---|---|---|---|---|---|
| 概念 | 利用标注数据对预训练模型进行微调,使其适应特定任务。 | 将监督微调与强化学习相结合。在模型初步学习后,通过PPO算法进行深度优化。 | 借助人类反馈来指导强化学习过程,使用人类评价作为奖励信号,优化模型输出。 | 直接利用人类偏好数据优化模型,避免使用复杂的强化学习算法。 | 一种强化学习算法,通过限制策略更新的幅度来确保训练过程的稳定性,广泛应用于ReFT和RLHF等方法中。 |
| 目标 | 提升模型在特定任务上的性能表现。 | 增强模型的推理与泛化能力,特别适用于需要多步推理的任务,例如数学题解答。 | 提高模型输出的质量及其与人类偏好的契合度,使模型更符合人类的期望和价值观。 | 简化训练流程,规避强化学习的复杂性,同时使模型输出更贴合人类偏好。 | 提供一种高效且稳定的强化学习算法,在不牺牲样本效率的前提下,简化策略优化过程。 |
| 方法和流程 | 步骤:1. 收集标注数据(包含输入与期望输出)。2. 对模型进行有监督微调。 | 步骤:1. 预热阶段:进行有监督微调,学习基础能力。2. 强化学习阶段:让模型生成多种解答路径(CoT)。根据答案正确性给予奖励。使用PPO算法优化模型。 | 步骤:1. 对模型进行初步微调。2. 收集人类对模型输出的反馈。3. 训练一个奖励模型来评估输出质量。4. 使用PPO算法优化模型以最大化奖励。 | 步骤:1. 收集人类偏好数据(对不同输出的偏好)。2. 定义目标函数,直接优化模型参数,使其输出更符合人类偏好。3. 避免使用强化学习,简化训练流程。 | 步骤:1. 初始化策略网络和价值函数估计器。2. 与环境交互,收集样本数据。3. 计算优势函数,评估策略性能。4. 使用剪切的目标函数限制策略更新幅度,优化策略网络。5. 重复上述步骤直至收敛。 |
| 数据需求 | 标注数据:需要大量高质量的输入与期望输出对。 | 标注数据:需要输入和标准答案(可能包含CoT)。无需额外的人类偏好数据。 | 标注数据:用于初步微调的数据。人类反馈数据:需要大量人类对模型输出的评价、评分或排序。 | 人类偏好数据:需要人类对模型输出的偏好选择或评分。 | 交互数据:需要模型与环境交互产生的样本数据。除非用于特定任务,否则无需额外的标注数据或人类反馈。 |
| 奖励机制 | 损失函数:基于模型在标注数据上的损失值来优化参数。 | 基于答案正确性:正确答案给予正向奖励,错误答案不给予奖励或给予惩罚。使用PPO算法,根据奖励优化策略。 | 奖励模型:使用人类反馈训练一个奖励模型,该模型评估输出质量,为强化学习提供奖励信号。 | 目标函数:基于人类偏好直接定义目标函数,优化模型参数,使其更可能生成被人类偏好的输出。 | 环境奖励:奖励由环境提供,模型根据其动作获得反馈,并使用优势函数来衡量策略的改进。 |
| 训练流程复杂度 | 简单:直接进行有监督训练,计算成本取决于数据规模和模型大小。 | 中等到复杂:包含预热阶段和强化学习阶段。需要实现和调试PPO算法。计算成本较高,需要更多训练时间。 | 复杂:包含多阶段训练:初步微调、收集人类反馈、训练奖励模型、强化学习优化。需要实现和调试PPO算法。计算成本高昂,需要大量人类评价和训练投入。 | 较低:避免了强化学习的复杂性。计算成本相对较低,但取决于偏好数据的规模。 | 中等:使用PPO算法,训练过程需要一定的计算资源。计算成本适中,且易于参数调优。 |
| 优势 | 简单直接:易于实现和理解。适用范围广:适用于拥有大量标注数据的任务。 | 增强推理能力:模型能够通过强化学习自主探索,提高泛化能力。无需额外的人类反馈数据:有效降低数据获取成本。 | 符合人类期望:输出质量高,更契合人类偏好。提升用户体验:在对话系统等应用中效果尤为显著。 | 训练简单:避免了强化学习的复杂性。直接优化目标:模型更容易生成符合人类偏好的输出。 | 稳定性高:通过限制策略更新幅度,防止性能骤降。样本效率高:能够充分利用采样数据,提升训练效率。实现相对简单:比传统的策略梯度方法更易于实现。 |
| 劣势 | 数据依赖:需要大量高质量标注数据,获取成本高昂。泛化能力有限:对未见过的输入可能表现不佳。 | 训练复杂度高:需要实现和调试PPO算法。可能出现奖励黑客问题:模型可能找到投机取巧的方式来获得奖励。 | 成本高昂:需要大量人类反馈数据,获取成本高。训练复杂:多阶段训练流程复杂,可能存在不稳定性。 | 依赖偏好数据质量:最终效果取决于人类偏好数据的准确性和覆盖范围。可能性能有限:在复杂任务上,可能不如使用强化学习的方法有效。 | 需要大量交互数据:训练可能耗费大量时间和资源。超参数敏感:训练过程需要仔细调参。在高维空间中面临较大挑战。 |
| 适用场景 | 任务:有明确输入和输出对的任务,例如分类、翻译、问答等。 | 任务:需要复杂推理的任务,如数学问题求解、逻辑推理等。也适合希望模型具备更强泛化能力的场景。 | 任务:需要高质量输出的生成任务,如对话系统、文本生成。对输出的安全性、礼貌性有高要求。 | 任务:希望简化训练过程,同时又希望模型输出符合人类偏好。需要有足够的人类偏好数据。 | 任务:需要通过强化学习优化策略的任务,例如与环境交互并获取奖励信号的场景。 |
| 举例 | 机器翻译:使用大量平行语料对模型进行微调。 | 数学求解:模型先进行有监督微调,然后通过PPO算法进行强化学习,生成多种解题方法,提升解题能力。 | 对话系统:人类对模型的回复进行评价,训练奖励模型,再使用PPO算法优化模型,使其回复更符合人类期望。 | 内容生成:对于相同的输入,模型生成多个候选输出,人类选择更优的那个,模型根据这些偏好进行直接优化。 | 机器人控制:通过与环境交互,使用PPO算法学习最优控制策略。游戏AI:在游戏环境中使用PPO算法学习策略,以击败对手或达成特定目标。 |
| 补充说明 | 过拟合风险:可能过度拟合训练数据,缺乏创新性。 | 利用PPO算法进行强化学习:需要注意算法的稳定性和超参数调节。探索性强:模型可能发现人类未曾预料到的解法。需要避免奖励黑客:设计合理的奖励函数至关重要。 | 人类反馈质量关键:需要高质量、多样化的人类反馈。需要实现和调试PPO算法:增加了训练复杂度和成本。 | 避免了策略梯度方法的复杂性。适用于偏好明确的任务,但在多样性要求高的任务上效果可能有限。 | 通用性强:PPO可与其他方法结合使用。在ReFT和RLHF中应用:PPO常用于优化模型,使其更符合既定目标(正确答案或人类反馈)。 |
SFT(Supervised Fine-Tuning,有监督微调)是利用标注的训练数据对预训练模型进行微调,以提升其在特定任务上的性能。模型通过学习大量输入与期望输出对,直接调整参数,从而在给定输入时输出期望的结果。这种方法简单直接,适用于拥有大量高质量标注数据的任务。
ReFT(Reinforced Fine-Tuning,强化微调)将有监督微调与强化学习相结合。模型首先通过SFT建立基础能力,随后在强化学习阶段使用PPO(近端策略优化)算法进行优化。模型自主探索多种可能的输出,自动化程序根据模型生成的答案与标准答案的匹配程度给予奖励或惩罚。这样,模型逐步提升对复杂任务(如数学问题求解)的解决能力。ReFT无需额外的人类偏好数据,但训练复杂度较高。
RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)利用人类的反馈作为奖励信号,并结合PPO算法优化模型输出。模型首先进行SFT,然后人类对模型的输出进行评价,形成反馈数据。基于这些数据训练一个奖励模型,用于评估模型输出的质量。模型再通过PPO算法优化自身参数,以最大化奖励模型的评分。RLHF能使模型输出更符合人类期望,但需要大量人类评价数据,训练过程复杂且成本高昂。
DPO(Direct Preference Optimization,直接偏好优化)不使用强化学习算法,而是直接利用人类偏好数据,通过优化目标函数使模型输出更符合人类偏好。具体而言,收集人类对模型输出的偏好选择或评分,构建损失函数,直接优化模型参数。这种方法避免了强化学习的复杂性,训练过程更简单,适用于希望简化训练流程且有大量偏好数据的情况,但其效果高度依赖偏好数据的质量。
在数据需求和奖励机制方面,SFT需要高质量的标注数据,没有显式的奖励机制;ReFT需要标注数据和自动化程序的奖励机制,并利用PPO算法进行优化;RLHF需要有监督微调的数据和大量人类反馈数据,通过奖励模型和PPO算法优化模型;DPO需要人类偏好数据,通过直接优化目标函数,使模型倾向于生成更受人类偏好的输出。
在训练流程的复杂度上,SFT相对简单,计算成本取决于数据规模和模型大小;ReFT复杂度中等,需要实现和调试PPO算法,计算成本较高;RLHF复杂度最高,需要多阶段训练和大量人类评价,计算成本高昂;DPO复杂度低于RLHF,避免了强化学习的复杂性,计算成本相对较低。
每种方法都有其独特的优势和劣势。SFT简单直接,但泛化能力可能有限;ReFT增强了模型的探索和泛化能力,但训练复杂度高,可能出现奖励黑客问题;RLHF输出质量高,更符合人类偏好,但成本高昂,训练复杂;DPO训练简单,直接优化目标,但依赖偏好数据质量,效果可能有限。
以数学问题求解为例,SFT方法让模型学习预先提供的解题步骤,但可能只能解决类似的问题;ReFT方法让模型自主探索不同的解题方法,能解决更复杂的问题;RLHF方法通过人类评价优化模型,使解答更符合人类预期;DPO方法让模型倾向于生成更受人类偏好的解答,从而提升解答质量。
总结:根据具体任务需求和可用资源,选择合适的微调方法至关重要。SFT适用于有大量标注数据的任务;ReFT适用于需要复杂推理且有明确评价标准的任务;RLHF适用于强调人类主观偏好的任务,但需权衡成本和训练复杂度;DPO则在希望简化训练流程的情况下,是一种有效的替代方案。
四、ReFT第二阶段评估
-
评估过程中是否需要使用其他大模型
在ReFT(Reinforced Fine-Tuning,强化微调)方法中,评估模型生成的答案通常是通过自动化程序完成的,即直接将模型输出与已知的标准答案进行比对。在此过程中:
- 无需其他大模型:评估基于答案的正确性,因此不需要引入其他大型语言模型或评估模型来辅助。
- 直接比较答案:对于拥有标准答案的任务(如数学问题求解),可以直接将模型输出与标准答案进行匹配,以判断其正确性。
-
第二阶段的评估由谁来做
在ReFT的第二阶段(强化学习阶段),评估和奖励的计算工作由程序自动完成:
- 正确答案:如果模型的输出与标准答案匹配,则给予正向奖励(例如,奖励值为1)。
- 错误答案:如果不匹配,可能不给予奖励或给予负向奖励。
- 部分奖励:在某些情况下,对于接近正确的答案给予部分奖励,以鼓励模型朝正确的方向改进。
- 模型生成解答:模型针对每个输入问题生成解题过程(包括思维链,CoT)和最终答案。
- 提取最终答案:程序从模型的输出中提取最终答案部分,忽略推理过程中的噪声信息。
- 答案比较:将提取出的最终答案与预先存在的标准答案进行比较。
- 自动评估流程:
- 奖励计算:
- 无需人类干预:整个评估和奖励计算过程是自动化的,不需要人类评估或其他模型的参与。
-
如何保证评估程序的客观性
为了确保评估程序的客观性和公正性,需留意以下几点:
- 对于可能存在多种正确答案的题目,评估程序应覆盖所有正确的解法,以确保评估的公平性。
- 对标准答案和模型输出进行标准化处理,确保比较过程的公正性。
- 保持评估程序的透明度,确保代码可审查,评估逻辑清晰明了。
- 记录评估过程中的关键步骤,方便后续的复查和分析。
- 在正式投入使用前,对评估程序进行充分的测试,确保其在各种可能的输出情况下都能正确判断。
- 妥善处理边界情况和异常输入,增强程序的鲁棒性。
- 评估程序只关注答案的正确性,不涉及语言风格、表达方式等主观评价。
- 对所有样本应用统一的评估逻辑,避免人为偏见的引入。
- 采用字符串匹配、数值比较等方式,自动判断模型输出与标准答案的一致性。
- 考虑数值误差范围,确保对数值型答案的比较精确。
- 使用客观且可验证的评估标准,基于标准答案进行精确比较。
- 对答案进行标准化处理,如去除空格、统一格式等,确保比较的一致性。
- 明确的评估标准:
- 自动化的比较机制:
- 避免主观因素:
- 严格的测试和验证:
- 透明和可审计:
- 处理多样化的正确答案:
4、ReFT适合的微调场景和能力
4.1 适合的微调场景
- 人类反馈成本高:获取大量人类偏好数据所需成本高昂。
- 标注数据有限:需要充分利用现有数据,以提升模型性能。
- 新型问题解决:模型能够解决训练数据中从未出现过的问题类型。
- 多解法问题:一个问题可能存在多种解法,模型可以探索不同的解题路径。
- 答案可验证的任务:模型的输出拥有明确的正确答案,评估过程可以自动完成。
- 答案唯一或有限的任务:例如选择题、填空题,其答案可以精确匹配。
- 数学问题求解:如算术计算、代数方程、几何证明等。
- 逻辑推理:包括因果关系推断、逻辑谜题、判断推理等。
- 编程和代码生成:需要生成正确且功能完善的代码段。
- 科学计算和定理证明:涉及复杂计算和证明步骤的任务。
- 需要复杂推理和多步骤推理的任务:
- 有明确客观评估标准的任务:
- 希望增强模型泛化能力的任务:
- 数据标注昂贵或稀缺的任务:
4.2 适合微调的能力
- 自我探索:模型在强化学习阶段自主探索解答方案,增强学习能力。
- 奖励驱动学习:通过奖励机制,模型学会识别正确的解答方向。
- 答案正确率:提高模型输出正确答案的概率。
- 错误纠正能力:模型能够从错误解答中学习,并逐步改进。
- 处理新问题:模型能够适应未曾见过的问题类型,具备更强的泛化能力。
- 创新解题方法:模型可以探索新的解题思路,丰富解答方式。
- 多步骤推理:提升模型在多步骤问题上的推理深度,能够清晰地进行逐步解答。
- 逻辑严谨性:增强模型在推理过程中的逻辑正确性,避免出现推理漏洞。
- 复杂推理能力:
- 泛化和适应能力:
- 准确性和可靠性:
- 自主学习能力:
4.3 不太适用的场景
- 无法自动评估的任务:例如创意写作,缺乏明确的评价标准。
- 多样性要求高的任务:需要生成多样化的输出,ReFT可能会限制输出的多样性。
- 意见问答:涉及个人观点,无法客观评估其正确性。
- 情感分析:需要理解细微的情感差异,难以用简单的奖励机制来衡量。
- 对话生成:涉及情感、礼貌性、上下文理解等多方面因素,需要人类反馈。
- 内容创作:如诗歌、故事创作,评价标准主观且多变。
- 需要大量人类主观评价的任务:
- 开放式、主观性强的任务:
- 缺乏明确奖励信号的任务:
4.4 数学问题求解的评估流程
- 模型生成:模型针对给定的数学问题,生成详细的解题过程和最终答案。
- 答案提取:评估程序从模型的输出中提取最终答案,并进行必要的标准化处理(例如化简分数、统一单位)。
- 答案比较:将提取出的答案与标准答案进行精确比较。
- 奖励分配:根据比较结果,给予模型相应的奖励,指导模型参数朝着能够生成正确答案的方向更新。
5、总结
ReFT通过将监督微调与强化学习相结合,特别是利用PPO算法,引导模型进行自主探索和学习,从而显著增强了模型在复杂推理和多步骤任务上的能力。它适用于以下场景:
- 有明确正确答案的任务:评估过程可以自动化,有效避免了主观偏见。
- 需要复杂推理的任务:例如数学、逻辑推理、代码生成等。
- 希望增强模型泛化和自主学习能力的场景:模型能够适应新问题,并探索创新的解法。
然而,对于需要大量人类评价、涉及主观判断或无法定义明确奖励机制的任务,ReFT可能并非最优选择。在这些情况下,可能需要考虑其他方法,如基于人类反馈的强化学习(RLHF)或直接偏好优化(DPO)等。
