当前位置: 首页 > 编程日记 > 正文

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(局部最小值点)。
在这里插入图片描述

相关文章:

第九章 9.2 数组的方法(Array Methods)

注:这里只讲解一些 Array() 的最重要的方法。其他更多的参考手册。9.2.1 join() 将所有元素转换为字符串并默认用 "," 连接。可以指定一个附加的参数来自定义分隔符: vara [1, 2, 3];vars a.join(); //s "1,2,3"s a.join(", &…

HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap

http://www.importnew.com/8658.html转载于:https://www.cnblogs.com/passer1991/p/3520563.html

php7+的php-fpm参数配置,注意事项

安装php7的,如果php-fpm的这几个参数设置不当了,会导致php-fpm启动不了,nginx站点不能解析php文件,报404错误。 相关命令:centos7,启动php-fpm: systemctl start php-fpm查看php-fpm是否启动&am…

hung-yi lee_p10_分类/概率生成模型

文章目录研究背景本节目的本节要使用的例子研究过程把分类当成回归来算理想做法找到最佳函数的方法研究成果运用运用过程结果方法改进模型总结讨论为什么选择正态分布模型?关于后验概率的求法之化简与改进猜想一张图总结研究背景 本节目的 Classification:Probabi…

【跃迁之路】【495天】程序员高效学习方法论探索系列(实验阶段252-2018.06.15)...

(跃迁之路)专栏 实验说明 从2017.10.6起,开启这个系列,目标只有一个:探索新的学习方法,实现跃迁式成长实验期2年(2017.10.06 - 2019.10.06)我将以自己为实验对象。我将开源我的学习方法,方法不断…

wpf+xml实现的一个随机生成早晚餐的小demo

话说每到吃完的时间就发愁,真的不知道该吃什么,然后就想到做一个生成吃什么的小软件,既然这个软件如此的简单,就打算用wpf开发吧,也不用数据库了,直接保存在xml中就可以了 程序整体结构如下图 首先我写了一…

CentOS报错:TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error TNS-00511: No listener

问题描述 原因 listener.ora中的ORACLE_HOME错了 解决 这个错误当时是和另一条指令lsnrctl start的错误一起报的,那个已解决,详细做法请各位移步我的另一篇博客 https://blog.csdn.net/weixin_44997802/article/details/109266708

c#数据结构———二叉查找树

using System;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />namespace BinaryTreeLibrary{///创建的是二叉查找树&#xff0c;没有重复的结点值///特点&#xff1a;左支树中任何值都小于父结点值&#xff0c;右结点任何值大于…

Spring事务管理只对出现运行期异常进行回滚

使用spring难免要用到spring的事务管理&#xff0c;要用事务管理又会很自然的选择声明式的事务管理&#xff0c;在spring的文档中说道&#xff0c;spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚&#xff0c;而对检查型异常则不进行回滚操作。那么什么是检查…

struts学习笔记三-国际化

在程序设计领域&#xff0c;人们把能够在无需改写有关代码的前提下&#xff0c;让开发出来的应用程序能够支持多种语言和数据格式的技术称为国际化技术。 国际化简称为 i18n&#xff0c;根据internationalization简化而来。 本地化简称为l10n&#xff0c;根据localization简化而…

TNS-01201: Listener cannot find executable /u01/oracle/bin/extproc for SID orcl Listener failed to

文章目录问题描述原因解决过程结果问题描述 原因 listener.ora文件中ORACLE_HOME的路径错了&#xff0c;导致按照这个路径找不到extproc 解决过程 首先去找ORACLE_HOME的路径 先切换为root用户&#xff08;这样查找时不会有文件夹进不去&#xff09; 输入指令 su root然后…

与技术无关的书单--你可以笑着说有些是“精神鸦片”

??? 转载于:https://www.cnblogs.com/crmhf/p/3823130.html

隐马尔科夫模型HMM(一)HMM模型

2019独角兽企业重金招聘Python工程师标准>>> 隐马尔科夫模型&#xff08;Hidden Markov Model&#xff0c;以下简称HMM&#xff09;是比较经典的机器学习模型了&#xff0c;它在语言识别&#xff0c;自然语言处理&#xff0c;模式识别等领域得到广泛的应用。当然&am…

stella forum v 2.0 的两款主题样式

stella forum v 2.0 的开发工作已经快结束啦&#xff0c;现在我正在加紧努力&#xff0c;想在本周内完成&#xff0c;因为下个星期我可能会不在学校。 下面公开一下我在做的两款主题&#xff0c;第一个是以前v1 版用的经典论坛的样式&#xff0c;而下面的第二款来自一个我很喜欢…

startup mount报错:invalid value given for the diagnostic_dest init.ora parameter

问题描述 解决思路 找到错误控制信息输出路径下的init文件 &#xff08;我的不知道为什么叫做initORCL.ora&#xff09; 将其中的ORACLE_BASE修改为正确路径 解决过程 输入指令 vi /db/app/oracle/product/11.2.0/dbs/initORCL.ora将其中三个涉及到ORACLE_BASE的地方该为正…

java的常用包

java.applet&#xff1a; 包含一些用于创建Java小应用程序的类。运行于html页面中。java.awt &#xff1a;包含一些用于编写与平台无关的图形界面&#xff08;GUI&#xff09;应用程序的类。java.io&#xff1a;包含一些用作输入输出&#xff08;I/O&#xff09;处理的类。java…

jQuery中的 $.ajax的一些方法

1. $(document).ajaxConplete(function(){}) 1.8版本之后&#xff0c;只能绑定到document元素上&#xff1b;1.8版本之前&#xff0c;可以帮到其他元素上 当$.ajax执行完成之后&#xff0c;执行该函数。如果有多个$.ajax请求&#xff0c;就会执行多次&#xff1b;如果有两个或多…

freebsd command

ps -aux netstat -m netstat 1 top pkg_info systat -vm systat -if dmesg netstat -an unix/linux指令集 (简体) (原作者: 农夫) http://www.darkcc.org/fmandarkcc/index.php 转载于:https://www.cnblogs.com/funpower/archive/2005/07/09/189198.html

hung-yi lee_p11_逻辑回归

文章目录step1 Function Setstep2 goodness of a functionstep3 Find the best functionwhy not Logistic Regression Square ErrorDiscriminative v.s. Generative结论&#xff08;判别模型的优势&#xff09;解释-生成模型为何稍逊色生成模型的优势多分类模型逻辑回归的局限…

自定义状态切换按钮

最近在做一个项目&#xff0c;一个界面的按钮UI给画成了这样&#xff08;默认状态是蓝色的然后触摸后变成灰色的&#xff09; UI效果然后本着给低版本系统APP适配的职业素养&#xff08;其实是不想画这种按钮&#xff09;&#xff0c;想让UI兄弟给将图标改成整个按钮效果的图片…

操作SQLite数据库

本文摘自&#xff1a; http://docs.blackberry.com/en/developers/deliverables/25108/Creating_and_deleting_SQLite_databases_1219776_11.jsp 创建和删除 SQLite 数据库 您可以创建临时或永久数据库。 CREATE TABLE 语句可用于创建永久&#xff08;或常规&#xff09;数据库…

刚开始Windows Mobile的开发,请大家多多关照

刚开始学习Windows Mobile的开发&#xff0c;现在正在学习WML和WAP的网站制作&#xff0c;请大家多多关照。转载于:https://www.cnblogs.com/czha2002/archive/2005/07/12/191129.html

STARTUP报错:ORA-00205: error in identifying control file, check alert log for more info

问题描述 startup nomount没有异常 startup mount则出现异常&#xff0c;说明控制文件出错

Java基础知识回顾之六 ----- IO流

前言 在上一篇文章中&#xff0c;回顾了Java的多线程。而在本篇文章中主要介绍Java IO的相关知识。 IO的介绍 什么是IO&#xff1f; IO的名称又来是Input与Output的缩写&#xff0c;也就是输入流和输出流。输入流用于从源读取数据&#xff0c;输出流用于向目标写数据。 可以从下…

选择、分组、引用,指定匹配的位置

正则表达式的语法还包括指定选择项,对子表达式分组和引用前一子表达式的特殊字符.字符| 用于分隔供选择的字符.例如: /ab|cd|ef/ 匹配的是字符串 "ab",或者是字符串 "cd",又或者 "ef". /\d{3}|[a-z]{4}/ 匹配的是要么是一个三位数,要么是四个小写…

用Graphviz来画图 1

做了一个系统&#xff0c;通过配置来完成一些简单或者复杂的产品逻辑&#xff0c; 系统投入使用以后&#xff0c; 产品人员在上面配置了不少产品&#xff0c;产品的流程都是存放在一个xml里面&#xff0c;前几天突然有个想法&#xff0c; 打算把这个流程通过图形表示出来&#…

hung-yi lee_p12_深度学习简介

文章目录三个步骤step 1fully connect feedforward network神经网络原理从非DL到DL什么变了step 2step 3backpropagation注意这是篇头重脚轻的博客。大部分都在讲step1&#xff0c;2、3是飞快过去。三个步骤 step 1 许许多多的逻辑回归&#xff08;神经元&#xff09;模型组成…

openGL学习笔记(1)——常用方法原型解释

1、初始化&#xff0c;设置背景色 void glClear(int mask) 清除缓存 实參含义&#xff1a;GL10.GL_COLOR_BUFFER_BIT 清除颜色缓存 GL10.GL_DEPTH_BUFFER_BIT 清除深度缓存 希望同时清除多个缓存&#xff0c;将实參用或&#xff08;&#xff5c;&#xff09;连接即可 void …

让VBCommenter支持自定义用户名

在使用VBCommenter生成XML格式的注释时&#xff0c;发现在<history></history>标签内的用户名是登陆系统的用户名&#xff0c;而我们的用户名一般是一些简称或其它英文名等&#xff0c;这样在注释中想记录开发人员的真实姓名就必须手工修改&#xff0c;颇不方便。是…

模拟器抓取https方法

说明&#xff1a;为了解决安卓手线上不能抓取https请求&#xff0c;以下整理通过模拟器抓取https请求方法如下&#xff1a;前置条件&#xff1a;安卓模拟器1、夜神抓包工具&#xff1a;fiddler、charles不要安装证书 第一步安装模拟器 可以按照夜神模拟器步骤省略 第二步de.rob…