hung-yi lee_p5-7_Gradient Descent(梯度下降)
原视频地址 https://www.bilibili.com/video/BV1JE411g7XF?p=5
文章目录
- 梯度下降是如何优化函数的
- tips
- 1. 使用Adagrad
- 2. Stochastic Gradient Descent
- 3. Feature Scaling
- 梯度下降理论基础
- 梯度下降的局限性
梯度下降是如何优化函数的
前情回顾:损失函数是用来衡量找到的函数对应的那一组参数的好坏的。
theta是一组参数,上标表示参数是第几组的,下标表示参数是组中的第几个。
上图是将梯度分成两个偏导数表示,下图是直接使用梯度。
把梯度看成是损失函数等高线的法线方向,现在每得到一个函数,算出梯度,然后按梯度相反方向走。
tips
1. 使用Adagrad
应当小心调节学习率,原因如下图所示:
学习率太小:过慢,效率低
学习率太大:找不到最小的损失函数值
学习率刚刚好 Just make
原则:
①学习率逐渐减小,离目标越近走得越慢。
②给不同的参数以不同的学习率。(参数独立)
例:Adagrad方法
把每一个参数的学习率都除以之前导数的均方根(均方根:将所有值平方求和, 求其均值, 再开平方)
使用Adagrad之前,学习率这样更改
使用Adagrad之后,学习率这样更改
其中
具体操作如下
化简后的Adagrad公式
这里有个矛盾的地方,最终得出的Adagrad公式,从一项看是梯度越大,学习率变化越大,从另一项看结果相反
直观解释这么做的原因
学习率可能变化是很大的,给人很大反差,除以过去的方均根可以平和掉这个反差
更科学的解释:修改参数的步伐(当前点和最低点的距离)最好正好是那个微分的整数倍,但这只在只考虑一个参数时成立,如果有多个参数呢?那个bset step则需要将二次微分(derivative)考虑进来
再回头看Adagrad公式,分号下面的方均根就是模拟了二次微分。
2. Stochastic Gradient Descent
下面介绍一个改进的参数更新方法——Stochastic Gradient Descent,直译是随机梯度下降
该方法在原梯度下降的基础上做的改进是,原先的梯度下降损失函数是所有样本的总和,现在只随机取第n个样本
也就是之前是看完所有样本再更新参数,现在遇到一个样本更新一次参数,如下图所示
3. Feature Scaling
直译是特征缩放,做什么事呢?希望不同特征的分布差不多,如下图,从左图转化到右图是我们要做的
为什么要这样做?
如下图所示,当输入的x1是1,2……而x2是100,200……那么w1对Loss函数的影响显然比w2对Loss函数的影响小得多,如下左图所示,如果对x2进行缩小,则可以使得w1和w2对Loss函数的影响差不多,如下右图所示
对于左右两图,左边想更新参数不用Adagrad公式就会很困难,右边的正圆形想更新参数则容易得多
具体方法:
常见方法
对每一维参数的第i个样本求均值m i和标准偏差sigma i
对第r维参数的第i个样本进行图中公式所示方法的更新
类似正态分布标准化
梯度下降理论基础
每次我们得到的新的theta代入到Loss函数里面,都会比上一次小,对吗?
答案是否定的。
假如现在给定一个theta的起点,圈定一个范围,可以找到这个范围内最小的Loss函数值对应的theta。
将theta更新,得到theta1
可以重复刚才过程。现在的问题是如何在那个确定的范围内找到Loss值最小时对应的theta?
就要从Taylor Series(泰勒级数)说起。
对于任一函数h(x),只要在x0这一点是无穷次可微的。就可以把h(x)写成下图所示(其中k表示微分的次数)。当x无限接近x0,可以把(x-x0)的平方项,立方项,四次方项……忽略。将h(x)表示成下图最下方形式。
例如,以h(x)=sin(x)为例,在x0=pi/4处,只考虑0次和1次,approximation(近似法)的效果还是很好的。(虽然整体看不像)
当然,泰勒级数可以有多个参数,有2个参数的如下所示
再回到梯度下降法,当刚刚圈定的范围(红圈)足够小,就可以运用泰勒级数,将损失函数L(theta)表示成下图最下行所示
这样算损失函数的最小值对应的(theta1,theta2)就变得容易。其中s,u,v都是常数。
具体求法如下,我们要找的(delta-theta1,delta-theta2)是和(u,v)反方向,且长度等于圈定的radius(半径)的。
代入u,v,发现得到的就是最初的梯度下降的公式。
但要记得的是,找到的红色圈的半径要足够小,而这个半径和学习率是成正比的。因此学习率要合适。
刚才只考虑到1次的级数,如果考虑的次数更高呢?会引入更复杂的运算,并没有梯度下降法合适。
梯度下降的局限性
会停在微分值是0但不是我们要找的全局最小值的地方。如:saddle point(驻点)和local minima(局部最小值点)。
hung-yi lee_p5-7_Gradient Descent(梯度下降)相关推荐
- Gradient Descent梯度下降(透彻分析)
----------首先了解什么是梯度? 官方解释: 梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为 ...
- Gradient descent --梯度下降(to be continued)
1.资料 An overview of gradient descent optimization algorithms
- Stochastic Gradient Descent ( 随机梯度下降 )
Stochastic Gradient Descent (SGD) ( 随机梯度下降( SGD ) ) 是一种简单但非常有效的方法,用于在诸如(线性)支持向量机和 逻辑回归 之类的凸损失函数下的线性分 ...
- 梯度下降的线性回归用python_运用TensorFlow进行简单实现线性回归、梯度下降示例...
线性回归属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试这个函数训练的好不好(即此函数是否足够拟合训练集数据),挑选出最好的函数(cost f ...
- 吴恩达《Machine Learning》精炼笔记 2:梯度下降与正规方程
作者 | Peter 编辑 | AI有道 今天带来第二周课程的笔记:梯度下降与正规方程. 主要内容: 多维特征 多变量梯度下降 梯度下降法实践 正规方程 多维特征Multiple Features 还 ...
- 批梯度下降 随机梯度下降_梯度下降及其变体快速指南
批梯度下降 随机梯度下降 In this article, I am going to discuss the Gradient Descent algorithm. The next article ...
- python解zuobiaoxi方程_吴恩达《Machine Learning》精炼笔记 2:梯度下降与正规方程
作者:Peter 红色石头的个人网站: 红色石头的个人博客-机器学习.深度学习之路www.redstonewill.com 今天带来第二周课程的笔记:梯度下降与正规方程. 主要内容: 多维特征 多变 ...
- 梯度下降和导数的作用
导数概念 导数是用来反映函数局部性质的工具.对于一个函数来说, 函数在某一点的导数描述了这个函数在这一点附近的变化率. 如果函数的自变量和取值都是实数的话,函数在某一点的导数就是该函数所代表 ...
- Lesson 4.34.4 梯度下降(Gradient Descent)基本原理与手动实现随机梯度下降与小批量梯度下降
Lesson 4.3 梯度下降(Gradient Descent)基本原理与手动实现 在上一小节中,我们已经成功的构建了逻辑回归的损失函数,但由于逻辑回归模型本身的特殊性,我们在构造损失函数时无法采用 ...
最新文章
- UI控件库分享:DWZ(j-UI)、LigerUI、Linb
- mysql编码无效_mysql的严格模式与无效字符编码问题
- linux scp 跨服务器,scp跨服务器拷贝,后台运行
- 使用代码执行organization unit determination逻辑
- ASP.NET Zero--5.配置权限
- message:MCODE参数不存在,mobile类型mcode参数必需
- xy坐标正负方向_【笛卡尔坐标系】
- 数据库系统实训——实验九——函数
- Binary Tree Zigzag Level Order Traversal
- Win32汇编---控件的超类化感想
- 使用 Segue 傳送選取的 Table Cell 內容到下一個 View
- 正则表达式 —— 括号与特殊字符
- paip.vs2010 开发ASP浏览时的设置
- ffmpeg java_Java 调用 FFMPEG 的坑人之处
- 微软应用商城下载ShareX老出错
- 完美解决Macbook安装win 10调节亮度的问题
- python删除excel某行的格式_Python+Xlwings 删除Excel的行和列
- 软件观念革命:交互设计精髓_万字干货,交互设计精髓105条设计原则(附中英PDF资料)...
- 人人都能成为闪电网络节点:第4章连接别的节点
- [业界] 关于诺基亚,上来吐槽两句埃洛普,顺便爆点料。