可以看:
- CS231n课程笔记翻译:神经网络笔记 1(上) | 课程原文
- CS231n课程笔记翻译:神经网络笔记 1(下)
- CS231n课程笔记翻译:神经网络笔记 2 | 课程原文
- CS231n课程笔记翻译:神经网络笔记 3(上) | 课程原文
- CS231n课程笔记翻译:神经网络笔记 3(下)
作者:zhwhong
链接:https://www.jianshu.com/p/182baeb82c71
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
当你计算某个梯度出现问题时,把它当做是计算图的问题,将其分解成某些部分,然后使用链式法则。
这里将f(w,x)分解成上面部分,然后进行求各变量的梯度。分解形式是不唯一的
sigmoid函数导数可求
下面这个max gate ,本地梯度一个是0,一个是上一个梯度的值。想象成一个梯度路由器,加法节点回传相同的梯度给进来的两支,然后max将获取梯度,且将其路由到它其中的一个分支。
本地梯度是另一变量的值,认为它是一个梯度转换器, 我猜它是一个尺度缩放器,获取上游梯度,然后根据另一个分支的值对其缩放、
用向量计算梯度呀....
总结:
1、神经网络将是非常大的:不切实际的手写梯度公式为所有参数
2、反向传播=递归应用链式法则沿计算图形计算所有梯度
3、implementations maintain a graph structure, where the nodes implement the forward() / backward() API
4、正向:计算一个操作的结果,并在内存中保存梯度计算所需的任何中间值
5、反向:应用链式法则计算损失函数相对于输入的梯度