Skip to content

NLG

:material-circle-edit-outline: 约 401 个字 :material-clock-time-two-outline: 预计阅读时间 1 分钟

机器翻译就是 NLG 的一种

repetition

开放性生成模型会存在输出重复内容的情况,重复次数越多负对数值越低,越可能重复

改变架构无法解决这个问题,LSTM 和 transformers 都有类似情况

改变模型规模也无法解决这个问题

n-gram blocking

基本思路就是避免相同 n 元组重复出现,例如 3-gram blocking,出现了一次 I am happy,那么模型再第二次生成 I am 后,下一次生成会把 happy 概率强制设置为 0

这是直接在解码阶段加以约束,而且太粗暴了

use different training objective

不使用最大似然估计训练,而是使用反似然目标训练,后者训练的模型会因生成已出现的标记而受到惩罚

类似将 n-gram blocking 的思路融入训练阶段

另一种 training objective 是覆盖机制,使用注意力机制来防止重复

decoding

对于开放式文本生成,寻找概率最高的字符串并不合理,因为这不符合人类的模式

image-20250314170947607

top-k sampling

从概率分布中的前 k 个词元进行采样,也不一定是随机采样,可以计算得分

不过这样的话还是无法模拟上图中人类概率很低的地方,人类能很流利地说出比较离谱的词

这或许是可以改进的地方,让机器说话更像人

但是,top-k 也可能选出不合理的词,有些情况下就只有一个词是合理的