草庐IT

训练神经网络的各种优化算法【文末赠书】

川川菜鸟 2024-04-12 原文

正确的优化算法可以成倍地减少训练时间

许多人在训练神经网络时可能会使用优化器,而不知道该方法称为优化。优化器是用于更改神经网络属性(例如权重和学习率)以减少损失的算法或方法。

文章目录

梯度下降

梯度下降是最基本但使用最多的优化算法。它在线性回归和分类算法中大量使用。神经网络中的反向传播也使用梯度下降算法。

梯度下降是一种一阶优化算法,它依赖于损失函数的一阶导数。它计算应该改变权重的方式,以便函数可以达到最小值。通过反向传播,损失从一层转移到另一层,模型的参数(也称为权重)根据损失进行修改,从而使损失最小化。

优点:

  • 容易计算。
  • 易于实施。
  • 容易理解。

缺点:

  • 可能陷入局部最小值。
  • 在计算整个数据集的梯度后,权重会发生变化。因此,如果数据集太大,可能需要数年时间才能收敛到最小值。
  • 需要大内存来计算整个数据集的梯度

随机梯度下降

它是梯度下降的变体。它尝试更频繁地更新模型的参数。在这种情况下,模型参数在计算每个训练示例的损失后会发生变化。因此,如果数据集包含 1000 行,SGD 将在数据集的一个循环中更新模型参数 1000 次,而不是像梯度下降中那样更新一次。

θ=θ−α⋅∇J(θ;x(i);y(i)) ,其中 {x(i) ,y(i)} 是训练样本

由于模型参数更新频繁,参数在不同强度下具有较大的方差和损失函数波动。

优点:

  • 因此,频繁更新模型参数可以在更短的时间内收敛。
  • 需要更少的内存,因为不需要存储损失函数的值。
  • 可能会得到新的最小值。

缺点:

  • 模型参数的高方差。
  • 即使在达到全局最小值后也可能射击。
  • 要获得与梯度下降相同的收敛性,需要慢慢降低学习率的值。

小批量梯度下降

它是梯度下降算法所有变体中最好的。它是对 SGD 和标准梯度下降的改进。它在每批次后更新模型参数。因此,数据集被分成不同的批次,每批次之后,参数都会更新。

θ=θ−α⋅∇J(θ; B(i)),其中 {B(i)} 是训练样本的批次。

优点:

  • 经常更新模型参数并且方差也较小。
  • 需要中等的内存

所有类型的梯度下降都有一些挑战:

  • 选择学习率的最佳值。如果学习率太小,梯度下降可能需要很长时间才能收敛。
  • 对所有参数都有一个恒定的学习率。可能有一些参数我们不想以相同的速率改变。
  • 可能会陷入局部极小值。

其它优化算法

具体我就不再详细介绍,其它优化器如下:

  • Momentum
  • Nesterov Accelerated Gradient
  • Adagrad
  • AdaDelta
  • Adam

各个优化算法比较动态图

可见Adam 是最好的优化器。对于稀疏数据,使用具有动态学习率的优化器。如果,想使用梯度下降算法,那么 min-batch 梯度下降是最好的选择。

福利赠书

大家在评论区对本文进行评论,宣传转发文章让朋友给你的评论点赞,对被点赞数量前三名同学每人赠送一本,活动本周星期天结束,符合条件同学,下方卡片添加我联系方式,给我收货地址。其余未被选中同学可以官网购买,有优惠。

京东:https://item.jd.com/13422442.html
当当:http://product.dangdang.com/29301483.html

推荐

“智能算法”是指在工程实践中,经常会接触到一些比较“新颖”的算法或理论,比如模拟退火,遗传算法,禁忌搜索,神经网络,天牛须搜索算法,麻雀搜索算法等。这些算法或理论都有一些共同的特性(比如模拟自然过程。它们在解决一些复杂的工程问题时大有用武之地。在许多情况下,智能算法是处理和解决各种具有挑战性的工程问题的实用替代技术。

目前图书市场上关于智能优化算法的图书很多,但大部分书籍讲解的智能优化算法时间较为久远,近10年内讲解较为热门的智能优化算法,以及给出使用热门智能优化算法求解实际问题代码的书籍几乎没有。《MATLAB智能优化算法:从写代码到算法思想》这本书以实战和快速教会智能优化算法初学者为主旨,通过9个常见的组合优化问题、5个经典的智能优化算法及4个新颖的智能优化算法,让读者全面、深入、透彻地理解智能优化算法求解问题时的算法设计思路及代码编写思路,进一步提高使用智能优化算法求解实际问题的实战能力,内容通俗易懂,案例丰富,实用性强,特别适合MATLAB语言的入门读者阅读,也适合想学习智能优化算法但无从下手的编程爱好者阅读

内容简介

本书以简单的组合优化问题作为MATLAB智能优化算法实战应用的切入点,逐步深入使用MATLA编写更复杂的智能优化算法和求解更复杂的组合优化问题,让读者逐渐理解智能优化算法的实际求解过程。

本书分为10章,涵盖的主要内容有遗传算法求解0-1背包问题、变邻域搜索算法求解旅行商问题、大规模邻域搜索算法求解旅行商问题、灰狼优化算法求解多旅行商问题、蚁群算法求解容量受限的车辆路径问题、模拟退火算法求解同时取送货的车辆路径问题、遗传算法求解带时间窗的车辆路径问题、萤火虫算法求解订单分批问题、头脑风暴优化算法求解带时间窗和同时取送货的车辆路径问题、鲸鱼优化算法求解开放式车辆路径问题。

本书内容通俗易懂,案例丰富,实用性强,特别适合MATLAB语言的入门读者阅读,也适合想学习智能优化算法但无从下手的编程爱好者阅读。另外,本书也适合作为相关专业的教材使用。

有关训练神经网络的各种优化算法【文末赠书】的更多相关文章

  1. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  2. ruby - 是否有用于序列化和反序列化各种格式的对象层次结构的模式? - 2

    给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最

  3. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  4. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  5. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  6. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

  7. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  8. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  9. 100个python算法超详细讲解:画直线 - 2

    1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva

  10. 常见网络安全产品汇总(私信发送思维导图) - 2

    安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un

随机推荐