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

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

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




  

相关话题

  如何在大脑超负荷时能保持高效率? 
  如何看待FAIR提出的8-bit optimizer:效果和32-bit optimizer相当? 
  如何可以通过自学来深入学习机器学习? 
  机器学习中的PR曲线一定会过(1,0)这个点吗? 
  普通FPGA工程师怎样向人工智能靠拢? 
  在中小学阶段设置人工智能相关课程对于培养人工智能人才具有哪些意义?如何推进会比较有效? 
  常用的机器学习算法比较? 
  生成对抗网络的毕设怎么上手? 
  Resnet到底在解决一个什么问题呢? 
  为什么有的人很聪明,大脑结构有什么不一样吗? 

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





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