神经网络的自动微分求导这里不做解释和介绍,自动微分求导中的前向模式和后向模式这里也不做解释和介绍。
根据资料显示,如果一个神经网络的输入层维度为M,输出层维度为N,当M>N时,反向自动微分求导的后向模式计算效率高于前向模式,反之,如果M<N时,前向模式计算效率高于后向模式,下面给出自己的个人理解的解释:
假设一个神经网络是全连接的MLP,输入层维度为8,第一个隐藏层维度为6,第二个隐藏层维度为4,第三个隐藏层维度为2,输出层维度为1。
在自动微分求导时,如果是前向模式,那么对一个隐藏层的权重求导的计算过程的各个维度为:
中间过程的各个导数矩阵:
8x6矩阵,6x4矩阵,4x2矩阵,2x1矩阵
前向模式对第一隐藏层权重的导数计算:
第一步:8x6矩阵 乘以 6x4矩阵,得到8x4矩阵;
第二步:8x4矩阵 乘以 4x2矩阵,得到8x2矩阵;
第三步:8x2矩阵 乘以 2x1矩阵,得到8x1矩阵。
最终得到第一隐藏层的权重的倒数矩阵,8x1矩阵。
后向模式对第一隐藏层权重的导数计算:
第一步:2x1矩阵 乘以 4x2矩阵,得到4x1矩阵;
第二步:4x1矩阵 乘以 6x4矩阵,得到6x1矩阵;
第三步:6x1矩阵 乘以 8x6矩阵,得到8x1矩阵。
最终得到第一隐藏层的权重的倒数矩阵,8x1矩阵。
由此可以看到,在进行自动微分求导计算的过程中,当M>N时,后向模式计算的更少,反之,M<N时,前向模式计算的更少。
前向模式时,每算完一步就可以把该步的前向传导计算和自动求导的微分矩阵进行释放,因此该种计算模式可以更好的节省显存;
后向模式时,我们可以对前面部分的前向传导的计算结果进行释放,然后根据后半部分神经网络的后向自动微分和前向传导计算出中间神经网络的后向导数值,然后重新计算前向传导时中间网络层的结果,使用该种方式来节省显存。
可以看到,前向模式可以更好的节省显存(因为自动微分是从前向后计算的,可以计算完一步就释放该步的前向计算的矩阵和自动微分的矩阵)。
标签:中前,矩阵,微分,求导,神经网络,模式,维度 From: https://www.cnblogs.com/devilmaycry812839668/p/17985436