ARTICLE · 979528
《神经网络与深度学习通识版》第三章习题选2
《神经网络与深度学习通识版》第三章习题选2继续讨论第三章的习题。 第六题: “残差连接看似只是“加了一条捷径”,却让百层网络成为可能.请用梯度传递的视角解释它为何奏效,并尝试思考:这条“捷径” 和 “让模型学残差而不是学输出” 这两种说法,谁更接近本质?” 这道题单从残差梯度的角度分析,应该不是很难,只不过,原来没有像作者一样考虑过接近人类思考本质的问题。正好学习一下。 直接用语言表达似乎很明显,就是目前神经网络的训练都是依靠梯度的反向传播,这是建立在复合函数求导的链式法则基础之上的。链式法则的形式就是要求最终函数值对某层的某个参数的导数,等于最终函数值对中间变量的导数乘以中间变量再对该参数的导数,这个中间参数可以是多级的,最终呈现出来的是一个连乘的形式。还是需要用数学公式来表示一下: ∂Loss/∂xl = ∂Loss/∂xout·Πi=l∂Fi/∂xi 其中,Fi是中间的一系列线性和非线性变换的输出。 虽然最直接的想法是讨论单个参数的梯度大小,不过,有现成的关于矩阵向量的定理可用,而且所谓向量不过是多个标量的组合,把单个值看成一维向量也是可以的。当讨论损失函数针对一层的参数的梯度时,就是在讨论向量的大小,可以用向量的模来衡量。那么上面等式右边第一项可以看成是初始的向量,后面的连乘可以看成是乘以多个矩阵。其实这里是雅可比矩阵,不过具体是什么矩阵也不重要,只要是矩阵都可以进行SVD分解。分解的结果是前后两个正交矩阵中间乘上对角元素是奇异值的对角矩阵,乘以正交矩阵的效果仅仅是向量的旋转,只有乘中间的对角矩阵会对向量的模产生缩放效果,而最终的缩放比例不会大于最大的奇异值。 因而根据上述的精确分析,当初始向量不断乘以一个最大奇异值小于1的矩阵时,最终的模会指数级缩减,也就是梯度消失,反之,就是不断膨胀,出现梯度爆炸。根据一般的分析,常用的激活函数sigmoid、softmax、tanh等的导数值都小于等于,且一般参数矩阵都初始化为很小的值,因此出现奇异值小于1的情况可能性是很大的。这样的结果就是深层网络中越是到输入端,网络学习速度越慢,甚至没法学习。其实,即便不用上述复杂的分析,仅仅是完全依靠连乘型的梯度传播计算模式,可以肯定的是,数值结果是不可能稳定的。 那么对比于残差连接的计算模式:x_l+1 = x_l + F(x_l),层输出等于输入加本层的修正值,对应的整体反向传播公式变为: ∂Loss/∂xl = ∂Loss/∂xout·Πi=l(I + ∂Fi/∂xi) 中间连乘项(还是连乘?)不再是原始的雅可比矩阵,出现梯度消失的概率下降不少。据说,有I做缓冲,出现梯度爆炸的风险也降低了。 按照书中一直强调的说法,残差连接相当于不需要网络从头拟合每一层的输出,而只需要拟合和输入之间的差异F(x_l) = x_l+1 - x_l。虽然这两者几乎是等价的,不过还是将一个非线性映射拆成了一个恒等映射加微小扰动。这更加符合现实世界学习的一般规律。 另外,残差连接在网络中的梯度传播路径数至少是2^L个,假如网络有L层的话,每一层可以选择走直接连接和走非线性分支。这会带来隐式集成的效果,所谓集成是指一个网络由多个网络组合而成,这样带来的好处是降低方差,理由是多个模型平均时,噪声方向有抵消。 第十题: “Transformer 席卷 NLP 之后,RNN 几乎退出主流,但 “状态随时间演化” 这个想法并没有消失,它在状态空间模型(如Mamba)、线性注意力、RWKV 中以新的形式复现.请思考:一个思想被新架构“吸收”和“淘汰”,本质上有什么不同?” 这道题又在讨论思想,本质,确实话题有点大,不过出于学习的目的,可能这里主要还是对题目中提到的概念和模型进行一些展开而已。 题目中提到的RNN背后核心思想是“状态随时间演化”,这一点比较容易说明。对RNN的推导就是从马尔科夫链出发,假设序列输出是由隐状态生成的,而当前隐状态是完全依赖于前一个隐状态,这是标准的马尔科夫假设。随着序列的一步步推演生成,隐状态自然随着时间不短演化。各种标准RNN的变形,LSTM/GRU都只是在隐状态的数量和记忆能力上进行优化,基本的模型是一样的。 Transformer中,每一层的输入序列x本身就保留了历史时刻的原始表示,注意力机制就是根据当前词作为query,去这个库里检索key,计算相似度,加权聚合对应的value,因此状态不再是随着时间简单地滚动的隐含向量,而是被升级为可随时检索的外部记忆库。另外,在推理时,为了增加效率,一般会维护KV缓存,这也可以被理解为随着token生成,不断追加的外部化的状态向量。 Mamba,隐式状态更新公式为h_t = A_t·h_t-1 + B·x_t, y_t = C_t·h_t,这是通过线性时不变系统进行显式状态演化建模,但是通过选择性扫描加并行算法实现了高效计算,不需要像RNN那样串行执行。 线性注意力,将Attention中的Softmax替换为核函数,使状态可写成累积和的递归形式,等价于一个简化的RNN。 RWKV,将Attention和RNN融合,显式维护一个随时间衰减的“通道记忆”,但用Transformer的并行训练方式。 根据网上提示,体现了状态随时间演化思想的模型还不止上面这些。 扩散模型中,去噪步骤本质上也是一种“状态演化”,因此也用到了隐式状态步进。 物理信息神经网络中,u(t+dt)就是状态的连续演化,这被用于偏微分方程求解器。 神经符号习题中,把状态当做“可微分内存”来读写。 这都是些什么呢,好像没怎么了解,先留点痕迹,备忘。