目录
1.梯度下降(Gradient Descent)
- θ m n \theta_m^n θmn,上标n表示迭代次数,下标m表示第m个component(元素);
- η \eta η表示learning rate;
- 梯度下降法的详细步骤;
- 若 η \eta η(learning rate)太小,梯度下降速度较慢;若太大,则可能走不到最低点;所以需要将 η \eta η调到一个合适的值;
- 若维度大于3,则无法画出梯度下降的图像,但可以画出参数和损失函数的关系图;
2.自适应的学习速率(Adaptive Learning Rates)
- 调整learning rate的原则:使learning rate随着参数的update越来越小;
- 在开始的时候,距离目标点较远,learning rate大一点可以加快梯度下降速度;
- 经过一段时间后,比较接近目标点,将learning rate调小一点,让它收敛在最低点;
- η t \eta^t ηt中,t代表update次数;
- learning rate最好可以“因材施教”,对于不同的参数,给出不同的learning rate;
3.自适应梯度下降(Adagrad)
- 将每个参数的learning rate除上之前算出来的微分值(derivative)的root mean square(均方根);
- w是某一个参数, g t g_t gt是偏微分的值, σ \sigma σ是之前所有微分值的均方根(对每一个参数而言是不一样的);
- 计算过程如上图所示;
- 可以进一步将式子化简,得到上图内容;
3.1 从直觉上解释Agagrad
- 上述的直观解释:当某一步中得到的梯度相比之前特别小(或特别大),除以 ∑ i = 0 t ( g i ) 2 \sqrt {\sum_{i=0}^t (g^i)^2} ∑i=0t(gi)2后,可以强调这种反差的效果;
3.2 引入二次微分解释Adagrad(Second Derivative)
- 上图中,计算出来的梯度的绝对值越大,说明距离最低点越远;
- 多个参数的时候,计算出来的梯度的绝对值越大距离最低点越远,跨参数的时候不一定成立;
- 上图中,相比c点,a点梯度更小,但距离最低点更远;
- 将每个参数一次微分的绝对值除以二次微分,能更好的反应此时所在位置和最低点的距离;
- ∑ i = 0 t ( g i ) 2 \sqrt {\sum_{i=0}^t (g^i)^2} ∑i=0t(gi)2可以反映二次微分的大小(二次微分越大/越小的函数, ∑ i = 0 t ( g i ) 2 \sqrt {\sum_{i=0}^t (g^i)^2} ∑i=0t(gi)2也越大/越小),故用它取代二次微分(由于一次微分之前已经计算过了,这样做还可以减少计算量);
4.随机梯度下降(Stochastic Gradient Descent)
- 计算梯度的时候,只计算某一个example的loss function;
- 随机梯度下降收敛速度更快;
5.特征缩放(Feature Scaling)
- 函数中,有两个输入的特征, x 1 x_1 x1和 x 2 x_2 x2;
- 做特征缩放,将 x 1 x_1 x1和 x 2 x_2 x2的分布范围变为相同;
- feature scaling的具体做法;
6.梯度下降法的理论基础(Gradient Descent Theory)
- 向量点乘公式:
- a = [ a 1 , a 2 , . . . , a n ] , b = [ b 1 , b 2 , . . . , b n ] a=[a_1,a_2,...,a_n],b=[b_1,b_2,...,b_n] a=[a1,a2,...,an],b=[b1,b2,...,bn]
- a ⋅ b = a 1 b 1 + a 2 b 2 + . . . + a n b n = ∣ a ∣ ∣ b ∣ c o s θ a\cdot b=a_1b_1+a_2b_2+...+a_nb_n=|a||b|cos\theta a⋅b=a1b1+a2b2+...+anbn=∣a∣∣b∣cosθ
- 取 θ \theta θ为 π \pi π,即与向量(u,v)相反方向时,结果最小;
- η \eta η的值如果设置的太大,在梯度下降的时候,效果会变差(因为此时 L ( θ ) L(\theta) L(θ)已经不能近似表示泰勒级数了,误差太大);
- 将泰勒级数保留到二次项的做法,会增加 L ( θ ) L(\theta) L(θ)的计算量,虽然会减少update的次数,但总的来说是不划算的,所以梯度下降是主流的做法;