深度模型的优化
回顾概念:
代价函数时训练集上损失函数的平均:
引入概念:
概念 | 描述 |
---|---|
批量梯度算法 | 使用整个训练集的优化算法,可计算更精确的梯度估计,但回报小于线性 |
批量batch | 整个数据集中的一组样本构成的子集 |
随机算法(在线算法) | 每次只使用一个样本的优化算法,难以充分利用多核结构 |
小批量随机方法 | 介于批量梯度算法和在线梯度算法之间的方法 |
小批量
- 随机抽取;通常做法是:将数据集的顺序打乱一次,然后按这个乱序进行顺序抽取;
- 通常多次遍历整个数据集。(第一次遍历是无偏估计,后面的遍历就是有偏估计了);
随机梯度下降(SGD)
从原始数据集中抽取m个样本的小批量。共进行( au)次迭代,其中第k次迭代的参数( heta)更新算法如下:
设置学习率(epsilon_k)和初始参数( heta)
(while 停止准则未满足 do)
(quad)从数据集中拿到m个样本的小批量;
(quad)计算梯度估计:(hat{g}leftarrow +frac{1}{m} abla_{ heta}sum_iL(f(x_i; heta),y_i))
(quad)更新参数( hetaleftarrow heta-epsilon_khat{g})
(end while)
一般实践中,第k次迭代的学习率为:
其中
- (alpha =frac{k}{ au})
- ( au)常设置为反复遍历整个训练集几百次的迭代次数;
- (epsilon_{ au})设置为(epsilon_0)的1%。
- (epsilon_0)的选择:检测最早的几轮迭代,选择一个比
在效果上表现最佳的学习率
更大的学习率。但不能太大引起振荡。
使用动量的随机梯度下降
设置学习率(epsilon),动量参数(alpha)和初始参数( heta),速度(v)
(while 停止准则未满足 do)
(quad)从数据集中拿到m个样本的小批量;
(quad)计算梯度估计:(gleftarrow +frac{1}{m} abla_{ heta}sum_iL(f(x_i; heta),y_i))
(quad)计算速度更新:(vleftarrowalpha v-epsilon g)
(quad)更新参数( hetaleftarrow heta+v)
(end while)
这样随机梯度下降的速度更快,加快了训练速度。
另一种算法:
设置学习率(epsilon),动量参数(alpha)和初始参数( heta),速度(v)
(while 停止准则未满足 do)
(quad)从数据集中拿到m个样本的小批量;
(quad)计算梯度估计:(gleftarrow +frac{1}{m} abla_{ heta}sum_iL(f(x_i; heta+alpha v),y_i))
(quad)计算速度更新:(vleftarrowalpha v-epsilon g)
(quad)更新参数( hetaleftarrow heta+v)
(end while)
参数初始化策略
偏置:默认初始化为启发式挑选的小常数。
权重:高斯或均匀分布中随机抽取的小值。
8.3-8.7看不下去了。后面补上吧。