前言
关于课程《神经网络与深度学习》所做笔记。
本次为第5周所交作业,介绍卷积神经网络基础知识,每周总结的内容可能不连贯。文中会对基本概念简单介绍并举例子,若想深入了解,可浏览文中给出的参考文献。
本周课程内容
全连接网络
定义:
全连接神经网络(Fully Connected Neural Network,简称FCNN)是一种最基础的人工神经网络结构,也称为多层感知器(Multilayer Perceptron,MLP)。在全连接神经网络中,每个神经元都与前一层和后一层的所有神经元相连接,形成一个密集的连接结构。全连接神经网络能够学习输入数据的复杂特征,并进行分类、回归等任务。
结构:
1.
输入层:输入层负责接收原始数据,并将其传递给下一层。输入层的神经元数量取决于输入数据的维度。
2.
隐藏层:隐藏层是全连接神经网络中的中间层,可以有多个。隐藏层的神经元数量可以自由设定,每个神经元都与前一层和后一层的所有神经元相连接。
3.
输出层:输出层是全连接神经网络的最后一层,负责输出网络的预测结果。输出层的神经元数量取决于任务的类型,例如二分类任务的输出层通常有一个神经元,多分类任务的输出层有多个神经元。
4.
激活函数:激活函数用于引入非线性因素,使得神经网络能够拟合复杂的非线性关系。常见的激活函数有ReLU、Sigmoid、Tanh等。
缺点:
链接权过多,算的慢,难收敛,同时可能进入局部极小值,也容易产生过拟合问题。
例如:输入为
1000
×
1000
1000 × 1000
1000×1000图像,隐含层有
1
M
1M
1M个节点,则输入
→
\rightarrow
→隐含层间有
1
×
1
0
12
1 × 10^{12}
1×1012数量级参数
解决办法:
1.
算的慢?
减少权值连接,每一个节点只连到上一层的少数神经元,即局部连接网络。
2.
难收敛、易进入局部最小值、容易过拟合?
信息分层处理,每一层在上层提取特征的基础上获取进行再处理,得到更高级别的特征。
- 每个解决措施举一个例子进行说明
特征提取
卷积(Convolution)
在图像处理领域,给定输入图像,输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核,又称滤波器[1]。
如图1所示,假设有一个 5 × 5 5\times5 5×5的图像Image,使用一个 3 × 3 3\times3 3×3的卷积核(Filter) 进行卷积,最终可得到一个 3 × 3 3\times3 3×3的矩阵Feature Map[2]。步长在下面会介绍。
填充(Padding):
也就是在矩阵的边界上填充一些值,以增加矩阵的大小,通常用0或者复制边界像素来进行填充。
步长(Stride):
表示滤波器在输入数据上每次滑动的距离。一般来说,strides会是一个小于核大小的整数。
多通道卷积:
是卷积操作的一种扩展,用于处理具有多个通道(如RGB图像的红、绿、蓝通道)的输入数据。在这种上下文中,"通道"可以理解为数据的不同维度或特征。多通道卷积允许网络同时学习输入数据的多个特征表示。
例如:如果Image是三维的,形状为(8,8,3),Filter的形状就要变成(3,3,3),Filter最后一维要跟Image的通道维度一致。也就是Fileter的每个通道对Image的每个通道分别进行卷积操作。一般情况下,我们会同时使用多个Filter进行卷积。[3]
池化(Pooling):
使用局部统计特征,如均值或最大值;解决特征过多问题。
卷积神经网络结构
定义:
由多个卷积层和下采样层构成,后面可连接全连接网络。
结构:
1.
卷积层:
k
k
k个滤波器
2.
下采样层:采用
m
e
a
n
mean
mean或
m
a
x
max
max函数
3.
后面:连着全连接网络
学习算法
前向传播
{
z
[
l
]
(
x
,
y
)
=
∑
u
=
0
p
∑
v
=
0
q
a
[
l
−
1
]
(
x
+
u
,
y
+
v
)
w
[
l
]
,
k
(
u
,
v
)
a
[
l
]
(
x
,
y
)
=
f
(
z
[
l
]
(
x
,
y
)
)
(1)
\begin{cases} z^{[l]}(x,y)=\sum_{u=0}^p\sum_{v=0}^qa^{[l-1]}(x+u,y+v)w^{[l],k}(u,v) \\ a^{[l]}(x,y)=f(z^{[l]}(x,y)) \tag1 \end{cases}
{z[l](x,y)=∑u=0p∑v=0qa[l−1](x+u,y+v)w[l],k(u,v)a[l](x,y)=f(z[l](x,y))(1)
此处忽略卷积核的上下左右转置,因为不影响最终结果。
如果第
l
l
l层是卷积+池化层,则:
a
[
l
]
(
x
,
y
)
=
d
o
w
n
s
a
m
p
l
e
(
∑
u
=
0
p
∑
v
=
0
q
a
[
l
−
1
]
(
x
+
u
,
y
+
v
)
w
s
(
u
,
v
)
)
(2)
a^{[l]}(x,y)=downsample(\sum_{u=0}^p\sum_{v=0}^qa^{[l-1]}(x+u,y+v)w_s(u,v)) \tag2
a[l](x,y)=downsample(u=0∑pv=0∑qa[l−1](x+u,y+v)ws(u,v))(2)
误差反向传播
反向传播有许多经典算法,下面先对经典BP算法进行简单介绍。
如果当前输出层为:
δ
i
[
L
]
=
a
i
(
1
−
a
i
)
e
i
(3)
\delta_i^{[L]}=a_i(1-a_i)e_i \tag3
δi[L]=ai(1−ai)ei(3)
隐藏层(按从后向前顺序更新)为:
δ
i
[
l
]
=
[
∑
j
=
1
m
w
j
i
[
l
+
1
]
δ
j
[
l
+
1
]
]
(
a
i
[
l
]
)
′
(4)
\delta_i^{[l]}=\bigg[\sum_{j=1}^mw_{ji}^{[l+1]}\delta_j^{[l+1]} \bigg](a_i^{[l]})' \tag4
δi[l]=[j=1∑mwji[l+1]δj[l+1]](ai[l])′(4)
然后更新:
{
Δ
w
i
j
[
l
]
(
k
)
=
α
⋅
δ
i
[
l
]
⋅
j
[
l
−
1
]
a
j
[
0
]
=
x
j
(5)
\begin{cases} \varDelta w_{ij}^{[l]}(k)=\alpha\cdot\delta_i^{[l]}\cdot_j^{[l-1]} \\ a_j^{[0]}=x_j \tag5 \end{cases}
{Δwij[l](k)=α⋅δi[l]⋅j[l−1]aj[0]=xj(5)
- 除此之外,还有卷积NN的BP算法,后续有时间再做详细补充。
参考文献
[1] 深度学习:卷积神经网络中的卷积核
[2] 深度学习-CNN提取图像特征
[3] 多通道图片的卷积
其他文章推荐
[1] [透析] 卷积神经网络CNN究竟是怎样一步一步工作的?
[2] 吴恩达深度学习笔记(75)-卷积步长讲解(Strided convolutions)