查看原文
其他

如何挑到一个可口的三明治?AI是这么做的

贾内尔·沙内 科学大院 2023-03-13


在本文中,我们用人工智能这个名词来表示“机器学习程序”。大家都知道,机器学习程序是通过试错来解决问题的。但是这个过程具体是怎样的呢?整个过程中,完全没有人类告诉它语言的工作原理或者笑话到底是什么,在这种情况下,一个程序是如何从蹦出一堆乱无头绪的字母组合,一步步进化成可以写出具有可读性的笑话的呢?


现在,我们将讨论一些最为常见的机器学习方法,一窥它们学习和进步的秘密。


神经网络


现今,当人们提及人工智能或者深度学习时,他们实际上是在说人工神经网络。(人工神经网络有时也被称作控制论,或者联结主义。)


构建人工神经网络的方法有许多种,每一种都各有其用处。有的专门识别图像,有的专门处理语言,有的专门生成音乐,有的专门提高蟑螂农场的生产力 ,有的专门写作令人费解的笑话。不过总体而言,它们都是在模仿大脑运作的方式。这就是为什么它们被称为人工神经网络,而它们的近亲——生物神经网络,才是最原始的、更复杂的模型。事实上,当程序员在20 世纪50 年代编写第一个人工神经网络程序时,就是为了检验一些关于大脑如何运作的理论是否正确。


换句话说,人工神经网络就是人类大脑的仿制品。


人工神经网络是由一些简单的模块拼接而成的,每一个模块都可以进行简单的数学运算。这些模块通常被称作细胞或者神经元, 类似于人脑中神经元的说法。神经网络的威力正是来自这些细胞相互连接的方式。


目前,和实际的人脑相比,人工神经网络并没有那么强大。我用来为本书生成文本的人工神经网络的神经元数量,实际上和一条蠕虫差不多。



和人类不同,神经网络至少可以把全部的、和一条蠕虫差不多的脑力贡献给手头的工作(如果我没有不慎用无关的数据来分散其注意力的话)。不过,你是怎么用一些相互连接的神经元来解决问题的呢?


神奇的三明治洞



假设我们在地上发现了一个神奇的三明治洞,这个洞每过几秒钟就会随机掷出一个三明治。(好的,我承认,这是一个很假的假设。)问题在于,从洞口掷出的三明治种类非常随机。配料包括果酱、冰块甚至是旧袜子。如果我们想要找到好吃的三明治,我们就必须得整天坐在洞口把它们分拣出来。


但这样做实在太枯燥乏味了,好的三明治可谓千里挑一,十分罕见。但是,这些好的三明治真的美味绝伦,所以我们想把这项任务自动化。



为了节省一些时间和精力,我们想要构建一个人工神经网络来观察每一个三明治,判断它是否可口。


我们先暂时忽略如何识别三明治的原料的问题,这已经是一个很难的问题了。同时,我们也先跳过如何分拣三明治的问题,这是一个极其困难的问题,识别和预估三明治的移动轨迹已经不易,教会一个机械手既能抓取很薄的纸机油三明治,又能抓住很厚的保龄球芥末三明治,更是难上加难。我们假设我们的人工神经网络事先知道每个三明治里面是什么,同时我们也不用担心如何移动这些三明治,我们只需要判断这个三明治是否适合人类食用,要不要直接扔到回收槽里。(所以我们也会继续忽略回收槽如何运行的问题,我们暂且把回收槽当成另一个神奇的洞吧!)


这样的好处是把我们的目标归结为了一个简单而具体的任务,这样的转化通常有助于得到一个用机器学习算法完成自动化的好方案。现在,我们有一些输入变量(三明治中不同原料的名字),我们想要构建一个算法来计算一个输出变量,一个反映三明治可口程度的评分。我们可以画一个简单的“黑箱”来表示我们的算法,它看起来如下:



我们希望这个可口程度的评分由三明治中原料的不同组合来决定。所以,如果一个三明治中含有蛋壳和泥巴,我们的黑箱应该做出下面的评分:



但是三明治中如果含有鸡肉和奶酪,应该得到如下评分:



让我们来看一看黑箱中的一切是如何运转的吧!


首先,我们做一些简化,把所有的输入变量(三明治中所有不同的原料)和唯一的输出变量直接连接在一起。为了得到我们的“可口度”评分,我们加入每一种原料对可口度的贡献值。显而易见,每一种原料的贡献值应当有所不同——奶酪的出现应该会使得三明治更加美味,而泥巴会让三明治变得难以下咽。所以,每一种原料会获得一个不同的权重。那些好的原料的权重为1,我们想要避免的黑暗原料的权重为0。我们的人工神经网络看起来大概是这样的:



让我们用一些三明治样本来检验下这个人工神经网络是不是符合我们的预期。假设这个样本三明治中含有泥巴和蛋壳,因为它们的贡献都是0,所以最终的可口度是0 + 0 = 0。



但是一个花生酱加棉花糖的三明治会得到的“可口度”评分是1+1=2。(恭喜!你凑巧得到了新英格兰美食棉花糖花生酱三明治!)



通过这样配置人工神经网络,我们成功地避免了那些只含有蛋壳、泥巴及其他黑暗原料的三明治。然而,这个简单的单层神经网络并不足以识别那些本身很美味,但和其他原料混合在一起时会变得非常糟糕的食材。


我们的人工神经网络会判定鸡肉加棉花糖的三明治是美味可口的,就像棉花糖花生酱三明治一样可口。同时,它也很容易被接下来我们要介绍的这种问题困扰,我们称之为大三明治故障:如果三明治中含有足够多的美味食材,那么即便里面含有不可食用的木屑,这个三明治依然会被判定为美味的。


为了得到一个更好的神经网络,我们需要添加另一层神经元:



这就是我们现在的神经网络。每一个原料都和一层新的神经元相连接,同时每一个神经元都与输出变量相连接。这一层新的神经元被称为隐含层,因为用户只能看到输入和输出变量,所以这一层相当于是“隐藏”的。和往常一样,每个连接都有各自的权重,所以也会以不同的方式影响最终的“可口度”。到目前为止,这还不是深度学习(那需要更多的隐含层),不过我们已经在路上了!


使用这个神经网络,我们把糟糕的原料和我们称为惩罚器的神经元相连接,从而最终避开它们。我们将赋予这个神经元非常大的负权重(比如说–100)并把一切糟糕的输入与之相连,连接的权重也设为10。让我们把第一个神经元变成惩罚器,并把蛋壳和泥巴与之相连。它看起来就会是下面这样:



现在,如果一个三明治中含有蛋壳或泥巴,无论其他的神经元发生了什么,我们的神经网络都大概率会认为它很糟糕。使用惩罚器神经元,我们可以解决大三明治故障。


我们可以用剩下的神经元做其他事情——像是最终实现一个知道哪些原料组合会好吃的神经网络。让我们用第二个神经元来识别鸡肉奶酪三明治吧!我们会称之为美味三明治神经元。我们把鸡肉和奶酪以权重1 与之连接(我们会对火腿、火鸡和蛋黄酱做同样的事情),并将其他的东西以权重0 与之相连。然后,把这个神经元与输出用适度的权重1 相连。美味三明治神经元是很好,但如果我们对它表现得过于兴奋以至于赋给它过高的权重,我们就可能会面临削弱惩罚器神经元的危险。让我们看看这个神经元做了什么:



鸡肉奶酪三明治会让这个神经元愉快地向最终输出贡献1 + 1 = 2。但在鸡肉奶酪三明治中加入棉花糖不会有任何坏处,即便客观上它的口感可能不那么好。为了解决这个问题,我们需要其他的神经元来专门寻找并惩罚这种不合适的搭配。


比如,第三个神经元可能会寻找鸡肉和棉花糖的组合(我们姑且称之为棉花糖鸡肉),并对任何含有这种组合的三明治进行严厉惩罚。它连起来之后是这个样子:



对于任何胆敢同时包含鸡肉和棉花糖的三明治,第三个神经元将返回毁灭性的(10 + 10)×–100 = –2 000。它表现得像一个专业惩罚器,是专门为了惩罚鸡肉和棉花糖这一组合而设计的。请留意,我在这里增加了一个叫作激活函数的额外模块。因为如果没有它,这个神经元将会惩罚任何含有鸡肉或棉花糖的三明治。通过把阈值设定在15,激活函数将会在仅有鸡肉(10 分)或仅有棉花糖(10 分)时阻止神经元——神经元将返回中性的0。但是,如果两种原料同时出现(10 + 10 = 20 分),将超过15 分的阈值,于是神经元被激活。咚!被激活的神经元开始惩罚任何超过其阈值的原料组合。



把所有的神经元用类似的复杂方式相互连接后,我们就得到了一个可以分拣魔法洞中最棒的三明治的神经网络!



所以,现在我们知道了一个配置完善的三明治分拣神经网络应该是什么样的。但是,使用机器学习的关键优势就在于我们不必手动配置神经网络中的这些参数。相反,神经网络应该能够把自己配置得可以很好地完成三明治的分拣工作。这个训练的过程到底是如何运行的呢?


让我们先回到一个简单的两层神经网络。在训练开始的时候, 它完全是一张白纸,每一种原料的权重都是随机赋值的。所以,很可能它在评估三明治方面做得还很差劲。



我们需要用一些现实世界中的数据来训练它,一些正确评价三明治的样本,评价来自真实的人。当神经网络给三明治打分时,它需要把自己的评分和三明治评审团给出的结果相比较。请注意:永远不要主动去测试这些处于起步阶段的机器学习算法。


关于我们的例子,让我们先回到非常简单的神经网络。既然我们想从头开始训练它,我们将忽略所有关于权重应该如何设置的先验信息,完全从随机赋值的权重开始。它们是这样的:



它讨厌奶酪。它爱棉花糖。它也喜欢泥巴。而且它对蛋壳比较中性,可以加也可以不加。


这个神经网络开始考虑第一个从三明治魔洞中掷出的三明治, 然后用它(糟糕的)判断来打分。这是一个棉花糖、蛋壳和泥巴组成的三明治,所以它得分为10 + 0 + 2 = 12。哇!这是一个非常非常好的分数!


然后,三明治交到人类评审团手中。无情的现实是,这个三明治并不受欢迎。


现在到了神经网络有机会自我提升的环节了:它开始思考如果它的权重稍有不同会发生什么。面对这个三明治,它并不知道问题出在哪里。是因为它对于棉花糖太兴奋了吗?难道蛋壳并不是中性的,而是有点儿烂?它看不出来。但如果它可以研究一批10 个不同的三明治,研究它自己对它们给出的评分以及人类评审团的打分, 它就能发现,如果一般来说它给泥巴的权重低一点儿,降低所有含有泥巴的三明治的评分,那么它的评分就可以和人类评审团更贴合。



有了最新调整过的权重,是时候开始下一次迭代了。这个神经网络给另一批三明治评分,把评分和人类评审团的结果相比较,然后再次调整它的权重。在上千次迭代和研究了上万个三明治后,人类评审团已经对此感到十分厌倦,但神经网络却做得越来越好。



进步的过程中会有非常多的陷阱。就像我上面提到的,这个简单的神经网络只知道特定的原料是好是坏,而且无法想出细致的分析各种组合的办法。为此,它需要更加复杂的结构,拥有更多神经元的隐含层。它需要演化出惩罚器神经元和美味三明治神经元。



另一个我们必须要警惕的陷阱是类别不平衡。三明治魔洞中每产生一千个三明治,只有很少一部分是美味的。如果神经网络能意识到这一点,它就可以忽略一切,给所有三明治都打很低的分,就能实现99.9% 的准确率,而不必辛辛苦苦搞清楚每种原料对应的合理权重,或是它们之间应该如何搭配。



为了解决类别不平衡的问题,我们需要预过滤训练集中的三明治,保证好吃的和糟糕的三明治所占的比例大致相同。即便是这样,这个神经网络也许仍然无法学到那些很少出现但是在特定情况下会非常美味的食材。棉花糖可能就是这种食材的一个例子——和大多数常见的三明治原料在一起都会很糟糕,但在棉花糖花生酱三明治中就非常美味(也许和巧克力和香蕉放在一起时也很好吃)。如果神经网络在训练中没有看到棉花糖花生酱三明治,或者很少见到它们,它可能就会决定用拒绝所有含有棉花糖的三明治的办法来达到较好的正确率。


本期我们送这本书


互动问题:亲爱的粉丝们,在你了解的领域里,人工智能还不能做什么?欢迎在留言区分享。


截止到7月14日中午12点,大院er会选择3名回答了互动问题的小伙伴,送上这本科普书籍:《你看起来好像……我爱你》。本期文章正是节选自本书(本文对原书内容做了少量编辑)。



这是一本写给普通人了解AI的趣味科普,它还有超级可爱的漫画!这本书“非常易读、有料,而且妙趣横生、令人捧腹”,带领普通人走进人工智能那个奇妙古怪又不可思议的世界,是一场幽默可爱的导览。


作者具有相关学术背景,常年进行科学写作。本书的主要内容是人工智能可以做什么、不能做什么,以及它为什么已经影响了我们生活的方方面面。而作者选择了一种引人入胜的方法来为我们讲述人工智能。读者可以收获到意想不到的乐趣。





版权说明:未经授权严禁任何形式的媒体转载和摘编,并且严禁转载至微信以外的平台!



文章首发于科学大院,仅代表作者观点,不代表科学大院立场。转载请联系cas@cnic.cn

推荐阅读

谭铁牛:人工智能,天使还是魔鬼?>>

我们制造机器人的思路错了吗?>>

AI,AI,我家宠物究竟在想什么? >>

AI化学家会梦见电子云吗?>>




科学大院是中科院官方科普微平台,由中科院科学传播局主办、中国科普博览团队运营,致力于最新科研成果的深度解读、社会热点事件的科学发声。


转载授权、合作、投稿事宜请联系cas@cnic.cn



大院er拍了拍你:不要忘记 

点亮这里的 赞 和 在看 噢~ 


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存