# ML学习小笔记—Gradien Descent
关于本课程的相关资料http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html
根据前面所为,当我们得到Loss方程的时候,我们希望求得最优的Loss方程。为此,我们可以采用了一种方法----Gradien Descent。
为什么可以使用这种方法呢,我们先保留这个疑问,先看一下什么是Gradien Descent。
如下图,我们假定某个Loss方程有两个参数,同时我们假定了一个learning rate。每次update 参数与其偏微分learning rate的差
那么这样做会有什么问题呢?如何优化这种做法呢?
Tuning your learning rates
如下图,当我们取的learning rate太大或者太小都会出现:梯度下降的效果达不到我们预期的目标。所以我们必须仔细考虑好learning rate
所以我们希望可以做到以下两点:
- At the beginning, we are far from the destination, so we use larger learning rate
- After several epochs, we are close to the destination, so we reduce the learning rate
Learning rate cannot be one-size-fits-all
所以我们是否能够给不同的参数以不同的learning rate以达到我们的目的?
为此:我们可以使用一种叫 Adagrad 的方法。
我们最开始参数更新的方法如下图:
其中:
为了使得learning rate的变化达到我们理想的效果,Adagrad在每次参数update的时候将变换后的learning rate除以所有前面参数偏微分的均方根,如下图所示:
其中:
这样化简可以得到Adagrad后的式子:
那么是如何想到用Adagrad这样一个方法的呢?
- 看看课程就了解了……
Stochastic Gradient Descent
我们每次从样本中随机选出一个,求得其Loss方程,然后再不断进行迭代。
这样因为部分样本跨度较大,使得迭代过程中,我们更快接近最优的Loss方程,如下图所示:
Feature Scaling
Feature Scaling的做法是让特征值的分布都比较接近,如下图所示:
这样就会加速我们接近最优解:
而我们的做法就是,求得某个特征值在所有样本下的平均值和标准差,然后update特征值:
回到最初:
Gradien Descent从哪里来?
我们在Loss方程中位于某个点,为了达到最优的Loss方程,我们可以每次往前跨出一步。所以我们可以在该点附近画一个圈圈,然后选择圈圈内最优的点,然后再迭代。
利用泰勒公式,将当前的Loss方程化简:
此时我们为了是Loss方程最优(即最小),我们就要选取适当的值。
由于S为常量,我们不用考虑,则只需要考虑:
根据数学知识,我们知道两个向量相乘,值要最小,那么这两个向量应该为相反向量,即为(u,v)向量的相反向量:
同时,在满足:的条件下,我们很容易得到:
而这个式子就是gradient descent,其中的系数n就决定了这个相反向量的长度,也就是learning rate,也就是和步长;负号则是表示(u,v)向量的相反。
现在让我们回到泰勒公式成立的条件,当我们的半径d足够小的时候,泰勒公式的一阶展开式:
才会足够准确。
所以如果我们只是一阶展开,我们的步子就不能太大。如果我们的模型足够复杂,我们的步子就可以往前多迈一些。
因此,learning rate便决定着整个推导的条件是否足够准确,当我们的learning rate太离谱的时候,我们很难得到所期望的结果
END
找个女孩子跨年有没有啊???
# ML学习小笔记—Gradien Descent的更多相关文章
- # ML学习小笔记—Linear Regression
Regression Output a scalar Model:a set of function 以Linear model为例 y = b+w * $x_cp$ parameters:b,W f ...
- # ML学习小笔记—Classification
关于本课程的相关资料http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html 通过模型可以分类输入,此时根据分类结果的正确与否会有一个Loss函数.找 ...
- # ML学习小笔记—Where does the error come from?
关于本课程的相关资料http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html 错误来自哪里? error due to "bias" ...
- English - 英语学习小笔记
1.It is...to do sth:做某事是.... 解析:It 是形式主语,后面一半接形容词做表语,to do sth是不定式短语作真正主语. 2.make do和make doing是两种表达 ...
- WEB学习小笔记
环境基于WIN10.IDEA最新版.JDK1.8.TOMCAT9 下面说的有错的地方希望指出,谢谢. STRUT2 1.在maven下的时候系统会系统创建一个叫做log4j的配置文件,但是到了这个版本 ...
- SQL 学习小笔记
1.FOUND_ROWS() 题目: ,; 在上边sql中使用什么选项可以使 SELECT FOUND_ROWS()忽略LIMIT子句,返回总数? *答案* : SQL_CALC_FOUND_ROWS ...
- java学习小笔记(三.socket通信)【转】
三,socket通信1.http://blog.csdn.net/kongxx/article/details/7288896这个人写的关于socket通信不错,循序渐进式的讲解,用代码示例说明,运用 ...
- MongoDB 学习小笔记
1.配置:mongod --dbpath=D:\MongoDB\data mongo2.基本的增删查改 find() update()-- 整体更新,局部更新. 修改器: $inc db.person ...
- vue 的个人学习小笔记
一.vite2.0+vue3.0+ts 创建.配置 个人公众号文章地址 个人github仓库地址 1.Vite 创建 vue3 项目: 1.1.npm 常用命令 1.npm 查看版本号 npm vie ...
随机推荐
- 为什么有IP还需要硬件地址,或者说为什么有硬件地址还需要IP
只用MAC 虽然每个设备都有唯一的硬件地址,但不都是MAC格式. 只用MAC的话理论上是可行的,但是其中 兼容不同的硬件地址,处理起来是非常困难的.而且数据链路层也没有必要处理网络层的逻辑. 只用IP ...
- 打包上传appsto错误 ERROR ITMS-90087: 和WARNING ITMS-90080: 问题
第一个错误 (Hyphenate.framework可以看粗是环信问题) ERROR ITMS-90087: "Unsupported Architectures. The executab ...
- iOS之创建表格类视图WBDataGridView
项目中创建表格, 引用头文件 #import "WBDataGridView.h" - (void)viewDidLoad{ [superviewDidLoad]; // Do a ...
- 大专生自学c++到找到工作的前前后后
先做个自我介绍,我13年考上一所很烂专科民办的学校,学的是生物专业,具体的学校名称我就不说出来献丑了.13年我就辍学了,我在那样的学校,一年学费要1万多,但是根本没有人学习,我实在看不到希望,我就退学 ...
- chrome浏览器中 F12 功能的简单介绍
chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首 ...
- 【rip-基础配置】
配置rip,默认rip id为 1:rip有version1和version2两个版本;宣告与rip直连的网段; 优化rip: [interface_name] rip poison-reverse ...
- PHP解决跨域问题
在做项目的过程中经常需要跨域访问.这里主要介绍一下 PHP 中怎么解决跨域问题. 1.允许所有域名访问 header('Access-Control-Allow-Origin: *'); 2.允许单个 ...
- 帆软中使用switch将控件的显示值“传递”给单元格
如下图,控件的实际值和显示值是我们自定义的. 当我们选择控件时,想要在某个单元格内显示控件的显示值.一般我们在单元格内直接 $控件名 可以获得控件值.比如当我们选择事故数时,我们自然不能在单元格内直 ...
- centos编译安装rabbitmq
安装环境 [root@VM_12_50_centos rabbitmq]# uname -a Linux VM_12_50_centos 3.10.0-514.21.1.el7.x86_64 #1 S ...
- Python学习:3.Python学习基础
Python基础概念 一.编码 Python解释器加载.py文件中的代码的时候,对内容进行编码,在Python2.x中默认使用的是ASCII,因此我们使用Python2.x版本输出中文的时候,会出现以 ...