深度学习系列一

news2024/11/13 23:41:56

激活函数

sigmod

  1. 梯度消失问题:

    • sigmoid函数的导数在输入值较大或较小时接近于0。
    • 在反向传播过程中,这些小梯度会相乘,导致深层网络的梯度变得非常小。
    • 结果是,深层网络的参数几乎不会更新,训练变得非常困难。
    • 这就是为什么在5层以上的网络中,sigmoid函数容易导致梯度消失。
  2. 非零中心化:

    • sigmoid函数的输出范围是(0, 1),均值不是0。
    • 这会导致后续层的神经元接收到的输入总是正的,影响梯度下降的效率。
  3. 在实践中的使用限制:

    • 由于上述问题,sigmoid在隐藏层中很少使用。
    • 现代神经网络更常用ReLU等其他激活函数。
  4. 在二分类输出层的应用:

    • sigmoid函数输出范围(0,1),可以解释为概率。
    • 这使它非常适合二分类问题的输出层,где输出可以直接解释为属于某类的概率。

梯度消失

想象一下sigmoid函数就像一个S形的滑梯:

  1. 滑梯的特点:

    • 滑梯中间部分比较陡。
    • 两端(顶部和底部)非常平缓,几乎是水平的。
  2. 梯度就像球在滑梯上滚动的速度:

    • 在中间部分,球滚动得快(梯度大)。
    • 在两端,球几乎不动(梯度接近零)。
  3. 反向传播过程:

    • 想象你有多个这样的滑梯连在一起(多层网络)。
    • 你从最后一个滑梯开始往回推球。
  4. 梯度消失现象:

    • 如果球落在任何一个滑梯的平缓部分,它就几乎停止了。
    • 当你试图把这个几乎不动的球推回前面的滑梯时,它在每个滑梯上都几乎不动。
  5. 对深层网络的影响:

    • 在5层以上的网络中,球(梯度)经过多个滑梯后,速度变得极其缓慢。
    • 这意味着网络的前面几层几乎收不到任何"推力"来更新它们的参数。
  6. 训练困难:

    • 如果前面的层不能有效更新,整个网络就难以学习和改进。
    • 这就像你试图教一个团队,但只有最后几个人能听到你的指令,而前面的人几乎听不到任何东西。

梯度的作用:

  1. 指导方向:梯度指示了函数值下降最快的方向。
  2. 更新参数:在训练过程中,我们使用梯度来更新网络的权重和偏置。
  3. 评估影响:梯度大小表示输入变化对输出的影响程度。

为什么要相乘: 在深度神经网络中,我们使用链式法则来计算梯度。这就需要相乘多个局部梯度。

举个简单的例子: 假设有一个两层网络:输入 x,通过函数 f 到中间层,再通过函数 g 到输出 y。

y = g(f(x))

要计算 dy/dx(输入x对输出y的影响),我们需要:

dy/dx = dy/df * df/dx

这里:

  • dy/df 是 g 的导数
  • df/dx 是 f 的导数

在更深的网络中,这种相乘会一直延续到输入层。

实际应用:

  1. 反向传播:计算每一层参数的梯度,需要从输出层向输入层传播误差。这个过程中会连续相乘多个局部梯度。

  2. 参数更新: 新参数 = 旧参数 - 学习率 * 梯度

    如果梯度接近零(由于多次相乘变得很小),参数几乎不会更新。

  3. 理解网络:通过观察梯度,我们可以理解输入的微小变化如何影响最终输出。

为什么要进行反向传播:

反向传播是训练神经网络的核心算法,主要有以下几个原因:

a) 效率:

  • 正向计算每个参数的梯度会非常耗时。
  • 反向传播利用了中间计算结果,大大提高了效率。

b) 更新参数:

  • 我们需要知道如何调整每一层的权重和偏置。
  • 反向传播能精确计算每个参数对最终损失的影响。

c) 处理复杂网络:

  • 对于深层网络,正向计算梯度几乎不可能。
  • 反向传播使得训练深层网络成为可能。

d) 实现反馈机制:

  • 类似于人类学习过程中的纠错。
  • 从输出的误差开始,逐层调整网络参数。

e) 梯度下降优化:

  • 反向传播提供了准确的梯度信息。
  • 这些梯度用于梯度下降算法,优化网络参数。

f) 理解网络行为:

  • 通过观察梯度流动,我们可以理解网络各部分的重要性。
  • 有助于网络结构的设计和优化。

 反向传播通俗化解释

a) 效率:

想象你在爬一座有100层的大楼,每层都有不同的密码锁。

  • 正向计算就像你每次都从1楼开始,一层层爬上去,尝试每一层的密码。每次只改动一个密码,就得重新从头爬一遍。
  • 反向传播则像是你先爬到顶楼,然后在下楼的过程中记录每层的情况。这样,你只需爬一次楼,就能获得所有楼层的信息。

反向传播通过聪明地利用已经计算过的信息,大大减少了重复工作。

b) 更新参数:

把神经网络想象成一个复杂的音响系统,有很多旋钮可以调节。

  • 我们的目标是调出最好的音效(最小化损失)。
  • 但是,直接调整旋钮很难知道对最终音效的影响。
  • 反向传播就像是一个精确的测量工具,告诉你每个旋钮对最终音效的具体影响。
  • 有了这个工具,你就知道该扭哪个旋钮,扭多少,来改善音效。

c) 处理复杂网络:

想象你在指挥一个有1000人的大合唱团。

  • 正向计算就像你要单独告诉每个人如何调整他们的声音,然后每次只调整一个人,再听整体效果。这几乎是不可能完成的任务。
  • 反向传播就像你先听整体效果,然后从后排开始,逐排给出调整建议。每一排都基于后面几排的反馈来调整。这样,即使是1000人的合唱团,你也能有效地进行指导。

反向传播使得我们能够有效地"指挥"非常深和复杂的神经网络,即使它们有成百上千的层次。

总的来说,反向传播就像是一个聪明的"信息传递系统",它让我们能够高效地了解复杂网络中每个小部分的作用,从而进行精确的调整。这在处理大规模、多层次的神经网络时特别重要。

tanh激活函数 

 与 Sigmoid 相比,它是以 0 为中心的,使得其收敛速度要比 Sigmoid 快,减少迭代次数。然而,从图中可以看出,Tanh 两侧的导数也为 0,同样会造成梯度消失。

 在隐藏层使用tanh函数,在输出层使用sigmoid函数

  1. 隐藏层使用 tanh 函数:

    a) 中心化输出:tanh 函数的输出范围是 (-1, 1),均值为 0。这种中心化的特性有助于后续层的学习。

    b) 梯度更强:tanh 的导数范围是 (0, 1],比 sigmoid 的导数范围 (0, 0.25] 更大,有助于减轻梯度消失问题。

    c) 非线性:tanh 提供了必要的非线性,允许网络学习复杂的模式。

  2. 输出层使用 sigmoid 函数:

    a) 二元分类:sigmoid 函数的输出范围是 (0, 1),可以直接解释为概率,特别适合二元分类问题。

    b) 多标签分类:在多标签分类中,我们需要每个输出节点独立地表示一个类别的概率,sigmoid 很适合这种情况。

    c) 概率输出:在需要概率输出的回归问题中,sigmoid 也很有用。

  3. 为什么不在所有层都使用 tanh:

    a) 输出需求:很多任务需要 0 到 1 之间的输出,这正是 sigmoid 的范围。

    b) 解释性:在分类问题中,sigmoid 的输出更容易解释为概率。

  4. 为什么不在所有层都使用 sigmoid:

    a) 梯度消失:sigmoid 在两端的梯度非常小,容易导致梯度消失问题。

    b) 非零中心:sigmoid 的输出不是零中心化的,可能会导致后续层的输入偏移。

激活函数输出的中心化特性为什么有助于后续层的学习

  1. 中心化的含义: 中心化意味着数据的平均值接近于0。tanh函数的输出范围是(-1, 1),其平均值趋近于0,这就是所谓的"中心化"。

  2. 为什么中心化有帮助:

    a) 减少偏置偏移(Bias Shift):

    • 如果输入总是正的(如sigmoid的输出),会导致下一层神经元的偏置项总是朝一个方向更新。
    • 中心化的输入使得正负值大致平衡,减少了这种系统性的偏移。

    b) 加速学习:

    • 中心化的数据通常能让优化算法(如梯度下降)更快地收敛。
    • 这是因为损失函数的等高线在中心化数据上往往更圆,更容易优化。

    c) 改善梯度流动:

    • 在反向传播中,中心化的激活值有助于梯度更均匀地流向网络的不同部分。
    • 这可以减轻梯度消失或爆炸的问题。

    d) 增强特征的表达能力:

    • 中心化的输出允许后续层更容易地学习到正负两种模式。
    • 这增加了网络表达复杂函数的能力。
  3. 具体例子: 假设下一层的某个神经元计算 w * x + b:

    • 如果x总是正的(如sigmoid输出),那么w和b的调整会有一定的关联性。
    • 如果x是中心化的(如tanh输出),w和b可以更独立地调整,提供更大的灵活性。
  4. 对比sigmoid: sigmoid的输出范围是(0, 1),不是中心化的。这可能导致:

    • 后续层的输入有一个正的偏移。
    • 梯度更新时可能会出现某些系统性的偏差。

  1. 非中心化数据的情况:

    • 这就像在一个狭长的山谷里。
    • 山谷的一边可能很陡,另一边可能很缓。
    • 你在这里行走时,可能会反复横跳:在陡峭的一侧迈大步,在平缓的一侧迈小步。
    • 这样走起来很不顺畅,需要很多次调整才能到达最低点。
  2. 中心化数据的情况:

    • 这更像是在一个圆形的碗状山谷里。
    • 四周的坡度大致相同。
    • 你可以更直接地朝着中心(最低点)走去。
    • 不需要太多的左右摇摆,你的路径会更直接、更高效。
  3. 在机器学习中:

    • "走路"就是优化算法(如梯度下降)调整参数的过程。
    • "山谷的形状"就是损失函数的等高线。
    • 中心化的数据tends to创造更"圆"的等高线,使得优化过程更顺畅。
  4. 为什么会这样:

    • 非中心化数据可能在某些维度上有很大的值,在其他维度上有很小的值。
    • 这会导致损失函数在不同维度上的变化速率差异很大。
    • 中心化后,数据在各个维度上的尺度更接近,使得损失函数的行为更均匀。
  5. 实际效果:

    • 使用中心化数据,优化算法通常能更快地找到最优解。
    • 需要的迭代次数可能会减少。
    • 最终得到的解可能会更好(更接近全局最优)。

Relu激活函数

 

        从上述函数图像可知,ReLU 激活函数将小于 0 的值映射为 0,而大于 0 的值则保持不变,它更加重视正信号,而忽略负信号,这种激活函数运算更为简单,能够提高模型的训练效率。

        从图中可以看到,当x<0时,ReLU导数为0,而当x>0时,则不存在饱和问题。所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。然而,随着训练的推进,部分输入会落入小于0区域,导致对应权重无法更新。这种现象被称为“神经元死亡”。

        ReLU是目前最常用的激活函数。与sigmoid相比,RELU的优势是:

        采用sigmoid函数,计算量大(指数运算),反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。 sigmoid函数反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。 Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。

  1. ReLU的确引入了非线性: 虽然ReLU在正半轴是线性的,但它在整体上是非线性的。这是因为: f(x) = max(0, x)

    这个函数在x=0处有一个"拐点",这就引入了非线性。

  2. 分段线性函数: ReLU实际上是一个分段线性函数。它在不同的输入范围有不同的行为:

    • 当x > 0时,f(x) = x
    • 当x ≤ 0时,f(x) = 0
  3. 非线性的重要性: 这种非线性是至关重要的。如果没有这种非线性:

    • 整个神经网络将退化为一个线性模型
    • 网络将失去学习复杂模式的能力
  4. ReLU的非线性效果:

    • 它能够有选择地激活神经元(当输入为正时)
    • 这种"开关"行为使网络能够学习复杂的非线性决策边界
  5. 与其他激活函数的比较:

    • 相比sigmoid或tanh,ReLU的非线性可能不那么明显
    • 但它的简单性和有效性使它在许多情况下表现更好
  6. 实际应用中的非线性: 在深度网络中,多层ReLU的组合可以近似任何复杂的非线性函数

  7. ReLU的优势:

    • 计算简单,有利于快速训练
    • 在正区间梯度恒为1,有助于缓解梯度消失问题
    • 产生稀疏激活,可能带来一些正则化效果

softmax

  1. Softmax 作为激活函数:

    • 在神经网络的输出层使用,将原始输出转换为概率分布。
    • 引入非线性,允许网络学习复杂的决策边界。
  2. Softmax 作为归一化方法:

    • 确实,Softmax 可以被视为一种特殊的归一化技术。
    • 它将任意实数值的向量转换为和为 1 的概率分布。
  3. 归一化特性:

    • 输出总和为 1:Σᵢ softmax(xᵢ) = 1
    • 保持相对大小关系:较大的输入对应较大的输出概率。
  4. 与其他归一化方法的比较:

    • Min-Max 归一化:将值缩放到 [0,1] 范围,但和不必为 1。
    • L2 归一化:缩放向量使其 L2 范数为 1。
    • Softmax:不仅将值映射到 (0,1),还确保和为 1。
  5. Softmax 的指数特性:

    • 使用指数函数 (exp) 放大了输入之间的差异。
    • 这使得最大值更加"突出",有利于分类任务。
  6. 在机器学习中的广泛应用:

    • 多类分类问题中的标准选择。
    • 在注意力机制、强化学习等领域也有重要应用。
  7. 温度参数:

    • Softmax 可以引入温度参数来调整输出分布的"软硬度"。
    • softmax(xᵢ/T),其中 T 是温度。
    • 较低的温度使分布更"尖锐",较高的温度使分布更均匀。
  8. 计算稳定性考虑:

    • 在实践中,常常会减去输入的最大值以提高数值稳定性。
    • 这不会改变 Softmax 的结果,但可以防止指数计算中的溢出。

  1. Softmax 的主要用途:

    • 主要用在神经网络的输出层,特别是在多类分类问题中。
    • 不常用作隐藏层的激活函数。
  2. 为什么不常用于隐藏层:

    • 计算成本高:需要计算所有神经元的总和,对大型网络来说可能效率低下。
    • 全局依赖性:每个输出都依赖于所有输入,这可能不适合某些网络结构。
    • 可能引入不必要的约束:强制输出和为1可能限制网络的表达能力。
  3. 常用的隐藏层激活函数:

    • ReLU 及其变体(如 Leaky ReLU, ELU)
    • tanh
    • Sigmoid(在某些特定情况下)
  4. Softmax 的特殊地位:

    • 在输出层中几乎是多类分类问题的标准选择。
    • 提供了直接可解释为概率的输出。
  5. 其他常见用途:

    • 在注意力机制中用于计算注意力权重。
    • 在某些强化学习算法中用于动作选择。
  6. Softmax 的变体:

    • Hierarchical Softmax:用于大规模分类问题,提高计算效率。
    • Sparsemax:产生稀疏的概率分布,在某些情况下更有优势。
  7. 与其他输出层激活函数的比较:

    • 二元分类:常用 Sigmoid
    • 多标签分类:可能使用多个 Sigmoid
    • 回归问题:通常不使用 Softmax,可能直接使用线性输出
  8. 在深度学习框架中的实现:

    • 通常,Softmax 与交叉熵损失函数结合使用,为了数值稳定性,常常将两者合并实现。

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

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

相关文章

基于flask的天气数据可视化系统1.0

基于flask的天气数据可视化系统1.0 一、效果展示二、flask简介三、图表绘制四、前端页面编写五、完整代码一、效果展示 该flask项目相对简单入门,使用了flask框架、bootstrap前端技术,数据使用的是上一篇scrapy爬取城市天气数据中爬取到的数据。 二、flask简介 Flask是一个…

在linux中,如何搭建nacos2.4.0的版本,修改nacos密码

由于最近服务器经常被攻击&#xff0c;看了一下发现是nacos版本过低&#xff0c;导致被抓了肉鸡&#xff0c;导致服务器的网端被跑满&#xff0c;选择重新搭建nacos&#xff0c;进入服务器后&#xff0c;首先确定服务器是否安装java&#xff0c;先执行java -version&#xff0c…

如何应对SQL注入攻击?

引言 在现今的网络世界中&#xff0c;安全性已成为至关重要的话题。SQL注入&#xff08;SQL Injection&#xff09;是一种常见且危险的网络攻击方式&#xff0c;攻击者通过向SQL查询中插入恶意代码来操控数据库&#xff0c;从而获取敏感信息或破坏数据。了解SQL注入的各种类型…

【数据结构】建堆算法复杂度分析及TOP-K问题

【数据结构】建堆算法复杂度分析及TOP-K问题 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;数据结构 文章目录 【数据结构】建堆算法复杂度分析及TOP-K问题前言一.复杂度分析1.1向下建堆复杂度1.2向上建堆复杂度1.3堆排序复杂度 二.TOP-K问…

C++高性能通信:了解Iceoryx与零拷贝技术的实现与应用

文章目录 0. 引言1. Iceoryx使用到的零拷贝技术1.1 零拷贝技术概述1.2 零拷贝的优势1.3 Iceoryx零拷贝的实现1.4 信息轮询与信号触发 2. Iceoryx的核心概念2.1 RouDi (iox-roudi)2.2 Runtime2.3 Publisher2.4 Subscriber2.5 Topic 3. Iceoryx使用示例3.1 发布者程序3.2 订阅者程…

1万+台网络设备运维如何选择支撑工具?

针对1万台网络设备的运维管理&#xff0c;需要采取一套系统化、自动化且高效的管理方法与策略。“工欲善其事&#xff0c;必先利其器”&#xff0c;以下结合一些关键步骤探讨运维支撑软件工具的方案。 1 建立完善的设备档案 设备信息记录&#xff1a; 为每台设备建立详细的…

科研成果 | 高精尖中心取得高性能区块链交易调度技术突破

近日&#xff0c;未来区块链与隐私计算高精尖创新中心研究团队在区块链交易效率方面取得突破性进展&#xff0c;最新成果“高性能区块链交易调度引擎”首次为长安链带来高并行度的交易调度&#xff0c;充分利用现有计算资源&#xff0c;显著提升长安链交易处理速度。 随着区块…

安卓单机游戏:《植物大战僵尸:重生》一款深受玩家喜爱的塔防游戏

一款深受玩家喜爱的塔防游戏&#xff0c;在这个游戏中&#xff0c;玩家需要通过种植不同类型的植物来阻止不断涌来的僵尸入侵&#xff0c;而每种植物都有自己的能力与特点&#xff0c;游戏画面和音效都非常出色&#xff0c;剧情也十分有趣&#xff0c;难度不断升级&#xff0c;…

JAVA代码审计JAVA0基础学习(需要WEB基础知识)DAY2

JAVA 在 SQL执行当中 分为3种写法&#xff1a; JDBC注入分析 Mybatis注入分析 Hibernate注入分析 JDBC 模式不安全JAVA代码示例部分特征 定义了一个 sql 参数 直接让用户填入id的内容 一个最简单的SQL语句就被执行了 使用安全语句却并没有被执行 Mybatis&#xff1a; #…

第13周 简历职位功能开发与Zookeeper实战

第13周 简历职位功能开发与Zookeeper实战 本章概述1. Mysql8窗口函数over使用1.1 演示表结构与数据1.2 案例1:获取男女总分数1.3 案例2****************************************************************************************本章概述 1. Mysql8窗口函数over使用 参考案例…

行业不同怎么选企业管理咨询公司

在选择企业管理咨询公司时&#xff0c;不同行业的企业往往面临着各自独特的挑战和需求。因此&#xff0c;选择一家适合自身行业特点、能够提供专业且有针对性的咨询服务的管理咨询公司至关重要。本文将从行业差异的角度出发&#xff0c;探讨如何根据企业所在行业的不同&#xf…

二维码的生成与识别(python)

二维码生成 from PIL import Image import qrcode from qrcode.image.styledpil import StyledPilImage from qrcode.image.styles.colormasks import SolidFillColorMask from qrcode.image.styles.moduledrawers import SquareModuleDrawer# 创建二维码对象 qr qrcode.QRCo…

智能编程,一触即发:使用AIGC优化CSS——提升前端开发效率与质量

文章目录 一、AIGC在CSS优化中的应用场景智能代码生成自动布局调整性能优化建议样式和色彩建议 二、使用AIGC优化CSS的具体步骤明确需求选择AIGC工具输入描述或设计稿审查和调整集成和测试 三、AIGC优化CSS的优势与挑战优势&#xff1a;挑战&#xff1a; 《CSS创意项目实践&…

vue3前端开发-小兔鲜项目-登录和非登录状态下的模板适配

vue3前端开发-小兔鲜项目-登录和非登录状态下的模板适配&#xff01;有了上次的内容铺垫&#xff0c;我们可以根据用户的token来判定&#xff0c;到底是显示什么内容了。 1&#xff1a;我们在对应的导航组件内修改完善一下内容即可。 <script setup> import { useUserSt…

ATE测试设备ATECLOUD专注于电源模块、电源芯片和射频组件测试

在追求效率与精度的时代背景下&#xff0c;电子测试测量行业迎来了ATE自动化测试设备的革新。这一设备的出现&#xff0c;不仅简化了测试流程&#xff0c;还大幅提高了测试的准确性和速度。 新ATE自动化测试设备&#xff1a;ATECLOUD测试平台 纳米软件深耕电测行业16年&#xf…

算法 day4 【双指针、快慢指针、环形链表】链表下

⚡刷题计划day4继续&#xff0c;可以点个免费的赞哦~ 下一期将会开启哈希表刷题专题&#xff0c;往期可看专栏&#xff0c;关注不迷路&#xff0c; 您的支持是我的最大动力&#x1f339;~ 目录 ⚡刷题计划day4继续&#xff0c;可以点个免费的赞哦~ 下一期将会开启哈希表刷题…

无法连接网络打印机0x00000709原因分析及多种解决方法

在日常办公和生活中&#xff0c;打印机是不可或缺的重要设备。然而&#xff0c;有时在连接打印机的过程中&#xff0c;我们可能会遇到错误代码0x00000709的提示。有更新补丁导致的、有访问共享打印机服务异常、有访问共享打印机驱动异常等问题导致的&#xff0c;针对访问共享打…

实验三 FPGA使用Verilog HDL设计加法器

实验目的 掌握使用Vivado软件进行设计、综合、仿真、布线的方法。掌握FPGA程序的下载方法。掌握使用Verilog HDL设计加法器的方法。 实验要求 采用Verilog HDL语言设计加法器&#xff0c;实现两个4位数的相加运算&#xff0c;并将结果通过LED灯或数码管显示出来。对设计进行综…

如何通过集成软件授权管理系统推动企业业务增长?

软件货币化已经成为许多企业商业成功的关键&#xff0c;随着全球数字化进程不断深入&#xff0c;其重要性也在不断增加。将许可解决方案优化集成到现有系统中&#xff0c;已成为从接收到订单到交付和激活许可的任何高效流程的基本要素。 软件货币化无处不在 无论是传统的软件企…

[言简意赅] Matlab生成FPGA端rom初始化文件.coe

&#x1f38e;Matlab生成FPGA端rom初始化文件.coe 本文主打言简意赅。 函数源码 function gencoeInitialROM(width, depth, signal, filepath)% gencoeInitialROM - 生成 Xilinx ROM 初始化格式的 COE 文件%% 输入参数:% width - ROM 数据位宽% depth - ROM 数据深度% s…