它是两个函数 z = f1(x) 和 y = f2(z) 的组合,将输入 x ∈ R p 映射到中间状态变量 z ∈ R s ,然后顺序映射到最终输出 y ∈ R o 。假设两个函数 f1(·) 和 f2(·) 分别在 ˜x 和 ˜z = f1(˜x) 处可进行 n 阶导数计算,本节将推导复合函数 y = f2 ◦ f1(x) 在三种逐渐增加复杂性的系统中的高阶导数规则:单输入单状态单输出(SISSSO)是最简单的系统,包括 x ∈ R, z ∈ R, 和 y ∈ R。对于多输入多状态单输出(MIMSSO),输入和中间状态变量的维度增加,分别为 x ∈ R p , z ∈ R s , 和 y ∈ R。多输入多状态多输出(MIMSMO)是最一般的情况,其中 x ∈ R p , z ∈ R s 和 y ∈ R o 。这三种系统分别对应一个单输出神经网络,隐藏层只有一个节点;一个单输出神经网络,隐藏层包含多个神经元;以及一个多输出神经网络,隐藏层包含多个节点。
对于更多项,可以将 ∂ k y/∂z (k-1) ∂x 转换为 ∂z/∂x * ∂ k y/∂z k ,并计算 ∂ n y/∂x n ,从集合 {∂ k y/∂z k , k = 1, …, n} 和 {∂ k z/∂x k , k = 1, …, n} 中。因此,方程 (2) 转换为以下矩阵形式:
这可以进一步简化为 在这个方程中,v y,x 和 v y,z ∈ R n 分别是导数向量 {∂ k y/∂x k } 和 {∂ k y/∂z k };M z,x ∈ R (n×n) 是由 ∂ k z/∂x k 组成的变换矩阵,并采取下三角形式。到目前为止,f2(f1(x)) 的 n 阶导数的计算转变为 M z,x 的计算。 从方程 (3) 中,第 i 和 (i + 1) 项 (i < n) 分别是 和 通过对方程 (5) 的两边进行导数运算,得到: 因为 M z,x i,0 = 0 且 M z,x i,n = 0 (i < n),方程 (7) 可以简化为 比较方程 (6) 和方程 (8),可以得到 M z,x 的递归公式为
这显式地构成了方程 (4) 中 n 阶变换矩阵 M z,x 。
MIMSSO
未混合偏导数。对于一个具有 p 维输入和 s 个中间状态的 MIMSSO 系统,即 x ∈ R p , z ∈ R s , y ∈ R, 可以得到 y = f2 ◦ f1(x) 的前三个未混合偏导数为: 为了便于推导,定义一个操作符 β 以保存其 k 阶未混合偏导数的信息
并且以下方程成立 基于以上定义,方程 (10) 可以改写为 其中 ⊙ 是哈达玛积,(A ⊙ B) i,j = A i,j * B i,j ,◦k 是哈达玛幂,(A ◦k ) i,j = (A i,j ) k 。 类似于方程 (3),将方程 (13) 转换为矩阵形式 这与方程 (3) 形式一致,只是将标量元素替换为矩阵,幂和乘法转变为哈达玛幂 ◦k 和哈达玛积 ⊙。进一步简化以上方程为 混合偏导数。神经网络的第一个模块大多是线性层,例如全连接层或卷积层,满足 根据方程 (11)(12) 的定义,以上方程转换为 其中 ⊗ 是克罗内克积,1_p ∈ R^p 是一个全 1 列向量,β^⊗ky * βx^k 定义为 其中 ⊗ 是克罗内克积,1 p ∈ R p 是一个全 1 列向量,β⊗ k y /βx k 定义为 这包含了所有 k 阶偏导数。类似于方程 (3)(14),将方程 (18) 重写为矩阵形式 请注意,此公式是在方程 (16) 的限制下推导出来的,这意味着只有线性模块可以应用它。 进一步简化方程 (20) 为
MIMSMO
对于一个 MIMSMO 系统,x ∈ R p , z ∈ R s , y ∈ R o , 只需要将 MIMSSO 的导数计算公式应用于每个输出项,并且未混合公式和混合公式是
神经网络的高阶导数规则
这节 主要介绍深度神经网络的高阶导数规则。由于多输出网络可以视为多个单输出网络,研究团队只考虑单输出情况。在不失一般性的前提下,研究团队将推导最常见模块的高阶导数的反向传播,网络结构如图 1 所示。 在进行详细推导之前,研究团队定义了以下符号。输入表示为 x,第 m 个模块的输出表示为 y (m) ,y (m) 的长度为 o m ,最终输出为 y。为了简化表达,研究团队分别省略了 v y ,y(m) 和 M y(m) ,y (m-1) 的上标,简写为 v m 和 M m 。 神经网络可以被视为一个复合函数 y = f (d) ◦f (d-1) ◦…◦f (1) (x),其中 f (m) 是第 m 个模块。第 m 个模块的输出 y (m) ,第 (m+1) 个模块的输出 y (m+1) ,以及最终输出 y 可以被描述为复合函数 y = (f (d) ◦…◦f (m+2) )◦f (m+1) (y (m) ) 的输入、中间变量和输出。
如果研究团队知道 v m+1 和 M m+1 ,根据研究团队推导的公式,可以直接得到 v m 。通过从输出层到中间层,最后到输入层迭代应用这一过程,研究团队可以快速准确地获得输出对输入的高阶导数。
图1:用于计算HOPE高阶导数的框架
输出单元
对于最终输出 y = y (7) ∈ R,根据方程 (12) 中的定义,其 k 阶导数可以计算为 : 根据方程 (15) 的定义,研究团队可以获得初始导数的向量形式
全连接层
对于全连接层,其输入输出关系定义为 第 i 个节点的 y (m+1) 关于第 j 个节点的 y (m) 的 k 阶导数是 结合方程 (12) 的定义,研究团队得到 一方面,通过计算 变换矩阵 M m+1 在方程 (14) 中重写为一个块对角矩阵 另一方面,研究团队可以通过计算 在这个方程中,变换矩阵 M⋆m+1 在方程 (20) 中定义,也可以重写为块对角矩阵
卷积层
卷积层的输入输出关系可以描述为 其中 F (m+1) 是一个卷积核,* 表示卷积操作。尽管卷积层可以被视为一个具有稀疏权重矩阵和零偏置的全连接层,如果转换成全连接层,进行导数计算既耗时又占内存。因此,研究团队在卷积表示上推导高阶导数规则。 第 u 个输出是 y (m) 中一些元素与 F (m+1) 中所有元素的乘积的总和, 其中 F (m+1) u,v 是 y (m+1) u 和 y (m) v 之间的权重。研究团队可以计算导数为 高阶导数是 取矩阵形式,方程 (34) 变为 其中 ↑(·) 表示数据上采样,rot180(·) 表示将卷积核旋转 180 度。 比较方程 (34) 和方程 (35),研究团队还可以得到高阶导数的矩阵形式 由于卷积层的输入通常是类似图像的数据,研究团队只计算未混合偏导数为
研究团队还可以通过将卷积层转换为全连接层,然后直接应用方程 (30) 来计算混合偏导数。
非线性激活层和池化层
考虑一个非线性激活层 y (m+1) = σ(y (m) ),其中 y i (m+1) = σ(y i (m) ),有
其中 σ (k) (·) 是这个激活函数的第 k 阶导数。根据方程 (12) 的定义,研究团队可以得到
研究团队可以从方程 (14) 中进一步获得变换矩阵 M m+1 和未混合偏导数向量 v m 从方程 (28) 中得到。唯一剩下的问题是如何计算 σ (k) (x) 的值,x ∈ R。