张小贤的平凡之路---机器学习之神经网络---周志华《机器学习》

神经网络


神经网络的定义:神经网络是由具有适用性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。

1. M-P 神经元模型

Alt
M − P M-P MP 神经元模型”接收到来自 n n n 个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”处理以产生神经元的输出。

2. 试述常见的激活函数,试述将线性函数用作神经元激活函数的缺陷

2.1 常用的激活函数

激活函数的发展经历了 S i g m o i d − > T a n h − > R e L U − > L e a k y R e L U − > M a x o u t Sigmoid -> Tanh -> ReLU -> Leaky ReLU -> Maxout Sigmoid>Tanh>ReLU>LeakyReLU>Maxout 这样的过程,还有一个特殊的激活函数 S o f t m a x Softmax Softmax,因为它只会被用在网络中的最后一层,用来进行最后的分类和归一化。

  • S i g m o i d Sigmoid Sigmoid函数
    σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1
    S i g m o i d Sigmoid Sigmoid函数是深度学习领域开始时使用频率最高的激活函数,它是便于求导的平滑函数,能够将输出值压缩到 0 − 1 0-1 01 范围之内。
    在这里插入图片描述
  • t a n h tanh tanh函数
    t a n h ( x ) = e − x − e − x e x + e − x tanh(x)=\frac{e^{-x}-e^{-x}}{e^{x}+e^{-x}} tanh(x)=ex+exexex
    在这里插入图片描述
  • R e L U ReLU ReLU函数
    R e L U = m a x ( 0 , x ) ReLU=max(0,x) ReLU=max(0,x)
    R e L U ReLU ReLU函数(Rectified Linear Units)其实就是一个取最大值函数,注意这并不是全区间可导的,但是我们可以取次梯度 ( s u b g r a d i e n t ) (subgradient) (subgradient)
    在这里插入图片描述
2.2 采用非线性激活函数的原因

如果不用激励函数(相当于激励函数是 f ( x ) = x f(x)=x f(x)=x),在这种情况下,每一层的输出都是上一层的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这与一个隐藏层的效果相当(这种情况就是多层感知机MPL)。但当我们需要进行深度神经网络训练(多个隐藏层)的时候,如果激活函数仍然使用线性的,多层的隐藏函数与一层的隐藏函数作用的相当的,就失去了深度神经网络的意义,所以引入非线性函数作为激活函数。因此我们不仅要使用激活函数,而且激活函数还必须具备一些性质:

  • 非线性: 若激活函数仍然使用线性的,多层的隐藏函数与一层的隐藏函数作用的相当的,就失去了深度神经网络的意义。
  • 可微性: 当网络基于梯度来更新权重参数时,这个性质是必须的。
  • 单调性: 当激活函数是单调的时候,单层网络能够保证是凸函数。

3. 感知机与多层网络

3.1 感知机

感知机(Perceptron)由两层神经元组成,如图所示,输入层接收外界输入信号后传递给输出层,输出层是 M − P M-P MP 神经元,亦称为“阈值逻辑单元”。
在这里插入图片描述
更一般地,给定训练数据集,权重 w i w_{i} wi 以及阈值 θ \theta θ 可通过学习得到。阈值 θ \theta θ 可看作一个固定输入为 − 1.0 -1.0 1.0 的“哑结点”多对应的连接权重 w n + 1 w_{n+1} wn+1。这样,权重和阈值的学习就可统一为权重的学习。 感知机学习规则非常简单,对训练样例 ( x , y ) (x,y) (x,y) ,若当前感知机的输出为 y ^ \hat{y} y^ ,则感知机权重将最优调整:
w i ← w i + Δ w i Δ w i = η ( y − y ^ ) x i w_{i}\leftarrow w_{i}+\Delta w_{i}\\ \Delta w_{i}=\eta(y-\hat{y})x_{i} wiwi+ΔwiΔwi=η(yy^)xi
其中 η ∈ ( 0 , 1 ) \eta \in (0,1) η(0,1) 称为“学习率(learing rate)” .从上式可以看出,若感知机对训练样例 ( x , y ) (x,y) (x,y) 预测正确,即 y ^ = y \hat{y}=y y^=y,则感知机不发生变化,否则将根据错误的程度进行权重调整。感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元,其学习能力非常有限。只能处理线性可分的情况,无法处理非线性可分的情况

3.2 多层网络

要解决非线性可分问题,需考虑使用多层功能神经元。输出层和输入层之间的一层神经元,被称为隐层或隐含层,隐含层和输出层神经元都是拥有激活函数的功能神经元。
在这里插入图片描述
更一般地,常见的神经网络如下图,每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。这样的神经网络结果通常称为“多层前馈神经网络”(multi-layer feedforward neural networks),其中输入层神经元接收外界输入,隐层与输出层神经元对信号进行加工,最终结果由输出层神经元输出;换言之,输入层神经元仅是接受输入,不进行函数处理,隐层与输出层包含功能神经元。
在这里插入图片描述

4. 试述使用 Sigmoid 激活函数的神经元与对数几率回归的联系

两者都是跟 s i g m o i d sigmoid sigmoid 函数有关,但是在对数几率回归里, s i g m o i d sigmoid sigmoid 函数的作用是将线性回归模型产生的预测值(实值)转化为 0 / 1 0/1 0/1 值。 s i g m o i d sigmoid sigmoid 函数是用于代替单位阶跃函数,因为 s i g m o i d sigmoid sigmoid 函数单调且可微;在神经元模型中, s i g m o i d sigmoid sigmoid 函数作为“激活函数”用以处理产生神经元的输出,因为神经元模型中的神经元收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,采用“激活函数”能将输出值转化为 0 − 1 0-1 01 值。

5. 对于图5.7(102页)中的,试推导出BP算法中的更新公式5.13(103页)

Δ v i h = η e h x i \Delta_{v_{ih}}=\eta e_{h}x_{i} Δvih=ηehxi
[推导]:因为
Δ v i h = − η ∂ E k ∂ v i h \Delta_{v_{ih}}=-\eta \frac{\partial E_{k}}{\partial v_{ih}} Δvih=ηvihEk

∂ E k ∂ v i h = ∑ j = 1 l ∂ E k ∂ y ^ j k ∂ y ^ j k ∂ β j ∂ β j ∂ b h ∂ b h ∂ α h ∂ α h ∂ v i h = ∑ j = 1 l ∂ E k ∂ y ^ j k ∂ y ^ j k ∂ β j ∂ β j ∂ b h ∂ b h ∂ α h x i = ∑ j = 1 l ∂ E k ∂ y ^ j k ∂ y ^ j k ∂ β j ∂ β j ∂ b h f ′ ( α h − γ h ) x i = ∑ j = 1 l ( − g j ) w h j f ′ ( α h − γ h ) x i = − f ′ ( α h − γ h ) ∑ j = 1 l g j w h j x i = − b h ( 1 − b h ) ∑ j = 1 l g j w h j x i = − e h x i \frac{\partial E_{k}}{\partial v_{ih}} = \sum\limits_{j=1}^{l}\frac{\partial E_{k}}{\partial \hat{y}_{j}^{k}}\frac{\partial \hat{y}_{j}^{k}}{\partial \beta_{j}}\frac{\partial \beta_{j}}{\partial b_{h}}\frac{\partial b_{h}}{\partial \alpha_{h}}\frac{\partial \alpha_{h}}{\partial v_{ih}} \\= \sum\limits_{j=1}^{l}\frac{\partial E_{k}}{\partial \hat{y}_{j}^{k}}\frac{\partial \hat{y}_{j}^{k}}{\partial \beta_{j}}\frac{\partial \beta_{j}}{\partial b_{h}}\frac{\partial b_{h}}{\partial \alpha_{h}}x_{i}\\= \sum\limits_{j=1}^{l}\frac{\partial E_{k}}{\partial \hat{y}_{j}^{k}}\frac{\partial \hat{y}_{j}^{k}}{\partial \beta_{j}}\frac{\partial \beta_{j}}{\partial b_{h}}f'(\alpha_{h}-\gamma_{h})x_{i}\\=\sum\limits_{j=1}^{l}(-g_{j})w_{hj}f'(\alpha_{h}-\gamma_{h})x_{i}\\=-f'(\alpha_{h}-\gamma_{h})\sum\limits_{j=1}^{l}g_{j}w_{hj}x_{i}\\=-b_{h}(1-b_{h})\sum\limits_{j=1}^{l}g_{j}w_{hj}x_{i}\\=-e_{h}x_{i} vihEk=j=1ly^jkEkβjy^jkbhβjαhbhvihαh=j=1ly^jkEkβjy^jkbhβjαhbhxi=j=1ly^jkEkβjy^jkbhβjf(αhγh)xi=j=1l(gj)whjf(αhγh)xi=f(αhγh)j=1lgjwhjxi=bh(1bh)j=1lgjwhjxi=ehxi
所以
Δ v i h = − η × − e h × x i = η e h x i \Delta_{v_{ih}}=-\eta \times -e_{h} \times x_{i}=\eta e_{h}x_{i} Δvih=η×eh×xi=ηehxi

6. 试述标准BP算法和累计BP算法,试编程实现标准BP算法和累计BP算法,在西瓜数据集3.0(84页)上分别用这两个算法训练一个单隐层神经网络,并进行比较。

6.1 误差逆传播算法(Error BackPropagation)

误差逆传播算法可以用来训练多层网络。
给定训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x m , y m ) } , x i ∈ R d , y i ∈ R l D=\{(x_{1},y_{1}),(x_{2},y_{2}),\cdots,(x_{m},y_{m})\},x_{i}\in \mathbb{R}^{d},y_{i}\in \mathbb{R}^{l} D={(x1,y1),(x2,y2),,(xm,ym)},xiRd,yiRl ,即输入示例由 d d d 个属性描述,输出 l l l 维实值向量。
下图给出一个拥有 d d d 个输入神经元、 l l l 个输出神经元、 q q q 个隐层神经元的多层前馈网络结构,其中输出层第 j j j 个神经元的阈值用 θ j \theta_{j} θj 表示,隐层第 h h h 个神经元的阈值用 γ h \gamma_{h} γh 表示。输入层第 i i i 个神经元与隐层第 h h h 个神经元之间的连接权为 v i h v_{ih} vih, 隐层第 h h h 个神经元与输出层第 j j j 个神经元之间的连接权为 w h j w_{hj} whj。记隐层第 h h h 个神经元接收到的输入为 α h = ∑ i = 1 d v i h x i \alpha_{h}=\sum\limits_{i=1}^{d}v_{ih}x_{i} αh=i=1dvihxi,输出层第 j j j 个神经元接收到的输入为 β j = ∑ h = 1 q w h j b h \beta_{j}=\sum\limits_{h=1}^{q}w_{hj}b_{h} βj=h=1qwhjbh ,其中 b h b_{h} bh 为隐层第 h h h 个神经元的输出。
在这里插入图片描述
假设隐层和输出层神经元都使用 S i n g m o i d Singmoid Singmoid 函数。
对训练例 ( x k , y k ) (x_{k},y_{k}) (xk,yk) ,假定神经网络的输出为 y ^ k = ( y ^ 1 , y ^ 2 , ⋯   , y ^ l ) \hat{y}_{k}=(\hat{y}_{1},\hat{y}_{2},\cdots,\hat{y}_{l}) y^k=(y^1,y^2,,y^l),即
y ^ j = f ( β j − θ j ) \hat{y}_{j}=f(\beta_{j}-\theta_{j}) y^j=f(βjθj)
则网络在 ( x k , y k ) (x_{k},y_{k}) (xk,yk) 上的均方误差为
E k = 1 2 ∑ j = 1 l ( y ^ j k − y j k ) 2 E_{k}=\frac{1}{2}\sum\limits_{j=1}^{l}(\hat{y}_{j}^{k}-y_{j}^{k})^{2} Ek=21j=1l(y^jkyjk)2
上图中的网络有 ( d + l + 1 ) × q + l (d+l+1)\times q+l (d+l+1)×q+l 个参数徐确定:

  • 输入层到隐层的 d × q d\times q d×q 个权值
  • 隐层到输出层的 q × l q\times l q×l 个权值
  • q q q 个隐层神经元的阈值
  • l l l 个输出层神经元的阈值
    BP是一个迭代学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计,任意参数 v v v 的更新估计式为:
    v ← v + Δ v v \leftarrow v + \Delta v vv+Δv
    BP算法基于梯度下降(gradient descent)策略,以目标的负梯度方向对参数进行调整。对误差 E k E_{k} Ek,给定学习率 η \eta η ,有:
    Δ w h j = − η ∂ E k ∂ w h j \Delta w_{hj}=-\eta \frac{\partial E_{k}}{\partial w_{hj}} Δwhj=ηwhjEk
    注意到 w h j w_{hj} whj 先影响到第 j j j 个输出层神经元的输入值 β j \beta_{j} βj,再影响到其输出值 y ^ j k \hat{y}_{j}^{k} y^jk,然后影响到 E k E_{k} Ek,有:
    ∂ E k ∂ w h j = ∂ E k ∂ y ^ j k ∂ y ^ j k ∂ β j β j ∂ w h j \frac{\partial E_{k}}{\partial w_{hj}}=\frac{\partial E_{k}}{\partial \hat{y}_{j}^{k}}\frac{\partial \hat{y}_{j}^{k}}{\partial \beta_{j}}\frac{\beta_{j}}{\partial w_{hj}} whjEk=y^jkEkβjy^jkwhjβj
    ∂ β j ∂ w h j = b h \frac{\partial \beta_{j}}{\partial w_{hj}}=b_{h} whjβj=bh
    S i g m o i d Sigmoid Sigmoid 函数有一个很好的性质:
    f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x)=f(x)(1-f(x)) f(x)=f(x)(1f(x))
    g j = − ∂ E k ∂ y ^ j k ∂ y ^ j k ∂ β j = − ( y ^ j k − y j k ) f ′ ( β j − θ j ) = y ^ j k ( 1 − y ^ j k ) ( y j k − y ^ j k ) g_{j}=-\frac{\partial E_{k}}{\partial \hat{y}_{j}^{k}}\frac{\partial \hat{y}_{j}^{k}}{\partial \beta_{j}}\\=-(\hat{y}_{j}^{k}-y_{j}^{k})f'(\beta_{j}-\theta_{j})\\=\hat{y}_{j}^{k}(1-\hat{y}_{j}^{k})(y_{j}^{k}-\hat{y}_{j}^{k}) gj=y^jkEkβjy^jk=(y^jkyjk)f(βjθj)=y^jk(1y^jk)(yjky^jk)
    可得:
    Δ w h j = η g j b h Δ θ j = − η g j Δ v i h = η e h x i Δ γ h = − η e h \Delta w_{hj}=\eta g_{j}b_{h}\\\Delta\theta_{j}=-\eta g_{j}\\\Delta v_{ih}=\eta e_{h}x_{i}\\\Delta\gamma_{h}=-\eta e_{h} Δwhj=ηgjbhΔθj=ηgjΔvih=ηehxiΔγh=ηeh
    e h = − ∂ E k ∂ b h ∂ b h ∂ α h = − ∑ j = 1 l ∂ E k ∂ β j ∂ β j ∂ b h f ′ ( α h − γ h ) = ∑ j = 1 l w h j g j f ′ ( α h − γ h ) = b h ( 1 − b h ) ∑ j = 1 l w h j g j e_{h}=-\frac{\partial E_{k}}{\partial b_{h}}\frac{\partial b_{h}}{\partial \alpha_{h}}\\=-\sum\limits_{j=1}^{l}\frac{\partial E_{k}}{\partial \beta_{j}}\frac{\partial \beta_{j}}{\partial b_{h}}f'(\alpha_{h}-\gamma_{h})\\=\sum\limits_{j=1}^{l}w_{hj}g_{j}f'(\alpha_{h}-\gamma_{h})\\=b_{h}(1-b_{h})\sum\limits_{j=1}^{l}w_{hj}g_{j} eh=bhEkαhbh=j=1lβjEkbhβjf(αhγh)=j=1lwhjgjf(αhγh)=bh(1bh)j=1lwhjgj
    学习率 η ∈ ( 0 , 1 ) \eta \in(0,1) η(0,1) 控制着算法每一轮迭代中的更新步长,太大则容易震荡,太小则容易收敛过慢。

6.2 标准BP算法

对每个训练样例,BP算法执行以下操作:先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差,再将误差逆向传播至隐层神经元,最后根据隐层神经元的误差来对连接权和阈值进行调整,该迭代过程循环进行,直到达到某些停止条件为止。
需要注意的是,BP算法的目标是要最小化训练集 D D D 上的累积误差
E = 1 m ∑ k = 1 m E k E=\frac{1}{m}\sum\limits_{k=1}^{m}E_{k} E=m1k=1mEk
但“标准BP算法”每次仅针对一个训练样例更新连接权和阈值。

6.3 累积BP算法

若类似地推导出基于累积误差最小化的更新规则,就得到了累积误差逆传播(accumulated error backpropagation)算法。

一般来说,标准BP算法每次更新只针对单个样例,参数更新得非常频繁,而且对不同样例进行更新的效果可能出现“抵消”现象。因此,为了达到同样的累积误差最小点,标准BP算法往往需进行更多次数的迭代。累积BP算法直接真滴累计误差最小化,它在读取整个训练集 D D D 一遍后才对参数进行更新,其参数更新的频率低得多。但在很多任务中,累积误差下降到一定程度后,进一步下降会非常缓慢,这是标准BP往往会更快获得较好的解,尤其是在训练集 D D D 非常大时更明显。

7. 全局最小与局部极小

若用 E E E 表示神经网络在训练集上的误差,显然它是关于连接权 ω ω ω 和阈值 θ θ θ 的函数,此时,神经网络的训练过程可看作一个参数寻优过程,即在参数空间中,寻找一组最优参数使得 E E E 最小。

直观地说,局部极小解是参数空间中的某个点,其领域点的误差函数值均不小于该点的函数值;全局最小解则是指参数空间中所有点的误差函数值均不小于该点的误差函数值。两者对应的 E E E 分别称为误差函数的局部极小值和全局极小值。

显然,参数空间内梯度为零的点,只要其误差函数值小于邻点的误差函数值,就是局部极小点;可能存在多个局部极小值,但却只会有一个全局最小值。也就是说,“全局最小”一定是“局部极小”,反之则不成立。

在现实任务中,常采用以下策略来试图跳出局部极小:

  • 以多组不同的参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数,这相当于从多个不同的初始点开始搜索,这样就可能陷入不同的局部极小,从中进行选择有可能获得更接近全局最小的结果。
  • 使用“模拟退火”(simulated annealing)技术,模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于“跳出”局部极小,在每步迭代过程中,接受“次优解”的概率要随着时间的推移而逐渐降低,从而保证算法稳定;
  • 使用随机梯度下降,与标准梯度下降法精确计算梯度不同,随机梯度下降法在计算梯度时加入了随机因素。于是即使陷入局部极小点,它计算出的梯度仍可能不为 0 0 0,这就有机会跳出局部极小继续搜索。

8. 试述如何缓解BP神经网络的过拟合现象

由于 BP(BackPropagation) 神经网络具有强大的表示能力,PB神经网络经常遭遇过拟合,其训练误差持续降低,但测试误差却可能上升。有两种策略常用来缓解BP网络的过拟合:

  • 第一种策略是“早停”(early stopping):将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。
  • 第二种策略是“正则化”(regularization),其基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权与阈值的平方和。仍令 E k E_{k} Ek表示第 k k k个训练样例上的误差, w i w_{i} wi表示连接权和阈值,则误差目标函数改变为:
    E = λ 1 m ∑ k = 1 m E k + ( 1 − λ ) ∑ i w i 2 E=\lambda\frac{1}{m}\sum\limits_{k=1}^{m}E_{k}+(1-\lambda)\sum\limits_{i}w_{i}^{2} E=λm1k=1mEk+(1λ)iwi2
    其中 λ ∈ ( 0 , 1 ) \lambda \in(0,1) λ(0,1)用于对经验误差与网络复杂度两项进行折中,常通过交叉验证法来估计。

9. 试述RBF网络,RNN循环神经网络的概念和特点

9.1 RBF(Radial Basis Function,径向基函数)网络

▶ \blacktriangleright RBF网络是一种单隐层前馈神经网络,它使用径向基函数作为隐层神经元的激活函数,而输出层则是对隐层神经元输出的线性组合

▶ \blacktriangleright 假定假定输入为 d d d维向量 x x x,输出为实值,则RBF网络表示为:
φ ( x ) = ∑ i = 1 q w i ρ ( x , c i ) \varphi(x)=\sum\limits_{i=1}^{q}w_{i}\rho(x,c_{i}) φ(x)=i=1qwiρ(x,ci)
其中 q q q 表示隐层神经元的个数, c i c_{i} ci ω i ω_{i} ωi 分为表示第 i i i个隐层神经元对应的中心和权重, ρ ( x , c i ) ρ(x, c_{i}) ρ(x,ci) 是径向基函数。

▶ \blacktriangleright ρ ( x , c i ) ρ(x, c_{i}) ρ(x,ci) 是某种沿径向对称的标量函数,通常定义为样本 x x x 到数据中心 c i c_{i} ci 之间欧氏距离的单调函数。常用的高斯径向基函数形如:
ρ ( x , c i ) = e − β i ∣ ∣ x − c i ∣ ∣ 2 \rho(x,c_{i})=e^{-\beta_{i}||x-c_{i}||^{2}} ρ(x,ci)=eβixci2

通常采用两步过程来训练RBF网络:第一步,确定神经元中心 c i c_{i} ci,常用的方式包括随机采样、聚类等;第二步,利用BP算法等来确定参数 ω i ω_{i} ωi β i β_{i} βi

9.2 递归神经网络(Recurrent Neural Networks)

与前馈神经网络不同,“递归神经网络”(Recurrent Neural Networks)允许网络出现环形结构,可让一些神经元的输出反馈回来作为输入信号,也就是网络在 t t t 时刻的输出状态不仅和输入有关,还和 t − 1 t-1 t1 时刻的网络状态有关,从而能处理与时间有关的动态变化。

Elman 网络是最常用的递归神经网络之一,其结构与多层前馈网络相似,但隐层神经元的输出被反馈回来,与下一时刻的输入层神经元提供的信号一起,作为隐层神经元下一时刻的输入。隐层神经元通常采用 S i g m o i d Sigmoid Sigmoid 激活函数,而网络的训练则常通过推广的BP算法进行。
在这里插入图片描述

10. 试述卷积神经网络的卷积、下采样(池化)过程,试述卷积神经网络的架构,如图5.15(114页)

理论上来说,参数越多的模型复杂度越高、“容量”越大,这意味着它能完成更复杂的学习任务。但一般情况下,复杂模型的训练效率低,易陷入过拟合,因此难以受到人们青睐。云计算、大数据时代的到来,计算能力的大幅提高可缓解训练低效性,训练数据的大幅增加则可降低过拟合风险,因此,以“深度学习”为代表的复杂模型开始受到人们的关注。
典型的深度学习模型就是很深层的神经网络。显然,对神经网络模型,提高容量的一个简单办法是增加隐层的数目。隐层多了,相应的神经元连接权、阈值等参数就会更多。模型复杂度也可通过单纯增加隐层神经元的数目来实现,单隐层的多层前馈网络已具有很强大的学习能力;但从增加模型复杂度的角度来看,增加隐层的数目显然比增加隐层神经元的数目更有效,因为增加隐层数不仅增加了拥有激活函数的神经元数目,还增加了激活函数嵌套的层数。
“权共享”策略能节省训练开销,即让一组神经元使用相同的连接权。这个策略在卷积神经网络中发挥了重要作用。以CNN进行手写数字识别任务为例。
在这里插入图片描述
如图所示,网络输入是一个 32 × 32 32\times32 32×32 的手写数字图像,输出是其识别结果,CNN 复合多个“卷积层”和“采样层”对输入信号进行加工。然后在连接层实现与输出目标之间的映射。每个卷积层都包含多个特征映射,每个特征映射是一个由多个神经元构成的“平面”,通过一种卷积滤波器提取输入的一种特征。

例如:上图中第一个卷积层由6个特征映射构成,每个特征映射是一个 28 × 28 28\times28 28×28 的神经元阵列,其中每个神经元负责从 5 × 5 5\times5 5×5 的区域通过卷积滤波器提取局部特征。

采样层亦称为“汇合层”,其作用是基于局部相关性原来进行亚采样,从而在减少数据量的同时保留有用信息

例如:上图中第一个采样层有6个 14 × 14 14\times14 14×14 的特征映射,其中每个神经元与上一层中对应特征映射的 2 × 2 2\times2 2×2 邻域相连,并据此计算输出。通过符合卷积层和采样层,图中的CNN将原始图像映射成120维特征向量,最后通过一个由84个神经元构成的连接层和输出层连接完成识别任务。CNN可以用BP算法进行训练,但在训练中,无论是卷积层还是采样层,其每一组神经元都是用相同的连接权,从而大幅减少了需要训练的参数数目。

11. kaggle比赛入门-手写数字识别

下载 参考数据参考代码,仔细阅读代码并详细标注代码注释。

Ref1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值