目录
7.1简介
在不诉诸大脑的类比的情况下,依然是可以对神经网络算法进行介绍的。在线性分类的部分中,我们使用公式S=Wx计算图像的不同视觉类别的得分,其中W是矩阵,x是包含图像的所有像素数据的输入列向量。在CIFAR-10的情况下,X是[3072x1]列向量,W是[10x3072]矩阵,因此输出分数是10类分数的向量。
神经网络算法则不同,它的计算公式是S=W2MAX(0,W1X)。这里,W1可以是例如[100x3072]的矩阵,将图像转换为100维的过渡矢量。函数max(0,ω)是一个应用于元素的非线性函数。对于非线性(我们将在下面进行研究)有几种选择,但这是一种常见的选择,只需将零下的所有激活阈值设为零。最后,矩阵W2的大小为[10x100],因此我们再次得到10个数字,我们将其解释为类分数。请注意,非线性是至关重要的计算-如果没有它,那么两个矩阵将会合二为一,对于分类的评分计算将重新变成关于输入的线性函数。这个非线性函数就是改变的关键点。参数W2、W1用随机梯度下降法学习,并用链式法则推导出它们的梯度(用反向传播计算)。
三层神经网络可以类似地看起来像S=W3MAX(0,W2MAX(0,W1X)),其中所有W3、W2、W1都是要学习的参数。中间隐藏向量的大小是网络的超参数,后续课程会介绍如何设置它们。现在让我们来看看如何从神经元/网络的角度解释这些计算。
7.2单个神经元建模
神经网络的领域最初主要是由生物神经系统建模的目标启发的,但此后已经偏离并成为工程问题,并在机器学习任务中取得良好的结果。尽管如此,我们从一个非常简短和高层次的生物系统的描述开始讨论,因为神经网络的大部分都是从这里被启发的。
7.2.1生物学动机与联系
大脑的基本计算单元是神经元。在人类神经系统中可以发现大约860亿个神经元,它们与大约10 ^ 14 - 10 ^ 15突触(synapses)相连。下面的图表显示了一个生物神经元(左)和一个常见的数学模型(右)的示意图。每个神经元接收来自其树突(dendrites )的输入信号,并沿其(单个)轴突(axon)产生输出信号。轴突最终分支并通过突触连接到其他神经元的树突。在神经元的计算模型中,沿着轴突(例如X0)传播的信号基于突触的突触强度(例如W0)与其他神经元的树突相互乘以(例如W0x0)。这个想法是,突触强度(权重W)是可学习的,并且控制一个神经元在另一个神经元上的影响强度(及其方向:兴奋(正权重)或抑制(负权重))。在基本模型中,树突将信号传送到细胞体,在那里它们都被求和。如果最终的总和超过某一阈值,神经元可以着火,沿其轴突发出一个尖峰。在计算模型中,我们假设尖峰的精确定时并不重要,并且只有着火的频率传达信息。基于这个速率码解释,我们用激活函数F来模拟神经元的着火率,它代表沿轴突的尖峰频率。从历史上看,激活函数的一个共同选择是S形函数,因为它取一个实值输入(总和之后的信号强度),并将其压制在0到1之间。稍后我们将在本节中看到这些激活函数的细节。
生物神经元(左)的卡通画及其数学模型(右)。
单个神经元前向传播的示例代码如下:
-
class Neuron(object):
-
# ...
-
def forward(inputs):
-
""" 假设输入和权重是1-D的numpy数组,偏差是一个数字 """
-
cell_body_sum = np.sum(inputs * self.weights) + self.bias
-
firing_rate = 1.0 / (1.0 + math.exp(-cell_body_sum)) # sigmoid激活函数
-
return firing_rate
换言之,每个神经元用输入和它的权重来执行点积,添加偏置并应用非线性(或称为激活函数),这里是S形函数σ(x)=1/(1+e−x)。我们将在本节结束时详细介绍不同的激活函数。
粗糙模型。重要的是强调这种生物神经元的模型非常粗糙:例如,有许多不同类型的神经元,每个神经元具有不同的特性。生物神经元中的树突进行复杂的非线性计算。突触不仅仅是单一的权重,它们是一个复杂的非线性动力系统。已知在许多系统中输出尖峰的精确定时是重要的,这表明速率码近似可能不成立。由于所有这些和许多其他简化,准备听取任何神经科学背景的人起哄的声音,如果你在神经网络和真实大脑之间画类比。如果你感兴趣的话,可以看看这个评论(PDF),或者最近的这个评论。
7.2.2单神经元作为线性分类器
模型神经元向前计算的数学形式对你来说可能很熟悉。正如我们看到的线性分类器,神经元有能力“喜欢”(接近于1)或“厌恶”(接近于零)的某些线性区域的输入空间。因此,只要在神经元的输出端有一个合适的损失函数,我们就可以将单个神经元转换成线性分类器:
二分类Softmax分类器。例如,我们可以将解释为某一类的概率P(Yi=1 | Xi;W),另一类的概率是P(Yi=0 | Xi;w)=1-P(Y= 1 | Xi;W),它们的和必须为1。有了这种解释,我们可以制定交叉熵损失,我们已经在线性分类部分做了阐述。然后将它最优化为二分类的Softmax分类器(也就是逻辑回归)。因为sigmoid函数输出限定