深度学习基本概念

本文详细解释了深度学习中的核心概念,包括批处理大小(batch size)、迭代(iteration)、周期(epoch)等,并介绍了卷积神经网络中的下采样与上采样技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

batch size

一个训练集过大(m个样例),需要划分。

  1. 划分为1个:
    • 名称:batch梯度下降
    • batch_size = m
    • 用整个训练集进行梯度下降
  2. 划分为5个:
    • 名称:mini-batch梯度下降
    • batch_size = m/5
  3. 划分为m个:
    • 名称:随机梯度下降
    • batch_size = 1
    • 一次对一个样例数据进行梯度下降

epoch

对整个训练集进行一次梯度下降:即所有的训练样本完成一次forward和backward propagation
对于训练集划分为5个子集:就是对5个子集都执行完。
一般样本要过很多次,多个epoch,直到收敛。

iteration

迭代,表示进行了一次梯度下降,更新了一次网络参数。
iteration=[batch_size]个训练数据forward+backward后更新参数过程

episode

一个状态、动作和回报的序列,以终止状态结束。对于围棋,从头到尾下一盘棋就是一个episode。是强化学习中的概念。

下采样

下采样层有两个作用,一是减少计算量,防止过拟合;二是增大感受野,使得后面的卷积核能够学到更多更加全面的信息。
下采样的方式主要有两种:

  1. 采用stride为2的池化层,如Max-pooling和Average-pooling ,目前通常使用Max-pooling,因为他计算简单而且能够更好的保留纹理特征;
  2. 采用stride为2的卷积层,下采样的过程是一个信息损失的过程,而池化层是不可学习的,用stride为2的可学习卷积层来代替pooling可以得到更好的效果,当然同时也增加了一些计算量

卷积

一个尺寸 insize×insize\rm in_{size}\times in_{size}insize×insize 的特征图,经过 convsize×convsize\rm conv_{size}\times conv_{size}convsize×convsize 的卷积层,步幅为stride\rm stridestride,填充为paddingsize\rm padding_{size}paddingsize,计算出输出的特征图尺寸:
outsize=insize−convsize+2×paddingsizestride+1 \rm out_{size}= \dfrac{in_{size}-conv_{size}+2\times padding_{size}}{stride}+1 outsize=strideinsizeconvsize+2×paddingsize+1

例:输入4*4,卷积核3*3,stride = 1,padding = 0
                         输出尺寸 = (4-3+0)/1 + 1 = 2

在这里插入图片描述

输入5*5,卷积核3*3,stride = 1,padding = 1
                         输出尺寸 = (5-3+2)/1 + 1 = 5

在这里插入图片描述

输入5*5,卷积核3*3,stride = 2,padding = 0
                        输出尺寸 = (5-3+0)/2 + 1 = 2

在这里插入图片描述

输入6*6,卷积核3*3,stride = 2,padding = 1  
                      输出尺寸 = int(6-3+2)/2 + 1 = 3
注意:这里的padding有一列是没有参与卷积的,因为stride为2没有办法采样到这一列

在这里插入图片描述

VGG得出多层窄卷积层比少层宽卷积层更强大

上采样的原理和常用方式

在卷积神经网络中,由于输入图像通过卷积神经网络CNN提取特征后,输出的尺寸往往会变小,而有时我们需要将图像恢复到原来的尺寸以便进一步的计算,这个使图像由小分辨率映射到大分辨率的操作,叫上采样,它的实现一般有三种方式:

  • 插值, 一般使用的是双线性插值,因为效果最好,虽然计算上比其他插值方式复杂,但是相对于卷积计算可以说不值一提,其他插值方式还有最近邻插值、三线性插值等;
  • 转置卷积又称反卷积(Transpose Conv),通过对输入feature map间隔填充0,再进行标准的卷积计算,可以使输出feature map尺寸比输入更大;
  • Up-Pooling Max Unpooling Avg Unpooling Max Unpooling 在对称的max pooling位置记录最大值的索引位置,然后在unpooling阶段时将对应的值放置到原先最大值位置,其余补零。

Batch Normalization

归一化,提高模型泛化能力,加速模型训练,并防止梯度爆炸等问题
对每个channel通道计算平均值和方差,然后基于计算出的平均值和方差进行归一化
x^i=xi−μσ2+ϵ \mathbf{\hat{x}_i}=\frac{\mathbf{x_i}-\mathbf{\mu}}{\sqrt{\mathbf{\sigma^2}+\mathbf{\epsilon}}} x^i=σ2+ϵxiμ
ϵ\epsilonϵ是一个非常小的正数,用来保证数值的稳定性,防止计算过程中出现除以零的情况。
对归一化后的数据进行缩放和平移
BN(xi)=γ∗x^i+β \mathbf{BN(x_i)=\gamma*\hat{x}_i+\beta} BN(xi)=γx^i+β
γ\gammaγ是缩放因子,用于调整归一化数据的尺度;β\betaβ是平移因子,用于调整归一化后的数据平移。它们可以适应性的调整数据分布,更好地满足网络的训练。

激活函数

ReLU (Rectified Linear Unit - 修正线性单元)

ReLU 是目前最受欢迎的激活函数之一。它的定义非常简单:

  • 当输入大于0时,输出就是输入本身。
  • 当输入小于或等于0时,输出为0。

数学表达式为: f(x)=max⁡(0,x)f(x) = \max(0, x)f(x)=max(0,x)

优点:

  • 计算速度快,因为只涉及到比较和乘法。
  • 在正数区间(x > 0)梯度恒为1,可以有效缓解梯度消失问题。

缺点:

  • Dying ReLU Problem (神经元死亡问题): 当输入为负数时,ReLU的梯度为0。如果一个神经元的输出在训练过程中恒为负,那么这个神经元的权重将永远不会更新。这个神经元就“死亡”了。

ELU (Exponential Linear Unit - 指数线性单元)

ELU 是 ReLU 的一个变体,旨在解决“神经元死亡”的问题。

  • 当输入大于0时,它和 ReLU 一样,输出就是输入本身。
  • 当输入小于或等于0时,它会输出一个会慢慢饱和到 -α 的负值。

数学表达式为(通常 α 取值为1):
f(x)={xif x>0α(ex−1)if x≤0 f(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha(e^x - 1) & \text{if } x \le 0 \end{cases} f(x)={xα(ex1)if x>0if x0

ELU vs. ReLU 的主要区别

  1. 对负值的处理:

    • ReLU 将所有负输入都变为0。
    • ELU 对负输入给出一个负的输出。这使得神经元的平均激活值可以更接近于0,类似于批归一化(Batch Normalization)的效果,有助于加速学习。
  2. 神经元死亡问题:

    • ReLU 存在这个问题,因为负输入的梯度为0。
    • ELU 通过对负值区域提供一个非零的梯度,缓解了这个问题。
  3. 计算复杂度:

    • ReLU 的计算非常简单(一个 max 操作)。
    • ELU 的计算中包含了指数运算 (exp),因此计算量会比 ReLU 稍大一些。

总结:

特性ReLUELU
正值输入(x)(x)
负值输入0α(ex−1)\alpha(e^x - 1)α(ex1)
输出均值倾向于正更接近于0
神经元死亡存在风险基本解决
计算速度非常快稍慢

总的来说,ELU 在很多情况下可以比 ReLU 带来更好的性能和更快的收敛速度,因为它解决了 ReLU 的一些关键短板。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shilong Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值