1 Dropout问题
Dropout思想:
- 删除隐藏层随机选取的一半的神经元
- 在剩余神经元基础上正向,反向更新(mini-batch)
- 恢复之前删除的神经元,重新随机选择删除一半神经元,正向,反向更新
- 重复此过程
- 恢复所有的神经元,将所有的权重减半
为什么Dropout可以降低过拟合
每次随机选择一部分的神经元训练,
(1)降低神经元对特征的依赖性,使得神经元组合起来效果更加鲁棒。
(2)压缩系数(类似于L2正则化)
(因为每个特征都有可能在下次迭代中被删除,所以模型不会给每个特征赋予过高的权重)
(3)keepout类似于L2正则化中的。但相反的是:keepout越小,则dropout越能防止过拟合。当keepout取1,相当于不采用dropout。
python实现
import numpy as np
import pandas as pd
import scipy
a_i = np.random.chisquare(12,10)
keep_ratio = 0.5
d_i = np.random.rand(10)
d_i = d_i < keep_ratio
a_i = np.multiply(a_i,d_i)
a_i /= keep_ratio
print(a_i)
>>>[29.16678503 0. 42.79623661 0. 0. 0.
0. 12.74798392 0. 30.05003551]
2 L1,L2正则
L1,L2正则可以解决过拟合问题,另外,L1正则可以使得解具有稀疏性。
3 如何权衡偏差和方差
一个可能的解决方案是:做一个过拟合程度和错误率曲线图,选择拐点。
网友评论