课程视频链接
CNN卷积神经网络算法原理
全神经网络的整体结构
输入层(x1, x2, x3…)->隐藏层(全连接)->输出层,整体就类似于一个函数,输入x,经过函数module(x)得到输出y的过程,图像可以看成一个矩阵例如128 * 128的图片就是一个128 * 128的矩阵作为输入x,这就是全连接神经网络,他是深度学习的基础。后面讲的卷积神经网络和他类似,主要将隐藏层换成卷积核
全连接神经网络的结构单元
深度学习一般是从单元到整体,然后搭建一个基础模型model,这个model可能由许多model进行排列组合构成,例如:1 * model1 + 2 * model2 + 5 * model3等等,然后通过这个model,输入x,得到y,如果发现y的结果很好,则可以根据这个model写一篇论文,这就是创新的地方。任何一个单元结构都是通过组合而成的。
输入(x1, x2, x3…)已经确定,所以优化模型的突破点在于改变w1, w2, w3…以及z,也就是找到一组最优的参数(w和b,它们都是矩阵)使得结果最优,所谓结果最优,就是最接近我们所希望的输出。
为什么要加入非线性激活函数
激活函数一般为非线性函数(非直线)。下图解释了,当激活函数为线性函数的时候出现的问题,多层的神经网络并没有起到效果,等价于一个参数,相当于只有一层,就不能发挥层数的作用。深度学习中,往往层数越多,效果越好,例如ResNet在保证深度的同时,又不会过拟合
Sigmoid激活函数
主要记忆函数图像以及导数的图像,因为导数是用来求参数(w和b)
Tanh激活函数
导数值越大,找参数(w和b)就会更快,当导数趋近为0的时候,w和b也就趋于确定
ReLu激活函数
知识积累
激活函数
激活函数是神经网络中用于引入非线性因素的重要组成部分。它在每个神经元的输出上应用,以决定是否以及如何传递信息到下一层。不同的激活函数对模型的学习和表现有不同的影响。
常见的激活函数包括:
-
Sigmoid(S形函数):
- 公式: σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1
- 输出范围:0 到 1
- 应用:多用于二分类问题,特别是最后一层。
- 缺点:容易出现梯度消失问题。
-
Tanh(双曲正切函数):
- 公式: tanh ( x ) = 2 1 + e − 2 x − 1 \tanh(x) = \frac{2}{1 + e^{-2x}} - 1 tanh(x)=1+e−2x2−1
- 输出范围:-1 到 1
- 应用:相比于 Sigmoid,Tanh 的输出更加中心对称,因此在某些应用中表现更好。
- 缺点:同样存在梯度消失问题。
-
ReLU(Rectified Linear Unit,修正线性单元):
- 公式: R e L U ( x ) = max ( 0 , x ) ReLU(x) = \max(0, x) ReLU(x)=max(0,x)
- 输出范围:0 到正无穷
- 应用:非常常用的激活函数,特别是在深度神经网络中。
- 优点:计算简单,收敛速度快。
- 缺点:当输入为负值时,梯度为零,可能导致“神经元死亡”问题。
-
Leaky ReLU:
- 公式: L e a k y R e L U ( x ) = max ( α x , x ) Leaky ReLU(x) = \max(\alpha x, x) LeakyReLU(x)=max(αx,x),其中 α \alpha α 是一个很小的正数(如 0.01)。
- 应用:是 ReLU 的改进版,解决了 ReLU 的神经元死亡问题。
-
Softmax:
- 公式: s o f t m a x ( x i ) = e x i ∑ j e x j softmax(x_i) = \frac{e^{x_i}}{\sum_{j}e^{x_j}} softmax(xi)=∑jexjexi
- 输出范围:0 到 1,且所有输出的和为 1。
- 应用:通常用于多分类问题的最后一层,生成概率分布。
-
ELU(Exponential Linear Unit):
- 公式: ELU ( x ) = x \text{ELU}(x) = x ELU(x)=x当 x ≥ 0 x \geq 0 x≥0, ELU ( x ) = α ( e x − 1 ) \text{ELU}(x) = \alpha(e^x - 1) ELU(x)=α(ex−1) 当 x < 0 x < 0 x<0
- 应用:减少了 ReLU 函数中负输入部分的“神经元死亡”问题。
每种激活函数都有其特定的应用场景,根据模型的架构和任务的需求,选择合适的激活函数能够显著提升神经网络的表现。