

🌈个人主页: 鑫宝Code
🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础
💫个人格言: "如无必要,勿增实体"
CNN的数学基础
1. 引言
卷积神经网络(Convolutional Neural Network,CNN)作为深度学习中的重要模型,其强大性能背后蕴含着丰富的数学原理。本文将深入探讨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(i+m,j+n)K(m,n) (I⋆K)(i,j)=m∑n∑I(i+m,j+n)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 x>0if x≤0
3.2 Sigmoid
Sigmoid函数将输入映射到(0, 1)区间:
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−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)=ex+e−xex−e−x
其导数为:
tanh ′ ( x ) = 1 − tanh 2 ( x ) \tanh'(x) = 1 - \tanh^2(x)