华为公司电子商务网站建设策划书,天进品牌营销策划公司,张家口网站设计,seo优化排名软件#x1f308;个人主页: 鑫宝Code #x1f525;热门专栏: 闲话杂谈#xff5c; 炫酷HTML | JavaScript基础 #x1f4ab;个人格言: 如无必要#xff0c;勿增实体 文章目录 CNN的数学基础1. 引言2. 卷积运算2.1 连续卷积2.2 离散卷积2.3 互相关 3. 激活函… 个人主页: 鑫宝Code 热门专栏: 闲话杂谈 炫酷HTML | JavaScript基础 个人格言: 如无必要勿增实体 文章目录 CNN的数学基础1. 引言2. 卷积运算2.1 连续卷积2.2 离散卷积2.3 互相关 3. 激活函数3.1 ReLU (Rectified Linear Unit)3.2 Sigmoid3.3 Tanh 4. 池化操作4.1 最大池化4.2 平均池化 5. 损失函数5.1 均方误差MSE5.2 交叉熵 6. 反向传播算法6.1 链式法则6.2 卷积层的反向传播6.3 池化层的反向传播 7. 优化算法7.1 随机梯度下降SGD7.2 动量法7.3 Adam 8. 正则化技术8.1 L2正则化8.2 Dropout 9. 初始化方法9.1 Xavier初始化9.2 He初始化 10. 结论 CNN的数学基础
1. 引言
卷积神经网络Convolutional Neural NetworkCNN作为深度学习中的重要模型其强大性能背后蕴含着丰富的数学原理。本文将深入探讨CNN的数学基础包括卷积运算、激活函数、池化操作、反向传播算法以及优化方法等核心概念。通过对这些数学基础的理解我们可以更好地把握CNN的本质为进一步优化和创新CNN模型奠定基础。
2. 卷积运算
2.1 连续卷积
在数学中连续函数的卷积定义如下 ( f ∗ g ) ( t ) ∫ − ∞ ∞ f ( τ ) g ( t − τ ) d τ (f * g)(t) \int_{-\infty}^{\infty} f(\tau)g(t-\tau)d\tau (f∗g)(t)∫−∞∞f(τ)g(t−τ)dτ
其中 f f f和 g g g是两个可积函数 ∗ * ∗表示卷积操作。
2.2 离散卷积
在CNN中我们主要关注离散卷积。对于二维离散卷积其定义为 ( I ∗ K ) ( i , j ) ∑ m ∑ n I ( m , n ) K ( i − m , j − n ) (I * K)(i,j) \sum_{m}\sum_{n} I(m,n)K(i-m,j-n) (I∗K)(i,j)m∑n∑I(m,n)K(i−m,j−n)
其中 I I I是输入如图像 K K K是卷积核或称滤波器。
2.3 互相关
实际上CNN中使用的卷积操作更准确地说是互相关cross-correlation ( I ⋆ K ) ( i , j ) ∑ m ∑ n I ( i m , j n ) K ( m , n ) (I \star K)(i,j) \sum_{m}\sum_{n} I(im,jn)K(m,n) (I⋆K)(i,j)m∑n∑I(im,jn)K(m,n)
这里 ⋆ \star ⋆表示互相关操作。与真正的卷积相比互相关不需要将卷积核翻转。 3. 激活函数
激活函数为神经网络引入非线性增强模型的表达能力。
3.1 ReLU (Rectified Linear Unit)
ReLU是目前最常用的激活函数之一 f ( x ) max ( 0 , x ) f(x) \max(0, x) f(x)max(0,x)
其导数为 f ′ ( x ) { 1 , if x 0 0 , if x ≤ 0 f(x) \begin{cases} 1, \text{if } x 0 \\ 0, \text{if } x \leq 0 \end{cases} f′(x){1,0,if x0if x≤0
3.2 Sigmoid
Sigmoid函数将输入映射到(0, 1)区间 σ ( x ) 1 1 e − x \sigma(x) \frac{1}{1 e^{-x}} σ(x)1e−x1
其导数为 σ ′ ( x ) σ ( x ) ( 1 − σ ( x ) ) \sigma(x) \sigma(x)(1 - \sigma(x)) σ′(x)σ(x)(1−σ(x))
3.3 Tanh
Tanh函数将输入映射到(-1, 1)区间 tanh ( x ) e x − e − x e x e − x \tanh(x) \frac{e^x - e^{-x}}{e^x e^{-x}} tanh(x)exe−xex−e−x
其导数为 tanh ′ ( x ) 1 − tanh 2 ( x ) \tanh(x) 1 - \tanh^2(x) tanh′(x)1−tanh2(x)
4. 池化操作
池化操作用于降低特征图的空间分辨率减少参数数量和计算量。
4.1 最大池化
最大池化选择池化窗口内的最大值 y i j max ( m , n ) ∈ R i j x m n y_{ij} \max_{(m,n) \in R_{ij}} x_{mn} yij(m,n)∈Rijmaxxmn
其中 R i j R_{ij} Rij是以 ( i , j ) (i,j) (i,j)为中心的池化窗口。
4.2 平均池化
平均池化计算池化窗口内的平均值 y i j 1 ∣ R i j ∣ ∑ ( m , n ) ∈ R i j x m n y_{ij} \frac{1}{|R_{ij}|} \sum_{(m,n) \in R_{ij}} x_{mn} yij∣Rij∣1(m,n)∈Rij∑xmn
5. 损失函数
损失函数衡量模型预测与真实标签之间的差距。
5.1 均方误差MSE
对于回归问题常用均方误差 L M S E 1 N ∑ i 1 N ( y i − y ^ i ) 2 L_{MSE} \frac{1}{N} \sum_{i1}^N (y_i - \hat{y}_i)^2 LMSEN1i1∑N(yi−y^i)2
其中 y i y_i yi是真实值 y ^ i \hat{y}_i y^i是预测值 N N N是样本数量。
5.2 交叉熵
对于分类问题常用交叉熵损失 L C E − ∑ i 1 C y i log ( y ^ i ) L_{CE} -\sum_{i1}^C y_i \log(\hat{y}_i) LCE−i1∑Cyilog(y^i)
其中 C C C是类别数 y i y_i yi是真实标签one-hot编码 y ^ i \hat{y}_i y^i是预测概率。
6. 反向传播算法
反向传播是训练神经网络的核心算法用于计算损失函数对各层参数的梯度。
6.1 链式法则
反向传播基于链式法则 ∂ L ∂ w ∂ L ∂ y ⋅ ∂ y ∂ x ⋅ ∂ x ∂ w \frac{\partial L}{\partial w} \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial x} \cdot \frac{\partial x}{\partial w} ∂w∂L∂y∂L⋅∂x∂y⋅∂w∂x
其中 L L L是损失函数 w w w是待优化的参数。
6.2 卷积层的反向传播
对于卷积层我们需要计算损失函数对卷积核权重的梯度 ∂ L ∂ K ∑ i , j ∂ L ∂ Y i j ⋅ X i j \frac{\partial L}{\partial K} \sum_{i,j} \frac{\partial L}{\partial Y_{ij}} \cdot X_{ij} ∂K∂Li,j∑∂Yij∂L⋅Xij
其中 K K K是卷积核 Y Y Y是输出特征图 X X X是输入特征图。
6.3 池化层的反向传播
对于最大池化梯度只传递给池化窗口中的最大值元素 ∂ L ∂ x m n { ∂ L ∂ y i j , if x m n max ( m , n ) ∈ R i j x m n 0 , otherwise \frac{\partial L}{\partial x_{mn}} \begin{cases} \frac{\partial L}{\partial y_{ij}}, \text{if } x_{mn} \max_{(m,n) \in R_{ij}} x_{mn} \\ 0, \text{otherwise} \end{cases} ∂xmn∂L{∂yij∂L,0,if xmnmax(m,n)∈Rijxmnotherwise
对于平均池化梯度平均分配给池化窗口内的所有元素 ∂ L ∂ x m n 1 ∣ R i j ∣ ∂ L ∂ y i j \frac{\partial L}{\partial x_{mn}} \frac{1}{|R_{ij}|} \frac{\partial L}{\partial y_{ij}} ∂xmn∂L∣Rij∣1∂yij∂L
7. 优化算法
优化算法用于更新网络参数最小化损失函数。
7.1 随机梯度下降SGD
最基本的优化算法是随机梯度下降 w t 1 w t − η ∇ L ( w t ) w_{t1} w_t - \eta \nabla L(w_t) wt1wt−η∇L(wt)
其中 η \eta η是学习率 ∇ L ( w t ) \nabla L(w_t) ∇L(wt)是损失函数关于参数 w t w_t wt的梯度。
7.2 动量法
动量法引入了历史梯度信息加速收敛 v t 1 γ v t η ∇ L ( w t ) w t 1 w t − v t 1 \begin{aligned} v_{t1} \gamma v_t \eta \nabla L(w_t) \\ w_{t1} w_t - v_{t1} \end{aligned} vt1wt1γvtη∇L(wt)wt−vt1
其中 γ \gamma γ是动量系数。
7.3 Adam
Adam结合了动量法和自适应学习率 m t β 1 m t − 1 ( 1 − β 1 ) ∇ L ( w t ) v t β 2 v t − 1 ( 1 − β 2 ) ( ∇ L ( w t ) ) 2 m ^ t m t 1 − β 1 t v ^ t v t 1 − β 2 t w t 1 w t − η v ^ t ϵ m ^ t \begin{aligned} m_t \beta_1 m_{t-1} (1-\beta_1) \nabla L(w_t) \\ v_t \beta_2 v_{t-1} (1-\beta_2) (\nabla L(w_t))^2 \\ \hat{m}_t \frac{m_t}{1-\beta_1^t} \\ \hat{v}_t \frac{v_t}{1-\beta_2^t} \\ w_{t1} w_t - \frac{\eta}{\sqrt{\hat{v}_t} \epsilon} \hat{m}_t \end{aligned} mtvtm^tv^twt1β1mt−1(1−β1)∇L(wt)β2vt−1(1−β2)(∇L(wt))21−β1tmt1−β2tvtwt−v^t ϵηm^t
其中 β 1 \beta_1 β1和 β 2 \beta_2 β2是衰减率 ϵ \epsilon ϵ是一个小常数。
8. 正则化技术
正则化用于防止过拟合提高模型的泛化能力。
8.1 L2正则化
L2正则化在损失函数中添加参数的平方和 L r e g L λ 2 ∑ w w 2 L_{reg} L \frac{\lambda}{2} \sum_w w^2 LregL2λw∑w2
其中 λ \lambda λ是正则化系数。
8.2 Dropout
Dropout随机丢弃一部分神经元可以看作是集成学习的一种形式。在训练时 y f ( W x ) ⊙ m , m i ∼ Bernoulli ( p ) y f(Wx) \odot m, \quad m_i \sim \text{Bernoulli}(p) yf(Wx)⊙m,mi∼Bernoulli(p)
其中 ⊙ \odot ⊙表示元素wise乘法 m m m是一个二元掩码 p p p是保留神经元的概率。
9. 初始化方法
参数初始化对CNN的训练至关重要。
9.1 Xavier初始化
Xavier初始化适用于tanh激活函数 W ∼ U ( − 6 n i n n o u t , 6 n i n n o u t ) W \sim U\left(-\sqrt{\frac{6}{n_{in} n_{out}}}, \sqrt{\frac{6}{n_{in} n_{out}}}\right) W∼U(−ninnout6 ,ninnout6 )
其中 n i n n_{in} nin和 n o u t n_{out} nout分别是输入和输出的神经元数量。
9.2 He初始化
He初始化适用于ReLU激活函数 W ∼ N ( 0 , 2 n i n ) W \sim N\left(0, \sqrt{\frac{2}{n_{in}}}\right) W∼N(0,nin2 )
10. 结论
本文深入探讨了CNN的数学基础包括卷积运算、激活函数、池化操作、反向传播算法、优化方法、正则化技术和初始化方法等核心概念。这些数学原理构成了CNN的理论基础对于理解CNN的工作原理、改进现有模型和设计新的架构都至关重要。
随着深度学习的不断发展CNN的数学理论也在不断完善和扩展。例如群论在解释CNN的等变性方面发挥了重要作用而信息论则为理解CNN的表示学习能力提供了新的视角。未来结合更多数学分支的研究将有助于我们更深入地理解CNN推动其在各个领域的应用和创新。