我们追求的泛化,竟是一条死路?

2022-11-24 13:57 441 阅读 ID:535
机器学习算法与自然语言处理
机器学习算法与自然语言处理

从我们刚刚接触统计学习方法开始,想必就一直在接受一个思想:相比符号算法,统计模型最重要的能力之一,即是它的泛化能力。或者,用这两年使用更加广泛的话术,则是统计模型具备想象力,或者思考的能力。炼丹时,我们绝大多数时候去对抗的,也是泛化的反面,即过拟合。

大模型、大数据加持之后,深度学习算法的确也帮助我们解决了很多无法枚举的问题,关于其泛化能力的研究也越来越多,比如翻译模型,强大的泛化能力似乎可以让模型在没有足够的对齐语料时,也能达到不错的效果。

不过,我想提出一个相对反直觉的观点:以我们自己为例,我们都知道,有的时候想象力飘得太远,过于“举一反三”反倒未必是好事儿,或许成长的过程中,相当一部分的时间,我们是在限制自己的想象力。

1.『败也泛化』

以文生图算法为例,例如,我们输入 prompt 为:苹果,西瓜,这个时候文生图算法会给出什么结果呢?

不怎么稳定,对吧?实际上,我分别尝试了中文和英文的模型,结果是类似的(这里给出的是 stableboost 生成的结果,输入是 an apple and a watermelon)。

那我们换一个 prompt 再试一下:熊猫,西瓜,看看是什么结果?

甭管图是不是有点儿诡异,但起码意思上非常稳定了,对吧。我们来试着分析一下,这是怎么回事儿呢?

首先,几乎不可能是样本缺失的问题,我们难以想象,类似于苹果、西瓜这样的常用词,在文生图的庞大语料中会不存在。但是,实际测试中我们会发现,意思相近的提示如果放在一起生成,则很容易试出来奇怪的结果,比如老虎和狮子,榴莲和西瓜等。但如果同时提到的提示在自然语义上不相近,则往往能生成出靠谱的结果,比如前段时间火爆的太空歌剧、猫猫骑士等。

                                                                    ▲a tiger and a lion
                                                             ▲a durian and a watermelon

如果我来猜测,如苹果和西瓜、老虎和狮子这种包含意思相近的主体的输入,大体是语义理解模型将它们看成了一个东西,也就是说,在语言模型的视角下,在物理空间内,两个词是很相近的。我们试着从预训练语言特征上去分析,在文本数据下,两个相近主体的上下文是高度一致的。乂,这正是统计模型的泛化能力所带来的。

也就是说,让预训练语言模型在绝大多数理解任务上叱咤风云的能力,在这里却好像吃了瘪。说白了,还是任务目标对不齐。在文生图里面,通过语义理解,控制生成的主题范围,合理泛化一些修饰词,以及对长 prompt 的语义更好的建模,语言模型可以起到很大的作用,但涉及到精细化控制,则又与其训练目标相冲突。

2.『随机是最牛的泛化』

实际上,我们在训练模型的过程中,一直都是在限制模型的泛化空间。如果我们不去修改模型的参数,那么其得到的结果是完全随机的,即有了无限可能,可以往任何的方向走。我们需要的是,给出条件之后,模型的每一步,都朝着正确的方向行进,在合理的范围内,它可以自由发挥一下,走出一些没有见过的路。当然,不同的任务,所要限制的空间不一样,例如生成任务,则多数需要精细化的控制,而理解任务,则多数追求兼容没见过的东西。

通用层,泛化追求的更宏大的目标则是,将泛化空间刚好限制到一个通用知识体系上,实现小样本/零样本的迁移。比如多语言场景,其追求的就是模型能够学到通用的语言学知识,从而解决小语种语料不全的问题。

我认为,理想很丰满,现实很骨感。我充分认可这一宏愿,且希望能够有进展,但在我有限的知识体系里,只认为这一宏愿极难实现。以跨语种为例,全球最顶尖的语言学家,如无充分交互,也未必能达到此能力。或许相同语系,或同源语言之间,这一任务相对容易,但不同语系之下,则又会掉入泥坑。

特德·姜所写《你一生的故事》中,主角学会外星语言的过程,亦是从最基本的认知开始,一步一步地掌握其语言规律。又比如,有些古楔形文字,多少代的语言学家在研究,至今也未能破解。已部分破解的古文字,多也是有足够的对齐语料,或其本身象形文字的属性,史料记载,发掘地原本的作用(如祭祀、讲学等)相互印证而得。

虽认可这一宏愿,也充分认同,在这一维度上讨论的泛化能力,对知识迁移相当有意义。但恕我直言,在应用领域(非理论研究领域),绝大多数的数据集质量,或任务设计,还不配谈算法层面的泛化能力。例如在主题分类上常见的,类别与某些词语,在自然语义上相关性不强,却在数据中有很强的统计共现,如“鹈鹕”和体育类别,小米、苹果等词。

是的,最终,又会回到这个老生常谈的话题上,数据理解和任务设计。起码,在讨论泛化之前,其任务应当是可行的,其数据也应当是充分、丰富的。如基于句式建模的算法,就没办法去谈通过小样本,抽取特定类别的词或关系;基于主题词建模的算法,则需充分考虑一些特殊词的二义性。

归根到底,哪怕是深度学习模型,目前也仅仅是一个统计工具,所以我们需要在样本上,先把不必要的 bias 给消解掉。至于怎样抽象出所谓“知识”,我认为想清楚目标(想抽出什么样的知识)之后,首先要指导的,仍旧是如何做出来一份符合要求的数据。否则,数据中明明存在的很强的统计显著性了,却要求模型不要建模,那到底这个模型是好,还是坏呢?

3.『后记』

胡乱吐槽这么一篇,实际上还是有一些“正视听”的宏愿的。正如我文中所说,现实中我也经常和身边的人讲,深度学习模型就是一个统计工具,莫要把它看得太过强大。近几个月来,我比较反感对深度学习模型使用所谓“思考”、“想象”、“创作”等词汇,许是我对人的能力太过高估,总是认为统计工具上不应当谈这些似表灵性的词。平常带的一些新人,也会使用类似于“模型能学会”的话术,去逃避严谨的论证工作、繁琐的数据工作。而最终,也是浪费了大量的算力,最终也没有得到可用的东西,反倒又牺牲了很大的运行效率,把性价比压得无比低。

真不知道求个什么劲儿。

免责声明:作者保留权利,不代表本站立场。如想了解更多和作者有关的信息可以查看页面右侧作者信息卡片。
反馈
to-top--btn