首页 > 编程笔记 > Python笔记

神经网络是什么?

一想到神经网络,我们首先会想到生物神经系统中数以万计的细胞联结,将感官和反射器联系在一起的神经网络系统。复杂的生物神经网络系统居然神奇地放入了计算机程序中!而且人类正在将这种人工神经网络系统推向更高的境界。

今天的世界早已布满了人工神经网络的身影。比如搜索引擎、股票价格预测、机器学习围棋、家庭助手等,从金融到仿生样样都能运用 AI 人工神经网络。

那么,计算机领域的神经网络和我们自己身体里的神经网络是一样的吗?科学家们通过长久的探索,想让计算机像人一样思考,所以研发了人工神经网络,究竟它和我们的神经网络有多像?我们先来看看人的神经网络到底是什么样子。

计算机的神经网络

人的神经网络

900 亿神经元细胞组成了我们复杂的神经网络系统,这个数量甚至可以和宇宙中的星球数相比较。如果仅仅靠单个的神经元,是永远没有办法让我们像今天一样,能学习完成各种复杂任务的。

我们是如何靠这些神经元来解决问题的呢?

想象下图,我们还是婴儿。

婴儿的神经元没有形成网络

包着尿布的我们什么都不知道,神经元并没有形成系统和网络。可能只是一些分散的细胞而已,一端连着嘴巴的味觉感受器,一端连着手部的肌肉。

小时候,当我们第一次品尝糖果的时候,会产生一种美妙的感觉。这时候神经元开始产生联结,记忆形成,但是形成的新联结怎样变成记忆,仍然是生物科学界的一个谜。不过现在,我们的手和嘴产生了某种特定的搭配。每次发现有糖果的时候某种生物信号就会从我们之前形成的神经联结传递到手上,让手的动作变得有意义,比如我们开始撒娇伸手要糖,然后大人就会再给我们一颗糖果,吃糖的目的达成。

现在我们来看看人工神经网络要怎样达到这个目的。

人工神经网络与生物神经网络对比如下:
人工神经网络与生物神经网络的对比

人工神经网络靠的是正向和反向传播来更新神经元,从而形成一个好的神经系统。本质上这是一个能让计算机处理和优化的数学模型。

而生物神经网络是通过刺激产生新的联结,让信号能够通过新的联结传递而形成反馈。

虽然现在的计算机技术越来越先进,不过我们身体里的生物神经系统经过了长期的进化,是独一无二的,迄今为止再复杂、再庞大的人工神经网络系统也不能替代我们的人脑。

训练人工神经网络

训练深度学习神经网络其实就是让电脑不断地尝试模拟已知的数据。它能知道自己拟合的数据离真实的数据差距有多远,然后不断地改进自己拟合的参数,提高拟合的相似度。

本例中蓝色离散点是我们的数据点,红线是通过神经网络算法拟合出来的曲线。如下图所示。

刚开始神经网络的误差很大

红线是对我们数据点的一个近似表达。可以看出,在开始阶段,红线的表达能力不强,误差很大。 不过通过不断的学习,预测误差将会被降低。所以学习到后来红线也能近似表达出数据的样子。如下图所示。

经过训练以后神经网络的误差减小

人工神经网络的训练本质就是寻找模型最佳参数让预测输出拟合训练数据的过程。

如果红色曲线的表达式为:

y = ax + b

其中 x 代表 inputs(输入),y 代表 outputs(输出),a 和 b 是神经网络训练的参数。模型训练好了以后 a 和 b 的值将会被确定,比如 a=0.5,b=2,当我们再输入 x=3 时,我们的模型就会输出 0.5×3 + 2 的结果。

模型通过学习数据,得到能表达数据的参数,然后对我们另外给的输入数据作出预测输出。

训练神经网络用到的数据集一定要划分为训练集和测试集。永远不要用测试集来训练,并且需要避免过拟合。

可以认为,过拟合就像在一次测验前,记忆了许多细节,但没有理解其中的信息。如果只是记忆细节,那么当你自己在家复习知识卡片时,效果会很好,但只要考没见过的题型,都会不及格。

创建神经网络模型后,模型需要在数据上训练,并在另外的数据上完成测试。对训练集的记忆并不等于学习。模型在训练集上学习得越好,就应该在测试集给出更好的预测结果。过拟合永远都不是你想要的结果,学习才是!

一种常见的方法是将数据集按 80/20 进行划分,其中 80% 的数据用作训练,20% 的数据用作测试。

最后,我们把训练人工智能和人类学习知识过程做个比较。
人类学习知识过程 训练人工智能过程
看书,学习,做练习题 迭代模型拟合训练数据集
参加考试,通过得分测试自己的学习水平 通过测试集数据测试模型loss (损失率)
用掌握的知识解决实际生活中的问题 应用到特定环境来解决特定任务

可解释的 AI 让神经网络的黑盒不黑

神经网络可划分为输入、黑盒、输出三个区域。

神经网络结构划分

黑盒所进行的操作可理解为对输入的特征进行加工,第一层加工后称为“代表特征”,下一层再对代表特征进行加工,这些特征往往只有计算机自己能看懂。

与其说黑盒是在加工处理,不如说是在将一种代表特征转换成另一种代表特征。一次次特征之间的转换,也就是一次次更有深度的理解。

有时候代表特征太多了,人类没有办法看懂它们代表的是什么,然而计算机却能看清楚它所学到的规律,所以我们才觉得神经网络就是个黑盒。

如下图所示,我们打开人工智能的脑壳,究竟看到了什么呢?

黑盒给机器学习带来了不可解释性,只给结果不给理由,这是机器学习在所有领域应用的“通病”。

神经网络的真实模样

想象在金融行业让人工智能辅助决策,机器学习在判断一笔交易是否为风险交易时,不会给出任何理由。那么问题来了,银行怎能允许一个无法解释的机器来掌管成千上万亿笔交易的“生杀大权”?这也太不可控了吧?

我们想解释 AI,不仅是因为好奇,更是因为某些时候 AI 一旦犯错,会让我们付出很大的代价。“理解”是每个生命的本能。AI+ 解释程序,在未来很可能合并为“可解释的 AI”,让人工神经网络的黑盒不黑。

可解释的AI

自动驾驶公司 Drive.ai 就在做这样的尝试。他们在人工智能汽车上装载了一个屏幕,一辆汽车看到行人就会停下来,与此同时,它会通过显示屏告诉行人,“我在礼让您过马路”。同样,在它并道超车或者转弯的时候也会给身边的车辆进行文字提示,告诉人类它行动的意图。

这种“自我解释”,会让“冰冷”的技术变得“有温度”。

同样,“可解释的 AI” 还能做更多的事情。

在未来,人们会把“AI+解释程序”用于 DNA 研究,AI 很可能会告诉人类,哪个基因对应着哪种疾病,如何调整用药可以让人获得健康的同时,又付出最小的代价。而这一切,都是有理有据的。

在此基础之上,借助 AI 我们可以把人类攻克癌症的时间点大大提前。果真如此的话,很多人的命运里就少了一场遗憾的生离死别。

所有教程

优秀文章