斯坦福大学CS231课程笔记1
程序员文章站
2022-07-13 11:27:55
...
从线性回归到神经网络
Mini-batchSGD
正向传播计算loss反向传播计算梯度,根据梯度更新参数
图的拓扑排序正向和反向
class ComputationalGraph(object):
def forward(inputs):
# 1.[pass inputs to input gates...]
# 2.forward the computational graph:
for gate in self.graph.nodes_topologically_sorted():
gate.forward()
return loss #the final gate in the graph outputs the loss
def backward():
for gate in reversed(self.graph.nodes_topologically_sorted()):
gate.backward() #little piece of backprop (chain rule applied)
return inputs_gradients
BatchNormalization 批量正则化
优势:提升梯度流向,可是使用更大的学习率;减少对初始化的依赖;由正则化的作用,减少dropout的使用
**函数
数据预处理
学习率
loss不下降,学习率太小
loss爆炸,学习率太大,出现Nan时,就是学习率太大
学习率衰减
1.一定epoch次数后减小
2.指数级减小
3.随时间线性减小
优化方法
Adam
RMSProp
二阶最优化方法
dropout
为什么dropout有效?dropout相当于一堆模型的组合,每个开闭就是一种模型,测试时,蒙特卡洛估计就是使用不同的模型对所有的结果求平均。或者使用一次前向传播,把所有的节点都打开