机器学习漫谈(6):理解神经网络的两种入门思路

从今天开始,准备深入聊聊机器学习中最流行、也是最主流的方法—神经网络。

神经网络的产生,如果从FrankRosenblatt 1957年 提出的“感知机” (Perceptron)算起,已经有60多年的历史了。但它真正进入大众视野,被很多圈外人所知,大概也就是最近四五年的事。以至于很多公众号文章,也遍地都是“十行代码教你实现神经网络”、“十分钟教你学会神经网络”,这类鸡汤式的文章。而很多人也总希望能有什么秘诀可以让自己一夜之间成为机器学习的高手,像武侠小说里面遇到世外高人把毕生功力转给你或者有什么奇葩宝贝吃了就有几甲子的功力,这种情节特别符合某些人的浮躁心态。也许调用某些现成的包可以让你用几行python代码就实现一个神经网络,但在短暂的惊叹和酸爽之后,回头想想,你得到了什么?碰到实际问题的时候为什么仍旧不能解决呢?

关键原因就是你根本不理解算法的本质。

后续的文章会从神经网络的结构、学习过程、优化等不同方面深入剖析神经网络,并逐渐过渡到深度神经网络。按照我的学习习惯,要想深入了解一个理论或者方法,对其历史(怎么来的?)做简单的了解永远是必要的。

神经网络的引入,一直以来都有两种不同的思路。

第一种思路:认为神经网络的产生是受人的大脑神经元的启发而来。因此,在讲述神经网络时,都会先画上大脑神经元,告诉你大脑中的信号是如何传递的,然后就把这个抽象成了函数计算。说实在的,当年我就是被这个神奇的说法吸引而学习这个算法的。这也跟我的背景有关,作为生物医学工程专业不成器的学生,恰好学习了一点电生理的知识,了解了心电、脑电等生物电产生和传导的机制。这使得我在看到这个理论的初始想法时就觉得天然地亲近,并有兴趣不断深入去了解。但问题也出在这上面!它把神经元细胞的激活机制作为引入激活函数的依据,听着很有道理,但在此后的学习、优化等过程中,我再也找不到和人脑神经元的联系,可又不自觉地总想去找到底有什么联系,这大大限制了我的视野,使我始终不能跳出那个圈子来看待神经网络的结构、学习等等问题。直到后来看到了第二种思路。

第二种思路:纯粹从机器学习的角度入手。把最简单的数据拟合函数作为一个初始神经元,由此扩展出神经网络。然后借用控制中负反馈寻优的思想,采用梯度下降法调节神经元之间的联系权重,最终得到一个较好的拟合数据的复合函数(训练好的神经网络)。这种引入方式,简单明了,虽然有一定的数学推导,但只要基本的高等数学知识足够了。并且从优化的角度来看,更容易切近问题的本质。

对绝大多数没有电生理知识背景的人,从第一种思路入手,恐怕都是稀里糊涂,就是到后面上手后知道训练、调优等等,但对神经网络的本质还是难有深入的认识,因此不建议从第一种思路入手学习。

说到这里,插个小话题,神经网络领域的大神Hinton大学是心理学专业,后来转人工智能,据说就是受了脑科学的影响才迷上了神经网络。Hinton对神经网络的理解,有一个非常重要的观点可以说是来源于脑科学,那就是人的知识在大脑中是呈分布式存储的,不是存在某个节点神经元中,这叫分布式表征(Distributed Representation)。可以理解为,知识在大脑中是通过神经元之间的连接表达的。这点和神经网络训练所得的知识是神经元之间的权重是一致的。这在理念上有启发,是好处,但对后续神经网络的训练优化、数学推导等帮助没有太大,反而会让人有脱节的感觉,尤其对初学者。如果是对神经网络已经有了一定的了解,回头再去看看不同视角的分析是有益的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190116G0PHGB00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券