7、神经网络一: 建立网络架构

目录

7.1简介

7.2单个神经元建模

7.2.1生物学动机与联系

7.2.2单神经元作为线性分类器

7.2.3常用激活函数

7.3神经网络体系结构

7.3.1分层组织

7.3.2前馈计算实例

7.3.3代表权

7.3.4设置层数及其大小

7.4总结

7.5参考文献


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之间。稍后我们将在本节中看到这些激活函数的细节。

生物神经元(左)的卡通画及其数学模型(右)。

单个神经元前向传播的示例代码如下:

  1. class Neuron(object):

  2. # ...

  3. def forward(inputs):

  4. """ 假设输入和权重是1-D的numpy数组,偏差是一个数字 """

  5.     cell_body_sum = np.sum(inputs * self.weights) + self.bias

  6.     firing_rate = 1.0 / (1.0 + math.exp(-cell_body_sum)) # sigmoid激活函数

  7.     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函数输出限定

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值