1. 引言
这个系列是为所有爱好人工智能的同学写的AI通识,我试图用最简单的语言和大家讲述历史以及AI的基本技术原理,文中一半插图为AI工具所作,所以命名这一系列为: 《AI漫画AI进化史》。
按照历史顺序预计的后续篇章有:
《AI漫画AI: 从故事到原理之“专家系统复兴“》(撰写中)
《AI漫画AI: 从故事到原理之“贝叶斯网络的活水“》(撰写中)
这是第四篇
《AI漫画AI: 从故事到原理之“反向传播的星星之火“》,之所以并没有历史顺序来发表主要是因为它太重要了,可以说当下你所熟悉的AI工具诸如GPT, MidJourney都可以追溯于此,希望这篇能帮助你了解工具背后的原理和故事,本文 总计3000 字,读完需要6分钟。
- 人工神经网络黎明前的黑暗
在1980s年代初,全能科学家Hopfield(在物理学、化学、生物学、神经科学、心理学、计算机科学都有研究的科学家)提出了Hopfield network, 打开了尘封已久的“人工神经网络”的大门,为后来的年轻研究者开辟了一片新天地。
与此同时,有一位远在英国的一位博士也开始研究人工神经网络,在他看来,这正是人工智能的希望所在,但当他向导师陈述这一思想时,却被导师泼了冷水。
其实,这瓢冷水也确实不能怪导师,要知道1970s年代末的人工智能,正在经历寒冬时代。而人工智能的“符号主义”派靠着”专家系统“刚刚有了生存希望,整个学术的中心都集中在那里, 人们根本就无暇顾及人工智能的另一门派”连接主义“,更何况他早在1969年就被图灵奖得主,符号主义领军人物“Marvin minsky” 所批判。
但这位博士生依然坚守信念,但他博士毕业时(1978年),却无法找到一份合适的工作。 在他显赫的家族里(他的曾外祖父是发明布尔值的数学家乔治.布尔,从布尔开始延续了200年的学术家族),这的确有点让人沮丧。
是的,这个人就是后来的深度学习教父:Geoffrey Hinton(2018年Hinton 获图灵奖。) 好在不久之后,他有了一次赴美做访问学者的机会,于是只身来到大洋彼岸追寻梦想, 历史的车轮开始旋转。
在这里,他发现之前那些不被人们接受的观点,在这里竟然找到了志同道合的朋友
David Rumelhart。
在1986年和1988年,Hinton 和David Rumelhart先后发明了玻尔兹曼机和back propagation。不过back propagation的诞生,其实并非一帆风顺。
- 人工神经网络内核:Back propagation的曲折诞生
1986年,Hinton 和David 在BP 方面的研究实验结果感到非常自豪,但那时候的神经网络连接派仍然被符号主义派压制,要想在《Nature》上发表关于神经网络的文章,很可能就是石沉大海。
当时的Nature有一位审稿人叫Stuart Sutherland是Hinton 的老乡(英国人),他是一位心理学家,同时也对人类认知学非常感兴趣,当时并不出名的Hinton花了非常大的力气向Stuart Sutherland讲述他的想法,最终打动了Stuart Sutherland。可以说,Stuart Sutherland对Hinton 算是知遇之恩。
最终终于在1986年在Nature上发表。
凭着这篇文章,Hinton和David也得到了相应的回报。
Hiton终于在CMU(卡耐基梅隆大学,计算机专业全球排名前三)得到了助理教授的职位。
Back Propagation的意义
要说这个BP的影响有多大,我们先直观体会一下。
我们知道,当下爆火的chatGPT , MidJourney 等AI工具是算法、算力、数据三股力量共同撑起来的。
在算法这一支力量中,又分为有监督,无监督,增强算法,但这三兄弟的目前的力量可以悬殊非常大了,其中有监督学习算法的比例远远大于其余两者,而BP正是有监督学习算法的内核,可以说,BP撑起了当下AI的半边天。 而back propagation 这篇30多年前的文章,到现在已经引用高达6万多次。
那么到底什么是back propagation,我们先用一个简单的例子了解一下。
- 用比喻直观理解Back propagation(反向传播)
别一听到算法就头疼,其实用个比喻就非常好理解了,这部分内容是没有公式推理的,仅仅帮助大家做常识性的理解。
我们想象游戏场景:把你的眼睛蒙上,给你一把弓箭, 然后在你的周围不知道的地方放一个靶,射中就算赢。
这个游戏总共有三个项目。
第一项:听天由命式。每次打完之后会告诉你命中还是未命中,然后下次你再找一个不同角度继续射击。
第二项:距离反馈式。每次打完之后会有人告诉你 打中的地方与靶心的距离 。
第三项: 方向反馈式。 每次打完之后会不仅会告诉你与靶心的距离,还会告诉你下次应该朝哪个方向走一点。
没错,这个游戏中最后一项就是Back propagation一个非常简单的诠释。
Back propagation的全称是back Error propagation,这里的 Error 意思是误差,指的就是即用实际输出值(实际打中的点)与目标值(靶心)之间的差异拆解后(拆解为垂直、水平方向)作为反馈向后(back)去调整影响下一次训练的权重(下次一次打靶方向),从而加快神经网络的学习进度。
而当我们有多级反馈时,就形成了一层一层的向后传播(propogation) 行为。
- 深入理解Back propagation(反向传播)
6.1 单层神经网络的数学模型
我们把上述的例子转换成常见的神经网络的表示, 这里只有一层网络,这层网络上有两个神经元,一个是水平方向因素,一个是水平方向因素。
我们假设箭要沿着
的方向射击才 能射中
为了简化,我们把偏差B也省去,仅仅看方向,那么我们的目标就是要知道 的值。接下来我们看看BP算法是如何训练得到 的。
6.2 BP算法训练步骤
第一步:最开始,我们只是随机射一箭。假设箭射到了靶外的某点Y,靶心为T,那么我们用Y与T之间的距离平方作为误差,这里使用平方是为了防止同时有多个训练样本时,误差抵消。
这时候我们就要考虑如何调整 。我们的目的是让Error 最小,而Error 与
相关,且是平方关系,这里回顾一个初中抛物线知识,这里的Error 与 就是一个抛物线,要想使Error 最小,就要找抛物线的最低点。
但这里的Error 是同时与两个参数 都是抛物线的关系,实际就是三维空间的一个抛物体。
大家点击下面动图可以展示出这个抛物体的样子,我们的目标就是调整 使得Error达到这个抛物体里的最低点。
要想调整
使Error最小,就是让Error分别对
进行求导,这里就要用到非常简单的高等数学,大家可以暂停回忆一下求导方法,这里我们已知定义:
那么:
也就是说
的每一步调整
都是 的一点点 ,这个一点点专业术语叫“学习率”,展示在图片里就是下图的样子。
6.3 学习率的选择
这个学习率不能太大,也不能太小。
1) 梯度爆炸
太大就好像游戏中每次给的反馈太大,会导致箭离靶心越来越远。
用数学表示就像下图这样,每次W的变化并没有使Error变小,而是变大,专业术语叫 “梯度爆炸”。
2)梯度消失
如果调整太小,我们需要的调整的步数很多,调整速度太慢。
用数学表示就像下图这样,每次W的变化使Error变化特别小,小到可以忽略不计,专业术语叫 “梯度消失”。
每次要调整多少,我们定义为学习率,学习率的选择也是一门学问,这里不做细讲。
6.4 多层Back propagation的数学模型
有了Back propagation之后,之前的那个单层神经网络数学模型就可以演变为如下:
当我们把这个结构发展为多层,多个神经元,就得到了下面这样一个结构,
到了这里,你大概知道啥是撑起深度学习半边天Back propagation了吧。 也许你会觉得太简单,这么伟大的东西怎么能如此浅显的就可以理解呢。
实际上,Back propagation最早提出并非Hinton ,而是1974年 Paul John Werbos 就提出来了, 那时候受美国经济影响,整个人工智能正处于极度寒冬,根本没有人注意到。
直到Hinton 的论文发表在Nature上之后,Back propagation所支撑的人工神经网络这一派才引起关注,在当时这就像是寥寥莽原上的星星之火。
不过Back propagation即使带了Nature的光环,人工神经网络这一派的道路也并非一路坦途,我们下一篇在探讨。
读到这里了,不妨关注一下吧,后续更精彩。
我是关注AI产品的产品二姐,致力于带来丰富的AI学习分享、体会。目前在做两件事:一是撰写AI历史,二是带来人人可用的AI绘画技巧。