第四章

感知器学习

我们应该如何让感知器去学习执行一些任务呢?在这一章里,我们将走进“感知器培训学校”来了解这背后的原理。请向下滚动继续阅读。

向下滚动

在上一章,我们了解到了一个感知器可以接收一些输入信号然后输出一个数值。那么,我们应该如何让它学习呢?想要了解这个学习过程,我们先来抽象化地理解一下感知器。

从更高的层面来说,一个感知器可以被当做一个数学函数——输入一些信号、权重、和偏置,进行一些数学运算,然后产生一个输出值。

因为我们没有办法控制输入值(我们不能改变我们用于学习的数据本身),所以我们就通过改变权重和偏置的值来让感知器函数产生理想的输出。

“训练”一个感知器的核心是如何让它知道自己的行为(预测)和正确结果(ground truth)之间的差距。为了达成这一目的,我们利用 损失函数 来测量感知器的表现。Cross entropy是一个常用的损失函数,很适合用来执行图片分类的任务。一个理想的训练算法会通过改变权重和偏置来让损失值减少。

在动画中,损失由输出值(三角形)和正确结果(正方形)的面积差所表示。训练感知器的过程就是缩小这个面积差的过程。一旦损失被减少到了最小值 ,感知器就完成了它的学习。

损失函数是有很多不同种类的,不过它们全都有着同样的行为:当预测和正确结果的差距越大,损失函数的输出也就越大。通过调整权重和偏置的值,我们可以让损失函数的值变小,从而逐步提升感知器的性能。

为了可以系统地减少损失,我们采用一个叫做梯度下降(Gradient Descent)的 优化器算法(optimizer)。 动画中的“小山丘”描绘了感知器的权重与偏置和损失函数之间的关系。我们如果处在山丘更高的位置上,损失函数的值也会越大。梯度下降就是一个通过改变权重和偏置来引领我们“走下山”的技巧。这个优化器会找出最陡峭(最快)的下山方向。

一开始,梯度下降优化器会根据数据来观测这个“山丘”,并通过生成梯度(gradients)来提供一个下山的方向。然后,优化器会根据设定好的学习率(learning rate)来决定往山下走多远之后停住,再重新生成新的梯度。在重复很多次之后,优化器就到达了这个山丘区域的最低谷(最小损失)。

总结

到目前为止,我们了解了损失函数优化与感知器学习的关系,以及训练感知器的算法。接下来,让我们去看一看更复杂的神经网络结构吧。我们会讲解如何将感知器运用到一种叫做前馈神经网络的多层神经网络。

延伸阅读

Gradient descent, how neural networks learn
Gradient Descent in a Nutshell

核心词汇

损失函数: 一个用来计算损失的函数。损失是一个表示输出预测和正确结果之间的差别的数值。

梯度:一组用来指示最快减少损失方向(最陡峭下山方向)的数值。

梯度下降:一种使用梯度来调整权重和偏置从而减少损失的优化器算法。