Survey of Hallucination in Natural Language Generation
背景及定义自然语言生成任务近年来得到了极大的发展,然而幻觉(hallucination)问题是一个很严重的问题。虽然在具体下游任务中的定义略有变化,但总的来说幻觉是指相对于给定的源文本来说生成的内容是无意义的或者不可靠的。它会降低系统性能,在许多实际应用场景下无法满足用户期望。这篇文章是第一篇关于幻觉问题的综述论文,总结了度量指标、缓解方法和未来方向等内容;并对特定下游任务中幻觉的研究进展进行了介绍。
总体来说,幻觉可以被分类为两种:
内在幻觉(intrinsic hallucination)。这种幻觉现象是指生成的输出与源文本相矛盾。比如给定的文本中包含“A事件发生在2021年”,但是生成内容中包含“A事件发生在2019年”。
外部幻觉(extrinsic hallucination)。这种幻觉现象是指生成的输出无法被源文本验证(无论是支持还是反驳)。比如生成内容中包含“B事件发生在2019年”,但是源文本中根本没有提到过B事件。
导致幻觉现象的因素
数据中的幻觉。导致数据中幻觉的主要因素是source-reference divergence,它可能来自于启发式的数据收集过程, ...
Constitutional AI Harmlessness from AI Feedback
工作贡献与RLHF不同,作者没有使用人类反馈来提升大语言模型的无害性,而是使用自我提升的方法来训练无害的AI助手。整个训练过程中仅有的人类监督是通过一系列规范简短的原则或指令列表提供的,作者将这种方法称为“宪法人工智能”。这种方法在监督学习和强化学习阶段均有使用:
在监督阶段,作者首先从初始模型中采样,然后生成自我批评和修正,最后根据修正后的反应微调原始模型。值得注意的是可以以重复应用模型生成的评论和修改,以逐步降低危害性,作者使用这种方法来解决模型的回避现象。
在RL阶段,作者从微调模型中采样,使用一个模型来评估两个样本中哪个更好,然后借助这个AI偏好数据集训练一个偏好模型。最后使用偏好模型作为奖励信号对RL进行训练,也就是使用了“来自AI反馈的RL”(RLAIF)。
SL和RL阶段都可以利用CoT推理来提高人工智能决策的性能和透明度。
Constitutional AIConstitutional AI的基本步骤如下图所示。上方是监督学习(SL)阶段,负责改进初始模型,下方是RL阶段负责提高模型的性能。需要注意的是批评和 AI 反馈都受到从“宪法”中得出的一小组原则的指导。
...
SAC && DPG论文阅读
对一些概念的理解
评估动作的价值,我们称为Q值:它代表了智能体选择这个动作后,一直到最终状态奖励总和的期望。Q值与环境的状态转移概率有很大关系,这个状态转移概率是不变的。
评估状态的价值,我们称为V值:它代表了智能体在当前状态之下,一直到最终状态奖励总和的期望。V值和我们选择的策略有很大的关系;例如当策略是平均选择两个奖励分别为10和20的动作时,得到的V值为15,但是以40%和60%的概率进行选择,得到的V值就是16。
Q值和V值的关系:一个状态的V值,就是这个状态下的所有动作的Q值,在特定策略下的期望。类似的,Q值也是所有对应状态V值的期望,加上转移到新状态时获得的奖励。公式如下:$$\begin{align}v_\pi(s)&=\sum_{a\in A}\pi(a|s)q_\pi(s,a)\\q_\pi(s,a)&=R^a_s+\gamma\sum_{s^\prime\in S}P^a_{ss^\prime}v_\pi(s^\prime)\\v_\pi(s)&=\sum_{a\in A}\pi(a|s)\left(R^a_ ...
在clash 代理模式下pip安装库时报错的解决办法
昨天在一个python项目中使用venv创建虚拟环境之后正想通过pip安装一些库,当时开启clash作为代理,没有使用TUN mode,而是采用了System Proxy方式,但是pip报错:HTTP error 400 while getting https://………。 但是这个库本身的路径没有问题,我可以通过浏览器访问这个地址下载资源。搜索之后发现问题在clash这里,需要开始specify protocol模式。
设置 Settings | Clash for Windows (lbyczf.com)
操作方式如下图所示:
deep reinforcement learning
强化学习算法分类强化学习算法的分类图如下图所示:
model-based && model-free在马尔可夫决策过程(MDP)中,有五个关键元素:$S,A,P,R,\gamma$,分别代表状态空间,动作空间,状态转移函数,奖励函数以及折扣因子(防止奖励的累加和趋于无穷导致无偏向)。当这些元素全部已知时,模型就是已知的,可以无需和环境交互,直接在模型上进行计算,比如使用value iteration或者policy iteration等方法。但是现实中agent往往无法知道状态转移函数以及奖励函数,这时模型就是未知的,需要通过和环境交互,不断试错,观察环境相关信息并利用反馈的奖励信号来不断学习。如果通过学习习得了状态转移函数以及奖励函数,那么就可以使用前述方法进行求解,这就是model-based方法。如果不对环境进行建模,直接寻找最优策略,那就是model-free方法。
value-based && policy-based基于价值的方法需要对动作价值函数$Q^\pi(s,a)$进行优化,其优点在于采样效率相对较高,值函数估计方差小,不易陷入局部 ...
hexo使用中遇到的问题
hexo让我们可以专注于文章本身,而不是网站的渲染等内容,但是在使用hexo的时候,我在书写latex公式时遇到了许多种错误,因此记录下来:
在公式中不要使用*号,要使用$\times$号,因为在markdown文件中两个*号会让中间的内容变成斜体字符。
在多行公式中我们往往使用\\符号进行换行,但是在markdown文件中两个\符号中的第一个会被识别为转义字符,因此我们如果在公式中需要换行的话需要用\\\\才可以。
由于未知原因,$\mathbf{z}_\tau$这个公式中的下划线会被markdown识别为斜体的标志,因此要使用$\mathbf{z}\_\tau$才行。
PEFT selective method
PEFT selective methodBitFit: Simple Parameter-efficient Fine-tuning for Transformer-based Masked Language-modelsBitFit(BIas-Term FIne-Tuning)是一种稀疏的微调方法,仅对模型的bias以及特定任务的线性分类层进行调整,因此只需要调整不到0.1%的参数。它具有以下贡献:
对于每个微调任务,仅仅改变了很少的参数。
具有task-invariance,对于每个任务都只需要修改同样的参数集合。
更改的参数在整个参数空间中即是孤立的又是局部的。
在中小数据集上可以达到与full fine-tuning一样甚至更好的效果,在大数据集上可以与其他稀疏微调方式媲美,但是达不到full fine-tuning的效果。
BitFit与full fine-tuning、Diff-Pruning、Adapters的对比实验结果如下图所示:
Parameter-Efficient Transfer Learning with Diff PruningDiff pruni ...
Super-NaturalInstructions ScalingDownToScaleUp
SUPER-NATURALINSTRUCTIONS: Generalization via Declarative Instructions on 1600+ NLP Tasks工作贡献作者提出了SUPER-NATURALINSTRUCTIONS数据集,包含了1616个不同的NLP任务(分为76个不同的任务类型,包含55种语言)以及专家手写的Instruction。
作者构建了T$k$-INSTRUCT模型,该模型可以遵循多种多样的In-context Instructions(包含通俗易懂的任务定义以及$k$个任务示例)。
作者将泛化性作为各种缩放参数(例如观察到的任务数量、每个任务的示例数量和模型的大小)的函数进行了进一步的分析。
数据集质量控制
贡献者们在github上提交自己的数据集时,会立即进行自动测试。这个过程会验证提交的文件是否包含了预期的字段并符合我们期望的属性(例如,没有重复实例,输出标签不会严重不平衡等)。
由1-2位专家对数据进行迭代评审,以确保指令的清晰性和充分性。具体来说,评审人员被要求验证指令是否足够清晰且足以让普通人解决示例任务,同时语法流畅且简洁 ...
Finetuned Language Models Are Zero-Shot Learners、Scaling Instruction-Finetuned Language Models
Finetuned Language Models Are Zero-Shot Learners这篇论文第一次提出了instruction tuning的概念,下图展示了instruction tuning的工作流程以及性能对比:
作者把62个NLP数据集分成了12个类,训练时在11个上面微调,在1个上面测试zero-shot效果,这样可以保证模型真的没见过那类任务,看模型是不是真的能理解「指令」,此外所有使用的数据集作者都将其转变成了指令模式的数据:
像Prompt一样,作者也会为每个任务设计10个指令模版,测试时看平均和最好的表现:
值得注意的是,在分类问题上,以往的工作往往选择概率更高的预测作为模型的输出,但是这是不完美的,因为同一个意思的答案可能有多种表述方式,这就会导致概率的降低,因此对于这种问题,作者选择提供限定好的选项。
经过实验得到了以下结果:
参与预训练的任务的种类越多,预训练模型的能力越强。
模型的参数量大于某一界限的时候Instruction Tuning的方法才能起效。
指令的设置对模型的性能有很大的影响。
Scaling Instruct ...
A Survey on In-context Learning
Prompt总结本质上来说,Prompt的本质是一种对任务的指令;是一种对预训练任务的复用;是一种参数有效性学习。(注:关于Prompt的相关总结,笔者强烈建议参考王嘉宁的这篇文章,很详细地总结了Prompt的相关知识和发展过程)。
Prompt本质上是对下游任务的指令,可以作为一种信息增强。Prompt会告诉模型需要做什么任务,输出什么内容,借此释放模型的能力。
Prompt本质上是复用预训练目标——实现基于Prompt的统一范式。预训练中往往以Masked Language Modeling(MLM)以及Autoregressive Language Modeling(ALM)为主,而下游任务则各有不同,因此我们需要降低Pre-training阶段和Fine-tuning阶段语义差距过大的问题才能更好地释放预训练大语言模型的潜力。Prompt便通过将所有下游任务转变为预训练任务的方式实现了这个目标,其分为三种范式————基于生成的范式、基于抽取的范式以及基于推理的范式,ChatGPT就是基于生成的范式的一个代表。
Prompt的本质是参数有效性学习。在一般的计算资源条件下,大 ...