目录
1.1 怎样判断taining loss不够小是因为model弹性(flexible)不够大还是optimization不给力?
2.1 Optimization fails because ...
local minima & saddle point -> 怎样escape critical point?
1.1 one update 的时间差不多 (GPU 平行计算)
1.2. noisy (small batch) update 效果更好
3.1. 首先Training stuck ≠ Small Gradient
5.3. 为什么Batch Normalization会比较好?
1. 机器学习任务攻略
1. General Guide
1.1 怎样判断taining loss不够小是因为model弹性(flexible)不够大还是optimization不给力?
A. 弹性大的model在training data上表现比较差 -> optimization issue
B. 用浅层网络(或者更简单的模型)估计training loss,如果deeper network没有取得更小的traning loss ,那么就有optimization issue。
1.2 怎样解决overfitting?
A. more training data → data augmentation
B. constrained model
- 更少的参数、公用参数
- less features
- early stopping
- Regularizaiton
- Dropout
e.g. FCN是一个比较有弹性比较大的model,而CNN是一个弹性比较差的model
1.3 怎样分割训练集和验证集
N-fold Cross Validation
1.4 Mismatch
training data and testing data have different distributions
2. Optimization 失败的时候怎么办
2.1 Optimization fails because ...
critical point = local minima / saddle point
2. 类神经网络训练不起来怎么办
local minima & saddle point -> 怎样escape critical point?
1. small batch
1.1 one update 的时间差不多 (GPU 平行计算)
![](https://i-blog.csdnimg.cn/blog_migrate/7a39e6cbdeb14b010e8736d90ae28ef0.png)
1.2. noisy (small batch) update 效果更好
不同的batch,loss function不同,在L1卡住在L2不一定卡住
1.3. small batch在测试集上表现效果更好
large batch会更倾向于得到sharp minima,当loss function改变时效果会变差(尚待研究)
1.4. 总结
2. Momentum
3. Adaptive Learning Rate
3.1. 首先Training stuck ≠ Small Gradient
![](https://i-blog.csdnimg.cn/blog_migrate/842c3df8508fb09ba593f304bf97b219.png)
在梯度大的时候,我们需要更小的Learning rate;在梯度小的时候,更大的Learning rate
3.2. Root Mean Square
(used in Adagrad)
3.3 RMSProp
决定gradient的权重Adam:RMSProp + Momentum
3.4. Learning Rate Scheduling
warm up:
3.5. 小结
4. Classification
4.1. Class as one-hot vector
→ class之间两两的距离是一样的
2.2. Loss of Classification
在pytorch里,softmax包含在cross-entropy里。
5. Batch Normalization
坡度不同的error surface(不同参数对loss的影响不同)对于固定的learning rate来说是比较难train的,可以用Adam来解决这一问题。
另一种解决方法是,可以使error surface更平滑。当input不同dimension上的值差距很大的时候,weight的变化时Loss的改变量是不同的 → normalization。
5.1. Training
batch normalization 在实作中放在activation function 前后都可以。
5.2. Testing
pytorch 初始 p=0.1