政安晨:【深度学习神经网络基础】(十一)—— 激活函数的导数以及在反向传播中的应用

目录

线性激活函数的导数

Softmax激活函数的导数

S型激活函数的导数

双曲正切激活函数的导数

ReLU激活函数的导数

如何在反向传播中应用

批量训练和在线训练

随机梯度下降

反向传播权重更新

选择学习率和动量

Nesterov动量


政安晨的个人主页政安晨

欢迎 👍点赞✍评论⭐收藏

收录专栏政安晨的机器学习笔记

希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!

反向传播过程需要激活函数的导数,它们通常确定反向传播过程将如何执行。大多数现代深度神经网络都使用线性、Softmax和ReLU激活函数。我们还会探讨S型和双曲正切激活函数的导数,以便理解ReLU激活函数为何表现如此出色。

线性激活函数的导数

线性激活函数被认为不是激活函数,因为它只是返回给定的任何值。因此,线性激活函数有时称为一致激活函数。该激活函数的导数为1,如下公式所示:

如前文所述,希腊字母\phi表示激活函数,在\phi右上方的撇号表示我们正在使用激活函数的导数。这是导数的几种数学表示形式之一。

Softmax激活函数的导数

在本文中,Softmax激活函数和线性激活函数仅在神经网络的输出层上使用。

方便起见,下面公式再次展示了Softmax激活函数:

z向量代表所有输出神经元的输出。

下面公式展示了该激活函数的导数:

对于上述导数,我们使用了稍微不同的符号。带有草书风格的∂符号的比率表示偏导数,当你对具有多个变量的方程进行微分时会使用这个符号。要取偏导数,可以将方程对一个变量微分,而将所有其他变量保持不变。上部的∂指出要微分的函数。在这个例子中,要微分的函数是激活函数\phi。下部的∂表示偏导数的分别微分。在这个例子中,我们正在计算神经元的输出,所有其他变量均视为常量。

微分是瞬时变化率:一次只有一个变量能变化。

如果使用交叉熵误差函数,就不会使用线性或Softmax激活函数的导数来计算神经网络的梯度。

通常你只在神经网络的输出层使用线性和Softmax激活函数。

因此,我们无须担心它们对于内部节点的导数。

对于使用交叉熵误差函数的输出节点,线性和Softmax激活函数的导数始终为1。

因此,你几乎不会对内部节点使用线性或Softmax激活函数的导数。

S型激活函数的导数

下面公式展示了S型激活函数的导数:

机器学习经常利用公式上面中表示的S型激活函数。我们通过对S型函数的导数进行代数运算来导出该公式,以便在其自身的导数计算中使用S型激活函数。为了提高计算效率,上述激活函数中的希腊字母\phi表示S型激活函数。

在前馈过程中,我们计算了S型激活函数的值。保留S型激活函数的值使S型激活函数的导数易于计算。

双曲正切激活函数的导数

下面公式给出了双曲正切激活函数的导数:

在咱们这个系列文章中,我们建议使用双曲正切激活函数,而不是S型激活函数。

ReLU激活函数的导数

下面公式展示了ReLU激活函数的导数:

严格来说,ReLU激活函数在0处没有导数,但是,由于约定,当x为0时,0处的梯度被替换。具有S型和双曲正切激活函数的深层神经网络可能难以通过反向传播进行训练。造成这一困难的因素很多,梯度消失问题是最常见的原因之一。

下图展示了双曲正切激活函数及其梯度/导数。

上图表明,当双曲正切激活函数(实线)接近−1和1时,双曲正切激活(虚线)的导数消失为0。

S型和双曲正切激活函数都有这个问题,但ReLU激活函数没有。

下图展示了S型激活函数及其消失的导数:

如何在反向传播中应用

反向传播是一种简单的训练算法,可以利用计算出的梯度来调整神经网络的权重。该方法是梯度下降的一种形式,因为我们将梯度降到较低的值。随着程序调整这些权重,神经网络将产生更理想的输出。神经网络的整体误差应随着训练而下降。在探讨反向传播权重的更新过程之前,我们必须先探讨更新权重的两种不同方式。

批量训练和在线训练

我们已经展示了如何为单个训练集元素计算梯度。在本文的前面,我们对神经网络输入[1,0]并期望输出1的情况计算了梯度。对于单个训练集元素,这个结果是可以接受的,但是,大多数训练集都有很多元素。因此,我们可以通过两种方式来处理多个训练集元素,即在线训练和批量训练。

在线训练意味着你需要在每个训练集元素之后修改权重。利用在第一个训练集元素中获得的梯度,你可以计算权重并对它们进行更改。训练进行到下一个训练集元素时,也会计算并更新神经网络。训练将继续进行,直到你用完每个训练集元素为止。至此,训练的一个迭代或一轮(epoch)已经完成。

批量训练也利用了所有训练集元素,但是,我们不着急更新所有权重。作为替代,我们对每个训练集元素的梯度求和。一旦我们完成了对训练集元素梯度的求和,就可以更新神经网络权重。至此,迭代完成。

有时,我们可以设置批量的大小。

如你的训练集可能有10 000个元素,此时可选择每1 000个元素更新一次神经网络的权重,从而使神经网络权重在训练迭代期间更新10次。

随机梯度下降

批量训练和在线训练不是反向传播的仅有选择。

随机梯度下降(SGD)是反向传播算法中最受欢迎的算法。

SGD可以用批量或在线训练模式工作。在线SGD简单地随机选择训练集元素,然后计算梯度并执行权重更新。该过程一直持续到误差达到可接受的水平为止。与每次迭代遍历整个训练集相比,选择随机训练集元素通常会更快收敛到可接受的权重。

批量SGD可通过选择批量大小来实现。

对于每次迭代,随机选择数量不应超过所选批量大小的训练集元素,因此选择小批量。更新时像常规反向传播批量处理更新一样,将小批量处理中的梯度相加。这种更新与常规批量处理更新非常相似,不同之处在于,每次需要批量时都会随机选择小批量。迭代通常以SGD处理单个批量。批量大小通常比整个训练集小得多。批量大小的常见选择是600。

反向传播权重更新

现在,我们准备更新权重。如前所述,我们将权重和梯度视为一维数组。给定这两个数组,我们准备为反向传播训练的迭代计算权重更新。下面公式给出了为反向传播更新权重的公式:

上面公式计算权重数组中每个元素的权重变化。你也会注意到,上面公式要求对来自上一次迭代的权重进行改变。你必须将这些值保存在另一个数组中。如前所述,权重更新的方向与梯度的符号相反:正梯度会导致权重减小,反之负梯度会导致权重增大。由于这种相反关系,上面公式以负号开始。

上面公式将权重增量计算为梯度与学习率(以ε表示)的乘积。

此外,我们将之前的权重变化与动量值(以α表示)的乘积相加。

学习率和动量是我们必须提供给反向传播算法的两个参数。选择学习率和动量的值对训练的表现非常重要。不幸的是,确定学习率和动量主要是通过反复试验实现的。

学习率对梯度进行缩放,可能减慢或加快学习速度。低于1.0的学习率会减慢学习速度。如学习率为0.5会使每个梯度减少50%;高于1.0的学习率将加速训练。实际上,学习率几乎总是低于1。

选择过高的学习率会导致你的神经网络无法收敛,并且会产生较高的全局误差,而不会收敛到较低值。

选择过低的学习率将导致神经网络花费大量时间实现收敛。

和学习率一样,动量也是一个缩放因子。

尽管是可选的,但动量确定了上一次迭代的权重变化中有百分之多少应该应用于这次迭代。如果你不想使用动量,只需将它的值指定为0。

动量是用于反向传播的一项技术,可帮助训练逃避局部最小值,这些最小值是误差图上的低点所标识的值,而不是真正的全局最小值。反向传播倾向于找到局部最小值,而不能再次跳出来。这个过程导致训练收敛误差较高,这不是我们期望的。动量可在神经网络当前变化的方向上对它施加一些力,让它突破局部最小值。

选择学习率和动量

动量和学习率有助于训练的成功,但实际上它们并不是神经网络的一部分。一旦训练完成,训练后的权重将保持不变,不再使用动量或学习率。它们本质上是一种临时的“脚手架”,用于创建训练好的神经网络。选择正确的动量和学习率会影响训练的效果。

学习率会影响神经网络训练的速度,降低学习率会使训练更加细致。较高的学习率可能会跳过最佳权重设置,较低的学习率总是会产生更好的结果,但是,降低训练速度会大大增加运行时间。在神经网络训练中降低学习率可能是一种有效的技术。

你可以用动量来对抗局部最小值。如果你发现神经网络停滞不前,则较高的动量值可能会使训练超出其遇到的局部最小值。归根结底,为动量和学习率选择好的值是一个反复试验的过程。你可以根据训练的进度进行调整。动量通常设置为0.9,学习率通常设置为0.1或更低。

Nesterov动量

由于小批量引入的随机性,SGD算法有时可能产生错误的结果。权重可能会在一次迭代中获得非常有益的更新,但是训练元素的选择不当会使其在下一个小批量中被撤销。因此,动量是一种资源丰富的工具,可以减轻这种不稳定的训练结果。

Nesterov动量是Yu Nesterov在1983年发明的一种较新的技术应用,该技术在他的Introductory Lectures on Convex Optimization: A Basic Course一书中得到了更新。

有时将该技术称为Nesterov的加速梯度下降。尽管对Nesterov动量的完整数学解释超出了本文的范围,但我们将针对权重进行详细介绍,以便你可以实现它。

下面公式基于学习率(ε)和动量(α)计算部分权重更新:

当前迭代用t表示,前一次迭代用t−1表示。这种部分权重更新称为n,最初从0开始。部分权重更新的后续计算基于部分权重更新的先前值。上面公式中的偏导数是当前权重下误差函数的梯度。公式下面公式展示了Nesterov动量更新,它代替了上上面公式中展示的标准反向传播权重更新:

上面的权重更新的计算,是部分权重更新的放大。上面公式中显示增量权重已添加到当前权重中。具有Nesterov动量的SGD是深度学习最有效的训练算法之一。


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

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

相关文章

Go 语言中的 GIF 图像处理完全指南:`image/gif`的技术与实践

Go 语言中的 GIF 图像处理完全指南:image/gif的技术与实践 概述安装与基础设置导入 image/gif 包初步配置示例:设置一个简单的 GIF 编码环境 读取与解码 GIF 图像读取 GIF 文件解析 GIF 数据 创建与编码 GIF 图像创建 GIF 图像编码 GIF 图像 处理 GIF 动…

中文编程入门(Lua5.4.6中文版)第十二章 Lua 协程 参考《愿神》游戏

在《愿神》的提瓦特大陆上,每一位冒险者都拥有自己的独特力量——“神之眼”,他们借助元素之力探索广袤的世界,解决谜题,战胜敌人。而在提瓦特的科技树中,存在着一项名为“协同程序”的高级秘术,它使冒险者…

使用Canal同步MySQL 8到ES中小白配置教程

🚀 使用Canal同步MySQL 8到ES中小白配置教程 🚀 文章目录 🚀 使用Canal同步MySQL 8到ES中小白配置教程 🚀**摘要****引言****正文**📘 第1章:初识Canal1.1 Canal概述1.2 工作原理解析 📘 第2章&…

企业网站制作如何被百度收录

1、网站在百度中的整体评分 说俗点就是网站的权重,在优化过程中我们会见到很多网站出现秒收的情况,发布的文章几分钟就可以收录,这个通过SITE语法都可以去查询,那么这跟自己的网站权重以及内容更新习惯是有非常重要的关联。 我们…

Real3DPortrait照片对口型,数字人,音频/视频驱动数字人

先看效果 上传一张图片和一段音频,照片如下: 合成后效果如下: 照片对口型-音频驱动 支持音频驱动和视频驱动,视频可以使照片有参照视频中的口型和和动作。 项目地址 https://github.com/yerfor/Real3DPortrait 我的环境 win…

PVE grub resue错误修复 lvmid BUG

服务器断电后启动不起来,显示grub resue 找了半天没有找到修复方法。看官方文档有一处Recovering from grub “disk not found” error when booting from LVM 极为类似。https://pve.proxmox.com/wiki/Recover_From_Grub_Failure 下面是处理过程。 使用PVE 6.4启…

单例模式详解

什么是单例模式 首先,单例模式是一种设计模式,按字面意思,指一个类只能创建一个对象,当创建出多个对象的时候,就会出现报错异常 单例模式为何出现? 1.资源共享:某些情况下,多个对象都需要共享一…

双向链表也叫双链表

双向链表也叫双链表 双向链表也叫双链表 每个节点都有两个指针,分别指向 直接前驱节点、直接后继节点 双向链表中任意一个节点,都可以通过通过它的前驱节点和后继节点,访问其他节点 节点如下 节点定义 ListNode // 节点的值 T element; /…

康谋技术 | 深入探讨:自动驾驶中的相机标定技术

随着自动驾驶技术的快速发展,多传感器的数据采集和融合可以显著提高系统的冗余度和容错性,进而保证决策的快速性和正确性。在项目开发迭代过程中,传感器标定扮演着至关重要的角色,它位于数据采集平台与感知融合算法之间&#xff0…

【R语言】混合图:小提琴图+箱线图

{ggstatsplot} 是 {ggplot2} 包的扩展,用于创建图形,其中包含信息丰富的绘图本身中包含的统计测试的详细信息。在典型的探索性数据分析工作流程中,数据可视化和统计建模是两个不同的阶段:可视化通知建模,而建模又可以建…

【FreeRTOS】使用CubeMX快速移植FreeRTOS工程到蓝桥杯开发板(STM32G431RBT6)

使用CubeMX快速创建FreeRTOS工程到蓝桥杯开发板(STM32G431RBT6) CubeMX配置CubeMX基础工程的配置☆FreeRTOS相关配置FreeRTOS配置选项卡的解释 软件工程架构与程序设计小综合:任务的创建删除、挂起与恢复设计cubexMX配置创建任务软件程序设计…

工业自动化,3D视觉技术3C薄片自动化上料

随着制造业的快速发展,3C行业对薄片类零件的上料需求日益增长。传统的上料方式往往依赖于人工操作,效率低下且存在误差。为了解决这一问题,3D视觉技术应运而生,为3C薄片自动化上料提供了强大的技术支持。本文将探讨3D视觉技术如何…

HarmonyOS开发实例:【分布式手写板】

介绍 本篇Codelab使用设备管理及分布式键值数据库能力,实现多设备之间手写板应用拉起及同步书写内容的功能。操作流程: 设备连接同一无线网络,安装分布式手写板应用。进入应用,点击允许使用多设备协同,点击主页上查询…

stm32f103c8t6学习笔记(学习B站up江科大自化协)-SPI

SPI通信 SPI,(serial peripheral interface),字面翻译是串行外设接口,是一种通用的数据总线,适用于主控和外挂芯片之间的通信,与IIC应用领域非常相似。 IIC无论是在硬件电路还是在软件时序设计…

Covalent Network(CQT)宣布推出面向 Cronos 生态的捐赠计划与 API 积分,为 Web3 创新赋能

为了促进 Web3 领域的创新,Covalent Network(CQT)宣布将其捐赠计划向 Cronos 生态系统中的开发者拓展。这一战略性举措,旨在通过向 Cronos 网络中基于 Covalent Network(CQT)API 构建的项目提供支持和资源&…

多模态大语言模型综述

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总…

【网络安全 | 密码学】JWT基础知识及攻击方式详析

前言 JWT(Json Web Token)是一种用于在网络应用之间安全地传输信息的开放标准。它通过将用户信息以JSON格式加密并封装在一个token中,然后将该token发送给服务端进行验证,从而实现身份验证和授权。 流程 JWT的加密和解密过程如…

HTML5漫画风格个人介绍源码

源码介绍 HTML5漫画风格个人介绍源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 效果截图 源码下载 HTML5漫画风格…

【honggfuzz学习笔记】honggfuzz的基本特性

本文架构 1.动机2.honggfuzz的基本概念官网描述解读 3. honggfuzz的反馈驱动(Feedback-Driven)软件驱动反馈(software-based coverage-guided fuzzing)代码覆盖率代码覆盖率的计量单位 代码覆盖率的统计方式 硬件驱动反馈( hardware-based co…

MCU最小系统晶振模块设计

单片机的心脏:晶振 晶振模块 单片机有两个心脏,一个是8M的心脏,一个是32.768的心脏 8M的精度较低,所以需要外接一个32.768khz 为什么是8MHZ呢,因为内部自带的 频率越高,精度越高,功耗越大&am…