“神经网络的参数为什么不能全为0“的简单理解

考虑一个最简单的多层全连接网络,每一层的输出和输入之间的关系为:

复制代码
Z = AW + b

如果W和b均为0,那么整个网络除了第一层的输入不为0外,其他所有层的输入都为0,也就是说对于除了 input layer 之外的任意层,A 均为0。

而如果考虑每一层单独的导数,就会有 Z'(b) = 1Z'(A) = W, Z'(W) = A ,那么如果W都为0,则意味着对A的导数为0,而我们知道对每一层的导数都是由其上一层的导数经过链式法则得来的,而现在最上面的output layer 对A的导数全为0,那么由上往下走,每一层的梯度都需要乘以上一层的梯度,也就是0,导致整个网络的梯度全为0。

最终的结果是,除了最后一层的b,(导数为1,可以更新),所有其他的参数均不会得到更新。

相关推荐
richard_yuu19 小时前
LMS 算法:从最小二乘到随机梯度下降,工业自适应滤波的核心
深度学习·神经网络·机器学习
TAN-90°-19 小时前
Deep Learning for Computer Vision——Generative Models 2
人工智能·深度学习·神经网络·算法·目标检测·机器学习·计算机视觉
程序猿在线码字20 小时前
深度学习(一)
python·深度学习·神经网络·机器学习
tigershang21 小时前
从工具到结构:工科数学的升阶之路
神经网络·机器学习·概率论
一只废狗狗狗狗狗狗狗狗狗21 小时前
机器学习任务攻略
神经网络·机器学习
Ivanqhz1 天前
BM1688 双核架构
python·深度学习·神经网络·cnn·mlir
autotian2 天前
神经网络及其应用
人工智能·深度学习·神经网络
Carol06302 天前
GPU芯片
神经网络
Ivanqhz2 天前
矩阵引擎的数据流模式与 BM1684X 架构
java·服务器·网络·深度学习·神经网络
程序猿编码2 天前
零依赖纯手写:C++ 实现完整神经网络,张量反向传播全打通
c++·神经网络·transformer·大模型推理