热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

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

正确的优化算法可以成倍地减少训练时间许多人在训练神经网络时可能会使用优化器,而不知道该方法称为优化。优化器是用于更改神经网络属性(例如权重和学习率&#x





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


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



文章目录


    • 梯度下降
    • 随机梯度下降
    • 小批量梯度下降
    • 其它优化算法
    • 各个优化算法比较动态图
    • 福利赠书
      • 推荐
      • 内容简介





梯度下降

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

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

优点:


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

缺点:


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

随机梯度下降

它是梯度下降的变体。它尝试更频繁地更新模型的参数。在这种情况下,模型参数在计算每个训练示例的损失后会发生变化。因此,如果数据集包含 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语言的入门读者阅读,也适合想学习智能优化算法但无从下手的编程爱好者阅读。另外,本书也适合作为相关专业的教材使用。







推荐阅读
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文档旨在帮助开发者回顾游戏开发中的人工智能技术,涵盖移动算法、群聚行为、路径规划、脚本AI、有限状态机、模糊逻辑、规则式AI、概率论与贝叶斯技术、神经网络及遗传算法等内容。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • QBlog开源博客系统:Page_Load生命周期与参数传递优化(第四部分)
    本教程将深入探讨QBlog开源博客系统的Page_Load生命周期,并介绍一种简洁的参数传递重构方法。通过视频演示和详细讲解,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
author-avatar
峡谷人123_742
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有