NLG的评估,我感觉最终还是要回归到“用户满意度”。不管用什么指标,最终目的都是为了生成更符合用户需求的内容。所以,我觉得未来的评估可能会更多地引入用户反馈,例如通过用户点击率、停留时间、评论等指标来衡量生成质量。当然,如何获取有效的用户反馈,以及如何将用户反馈融入到评估体系中,还有很多挑战需要克服。
标签词选择确实是个学问!为了尽可能减少偏差,我们可以尝试以下思路:
1. 语义中立原则:尽量选择语义色彩不强烈的词语作为标签,避免词语本身带有情感倾向。
2. 多样性原则:使用多个同义词或近义词作为标签,增加模型的泛化能力。
3. 数据驱动原则:分析训练数据中各个类别下常见的用词,选择与这些用词相关性较低的词语作为标签。
4. 实验验证原则:通过A/B测试等方法,比较不同标签词组合对模型效果的影响,选择效果最佳的组合。
5. 参考用户习惯:调研用户常用表达情感的词汇,选择与用户语境更贴近的标签词。
我觉得还可以考虑引入外部知识库来辅助判断。例如,利用WordNet等知识库,判断停用词在特定语境下的实际含义,避免模型仅仅基于停用词的表面形式进行推理。当然,这个方法的实现上可能需要更多工程上的考量。
我觉得可以考虑使用短语或者句子作为标签,而不仅仅是单词。例如,不用“正面”、“负面”,而是用“用户表达了积极的情绪”、“用户表达了消极的情绪”。这样可以更清晰地表达标签的含义,减少歧义。不过需要注意的是,使用长文本作为标签可能会增加模型的训练难度,需要权衡一下。
针对“预训练-微调”范式中模型学习到的虚假停用词关系,我认为可以尝试以下方法:
1. 数据增强:通过加入包含更多样化停用词搭配的数据,让模型难以简单地通过停用词进行判断。
2. 对抗训练:设计对抗样本,专门迷惑模型使其关注停用词,然后通过对抗训练来纠正这种倾向。
3. 特征选择/权重调整:在特征工程阶段,可以考虑降低停用词的权重,或者直接将其排除在特征集合之外。也可以研究下当前有没有比较好的停用词表生成或者筛选算法。
4. 正则化方法:在模型训练过程中,引入针对停用词的正则化项,惩罚模型过度依赖停用词的行为。
5. 模型结构调整:尝试使用对词序不那么敏感的模型结构,例如Transformer-XL或者Longformer,或者研究一下有没有什么方法可以显示的告诉模型,停用词不重要。
大家觉得这些思路怎么样?
对比评估这种方法确实很有意思,它相对于传统指标,优势在于:
1. 更符合人类直觉:人类在评价生成质量时,往往是通过比较来进行判断的。对比评估模拟了这种比较的过程,因此结果可能更贴近人类的 subjective judgment。
2. 更好地捕捉细微差异:传统指标往往只能衡量词级别的相似度,而对比评估可以捕捉到更细微的语义和风格差异。
3. 无需人工标注完美答案:传统指标需要依赖人工标注的参考答案,而对比评估只需要判断两个生成结果的优劣,降低了标注成本。
但它的不足也很明显:
1. 计算复杂度较高:需要进行大量的成对比较,计算成本较高。
2. 结果解释性较差:只能得到相对 ranking,而无法给出具体的质量评分。
3. 容易受到LLM自身偏差的影响:如果LLM在评估过程中存在偏见,可能会影响最终的 ranking 结果。
至于未来NLG的评估方向,我认为可能会朝着以下几个方向发展:
1. 更注重语义理解和推理能力:不仅仅关注表面上的词汇匹配,更要关注生成结果是否符合逻辑、是否能够正确推理。
2. 更注重生成结果的多样性和创造性:鼓励模型生成更具创新性的内容,而不仅仅是模仿参考答案。
3. 更注重用户体验和实际应用效果:将评估与实际应用场景相结合,关注生成结果是否能够满足用户的需求。
我有一个脑洞大开的想法:能不能用表情符号作为标签?比如
代表正面,
代表负面。表情符号本身就带有情感色彩,而且跨文化通用性比较强。当然,这只是一个玩笑,实际应用中可能存在很多问题(比如表情符号的歧义、文化差异等)。
我觉得对比评估可以看作是一种众评的方式,让多个LLM参与评估,相当于集思广益,可以减少单一评估者的主观偏差。但是,这种方法也存在“搭便车”的风险,某些LLM可能会偷懒,直接抄袭其他LLM的答案。所以,如何设计合理的激励机制,让每个LLM都认真参与评估,是一个需要考虑的问题。
抖个机灵,不如直接训练一个“反停用词”模型,专门识别哪些句子是靠停用词来判断的,然后把这些句子扔掉(手动狗头)。认真说,如果停用词真的这么重要,那我们是不是可以重新审视一下停用词表的构建方法了?可能现在的停用词表过于笼统,没有考虑到语境的差异。