牛客网算法八股刷题系列(二)卷积函数、随机梯度下降、ReLU

牛客网算法八股刷题系列——卷积函数、随机梯度下降、ReLU

  • 题目描述
    • 正确答案: B \mathcal B B
    • 题目解析

题目描述

本节并不过多针对题目中的非线性,而更多关注随机梯度下降、卷积运算自身以及卷积运算与全连接运算在动机上的差异性。

下列哪一项在神经网络中引入了非线性 ? ( ) ?(\quad) ?()

A \mathcal A \quad A随机梯度下降

B \mathcal B\quad B修正线性单元 ( ReLU ) (\text{ReLU}) (ReLU)

C \mathcal C \quad C卷积函数

D \mathcal D \quad D以上都不正确

正确答案: B \mathcal B B

题目解析

A \mathcal A \quad A随机梯度下降 ( Stochastic Gradient Descent,SGD ) (\text{Stochastic Gradient Descent,SGD}) (Stochastic Gradient Descent,SGD)梯度下降法( Gradient Descent,GD \text{Gradient Descent,GD} Gradient Descent,GD)系列的一种算法表达。

梯度下降法的基础上,随机梯度下降的核心操作在于:每次算法迭代中的采样操作

关于机器学习算法中的代价函数 J \mathcal J J可以分解成每个样本的损失函数总和:
已知数据集合 D = { x ( i ) , y ( i ) } i = 1 N \mathcal D = \{x^{(i)},y^{(i)}\}_{i=1}^N D={x(i),y(i)}i=1N并以此作为‘真实分布/真实模型’ P d a t a \mathcal P_{data} Pdata的参考。在极大似然估计与最大后验概率估计中介绍过,真实模型是客观的,是无法准确得到的分布结果。因而 D \mathcal D D可理解为从真实分布 P d a t a \mathcal P_{data} Pdata中采集出的样本组成的集合。
J ( θ ) = E x ( i ) , y ( i ) ∈ P d a t a L ( x ( i ) , y ( i ) ; θ ) = 1 N ∑ i = 1 N L ( x ( i ) , y ( i ) ; θ ) \begin{aligned} \mathcal J(\theta) & = \mathbb E_{x^{(i)},y^{(i)} \in \mathcal P_{data}} \mathcal L(x^{(i)},y^{(i)};\theta) \\ & = \frac{1}{N} \sum_{i=1}^N \mathcal L(x^{(i)},y^{(i)};\theta) \end{aligned} J(θ)=Ex(i),y(i)PdataL(x(i),y(i);θ)=N1i=1NL(x(i),y(i);θ)
其中, L \mathcal L L损失函数,根据不同的处理任务,可使用不同的损失函数,这里不过多描述。基于梯度下降法,我们需要计算代价函数关于参数 θ \theta θ梯度 ∇ θ J ( θ ) \nabla_\theta \mathcal J(\theta) θJ(θ)
∇ θ J ( θ ) = 1 N ∑ i = 1 N ∇ θ L ( x ( i ) , y ( i ) ; θ ) \nabla_{\theta}\mathcal J(\theta) = \frac{1}{N} \sum_{i=1}^N \nabla_{\theta} \mathcal L(x^{(i)},y^{(i)};\theta) θJ(θ)=N1i=1NθL(x(i),y(i);θ)

关于随机梯度下降,它的底层逻辑是:梯度自身就是期望结果,而期望可以用小规模样本近似估计。针对上式,可以使用牛顿-莱布尼兹公式,将梯度符号与积分号调换位置
∇ θ J ( θ ) = 1 N ∇ θ [ ∑ i = 1 N L ( x ( i ) , y ( i ) ; θ ) ] \nabla_{\theta}\mathcal J(\theta) = \frac{1}{N} \nabla_{\theta} \left[\sum_{i=1}^N \mathcal L(x^{(i)},y^{(i)};\theta)\right] θJ(θ)=N1θ[i=1NL(x(i),y(i);θ)]
因而上式描述的就是: N N N个样本对应损失函数结果期望的梯度。如果样本量 N N N足够大,每一次求解梯度的代价(计算量)也是足够高的。

期望自身是可以使用小规模样本近似估计,针对庞大的数据集合 D \mathcal D D,在迭代过程中均匀抽取小批量( MiniBatch \text{MiniBatch} MiniBatch)样本 D ′ = { ( x ( i ) , y ( i ) ) } i = 1 m ∈ D \mathcal D' = \{(x^{(i)},y^{(i)})\}_{i=1}^m \in \mathcal D D={(x(i),y(i))}i=1mD,这个 m m m是一个很小的数值,从一到几百。使用这种方式进行训练,其最大的优势是大幅度缩短迭代过程中的计算时长
{ E x ( i ) , y ( i ) ∈ D ′ [ L ( x ( i ) , y ( i ) ; θ ) ] ≈ J ( θ ) g = 1 m ∇ θ [ ∑ i = 1 m L ( x ( i ) , y ( i ) ; θ ) ] ≈ ∇ θ J ( θ ) \begin{cases} \mathbb E_{x^{(i)},y^{(i)} \in \mathcal D'} \left[\mathcal L(x^{(i)},y^{(i)};\theta)\right] \approx \mathcal J(\theta)\\ g = \frac{1}{m} \nabla_{\theta} \left[\sum_{i=1}^m \mathcal L(x^{(i)},y^{(i)};\theta)\right] \approx \nabla_{\theta} \mathcal J(\theta) \end{cases} {Ex(i),y(i)D[L(x(i),y(i);θ)]J(θ)g=m1θ[i=1mL(x(i),y(i);θ)]θJ(θ)
具体执行过程表示如下:

  • 在采样之前,将数据集 D \mathcal D D内样本随机打乱顺序;
  • 打乱顺序后,从中随机抽取出 m m m个样本元素,执行梯度下降算法
    { g = 1 m ∇ θ [ ∑ i = 1 m L ( x ( i ) , y ( i ) ; θ ) ] θ ⇐ θ − η ⋅ g \begin{cases} g = \frac{1}{m} \nabla_{\theta} \left[\sum_{i=1}^m \mathcal L(x^{(i)},y^{(i)};\theta)\right] \\ \theta \Leftarrow \theta - \eta \cdot g \end{cases} {g=m1θ[i=1mL(x(i),y(i);θ)]θθηg
  • 重复执行上述操作,直到迭代过程结束为止。

关于随机梯度下降的缺点也是显而易见的:

  • 由于迭代过程中采样数量 m ≪ N m \ll N mN,这意味着 期望结果 E x ( i ) , y ( i ) ∈ D ′ [ L ( x ( i ) , y ( i ) ; θ ) ] \mathbb E_{x^{(i)},y^{(i)} \in \mathcal D'}\left[\mathcal L(x^{(i)},y^{(i)};\theta)\right] Ex(i),y(i)D[L(x(i),y(i);θ)]没有期望结果 J ( θ ) \mathcal J(\theta) J(θ)稳定。因而在梯度下降过程中,随机梯度下降更容易被噪声带偏,从而远离最优梯度方向;
    这仅仅是个别迭代步骤,但它最终会靠近最小值。但是梯度下降的路线是不稳定的。
  • 由于迭代过程采样结果的期望不稳定,因而随机梯度下降方法永远不会收敛,而是在最小值附近波动
  • 虽然迭代过程计算量减小,使得迭代产生结果速度加快,但并不意味着梯度下降得快;由于噪声的干扰,梯度下降的速度反而较慢。

回归本题,随机梯度下降的迭代过程属于线性过程:
θ ( T ) = θ ( i n i t ) − η ⋅ g 1 ⏟ θ ( 1 ) − η ⋅ g 2 ⏟ θ ( 2 ) − ⋯ − η ⋅ g T − 1 \theta^{(\mathcal T)} = \underbrace{\underbrace{\theta^{(init)} - \eta \cdot g_1}_{\theta^{(1)}} - \eta \cdot g_2}_{\theta^{(2)}} - \cdots - \eta \cdot g_{\mathcal T -1} θ(T)=θ(2) θ(1) θ(init)ηg1ηg2ηgT1

B \mathcal B \quad B修正线性单元也称整流线性单元( Rectified Linear Unit,ReLU \text{Rectified Linear Unit,ReLU} Rectified Linear Unit,ReLU)。它的公式表示为如下形式:
f ( W , b ) = max ⁡ { 0 , W T x + b } = { W T x + b if  W T x + b > 0 0 otherwise \begin{aligned} f(\mathcal W,b) & = \max \{0,\mathcal W^T x + b\} \\ & = \begin{cases} \mathcal W^T x + b \quad \text{if } W^T x + b > 0 \\ 0 \quad \text{otherwise} \end{cases} \end{aligned} f(W,b)=max{0,WTx+b}={WTx+bif WTx+b>00otherwise
该函数的对应图像表示为:
牛客网算法八股刷题系列(二)卷积函数、随机梯度下降、ReLU_第1张图片
从图像上观察,该函数显然不是一个线性函数,因而该函数用于神经网络中将线性变换转化为非线性变换

但作为大多数前馈神经网络的默认激活函数,它本质上是由两个线性部分组成的分段线性函数,因而它保留了使线性模型能够更易求解梯度的属性(例如反向传播算法)

C \mathcal C \quad C 首先,卷积函数指的是卷积运算。以离散形式的卷积为例,给定两个函数 f ( x ) , g ( x ) f(x),g(x) f(x),g(x),其卷积结果 h ( x ) h(x) h(x)表示如下:
h ( x ) = ( f ∗ g ) ( x ) = ∑ s = − ∞ + ∞ f ( s ) ⋅ g ( x − s ) \begin{aligned} h(x) & = (f * g)(x) \\ & = \sum_{s=-\infty}^{+\infty} f(s) \cdot g(x - s) \end{aligned} h(x)=(fg)(x)=s=+f(s)g(xs)
很明显,这是一个仅和 x x x相关的线性函数。关于卷积运算如何帮助改进机器学习系统,主要从 3 3 3个角度观察:
关于卷积的逻辑描述,推荐一篇文章,见参考部分。

  • 稀疏交互( Sparse Interactions \text{Sparse Interactions} Sparse Interactions):相比于全连接神经网络,卷积神经网络中层与层之间的连接是稀疏的,或者说是局部的。本层结点与下一层结点之间的关联范围核的大小决定
    牛客网算法八股刷题系列(二)卷积函数、随机梯度下降、ReLU_第2张图片
    上图描述的是输入层某神经元与其相邻接层收到影响的神经元结点。其中:

    全连接神经网络中,输入层的神经元结点与所有邻接层神经元结点之间均存在关联关系
    卷积神经网络中,输入层仅和卷积核大小范围内的神经元结点之间存在关联关系;

    如果将两层神经网络对应的权重矩阵 Flatten \text{Flatten} Flatten,得到的结果表示如下:
    这个权重 W i j \mathcal W_{ij} Wij中的 i i i j j j仅表示下标信息,即输入层第 i i i个神经元与输出层第 j j j个神经元的关联权重信息,和权重具体数值无关。
    牛客网算法八股刷题系列(二)卷积函数、随机梯度下降、ReLU_第3张图片
    这种做法减小模型的存储需求的同时,也能得到有意义的特征。并且减小了计算量。
    并且稀疏矩阵并没有因减少权重而损失信息,相反,随着层数的增加,后层神经元能够间接地连接到绝大部分的输入图像。
    2023/5/9 \text{2023/5/9} 2023/5/9补充:举一个实际例子:

    • 已知一个 3 × 3 3 \times 3 3×3大小的单通道图片数据:
      X = ( x 1 , x 2 , x 3 x 4 , x 5 , x 6 x 7 , x 8 , x 9 ) 3 × 3 \mathcal X = \begin{pmatrix} x_1,x_2,x_3 \\ x_4,x_5,x_6 \\ x_7,x_8,x_9 \end{pmatrix}_{3 \times 3} X= x1,x2,x3x4,x5,x6x7,x8,x9 3×3
    • 使用某个 2 × 2 2 \times 2 2×2卷积核 F \mathcal F F,并且步长 step = 1 \text{step}=1 step=1,且不执行填充,最终可得到一个 2 × 2 2 \times 2 2×2卷积结果 O \mathcal O O
      F = ( f 1 , f 2 f 3 , f 4 ) , X ⟹ F O = ( o 1 , o 2 o 3 , o 4 ) \mathcal F = \begin{pmatrix} f_1,f_2 \\ f_3,f_4 \end{pmatrix},\mathcal X \overset{\mathcal F}{\Longrightarrow} \mathcal O = \begin{pmatrix} o_1,o_2 \\ o_3,o_4 \end{pmatrix} F=(f1,f2f3,f4),XFO=(o1,o2o3,o4)
    • 如果将输入 X \mathcal X X卷积输出 O \mathcal O O展平 ( Flatten ) (\text{Flatten}) (Flatten),它的权重计算过程可表示为如下形式:
      牛客网算法八股刷题系列(二)卷积函数、随机梯度下降、ReLU_第4张图片
      其中各颜色的边对应卷积核的对应权重。相比全连接神经网络 4 × 9 = 36 4 \times 9 =36 4×9=36条边,卷积神经网络的 4 × 4 = 16 4 \times 4=16 4×4=16条边自然是稀疏的。
  • 参数共享( Parameter Sharing \text{Parameter Sharing} Parameter Sharing):在卷积核移动的过程中,经过的神经元均共用卷积核的参数信息;相反,全连接神经网络中相邻层之间的任意两个神经元均有唯一的权重相连接

  • 等变表示( Equivariant Representations \text{Equivariant Representations} Equivariant Representations):如果在卷积过程中,我们对某一项特征使用卷积核进行描述;当卷积到其他位置时,遇到了与之前相同的特征,该特征的描述结果要与之前的特征描述相同

相关参考:
Deep Learning \text{Deep Learning} Deep Learning(花书) P94,P181 \text{P94,P181} P94,P181——随机梯度下降
梯度下降法( SGD \text{SGD} SGD)原理解析及其改进优化方法
什么是卷积
一张图告诉你卷积神经网络"香"在哪里?

你可能感兴趣的:(算法八股查漏补缺,算法,深度学习,卷积函数,随机梯度下降,ReLU激活函数)