本节并不过多针对题目中的非线性,而更多关注随机梯度下降、卷积运算自身以及卷积运算与全连接运算在动机上的差异性。
下列哪一项在神经网络中引入了非线性 ? ( ) ?(\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以上都不正确
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=1∑NL(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=1∑N∇θ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=1∑NL(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=1m∈D,这个 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(θ)
具体执行过程表示如下:
关于随机梯度下降的缺点也是显而易见的:
这仅仅是个别迭代步骤,但它最终会靠近最小值。但是梯度下降的路线是不稳定的。
回归本题,随机梯度下降的迭代过程属于线性过程:
θ ( 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−⋯−η⋅gT−1
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
该函数的对应图像表示为:
从图像上观察,该函数显然不是一个线性函数,因而该函数用于神经网络中将线性变换转化为非线性变换。
但作为大多数前馈神经网络的默认激活函数,它本质上是由两个线性部分组成的分段线性函数,因而它保留了使线性模型能够更易求解梯度的属性(例如反向传播算法)
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)=(f∗g)(x)=s=−∞∑+∞f(s)⋅g(x−s)
很明显,这是一个仅和 x x x相关的线性函数。关于卷积运算如何帮助改进机器学习系统,主要从 3 3 3个角度观察:
关于卷积的逻辑描述,推荐一篇文章,见参考部分。
稀疏交互( Sparse Interactions \text{Sparse Interactions} Sparse Interactions):相比于全连接神经网络,卷积神经网络中层与层之间的连接是稀疏的,或者说是局部的。本层结点与下一层结点之间的关联范围由核的大小决定:
上图描述的是输入层某神经元与其相邻接层收到影响的神经元结点。其中:
全连接神经网络中,输入层的神经元结点与所有邻接层神经元结点之间均存在关联关系;
卷积神经网络中,输入层仅和卷积核大小范围内的神经元结点之间存在关联关系;
如果将两层神经网络对应的权重矩阵 Flatten \text{Flatten} Flatten,得到的结果表示如下:
这个权重
W i j \mathcal W_{ij} Wij中的
i i i和
j j j仅表示下标信息,即输入层第
i i i个神经元与输出层第
j j j个神经元的关联权重信息,和权重具体数值无关。
这种做法减小模型的存储需求的同时,也能得到有意义的特征。并且减小了计算量。
并且稀疏矩阵并没有因减少权重而损失信息,相反,随着层数的增加,后层神经元能够间接地连接到绝大部分的输入图像。
2023/5/9 \text{2023/5/9} 2023/5/9补充:举一个实际例子:
参数共享( 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)原理解析及其改进优化方法
什么是卷积
一张图告诉你卷积神经网络"香"在哪里?