百科问答小站 logo
百科问答小站 font logo



如果用机器学习的理论来理解人的行为,会有什么发现? 第1页

  

user avatar   maigo 网友的相关建议: 
      

这道题邀请我就算邀对人啦!

我平时经常用机器学习的理论去思考人类学习和生活中的事情,可以给你举出好多二者相通的例子。

一、过拟合

在机器学习中,一个模型会从训练数据中学习知识,然后应用到测试数据上去。

训练数据中的知识可以分为两部分:

  • 一部分是在训练数据和测试数据上都通用的,这部分是我们希望模型学到的、真正的知识;
  • 另一部分是仅适用于训练数据而不适用于测试数据的,这部分是我们不希望模型学到的、「假」的知识。

第二类知识可能有两种来源:一种是训练数据和测试数据采样于不同的总体;另一种是虽然二者来自于相同的总体,但采样时总是不可避免地有噪声。

如果一个模型没能把真正的知识学到足够的程度,我们就说这个模型是「欠拟合」(underfit)的。相反,如果一个模型把真正的知识学得差不多了,开始学习「假」的知识了,那我们就说模型「过拟合」(overfit)了。一个模型训练得越久,在训练集上的性能应该是越好的,但一旦它开始过拟合了,在测试集上的性能就开始变差了。

现在把「过拟合」的概念迁移到人类学习上去:

  • 比如高考作文,一般学生会把议论文练得很熟,结果高考考了书信、演讲稿,坑倒了一片人。这就是「过拟合」的体现,其原因在于训练数据和测试数据来自不同的总体。
  • 再如 GRE 作文,有些考生的应试策略是背诵一些范文,以期在考场上能够碰上原题(GRE 作文是有题库的)并把范文默写出来,结果考试现场出的是他没背过的题目。这也是「过拟合」,这里,虽然范文的题目和实际的考题都来自相同的总体(题库),但采样的结果不同。考生「背诵范文」的策略就只是在学习「假」知识而忽略了真正的知识。

「过拟合」的概念不仅体现在考试中,也体现在生活上:

  • 一个人来到新的生活环境中,往往会不适应,这就是「过拟合」的体现,因为训练数据(过往的生活经历)与测试数据(新的生活环境)来自不同的总体。
  • 某人坐大巴遭遇一次事故后就再也不敢坐大巴了,这也是「过拟合」的体现。在这里,训练数据(他坐过的大巴)与测试数据(所有的大巴)虽然来自相同的总体,但前者的采样噪声很大,导致此人对大巴安全性的估计产生了偏差。

二、迁移学习

机器学习模型的训练一般是「有监督」的,它的意思就是说训练数据要有标注。比如,我要训练一个识别各种花的模型,那么我就需要很多花的图片,还需要给这些图片做标注,告诉模型这张是梅花,那张是樱花,等等。但是,人工给数据做标注是很费劲的一件事,很多领域的研究开展不了,就是因为没有足够多的带标注的数据。这时候就需要「迁移学习」和「无监督学习」了。

「迁移学习」的意思是,我本来想训练网络来做任务 A,但我先找一个与 A 不同但又相通的任务 B,任务 B 具有足够多的有标注数据。用任务 B 训练的模型,其中就会有一部分含有同样适用于任务 A 的知识。仍以识别各种花为例,虽然我没有足够的带标注的花卉图片,但我有足够的带标注的各种物体(花、树、狗、人等)图片。那我就可以先训练一个识别物体的网络,这个网络的前几层会学习如何从图片中识别点、线、面等基本元素,这种技能对于识别花卉也是有用的。在训练任务 A 时,把这一部分直接挪用过来固定住,仅训练网络的剩余部分,或者用这一部分作为初始化,就可能不需要那么多的训练数据了。训练任务 B 的过程术语叫做「预训练」(pretraining),之后训练任务 A 的过程术语叫做「微调」(finetuning)。

迁移学习在人类的学习过程中也是很常见的。比如:

  • 我想学开手动挡的车,但周围会开手动挡的车的朋友很少、很忙,会开自动挡的车的朋友却很多、很闲。那么,我就可以先学开自动挡的车,学会了之后,只要跟开手动挡的车的朋友稍微请教一下,就能学会开手动挡了。这是因为,开自动挡的车用到的技能,很多也适用于手动挡。
  • 再如,我想学西班牙语,但找不到足够的参考资料,可是英语的参考资料却很多。那么,我就可以先学英语,之后再学西班牙语就容易得多了。这是因为英语在发音、词汇、语法等很多方面的知识也都适用于西班牙语。

当然,迁移学习并不总是有效的。有些时候,任务 B 的知识反而会对任务 A 造成干扰(比如开手动挡时总忘记换挡、说西班牙语有英语口音),这在心理学上叫做「负迁移」—— 你看,心理学里也用「迁移」这个词呢!

「负迁移」其实也可以理解成一种「过拟合」:把「预训练」和「微调」的整体过程看作训练,则训练数据中包括任务 B 的数据,而测试数据则只包括任务 A 的数据。训练数据与测试数据来自不同的总体,就可能造成过拟合。

三、无监督学习

仍然考虑上一节的场景:我想做任务 A 但训练数据不够,但我又找不到合适的任务 B。如果我有足够多的无标注数据,就可以通过「自己出题给自己做」的方法,用这些无标注数据训练一个模型出来,其中也会含有对任务 A 有用的知识。对于图像来说,常见的自己给自己出的题包括:

  • 把图像压缩后再复原(术语叫做自编码);
  • 从图像中抠去一块儿,根据剩下的部分把抠掉的部分补全。

类比到人类的学习中,我想到了我学英语、考英语的例子。我学英语的时候并没有做多少完形填空、阅读理解之类的试题,但到了考试的时候往往一点儿都不费劲。这归功于我平时大量的泛读。泛读其实就是一种无监督学习 —— 我读的文章就是大量的、无标注的数据。当然,我利用这些数据做的任务,并不是「自编码」(缩写、扩写)或者「补全」(完形填空),而是训练出了一种「语感」。在此基础上,我只要做少量的题熟悉一下考试的题型,就可以拿高分了。

四、语言模型

上一节说的「语感」到底是什么呢?其实就是语言模型。用术语来说,语言模型就是要衡量每一句话在一门语言中出现的概率。如果一句话符合语法、常用,则概率就高;如果一句话狗屁不通,则概率就低。这个概率一般会用链式法则分解成很多项的乘积,其中每一项代表了「在已知半句话的情况下,下一个词的概率分布」。用通俗的话来说,语言模型在整体上做的事情是「判断一句话有多么像话」,而这种判断,是通过在局部上「根据半句话猜下一个词」来实现的,越好猜就说明一句话越像话。

怎么评价一个语言模型的好坏呢?一般是拿一段已知很像话的话,用语言模型来求它的概率,这个概率越高,语言模型就越好。假设这一段话有 n 个词,把整段话的总概率开 n 次方根再取倒数,结果叫做这个语言模型在这段话上的「迷惑度」(perplexity)。其通俗理解,就是语言模型在根据半句话猜测每一个词的时候,平均情况下它觉得有几种选择。迷惑度越低,表示语言模型猜起词来越不费力,语言模型也就越好。

语言模型可以用在数据压缩上。迷惑度的对数(以 2 为底),就是存储一个词所需的比特数,语言模型越好,压缩后所占的存储空间就越小。语言模型还用在语音识别中。语音识别的结果,一方面发音需要与输入语音相似,另一方面本身也要「像话」—— 这两方面就分别是由「声学模型」和「语言模型」来衡量的。

我在通过歌词学习日语的过程中,就明显地体会到了我的语言模型变得越来越好的过程。这体现在两个方面:

  • 记忆歌词越来越省劲了。最初的时候,我需要一个假名一个假名地记忆;到后来,则可以一个词一个词地记忆;再到后来,有时知道前半句就能八九不离十地脑补出后半句了。语言模型越好,我就可以对歌词进行越大程度的压缩,记忆负担也就越轻。
  • 听写歌词也越来越容易了。在学习的初期,语言模型还没有训练好的时候,听写只能依靠声学模型来进行。此时容易发生两种情况:一是有的音会犹豫,不确定到底唱的是什么;二是有些音很确定,但听写出的结果就是狗屁不通。学会了日语之后,有了语言模型的帮助,在前一种情况下就可以根据语言模型消除不确定性,在后一种情况下也可以很确定地说这里歌手没唱清楚,歌词应该是怎样怎样的。

五、判别式模型与生成式模型

机器学习模型有两个重要类别:判别式模型与生成式模型。这两种模型的区别,是很多初学者会遇到的一个坎儿。

判别式模型的意思是,给出一条数据,模型要为数据给出一个类别。一般来说,数据是比较复杂的,比如一句话、一张图这样的;类别则比较简单,一般就是「是」或「否」,或者有限的几个类别。用 X 表示数据,Y 表示类别,则判别式模型建模的就是 P(Y|X)。至于 X 本身的分布是怎样的,判别式模型并不关心。

而生成式模型的意思是,模型要具有凭空生成数据和类别的能力,即它要建模 P(X,Y)。这通常是通过建模 P(Y) 和 P(X|Y) 这两步来实现的。P(Y) 就是一个简单的二项或多项分布,没什么意思,所以生成式模型的重点在于 P(X|Y),即建模每个类别下数据的分布。

对比判别式模型和生成式模型,可以发现 P(Y|X) 是「从复杂到简单」,而 P(X|Y) 是「从简单到复杂」。这说明生成式模型里含有的「知识」比判别式模型要多。如果有了一个生成式模型,可以根据贝叶斯公式 得到一个判别式模型;反过来,仅有一个判别式模型,是推不出一个生成式模型的。

这在日常生活中有什么体现呢?比如,你有 100 个朋友,当你看到一张脸时,你能够认出这是谁;但让你凭记忆描述出一个朋友的长相,你可能就有很多细节记不清楚。这是因为,辨认出一个朋友并不一定需要记住他/她长相的所有方面 —— 比如,左脸上有颗痣可能就已经能锁定一个朋友了,你并不需要记住他/她是什么发型、是单眼皮还是双眼皮、戴不戴眼镜等等。一般来讲,我们对朋友们长相的记忆足以构成一个判别式模型,但不足以构成一个生成式模型。在心理学上,上面的判别叫做「再认」,而生成叫做「回忆」,回忆是比再认更困难的任务。

在知乎上,我们经常看到一句话,叫做「评价冰箱好不好,不用自己会制冷」。这里,「评价冰箱好不好」就是判别式模型的任务,而「自己会制冷」则是生成式模型的任务。这句话在机器学习中就很有道理,因为如果目的只是做判别的话,并不需要生成式模型那么多的知识。

判别式模型有一个「缺陷」,就是当输入数据偏离真实分布时,模型不会察觉到异常,而是会像对待正常数据一样输出一个类别。在这种情况下,输出的类别很可能是无意义的。曾经有一则「绿茶验尿」的新闻闹得沸沸扬扬。实际上,这就属于输入数据(茶)偏离真实分布(尿)的情况,而检测尿的仪器只是一个判别式模型,它无从知道输入数据有问题,在这种情况下,它无论给出怎样的输出,都是无意义的。




  

相关话题

  如何评价Facebook AI提出的ResMLP,对比Google的MLP-Mixer? 
  机器学习中使用正则化来防止过拟合是什么原理? 
  Python 如何画出漂亮的地图? 
  如何看待「机器学习不需要数学,很多算法封装好了,调个包就行」这种说法? 
  消融实验是什么? 
  多因子模型是否真的可以带来阿尔法(alpha)? 
  如何评价谷歌提出的 Pix2Seq:将目标检测看成语言建模,效果超过 DETR? 
  2021年深度学习哪些方向比较新颖,处于上升期或者朝阳阶段,没那么饱和,比较有研究潜力? 
  为什么现在的CNN模型都是在GoogleNet、VGGNet或者AlexNet上调整的? 
  视觉Transformer如何优雅地避开位置编码? 

前一个讨论
X趋向于0的sinX除以X极限为什么等于1啊?
下一个讨论
这个高阶导数怎么写?





© 2024-12-26 - tinynew.org. All Rights Reserved.
© 2024-12-26 - tinynew.org. 保留所有权利