最小值的最优化问题

无约束极小值的最优化条件

 

关于多元函数极小值点的必要条件:

满足的点称之为f(x)的驻点或稳定点,但是反过来,满足梯度条件的点不一定是f(x)的局部极小值。因此,定理转化为求解下面的方程组问题:  

                         

 

  对于上面的线性方程组,利用解析法(如高斯消元法、矩阵三角分解法等)可以较方便求解,但是遗憾的是,f(x)一般是很复杂的非线性函数,求解非线性方程组并不比求解最优化问题简单,甚至比求解最优化问题更困难、更复杂。因此,在机器学习领域,求解最优化问题,一般不会通过解析法来求解上式,而是通过数值计算方法来直接求取函数极值。

  迭代法是数值计算最常用的最优化方法,它的基本思想是:首先给定f(x)的一个极小值点得到初始估计x0,然后通过迭代的方式得到点序列{xt},如果这个点序列的极限x*逼近极小值点,那么成这个序列为极小化序列。这个极小化序列通过迭代公式可以写成:

             

  其中d是一个方向向量,λ称为步长(或学习率),当λ和d都被确定后,也就可以唯一确定点下一个点xk+1,并以此迭代,最后求得极小值点。

  注意:各种迭代算法的区别就在于得到步长λ和方向d的方式不同。一个好的迭代算法应满足的两个条件:递减性和收敛性。

 

 

梯度下降:

  梯度下降是神经网络最常用的优化方法之一。它的方向就是f在该点x0处函数值增长最快的方向。基于梯度的这个性质,如果把迭代的每一步沿着当前点的梯度方向的反方向进行迭代,那么就能得到一个逐步递减的极小化序列。

  根据每一次迭代所使用的训练数据集范围不同,可以把梯度下降算法区分为:

  •   批量梯度下降:也称之为最速下降法,误差损失函数有全量训练数据我的误差构成,因此,当数据量很大的时候,速度会非常慢,同时,它不能以在线的方式更新模型,也就是,当训练数据有新元素加入时,需要对全量的数据进行更新,效率很低。因此当前的梯度下降法一般都不会采用这个策略。
  •        随机梯度下降:随机梯度下降是对批量梯度下降的改进,该算法每一次更新,只考虑一个样本数据的误差损失,因此,它的速度要远远优于批量梯度下降。更主要的是,它能进行在线的参数更新。但是缺点是:由于单个样本会出现相似或重复的情况,数据的更新会出现冗余,此外,单个数据之间的差异会比较大,造成每一次迭代的损失函数会出现比较大的波动。
  •        小批量梯度下降:该算法结合了前两者的优点,克服了它们的缺点。其策略是指每次的参数更新,优化的目标函数是由n个样本数据构成,n的值一般较小,一般取到10到500之间,这种做法有3个优点:

    1. 每一批的数据量较小,特别适合高效的矩阵运算,尤其是GPU的并行加速,因此虽然小批量梯度算法的训练数据要比随机梯度下降算法多,但效率上与随机梯度算法差别不大。

    2. 与随机梯度下降算法相比,小批量梯度算法每一批考虑了更多的样本数据,每一批数据之间的整体差异更小、更平均,结果也更稳定。

    3. 由于效率与随机梯度下降算法相当,因此小批量梯度策略同样适用于在线的模型更新。

  

  一般来说,当前的梯度下降算法普遍采用第三个---小批量梯度算法策略。

 

  梯度下降中用于确定步长和方向向量的几个不同算法的策略:

      1. 传统更新策略:vanilla策略,最简单的参数更新策略,参数沿着其梯度反方向变化。lr是学习率,预先设置的固定值超参数。

      2. 动量更新策略:

                                     

      3. 改进的动量更新策略:

                                        

 

      4. 自适应梯度策略:以上方法都是对迭代方法的优化,而步长是固定的,该策略考虑学习率对着迭代次数变化而变化的自适应梯度策略。

                

 

                                          

 

转载于:https://www.cnblogs.com/CynthiaWendy/p/11024396.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第2课 - 搭建Lua开发环境

第2课 - 搭建Lua开发环境 1. Lua 的优点 (1)Lua 使用标准的 ANSI C 进行开发,可以无缝集成到宿主程序,且几乎支持所有平台。 (2)Lua 是开源且免费的软件,以源码的方式直接发布。开源软件的发布方…

(私人收藏)python学习(游戏、爬虫、排序、练习题、错误总结)

python学习(游戏、爬虫、排序、练习题、错误总结) https://pan.baidu.com/s/1dPzSoZdULHElKvb57kuKSgl7bz python100经典练习题python-错误和异常小结python-大作业之五子棋游戏(附代码)python-网络爬虫几种排序方法python实现新手常见的python运行时错误…

MySQL性能指标及计算方法

MySQL性能指标及计算方法 绝大多数MySQL性能指标可以通过以下两种方式获取: (1)mysqladmin 使用mysqladmin extended-status命令获得的MySQL的性能指标,默认为累计值。如果想了解当前状态,需要进行差值计算&#xff1b…

php可变变量讲解,PHP可变变量实例详解

什么是可变变量?在PHP中有一个其他类型的变量,“可变变量”。可变变量是一种PHP独特的变量,他允许动态改变一个变量的名称。可变变量的工作原理这个特性的工作原理是用一个变量的值作为另一个变量的名称。例如,我们可以设置$str的…

Python自动化运维:Django之View视图和Template

views详解 http请求中产生两个核心对象: http请求:HttpRequest对象 http响应:HttpResponse对象 (1) HttpRequest对象 当请求一个页面时,Django 创建一个 HttpRequest对象包含原数据的请求。然后 Django 加载…

java重入锁,再探JAVA重入锁

之前的文章中简单的为大家介绍了重入锁JAVA并发之多线程基础(2)。这里面也是简单的为大家介绍了重入锁的几种性质,这里我们就去探索下里面是如何实现的。我们知道在使用的时候,必须锁先有定义,然后我们再拿着当前的锁进行加锁操作&#xff0c…

【GoWeb开发实战】Cookie

cookie Web开发中一个很重要的议题就是如何做好用户的整个浏览过程的控制,因为HTTP协议是无状态的,所以用户的每一次请求都是无状态的,我们不知道在整个Web操作过程中哪些连接与该用户有关,我们应该如何来解决这个问题呢&#xff…

Spring中WebApplicationInitializer的理解

现在JavaConfig配置方式在逐步取代xml配置方式。而WebApplicationInitializer可以看做是Web.xml的替代,它是一个接口。通过实现WebApplicationInitializer,在其中可以添加servlet,listener等,在加载Web项目的时候会加载这个接口实…

网络摄像头CVE

CVE-2018-9995 rtsp未授权访问 rtsp后缀整理: Axis(安讯士) rtsp:// 192.168.200.202/axis-media/media.amp?videocodech264&resolution1280x720 rtsp://IP地址/mpeg4/media.amp rtsp://IP地址/安迅士/AXIS-media/media.amp123D-Link …

Elastic-job使用及原理

一、原理 elastic-job有lite版和cloud版,最大的区别是有无调度中心,笔者采用的是lite版本,无中心化。 tips: 第一台服务器上线触发主服务器选举。主服务器一旦下线,则重新触发选举,选举过程中阻塞,只有主服…

BeanShell自动装箱拆箱

“装箱”和“拆箱”是用来描述自动包装一个原始类型到一个包装类以及在必要时解开包装回到原始类型的术语。装箱是 Java 的特性(SDK 1.5)之一,且 BeanShell 已支持多年。 BeanShell 支持原始类型的装箱和拆箱。比如: int i5; Inte…

安装Docker step by step

1. 系统要求 centos7以上 使用cat /etc/redhat-release查看系统版本,我的Centos 7.6 centos-extra 仓库 enable,默认是打开的 2.安装docker docer安装分为联网安装和离线安装两种安装 方式, 第一种 在有外网环境下安装docker,一般使用yum安…

微信小程序 php配置,微信小程序的配置

我们使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。以下是一个包含了所有配置选项的简单配置app.json{"pages": ["pages/index/index","pages/logs/index"],"wi…

PWA - service worker - Workbox(未完)

Get Started(开始) 只有get请求才能cache缓存吗?Create and Register a Service Worker File(创建和注册 Service Worker) Before we can use Workbox, we need to create a service worker file and register it to o…

System类入门学习

第三阶段 JAVA常见对象的学习 System类 System类包含一些有用的字段和方法,他不能被实例化 //用于垃圾回收 public static void gc()//终止正在运行的java虚拟机。参数用作状态码,根据惯例,非0表示异常终止 public static void exit(int stat…

gulpfile php,Laravel利用gulp如何构建前端资源详解

什么是gulp?gulp是新一代的前端项目构建工具,你可以使用gulp及其插件对你的项目代码(less,sass)进行编译,还可以压缩你的js和css代码,甚至压缩你的图片,gulp仅有少量的API,所以非常容易学习。 gulp 使用 st…

8-python自动化-day08-进程、线程、协程篇

本节内容 主机管理之paramiko模块学习 进程、与线程区别python GIL全局解释器锁线程语法join线程锁之Lock\Rlock\信号量将线程变为守护进程Event事件 queue队列生产者消费者模型Queue队列开发一个线程池进程语法进程间通讯进程池 转载:  http://www.cnblogs.co…

select查询语句执行顺序

查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by 其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序 与sql语句的书写顺序并不是一样的,而是按照下面的…

Python的Virtualenv(虚拟环境)的使用(Windows篇)2

Python的Virtualenv(虚拟环境)的使用(Windows篇) 2018年04月13日 11:35:01 D_FallMoon 阅读数 771 版权声明:版权所有 装载请注明 …

创建邮箱过程中的问题及解决办法

转自白手起家博客 http://bbs.chinaunix.net/forum.php?modviewthread&tid770141 说明一下:Q代表安装过程中遇到的问题,或者是日志中出现的现象。A:代表解决方法。 Q: Jan 13 11:26:29 mail authdaemond: failed to connect …