心法利器[122] | 效果提升的根本来源讨论

学术   科技   2024-11-24 21:00  

心法利器


本栏目主要和大家一起讨论近期自己学习的心得和体会。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有

2023年新的文章合集已经发布,获取方式看这里:又添十万字-CS的陋室2023年文章合集来袭,更有历史文章合集,欢迎下载。


往期回顾

最近看到的一篇王喆老师文章启发(https://www.zhihu.com/question/3320585936/answer/36857602893),要让某个业务场景获得效果收益,即我经常提到的“效果调优”,往往是两个核心原因:

  • 信息的增加。
  • 信息利用能力的增强。

这无论是在王喆老师提到的推荐系统场景,还是NLP、搜索、对话之类的各种场景,其实都是共通的,今天想和大家讨论的便是这两点,同时也深入讲解这两点在现实应用中的表现以及应用,我自己的感觉是,对这两点有深入参考后,日常的效果调优工作将会更有针对性。

懒人目录:

  • 信息增加的解释
  • 信息利用能力增强的解释
  • 论文方案无效的重要原因
  • 问题的挖掘和针对性处理

信息增加的解释

在很久之前,我曾经写过一篇这个文章(心法利器[45] | 模型需要的信息提供够了吗),先来看这段摘录:

人如此,模型亦是如此,模型在做各种预测的时候,同样需要通过信息才能做出不同的决策,如果提供不够,则很难得到准确的效果了,用人话,其实就是“你都没告诉过我,我咋知道怎么做?”,道理显而易见。

正所谓“巧妇难为无米之炊”,信息不足则无法支持做出正确的决策,这点对人还是对模型都是一样的。

  • 对推荐系统而言,用户的行为反馈能很大程度地表征用户的偏好,因此借助用户的历史行为能有效提升推荐质量,体现在数据上就是点击率、停留时间之类的提升。
  • 对NLP而言,足量的文本能让模型见识到更多的说法,从而在文本分类、实体抽取、对话等场景的效果有提升,少样本问题之所以难,很大程度也是因为样本不足而产生的信息不足的原因。

说个让人印象深刻的case,能很大程度体现信息增加的含义。


搜索引擎之所以认识“哈哈哈哈哈”,并不是因为内部有多强的模型,而是因为数据库中有对这个词的解释,系统学过这个信息。人也是如此,当一个人不关注综艺,不关注这里的明星,大概率也无法想象这个“哈哈哈哈哈”是一部综艺吧。

再举一个例子,从纯大模型到RAG,本质上也是奔着信息增加去的,大模型在训练过程中,因为很多原因,无法接触到所有信息,例如某些公司的制度,大模型之后出现的新闻或者新事物,此时,外挂知识库构造RAG,就是一种对系统的信息增加。

这点非常容易被实践经验人所忽略,主要是因为目前绝大部分的论文,更多是从信息利用能力的角度来实现效果的提升,模型结构、训练策略,甚至是特征工程,包括一些few shot learning的研究,大都是基于现有信息,通过提升信息的整合能力来提升效果,而非增加信息,但是在现实中,由于数据获取困难等原因,信息不足往往才是效果出现问题的关键原因。

信息利用能力的增强

书接上文,信息利用能力的增强应该是大家接触的比较多的内容,通过特征工程、模型结构升级、训练策略调整等方式,能提升最终的效果。

这个例子就很好举了,例如向量表征用于向量召回这个事。

早年最简单的就是用word2vec的均值来做,后续的升级,一方面是升级内部模型,后续有bert甚至是大模型作为内部基座,另一方面升级训练策略,引入对比学习,甚至是一些生成式的策略,让向量表征无论是本身的强度还是灵活性都有很大的提升,现在比较流行的bge-m3之类的模型,不仅效果不错,通过prompt的方式还能让表征的方向出现灵活变化,这种,都算是通过增强信息利用能力达到更好的效果。

在这里,引入对比学习之所以能够让这种搜索效果提升,是因为对比学习的训练策略强调了,让意义相近的拉得更近而意义不同的句子拉的更远,在这种训练策略下,模型就能有效识别到意义相近和不同的概念,从而处理地更加顺手,如果只是使用mlm任务后的cls向量,或者是w2v均值的向量,可能更多只局限在字面的信息了。

方案无效的重要原因

王喆老师的文章(https://www.zhihu.com/question/3320585936/answer/36857602893)是在回答“为什么最近几年,没人在推荐系统里去玩 GNN 模型,GNN 是凉透了吗?”问题,我想在这里提供一个角度——新方案是否有切实解决真实存在、比较重要、比较常见的问题,这点也是为什么很多人在利用论文方案解决实际问题发现没用的常见原因。

现在所谓的图谱、GNN之类的信息,并没有在大模型、甚至bert时代的实际应用中提供更多收益,很大程度是因为,上面两个提供的收益的根本来源下,都没有发挥作用。

  • 首先,从信息增加的角度,常规的数据库、训练集,就很轻松地提供信息来源,并不刚需图谱这种进一步处理,粗暴地说,喂几条样本就能让模型学会类似的知识。

  • 其次,图谱虽然能够提供更为严谨的推理知识,多跳之类的,但这里要问一个问题——“你的系统有多需要这种推理知识”,去看看样本,看看bad case,我在很多文章里都有聊到case分析,就是看样本,看数据能让我们切实了解到真实、重要、常见的问题,如果在样本里并没有体现出对这类型知识的需求,或者是体现出这种需求但是现有模型已经解决的比较好的时候,GNN自然就没有用了。

再次强调,抽象一下:

当数据里没有体现对该信息的需求,或者对该信息的处理已经比较好的时候,我们所谓的信息增加或者信息利用能力的提升,对应的调优方案就没有用了。

此时就非常好理解了,没感冒的时候吃感冒药,不会让身体变得健康,相反,还有变差的风险。

问题的挖掘和针对性处理

这时候就引出了调优思路中的重要一条——问题挖掘和针对性处理。我们想要让效果提升,在解决之前,首先要进行问题的挖掘,然后是针对性处理,这样即可很大程度保证药到病除。

信息缺失问题的鉴别和处理

信息缺失问题在bad case分析中能轻易发现,某些比较明显、简单的case都会出错,在强大的模型下,基本就是样本误导或者样本缺失导致的,此时直接去看训练集,是否存在包含该词汇、说法的样本,不存在或者是答案错误,都会导致最终模型预测有问题。

此时,解决方案就比较简单了,总结一句话就是——设法把缺失的信息加入到这个系统中,包括但不限于下面的方案:

  • 给模型增加对应缺失的训练样本,然后继续训练。
  • 通过RAG、prompt、in-context learning之类的方式,提供更多信息给模型。
  • 抽象出特征,通过特征的方式加入模型。

总之,就是“设法把缺失的信息加入到这个系统中”,加入的方式很多,具体可以结合确实的信息类型、模型结构之类的来进行选择。

这个操作往往看起来都会比较low,但是因为现实场景下,包括项目的早期,我们处理数据的时间精力不足,信息缺失很高频出现,因此这条路走下来提升的幅度会很高。

信息利用能力缺失的鉴别和处理

信息利用能力的缺失在NLP内可能更难被体现出来,反正样本在那,但是模型就是学不会,测试集该错还是错,此时就很大程度就是因为现有的模型没法利用好现在的信息来达成我们的目的了,此时我们可以结合现有的方案储备来看看可能是什么问题,举几个例子。

  • GNN系列的方案适配于结构化知识的推理,那目前的重点问题是不是模型的长线推理能力不足,如果是,则可以考虑尝试一下。
  • 对比学习适合提升相似语义的聚合度而拉开不同语义句子的空间距离,我们可以看看现在的bad case是否存在这个问题。这个明显的现象就是,例如RAG场景,知识库明明有内容,但是没搜出来,可以试试这类型的方案来优化现有的模型。
  • 某些预测可能对一些比值、差值特征比较敏感,但是现有特征工程只有原始特征,那我们可以考虑手动计算这些比值、差值特征,然后通过特征的方式加入到模型内。

这里有两个关键点:

  • 个人知识储备。在自己的知识储备足够多后,就能应对更多问题,能快速找到问题对症下药。
  • 分析能力。对数据暴露出的现象有足够的敏感度,能抽象出高频、重点问题,找得到问题,就不容易后拔剑四顾心茫然的尴尬。

无法解释的问题

在项目的中后期,我们往往真不好找到问题的根源,总之错了就是错了,这就说明该场景下到达了深水区,可能还有很多潜在的信息或者知识我们没有探索到,此时要从多个角度去探索和思考,包括一些偶然、玄学、不可获取信息的角度。例如:

  • 点击率上不去,是用户薛定谔的偏好,毕竟我们很难每时每刻地感知到用户的偏好,例如某一天吵架了,客户只是想翻,没想点击。
  • 用户偶然间想起某些事,所以突然跳出来提问,例如找商城客服闲聊。
  • 语音助手误唤醒,录入了无关文本。

此时,这些问题就不是我们想解决就解决的掉的,只能通过进一步的学习、研究,找到更多的解决方案来支持。

小结

本文旨在让大家更加深入地理解效果调优下提升的收益来源,通过对这块的理解,应该能很大程度提升效果优化的能力,能让我们在问题定位和解决方案的制定上更加有针对性和效率。


CS的陋室
陋室,用知识装点。房主主要谈论与数学和计算机相关的知识,不定时推送和个人学习进度相关的知识,大数据时代,数学和计算机一个不能拉下。来一起学习和讨论吧!
 最新文章