深度学习可解释性杂谈(1):残差连接与泰勒级数

October 19, 2024

1、引言

深度学习作为一个黑箱模型,其背后的可解释性研究一直是人们关注和探索的焦点。 transformer黑箱.png 本篇博客我们就可解释性"形而上"地吹吹水,分享下本人的看法:

深度学习,其底层思想与泰勒级数有着密切的相似性,具体表现在:

  • 累加结构:两者都通过累加一系列项来逼近目标函数;
  • 逐步逼近:每一层(或每一项)通过捕捉不同的特征和模式都对最终的结果贡献了一定的改进;
  • 高阶特征:增加模型的宽度只能增加某一阶项的影响,而增加模型深度则等价于引入新的高阶展开项,能够捕捉更复杂的特征和模式(某种程度上解释下为什么增加模型的宽度不如增加深度好);

深度学习模型中的层数对应于泰勒级数中的展开项数

深度学习模型广泛采用的残差连接操作对应于泰勒级数中的展开项相加操作。

本文将探讨这种底层相似性,分析深度学习如何通过层次化的结构和残差学习,类似于泰勒级数逐步逼近函数的方式,来实现复杂映射的学习。


2、泰勒级数:函数近似的强大工具

泰勒级数是数学中用于近似函数的基本工具。对于在某点 aa 处具有任意阶可导性的函数 f(x)f(x),其泰勒级数展开为:

f(x)=f(a)+f(a)(xa)+f(a)2!(xa)2++f(n)(a)n!(xa)n+Rn(x)f(x) = f(a) + f'(a)(x - a) + \frac{f''(a)}{2!}(x - a)^2 + \cdots + \frac{f^{(n)}(a)}{n!}(x - a)^n + R_n(x)

其中,f(n)(a)f^{(n)}(a) 是函数在点 aa 处的第 nn 阶导数,Rn(x)R_n(x) 是剩余项。当 nn \to \infty 时,泰勒级数可以在一定条件下完全表示函数 f(x)f(x)

逐步逼近的思想

泰勒级数通过累加各阶导数项,逐步逼近目标函数。每一项都代表了对函数行为更深层次的理解,高阶项捕捉了函数更复杂的变化。这种逐步逼近的思想是理解其与深度学习相似性的关键。


3、深度学习中的残差连接

深度学习模型通常由多层非线性变换组成,每一层都对输入数据进行处理,以逐层提取特征和模式(初始层可能更关注简单的低级特征,随着层数的增加,网络能够提取更高级的语义特征)。然而,随着网络深度的增加,梯度消失和梯度爆炸等问题使得训练变得困难,为了解决这些问题,何凯明提出了残差网络(ResNet),其引入了残差连接使得信息可以在层与层之间直接传递

残差连接的数学表示

在残差网络中,层间的关系可以表示为:

yl=yl1+F(yl1,Wl)\mathbf{y}_l = \mathbf{y}_{l-1} + \mathcal{F}(\mathbf{y}_{l-1}, \mathbf{W}_l)

其中:

  • yl1\mathbf{y}_{l-1}:第 l1l-1 层的输出(或输入到第 ll 层的数据)。
  • F\mathcal{F}:表示第 ll 层需要学习的残差函数。
  • Wl\mathbf{W}_l:第 ll 层的权重参数。

这种结构允许每一层只需学习输入与期望输出之间的残差,而不是直接拟合完整的映射。


4、残差连接与泰勒级数相似性论证:一个具体例子

考虑一个简单的非线性函数 f(x)f(x),我们希望通过深度网络来逼近它。

  1. 泰勒级数逼近

    泰勒级数在 x=0x=0 处展开:

    f(x)=f(0)+f(0)x+f(0)2!x2+f(0)3!x3+f(x) = f(0) + f'(0)x + \frac{f''(0)}{2!}x^2 + \frac{f'''(0)}{3!}x^3 + \cdots
  2. 残差网络逼近

    使用一个残差网络,其每一层实现一个非线性变换 Fl\mathcal{F}_l,则输出为:

    yL=yL1+F(yL1,WL)=yL2+F(yL2,WL1)+F(yL1,WL)=x+l=1LF(yl1,Wl)\begin{align*} \mathbf{y}_L &= \mathbf{y}_{L-1} + \mathcal{F}(\mathbf{y}_{L-1}, \mathbf{W}_L) \\ &= \mathbf{y}_{L-2} + \mathcal{F}(\mathbf{y}_{L-2}, \mathbf{W}_{L-1}) + \mathcal{F}(\mathbf{y}_{L-1}, \mathbf{W}_L) \\ &\vdots \\ &= \mathbf{x} + \sum_{l=1}^L \mathcal{F}(\mathbf{y}_{l-1}, \mathbf{W}_l) \end{align*}

    如果我们选择适当的 Fl\mathcal{F}_l,使其对应于泰勒级数中的各阶导数项:

    F1(x)=f(0)x\mathcal{F}_1(x) = f'(0)x \\ F2(x)=f(0)2!x2\mathcal{F}_2(x) = \frac{f''(0)}{2!}x^2 \\ F3(x)=f(0)3!x3\mathcal{F}_3(x) = \frac{f'''(0)}{3!}x^3 \\ \vdots

    那么,残差网络的输出就逼近了函数 f(x)f(x)


5、泰勒级数与残差连接的类比

    1. 累加结构的相似性

    泰勒级数通过累加各阶导数项来逼近函数。同样,残差网络的输出是通过累加每一层学习到的残差来获得的。这种累加结构使得两者在形式上具有相似性。

    1. 逐步逼近目标函数

    在泰勒级数中,每一项都对函数的逼近贡献了一定的精度。类似地,在残差网络中,每一层的残差函数都对整体映射的逼近贡献了一份力量。网络层数的增加相当于在泰勒级数中加入更多的高阶项。这些高阶项(或深层次的网络层)能够捕捉到数据中更复杂的非线性关系和特征,使模型具有更强的表达能力。(模型层数越多,模型效果越好)

    宽度的局限性:虽然增加每层的神经元数量(宽度)也能提高模型的容量,但仅靠宽度无法有效地分层次地提取特征。宽度的增加更像是放大了某一阶项的影响,而不是引入新的展开项

    1. 高效的学习过程和学习结果

    残差连接既使得网络更容易训练(它减轻了训练过程中的梯度消失问题),也使得网络最终训练效果更好,这类似于泰勒级数中通过低阶项的计算就能获得对函数的初步近似,高阶项只需要学习进一步精炼以对齐结果所需的残差即可。


6、结论

通过以上的分析和论证,我们发现深度学习中的残差连接泰勒级数展开在底层原理上具有显著的相似性。这种相似性体现在:

  • 累加结构:两者都通过累加一系列项来逼近目标函数。
  • 逐步逼近:每一层(或每一项)都对最终的结果贡献了一定的改进。
  • 高阶特征:深度(高阶项)的增加能够捕捉更复杂的特征和模式。(某种程度上解释下为什么增加模型的宽度不如增加深度好)

理解这种相似性,有助于我们更深入地理解深度学习的工作机制和可解释性。