李宏毅《机器学习 深度学习》简要笔记(一)

李宏毅《机器学习 深度学习》简要笔记(一)线性回归,梯度下降,优化算法


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

P1

一、线性回归中的模型选择

李宏毅《机器学习 深度学习》简要笔记(一)

上图所示:

  五个模型,一个比一个复杂,其中所包含的function就越多,这样就有更大几率找到一个合适的参数集来更好的拟合训练集。所以,随着模型的复杂度提高,train error呈下降趋势。

 

李宏毅《机器学习 深度学习》简要笔记(一)

上图所示:

  右上角的表格中分别体现了在train和test中的损失值大小,可以看出,从第三个模型开始,就呈过拟合(Overfitting)状态。

 

二、分种类的训练模型

当模型会根据种类不同而有较大区别时,可以分种类来形成多个不同的model。在李宏毅老师举例中,不同的精灵在进化前和进化后CP值得变化曲线是不同的。如下图所示:

李宏毅《机器学习 深度学习》简要笔记(一)

李宏毅《机器学习 深度学习》简要笔记(一)

这样分类别来训练模型,可以更好的让model拟合真实数据。

三、添加正则化

李宏毅《机器学习 深度学习》简要笔记(一)

  使用正则化后,当w非常小(接近0)的时候,我们的输入变化对结果的影响会趋于0。所以我们可以通过调整λ参数来调整正则化的强度。λ越大时,模型曲线更平滑。

  在这里,我们不需要对b进行正则化,因为b只会影响模型曲线上下移动(b是常数),所以无需对其进行调整。

李宏毅《机器学习 深度学习》简要笔记(一)

如上图所示:

  根据λ从小变大,test的损失越来越小,达到一个最小值后,又越来越大。而train的损失值逐渐变大。这是因为当λ变大时,模型越来越平滑,在降低过拟合的同时,也使得对训练数据的拟合度降低。如图中曲线所示,我们可以找到一个train和test损失值最相近的地方,这里就是λ的最佳取值。

  我们需要将曲线变得平滑一点,但又不能将其变得过于平滑,如果过于平滑就会从过拟合(train的loss低,test的loss高)变为欠拟合(train的loss高,test的loss也比较高)。

 

P2

一、学习率的调整

李宏毅《机器学习 深度学习》简要笔记(一)

 

  在我们调整学习率的时候,我们尽量画出右边的曲线,观察学习率是否过大或过小,然后选择一个最合适的学习率η。

二、学习率的自动调整

 Adagrad:

李宏毅《机器学习 深度学习》简要笔记(一)

  在Adagrad中,学习率在每次迭代的时候,都除以以前所有步数的梯度的平方和根。但是Adagrad有个问题,就是学习率衰减很快,有可能提前结束训练,从而无法从后面的数据中学习到有用的信息。

  在这里面,可以看出一个比较矛盾的地方,即gt比较大的时候,分母也会比较大,与我们初衷不符(应该是在陡峭的地方,我们希望学习率越大),这背后的原理我们可以参考P2中19:30-31:00的讲解。

 

SGD:

李宏毅《机器学习 深度学习》简要笔记(一)

  SGD就是每看一个样本就更新一次权重。假设一共有20个样本,普通的梯度下降每次迭代都要看20个样本,然后使用平均的梯度来更新权重,但是如果使用SGD的话,我们同样看20个样本,则已经更新20次。如图中所示,后者在更新20次后,所前进到的位置优于前者。

  但SGD有一个缺点,就是每一个样本都更新权重,则使得在计算上可能无法充分发挥矩阵运算的效率。而且在接近最优解的地方可能震荡范围比较大。

 

特征伸缩(Gradient Descent):

李宏毅《机器学习 深度学习》简要笔记(一)

  特征伸缩可以将取值范围差别很大的特征伸缩到范围处于同一量级,这样的话相当于同一了各个维度的梯度(不会出现一个方向很平缓、一个方向很陡峭的极端情况)。这样在更新权重的时候,每个方向的更新速度就相差不大,这样可以加快收敛的速度。

李宏毅《机器学习 深度学习》简要笔记(一)

   如上图所示,对于R个样本,每个样本中不同Feature分别求平均值Mi,然后各个值减去相应的平均值,然后再除以方差。这样就会使得该Feature的所有数据的平均值为0,方差为1。如下图所示:

李宏毅《机器学习 深度学习》简要笔记(一)

三、梯度下降的来源

参考P2 44:20-59:30对梯度下降的推导过程。

1.通过泰勒级数(Taylor Series)将Loss function展开。

李宏毅《机器学习 深度学习》简要笔记(一)

 

2.在梯度下降中,我们只考虑k=0和k=1的情况,也就是说只使用一阶微分。在多变量的情况下:

李宏毅《机器学习 深度学习》简要笔记(一)

3.当红框非常小的时候,以上式子才成立

李宏毅《机器学习 深度学习》简要笔记(一)

4.我们将式子做一定变换,然后忽略常数S,我们如何来使L(θ)最小,我们就需要取(Δθ1,Δθ2)的方向与(u,v)相反,如下图所示:

李宏毅《机器学习 深度学习》简要笔记(一)

5.下图中描述,当红圈非常小时,L(θ)式子才成立,我们将u和v的计算式带入L(θ)就可以得到梯度下降对权重更新公式。当然,在梯度下降中,我们只考虑了泰勒级数的一阶微分项。在某种情况下,我们也可以将二阶甚至三阶加入考虑(例如牛顿法就考虑了二次式),但是由于二阶以上的微分求解消耗比较大,所以在梯度下降中并未做考虑。一定要注意,要让梯度下降算法生效,最重要的就是红色圆圈要足够小,也就是说学习率要足够小。

 李宏毅《机器学习 深度学习》简要笔记(一)

四、我们无法知道梯度更新接近0的时候是不是局部最优

P3

李宏毅《机器学习 深度学习》简要笔记(一)

  当我们执行梯度下降时,我们就像上图中游戏一样,我们无法知道我们走到的一个梯度接近0的位置到低是不是局部最优(甚至全局最优),因为周边都是黑雾,除非我们作弊开天眼。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168398.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • python pkl文件_Python字符串格式化输出的方式包括

    python pkl文件_Python字符串格式化输出的方式包括1.pkl文件pkl文件是python里面保存文件的一种格式,如果直接打开会显示一堆序列化的东西(二进制文件)。常用于保存神经网络训练的模型或者各种需要存储的数据。保存神经网络训练模型举例(使用pytorch进行保存)保存整个网络:torch.save(net,‘net.pkl’)保存网络的状态信息:torch.save(net.state_dict(),‘net_params.pkl’)提取神经网络的方法:torch.load(‘net.pkl’)存储数据举例importpan

    2022年9月9日
  • HTML CSS整理笔记[通俗易懂]

    HTML CSS整理笔记[通俗易懂]常见字体单位:1.em移动端常用的字体尺寸单位,说白em就相当于“倍”,比如设置当前的div的字体大小为1.5em,则当前的div的字体大小为:当前div继承的字体大小*1.5。但当div进行嵌套时,em始终按当前div继承的字体大小来缩放。2.remr是root的意思,即相对于根节点html的font-size进行缩放,当有嵌套关系时,嵌套关系的元素的字体大小始终按照根节点的字体大小…

    2022年6月26日
  • mysql8 安装启动报错[通俗易懂]

    注意点1my.ini配置,其中这两项一定要按这个格式,双引号及双反斜杠,否则初始化时会报下面的错basedir="D:\\tool\\MYSQL\\mysql-8.0.12-winx64"datadir="D:\\tool\\MYSQL\\mysql-8.0.12-winx64\\data"[mysqld]#Removeleading#andsettothe…

    2022年4月15日
  • 教你两分钟做出一个精美好用的404页面

    教你两分钟做出一个精美好用的404页面怎么快速的做好网站404跳转页面?要想做的又快又好,开源字节建议就套用精美的模板即可。总的来说就是利用404页面模板,进行修改,修改好一个404页面上传到网站根目录,然后一般在网站空间的后台直接设置选择用此文件作为404页面即可。具体利用404模板修改制作404页面流程如下:第一步获取404代码文件,下载一套404页面模板(一般一个404代码文件,和一张404图片)第二步修改文件信息,把404页面代码文件里面的链接文字等修改成适用自己的网站的信息。域名,关键字,404图片调用路径

    2022年7月27日
  • mybatis date转string_mybatis字符串转日期

    mybatis date转string_mybatis字符串转日期mybatismysql时间字符串转date(查询)andcreate_time<=str_to_date(#{createTime},’%Y-%m-%d%H:%i:%s’)andDATE_FORMAT(create_time,’%Y-%m-%d%H:%i:%s’)>=DATE_FORMAT(#{queryStartTime},’%Y-%m-%d%H:%i:%s’)andcreate_time>=DATE_FORMAT(#{queryStart

    2022年9月28日
  • 4个世界上最长域名的网站是_域名最长多少个字符

    4个世界上最长域名的网站是_域名最长多少个字符第一个http://www.llanfairpwllgwyngyllg…iliogogogoch.co.uk/这个域名属于一个旨在宣传英国圭内斯郡安格尔西的一个同名村庄,这个名字的意思是“位于急流附近白榛树山谷中的圣玛丽亚教堂和红山洞附近的圣泰西里奥教堂。”第二个http://www.111111111111111111111…11111111111111.com/这个域

    2022年10月3日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号