人工神经网络(ANN)

本文详细介绍了人工神经网络(ANN)的基础知识,包括全连接神经网络的结构、参数初始化、前向传播和反向传播过程。讨论了激活函数的作用,如sigmoid和ReLU,并提到了损失函数,尤其是交叉熵在分类问题中的应用。此外,文章还涵盖了过拟合的应对措施,如数据增强、正则化和dropout。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  人工神经网络是一个模型,配套的东西还有损失函数和优化方法,这样就构成了完整的统计学习方法三要素:模型、策略、学习。

  广义上,深度学习就是利用神经网络进行学习,但严格来说,非线性深层神经网络才是深度学习,由于线性神经网络无法进行异或运算,最近的研究又在不断延伸神经网络的深度和宽度,所以一般提及神经网络,说的都是非线性深层神经网络。

  Deep Learning强大的地方就是可以利用网络中间某一层的输出当做是数据的另一种表达,从而可以将其认为是经过网络学习到的特征。基于该特征,可以进行进一步的相似度比较等。

  Deep Learning算法能够有效的关键其实是大规模的数据,这一点原因在于每个DL都有众多的参数,少量数据无法将参数训练充分。

1. 常见的神经网络

  常见的神经网络有:全连接神经网络(FCNN)、卷积神经网络(CNN)及其分支(ResNet、DenseNet等)、循环神经网络(RNN)及其分支(LSTM等)、径向基神经网络(RBF)、自动编码器(Auto Encoder)、受限玻尔兹曼机(RBM)等等。


2. 全连接神经网络

  全连接神经网络是最简单、最基础的神经网络,本blog主要讲述全连接神经网络,全连接神经网络的后一层神经元,一定和前一层的所有神经元都有连接,数据流向是从前一层神经元流向后一层,全连接神经网络是一个前馈神经网络,没有闭环或回路。

2.1. 神经元

  1943年,McCulloch和Pitts将生物的神经元结构用一种简单的模型进行了表示,构成了一种人工神经元模型,也就是我们现在经常用到的“M-P神经元模型”,全连接神经元利用的就是这种MP神经元,在其他神经网络中,神经元的结构会略有不同,MP神经元结构如下:

  MP神经元结构可以简化成下式: y j = f ( ∑ i = 1 n x i w i j + x 0 w 0 j ) = f ( ∑ i = 1 n x i w i j − θ ) y_{j}=f(\sum\limits_{i=1}^{n}x_{i}w_{ij}+x_{0}w_{0j})=f(\sum\limits_{i=1}^{n}x_{i}w_{ij}-\theta) yj=f(i=1nxiwij+x0w0j)=f(i=1nxiwijθ)

  其中 { x 1 … x n } \{x_{1}\dots x_{n}\} { x1xn}是神经元的输入; { w 1 j … w n j } \{w_{1j}\dots w_{nj}\} { w1jwnj}是输入对应的权重, θ \theta θ是偏置, w w w θ \theta θ是神经网络重点学习的参数对象; f ( ⋅ ) f(·) f()是激活函数,激活函数会在后面单独的说, 经过激活函数的值,又称为激活值


2.2. 激活函数

  MP神经元中,( ∑ i = 1 n x i w i j − θ \sum\limits_{i=1}^{n}x_{i}w_{ij}-\theta i=1nxiwijθ)部分是完全的线性运算,要想实现非线性,必须借助非线性的激活函数,激活函数也是整个神经网络的非线性特性的重要来源。
  sigmoid函数系有两个激活函数logistic-sigmoid与tanh-sigmoid,常用的激活函数还有ReLU激活函数(Rectified Linear Unit,线性整流函数)和softplus激活函数,ReLU激活函数更贴近生物神经元的工作方式。下面给出logistic-sigmoid与tanh的函数曲线:

下面给出softplus与ReLU的函数曲线

真实的人脑神经元激活曲线是这样的

真实的人脑神经元激活曲线有一个很明显的激活阈值,而且是稀疏激活(大脑同时被激活的神经元只有1%~4%)。可见sigmoid函数系完全不像人脑,softplus函数的激活阈值并不明显,ReLU最像人脑的真实神经元激活曲线。


2.3. 参数初始化

  由上面的分析,我们知道全连接神经网络的要训练的参数,主要有权值 w w w和偏置 b b b,在真正开始学习前,我们要先对参数进行初始化。

  常用的初始化方法,是把这些参数按照高斯分布 N ( 0 , σ 2 ) N(0, \sigma^{2}) N(0,σ2)进行初始化,其中 σ \sigma σ是一个很小的值,为何要引入随机性,主要是为了打破对称性,如果层与层之间的权值和偏置是一样的,那么每一层的神经元的输出结果全是一样的,神经网络的学习能力就会受限,这显然不是我们想要的结果。

2.4. 前行传播(Forward propagation,FP)计算结果

  由多个MP神经元,就构成了全连接神经网络的一层,多个层组合成全连接神经网络,下面列出了一个简单的,只有一个隐层的全连接神经网络:

这是一个前馈神经网络的例子,因为这种联接图没有闭环或回路。用矩阵表示隐藏层的输出是
[ a 1 ( 2 ) , a 2 ( 2 ) , a 3 ( 2 ) ] = [ f ( z 1 ( 2 ) ) , f ( z 2 ( 2 ) ) , f ( z 3 ( 2 ) ) ] z 1 ( 2 ) = [ x 1 , x 2 , x 3 ] [ w 11 ( 2 ) w 12 ( 2 ) w 13 ( 2 ) ] + b 1 ( 2 ) z 2 ( 2 ) = [ x 1 , x 2 , x 3 ] [ w 21 ( 2 ) w 22 ( 2 ) w 23 ( 2 ) ] + b 2 ( 2 ) z 3 ( 2 ) = [ x 1 , x 2 , x 3 ] [ w 31 ( 2 ) w 32 ( 2 ) w 33 ( 2 ) ] + b 3 ( 2 ) \begin{aligned} \left [a_{1}^{(2)}, a_{2}^{(2)}, a_{3}^{(2)}\right ] &= \left [f(z_{1}^{(2)}), f(z_{2}^{(2)}), f(z_{3}^{(2)})\right ] \\ z_{1}^{(2)} = &\left[ x_{1}, x_{2}, x_{3}\right] \left[ \begin{matrix} w_{11}^{(2)}\\ w_{12}^{(2)}\\ w_{13}^{(2)} \end{matrix} \right] + b_{1}^{(2)}\\ z_{2}^{(2)} = &\left[ x_{1}, x_{2}, x_{3}\right] \left[ \begin{matrix} w_{21}^{(2)}\\ w_{22}^{(2)}\\ w_{23}^{(2)} \end{matrix} \right] + b_{2}^{(2)} \\ z_{3}^{(2)} = &\left[ x_{1}, x_{2}, x_{3}\right] \left[ \begin{matrix} w_{31}^{(2)}\\ w_{32}^{(2)}\\ w_{33}^{(2)} \end{matrix} \right] + b_{3}^{(2)} \end{aligned} [a1(2),a2(2),a3(2)]z1(2)=z2(2)=z3(2)==[f(z1(2)),f(z2(2)),f(z3(2))][x1,x2,x3]w11(2)w12(2)w13(2)+b1(2)[x1,x2,x3]w21(2)w22(2)w23(2)+b2(2)[x1,x2,x3]w31(2)w32(2)w33(2)+b3(2)

值得注意的一点是,这里 w i j ( m ) w_{ij}^{(m)} wij(m)表示第 m − 1 m-1 m1层的 j j j单元到 m m m层的 i i i单元的权值(-1的操作),在不同的博客中, w i j ( m ) w_{ij}^{(m)} wij(m)右上角的 m m m值可能会表示 m m m层与 m + 1 m+1 m+1层的链接权值(+1的操作),当然 i j ij ij的含义可能也有不同, i i i可能表示前一层的神经元,所以在看别人blog时一定要注意这一点。这篇blog中, w i j ( m ) w_{ij}^{(m)} wij(m)表示第 m − 1 m-1 m1层的 j j j单元到 m m m层的 i i i单元的权值。同时,用矩阵表示输出层的输出就是
[ a 1 ( 3 ) , a 2 ( 3 ) ] = [ f ( z 1 ( 3 ) ) , f ( z 2 ( 3 ) ) ] z 1 ( 3 ) = [ a 1 ( 2 ) , a 2 ( 2 ) , a 3 ( 2 ) ] [ w 11 ( 3 ) w 12 ( 3 ) w 13 ( 3 ) ] + b 1 ( 3 ) z 2 ( 3 ) = [ a 1 ( 2 ) , a 2 ( 2 ) , a 3 ( 2 ) ] [ w 21 ( 3 ) w 22 ( 3 ) w 23 ( 3 ) ] + b 2 ( 3 ) \begin{aligned} \left [a_{1}^{(3)}, a_{2}^{(3)}\right ] &= \left [f(z_{1}^{(3)}), f(z_{2}^{(3)})\right ] \\ z_{1}^{(3)} = &\left[ a_{1}^{(2)}, a_{2}^{(2)}, a_{3}^{(2)}\right] \left[ \begin{matrix} w_{11}^{(3)}\\ w_{12}^{(3)}\\ w_{13}^{(3)} \end{matrix} \right] + b_{1}^{(3)}\\ z_{2}^{(3)} = &\left[ a_{1}^{(2)}, a_{2}^{(2)}, a_{3}^{(2)}\right] \left[ \begin{matrix} w_{21}^{(3)}\\ w_{22}^{(3)}\\ w_{23}^{(3)} \end{matrix} \right] + b_{2}^{(3)} \end{aligned} [a1(3),a2(3)]z1(3)=z2(3)==[f(z1(3)),f(z2(3))][a1(2),a2(2),a3(2)]w11(3)w12(3)w13(3)+b1(3)[a

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值