如何推广网站网站推广常用方法,wordpress 文章缩放,建站广告,做网站的公司面试机器学习(Gradient Descent)
videopptblog 梯度下降(Gradient Descent)
optimization problem: 损失函数最小化 假设本模型有两个参数#x1d703;1和#x1d703;2#xff0c;随机取得初始值 求解偏微分#xff0c;梯度下降对参数进行更新 Visualize: 确定梯度方向1和2随机取得初始值 求解偏微分梯度下降对参数进行更新 Visualize: 确定梯度方向红色表示Gradient方向蓝色是梯度下降的方向因为我们要是损失函数L减小使用应该取与Gradient方向相反的方向这也对应着进行参数更新时用的是-(减号) 其中η 叫做Learning rates学习速率 Small Tips
Tip 1:Tuning your learning rates 下面是两幅图我们来简单看一下 图左边黑色为损失函数的曲线假设从左边最高点开始一维 学习率刚刚好比如红色的线就能顺利找到最低点。学习率太小比如蓝色的线也可以顺利找到最低点就会走的太慢时间成本太高。学习率有点大比如绿色的线出现了跳过最低点反复进行横跳很难到达最低点。学习率非常大比如黄色的线直接就飞出去了更新参数的时候只会发现损失函数越更新越大。 当参数为一维或者二维的时候我们可以很直观地建立图形进行观察但是超过了三维以后我们就无法进行可视化但是右图是始终可以建立的分别表示了不同学习率下参数更新以后损失函数的变化情况。将参数改变对损失函数的影响进行可视化。比如学习率太小蓝色的线损失函数下降的非常慢学习率太大绿色的线损失函数下降很快但马上就卡住不下降了学习率特别大黄色的线损失函数就飞出去了红色的就是差不多刚好可以得到一个好的结果。 我们可能会猜想学习率很重要既不能太大跳出最优解也不能太小收敛过慢那有没有一种可能实现学习率地改变呢 Adaptive Learning Rates
在训练的过程中我们需要实现学习率的自适应变化 Reduce the learning rate by some factor every few epochs. 前期初始点可能距离最低点较远我们可以将学习率设置大一些使得损失函数更快收敛。update参数以后离最低点较近此时我们应该调整学习率变小防止跳过了最低点。 Learning rate cannot be one-size-fits-all 给不同的参数分配不同的学习率 自适应学习率算法-Adagrad 下面有两种方法第一种是针对一个参数的但是我们要学习的是第二种实现参数独立的自适应学习率算法 w是一个参数 t :之前参数的所有微分的均方根对于每个参数都是不一样的。 普通梯度下降如Vanilla Gradient descent 使用Adagrad算法每个参数的学习率都把除以之前微分的均方根。 变形 Contradiction 按照正常的理解梯度越大说明可能离最低点越远那么我们变化的步伐也应该越大梯度越小说明可能离最低点越远那么我们变化的步伐也应该越小但是在Adagrad算法里面当梯度越大的时候步伐应该越大但下面分母又导致当梯度越大的时候步伐会越小前后有点矛盾了。 解释 此处我们的步长是相对的我们当前的梯度的大小也是相对于前面的梯度大小来调整步长 构造反差效果 通过实例看出最优步长与一次微分成正比与二次微分成反比这里采用之前所有一次微分的均方根估计二次微分 正比解释一次微分越大说明可能离最低点越远步伐越大反比解释二次微分越小一次微分变化越慢一次微分也就倾向于保留较大的趋势步伐也就越大 同一参数可以通过比较其一次微分比较其距离最优值的距离不同参数还需要考虑二次微分。 Do not cross parameters 第2点我们提到了Use first derivative to estimate second derivative 一个较为复杂的参数模型我们在进行求解的时候算一次偏微分可能就需要很长的时间所以二次偏微分一般不可取一般情况下在一定的范围内取一次偏微分进行平方求和开根号在一定的程度上面也可以反映二次偏微分的大小 Tip 2:Stochastic Gradient Descent(SGD) 基本思想损失函数没处理一个批次的数据就进行一次更新 普通的算法在进行参数更新的时候是一次遍历所有的例子然后更新实现一次更新步伐一般较大。SGD算法进行参数更新的时候每遍历一个例子就进行一次更新实现多次更新一般步伐较小。 Tip 3:Feature Scaling 存在多个变量的时候很可能出现的一种情况就是他们的取值范围不一样一个可以很大一个可以很小那么我们在对他们的对应参数进行相同变化的时候而y的变化的情况却大不相同。 左图 x1的scale比x2要小很多所以当 w1和 w2做同样的变化时w1对 y 的变化影响是比较小的w1对损失函数L有较小的微分在w1方向上梯度较小图像较为平滑x2 对 y 的变化影响是比较大的w2对损失函数L有较大的微分在w2方向上梯度较大图像上有比较陡峭的峡谷 右图二者scale相近各点处梯度大致相同 来源 Normalize 计算每一个维度变量的 均值mi标准差 σi 进行相应的变化 这样所有维度的均值都是0方差都是1。 Gradient Descent Theory 当我们在使用梯度下降算法进行参数优化的时候每一次的优化并不能百分百保证使得损失函数越来越小。 我们在一般情况下我们无法一瞬间找到全局最优解可以做到的是给定某个初始值和某个范围我们可以找到局部最低点。 How to y find the point with the smallest value nearby?
Taylor Series
一个变量的泰勒展开 Taylor多项式在点xx0上逼近函数的值。多项式的阶次越高多项式中的项越多逼近函数的实际值越近。 两个变量的泰勒展开 Gradient Desent 我们在前面提到了给定某个初始值和某个范围如果这个范围足够小那么我们是不是可以用泰勒展开对损失函数表达式进行替换 以d为半径做一个足够小的圆形区域在这个区域上面我们可以使用泰勒展开 s可以看作定值后面可以看作向量点乘不记得的去百度一下 点乘还有一种计算方法就是两向量的模相乘再乘以夹角的余弦值其中u,v是一节偏微分是梯度所以要让点乘结果最小我们可以让两向量方向相反夹角余弦值为-1让另一向量模最大但是有边界限制。 现在我们可以更好理解使用泰勒展开的意义了最后得到的向量的方向也就是我们向最低点移动的方向但是不要忘记了我们使用泰勒展开的前提范围足够小同样也要求我们学习率也要足够小这样才能保证泰勒展开的精度是足够的 More Limitation of Gradient Descent 微分值为0可能是极值点但不一定是全局极值也可能仅仅只是微分值为0的非极值点在实际的ML中当微分值小于某一个数值就停下来了但这里只是比较平缓并不是极值点