优化函数

损失函数

BGD

我们平时说的梯度现将也叫做最速梯度下降,也叫做批量梯度下降(Batch Gradient Descent)。

  • 对目标(损失)函数求导

  • 沿导数相反方向移动参数

在梯度下降中,对于参数的更新,需要计算所有的样本然后求平均,其计算得到的是一个标准梯度(这是一次迭代,我们其实需要做n次迭代直至其收敛)。因而理论上来说一次更新的幅度是比较大的。

SGD

与BGD相比,随机也就是说我每次随机采用样本中的一个例子来近似我所有的样本,用这一个随机采用的例子来计算梯度并用这个梯度来更新参数,即SGD每次迭代仅对一个随机样本计算梯度,直至收敛。

  • 由于SGD每次迭代只使用一个训练样本,因此这种方法也可用作online learning。

  • 每次只使用一个样本迭代,若遇上噪声则容易陷入局部最优解。

mini-batch SGD

他用了一些小样本来近似全部的,其本质就是既然SGD中1个样本的近似不一定准,那就用更大的30个或50(batch_size)个样本来近似,即mini-batch SGD每次迭代仅对n个随机样本计算题都,直至收敛。

  • 随机在训练集中选取一个mini-batch,每个mini-batch包含n个样本;(n<N,N为总训练集样本数)

  • 在每个mini-batch里计算每个样本的梯度,然后在这个mini-batch里求和取平均作为最终的梯度来更新参数;(注意虽然这里好像用到了BGD,但整体整体mini-batch的选择是用到了SGD)

  • 以上两步可以看做是一次迭代,这样经过不断迭代,直至收敛

优化-最小化损失函数的三种主要方法:梯度下降(BGD)、随机梯度下降(SGD)、mini-batch SGD的更多相关文章

  1. 重载 CreateParams 方法[1]: 从一个例子开始(取消窗口最大化、最小化按钮的三种方法)

    方法1: 使用 TForm 的 BorderIcons 属性 unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, C ...

  2. RFID标签天线的三种制作方法

    在RFID标签中,天线层是主要的功能层,其目标是传输最大的能量进出标签芯片.RFID天线是按照射频识别所要求的功能而设计的电子线路,将导电银浆或导电碳浆网印在PVC.PC或PET上,再与面层.保护层和 ...

  3. Liunx 环境下vsftpd的三种实现方法(超详细参数)

    以下文章介绍Liunx 环境下vsftpd的三种实现方法 ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.tar.gz,目前已经到2.0.3版本.假 ...

  4. Android开发 ---Button的OnClickListener的三种实现方法

    button的OnClickListener的三种实现方法 onclick事件的定义方法,分为三种,分别为 1.在xml中进行指定方法: 2.在Actitivy中new出一个OnClickListen ...

  5. javase-常用三种遍历方法

    javase-常用三种遍历方法 import java.util.ArrayList; import java.util.Iterator; import java.util.List; public ...

  6. JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法

    相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...

  7. Java中Map的三种遍历方法

    Map的三种遍历方法: 1. 使用keySet遍历,while循环: 2. 使用entrySet遍历,while循环: 3. 使用for循环遍历.   告诉您们一个小秘密: (下↓面是测试代码,最爱看 ...

  8. Jquery中each的三种遍历方法

    Jquery中each的三种遍历方法 $.post("urladdr", { "data" : "data" }, function(dat ...

  9. spring与mybatis三种整合方法

    spring与mybatis三种整合方法 本文主要介绍Spring与Mybatis三种常用整合方法,需要的整合架包是mybatis-spring.jar,可通过链接 http://code.googl ...

随机推荐

  1. elcipse 安装lombok插件解决 @Slf4j 等找不到log变量问题

    参考:http://blog.51cto.com/4925054/2127840 <dependency> <groupId>org.projectlombok</gro ...

  2. leetcode999

    class Solution: def numRookCaptures(self, board: 'List[List[str]]') -> int: basei = 0 basej = 0 r ...

  3. 高并发和大流量解决方案--CND加速

    CDN全称 Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定.通过在网络各处放置节点 ...

  4. [手把手教你] 用Swoft 搭建微服务(TCP RPC)

    序言 Swoft Framework 基于 Swoole 原生协程的新时代 PHP 全栈式协程框架 Swoft 是什么? Swoft 框架是首个基于Swoole 原生协程的新时代 PHP高性能协程全栈 ...

  5. 用递归方法计算斐波那契数列第n项的和

    参考: https://blog.csdn.net/xuzhangze/article/details/78568702 波那契数列数列从第3项开始,每一项都等于前两项之和.即 第n项的值为  (n- ...

  6. java中定义的四种类加载器

    1,Bootstrap ClassLoader   启动类加载器2,ExtClassLoader   扩展类加载器3,AppClassLoader   系统类加载器4,ClassLoader   类加 ...

  7. Leetcode 题解 Longest Substring Without Repeating Characters_需要重做

    最长的没有重复的字符串. 这个题其实不难.但是我第二次做了,硬是把它做出了难的感觉... 变量命名要合理.可读性强.

  8. greenlet

    在任何时刻,只有一个greenlet在运行,合理安排的串行. http://www.cnblogs.com/xybaby/p/6337944.html

  9. mysql 的sleep线程过多处理方法

    php程序不要使用长连接:java程序调整连接池 什么是长连接? 其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态. 通常的短连接操作步骤是: 连接->数据传输-& ...

  10. Extjs动态增删组件

    在项目中遇到要动态的增加删除一个组件,于是就查找资料,实现了下面的效果. Ext.onReady(function(){ // Ext.Msg.alert("提示","h ...