类神经网络训练不起来怎么办(二)
Batch
每个Batch更新一次参数,所有Batch遍历一次叫做Epoch
Small Batch v.s. Large Batch
-
Batch size=N
所有资料看过一遍更新参数
-
Batch size=1
每一个资料更新一次参数
- 大的Batch size不一定比小的更新参数的时间长
Parallel computing:Gpu的并行运算(有极限)
-
小的Batch size需要更长的遍历一次epoch
需要更久的时间遍历所有数据
大的Batch size在Training data得到不好的结果
Optimization issue: 大的Batch容易卡在critical point
![](https://xingqiu-tuchuang-1256524210.cos.ap-shanghai.myqcloud.com/4728/image-20230101111016348.png)
Batch size是一个超参数需要我们自己决定
Momentum
不止考虑梯度的反方向,同时考虑前一步怎么走的
第一次:
-
选择 θ 0 \theta_0 θ0开始
-
前一次移动 m 0 = 0 m^0=0 m0=0
-
计算梯度 g 0 g^0 g0
-
移动 m 1 = λ m 0 − η g 0 , θ 1 = θ 0 + m 1 m^1=\lambda m^0-\eta g^0,\theta^1=\theta^0+m^1 m1=λm0−ηg0,θ1=θ0+m1
第二次开始:
-
计算梯度 g 1 g^1 g1
-
移动 m 2 = λ m 1 − η g 1 , θ 2 = θ 1 + m 2 m^2=\lambda m^1-\eta g^1,\theta^2=\theta^1+m^2 m2=λm1−ηg1,θ2=θ1+m2