文章目录
卷积神经网络
CNN
即卷积神经网络(Convolutional Neural Networks),是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习领域的核心成员之一。
定义
CNN是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习领域的代表算法之一。它特别适用于处理图像数据,能够通过卷积操作自动提取图像特征,并通过池化、全连接等操作实现特征的进一步处理和分类。
数学原理与公式
CNN的数学原理主要基于卷积运算、池化操作和全连接层的前馈计算。
-
卷积运算:
- 输入:输入图像(或特征图)表示为一个矩阵。
- 卷积核:一个小矩阵,也叫滤波器或权重矩阵。
- 输出:输出特征图。
卷积运算的公式可以表示为:
( f ∗ g ) ( n ) = ∑ m = − ∞ ∞ f ( m ) g ( n − m ) (f*g)(n) = \sum_{m=-\infty}^{\infty} f(m)g(n-m) (f∗g)(n)=m=−∞∑∞f(m)g(n−m)在离散情况下,假设输入图像为 X X X,卷积核为 W W W,则卷积运算可以表示为:
Y ( i , j ) = ∑ m ∑ n X ( i + m , j + n ) W ( m , n ) Y(i, j) = \sum_{m} \sum_{n} X(i+m, j+n)W(m, n) Y(i,j)=m∑n∑X(i+m,j+n)W(m,n) -
池化操作:
- 池化操作主要用于降低特征图的维度,减少计算量,同时保留重要特征。
- 常见的池化操作有最大池化(Max Pooling)和平均池化(Average Pooling)。
池化操作的公式可以表示为:
Y ( i , j ) = max m , n ∈ R i j X ( m , n ) (Max Pooling) Y(i, j) = \max_{m,n \in R_{ij}} X(m, n) \quad \text{(Max Pooling)} Y(i,j)=m,n∈RijmaxX(m,n)(Max Pooling)
Y ( i , j ) = 1 ∣ R i j ∣ ∑ m , n ∈ R i j X ( m , n ) (Average Pooling) Y(i, j) = \frac{1}{|R_{ij}|} \sum_{m,n \in R_{ij}} X(m, n) \quad \text{(Average Pooling)} Y(i,j)=∣Rij∣1m,n∈Rij∑X(m,n)(Average Pooling)其中, R i j R_{ij} Rij表示池化窗口在特征图上的区域。
-
全连接层:
- 全连接层将前面卷积层和池化层提取的特征进行综合,通过权重和偏置进行线性变换,然后通过激活函数进行非线性变换,最终得到分类或回归结果。
全连接层的公式可以表示为:
Y = φ ( W X + b ) Y = \varphi(WX + b) Y=φ(WX+b)其中, W W W是权重矩阵, X X X是输入特征向量, b b b是偏置向量, φ \varphi φ是激活函数。
计算与定理
CNN的计算过程主要包括前向传播和反向传播。在前向传播过程中,输入图像通过卷积层、池化层和全连接层逐层计算得到输出。在反向传播过程中,根据损失函数的梯度通过链式法则逐层更新网络参数。
关于CNN的定理,虽然没有像传统数学那样的严格定理,但有一些重要的结论和性质。例如,CNN具有平移不变性(Shift Invariance),即输入图像的小幅平移不会改变卷积层的输出。此外,CNN通过局部连接和权重共享等机制有效减少了网络参数的数量,降低了过拟合的风险。
架构
CNN的架构通常由输入层、卷积层、池化层、全连接层和输出层组成。其中,卷积层和池化层是CNN的核心组成部分,它们负责提取图像特征并降低特征维度。全连接层则负责将提取的特征进行综合和分类。
例子
以经典的LeNet-5网络为例,它包含两个卷积层、两个池化层和一个全连接层。LeNet-5网络主要用于手写数字识别任务,通过卷积层提取图像特征,通过池化层降低特征维度,最后通过全连接层进行分类。
例题
例题:假设有一个5x5的输入图像,使用一个3x3的卷积核进行卷积操作,步长为1,没有填充。请计算输出特征图的大小。
解答 :根据卷积运算的公式,输出特征图的大小可以通过以下公式计算:
N = ( W − F + 2 P ) / S + 1 N = (W - F + 2P) / S + 1 N=(W−F+2P)/S+1
其中, N N N是输出特征图的大小, W W W是输入图像的大小, F F F是卷积核的大小, P P P是填充的大小, S S S是步长。将题目中的参数代入公式,得到:
N = ( 5 − 3 + 2 × 0 ) / 1 + 1 = 3 N = (5 - 3 + 2 \times 0) / 1 + 1 = 3 N=(5−3+2×0)/1+1=3
因此,输出特征图的大小为3x3。
全连接层的前馈计算
是神经网络中的一项基本运算,它涉及将前一层的所有神经元的输出作为当前层每个神经元的输入,并通过加权求和与激活函数处理,最终得到当前层的输出。以下是全连接层前馈计算的详细解释:
定义
全连接层(Fully Connected Layer),也称为密集层(Dense Layer),是神经网络中的一种层结构。在这种结构中,当前层的每个神经元都与前一层的每个神经元相连接。因此,这种连接方式被称为全连接。前馈计算则是指数据在神经网络中从输入层向输出层单向传播的过程。
数学原理与公式
全连接层的前馈计算可以通过以下公式表示:
-
加权求和 :
z j = ∑ i = 1 n w i j x i + b j z_j = \sum_{i=1}^{n} w_{ij}x_i + b_j zj=i=1∑nwijxi+bj其中, z j z_j zj是当前层第 j j j个神经元的净输入, x i x_i xi是前一层的第 i i i个神经元的输出, w i j w_{ij} wij是第 i i i个神经元到第 j j j个神经元的连接权重, b j b_j bj是第 j j j个神经元的偏置项, n n n是前一层的神经元数量。
-
激活函数 :
a j = σ ( z j ) a_j = \sigma(z_j) aj=σ(zj)其中, a j a_j aj是当前层第 j j j个神经元的输出, σ \sigma σ是激活函数。常见的激活函数包括ReLU(Rectified Linear Unit)、sigmoid和tanh等。
计算过程
全连接层的前馈计算过程可以概括为以下几个步骤:
- 输入数据:将前一层的输出作为当前层的输入数据。
- 加权求和:根据公式计算当前层每个神经元的净输入。
- 激活函数:将每个神经元的净输入通过激活函数进行非线性变换,得到当前层的输出。
示例
假设有一个全连接层,前一层的输出为 x = [ x 1 , x 2 , x 3 ] x = [x_1, x_2, x_3] x=[x1,x2,x3],当前层的权重矩阵为 W = [ w 11 w 12 w 13 w 21 w 22 w 23 ] W = \begin{bmatrix} w_{11} & w_{12} & w_{13} \\ w_{21} & w_{22} & w_{23} \end{bmatrix} W=[w11w21w12w22w13w23],偏置项为 b = [ b 1 , b 2 ] b = [b_1, b_2] b=[b1,b2],激活函数为ReLU。则全连接层的前馈计算过程如下:
-
加权求和 :
z 1 = w 11 x 1 + w 12 x 2 + w 13 x 3 + b 1 z_1 = w_{11}x_1 + w_{12}x_2 + w_{13}x_3 + b_1 z1=w11x1+w12x2+w13x3+b1
z 2 = w 21 x 1 + w 22 x 2 + w 23 x 3 + b 2 z_2 = w_{21}x_1 + w_{22}x_2 + w_{23}x_3 + b_2 z2=w21x1+w22x2+w23x3+b2 -
激活函数 :
a 1 = max ( 0 , z 1 ) a_1 = \max(0, z_1) a1=max(0,z1)
a 2 = max ( 0 , z 2 ) a_2 = \max(0, z_2) a2=max(0,z2)
最终,当前层的输出为 a = [ a 1 , a 2 ] a = [a_1, a_2] a=[a1,a2]。
全连接层的前馈计算是神经网络中的一项基本运算,它通过加权求和与激活函数处理,实现了数据在神经网络中的前向传播。
参考文献
- 文心一言