神经网络(第三周)

news2025/6/9 13:37:26

一、简介

1.1 非线性激活函数

1.1.1 tanh激活函数

使用一个神经网络时,需要决定在隐藏层上使用哪种激活函数,哪种用在输出层节点上。到目前为止,只用过sigmoid激活函数,但是,有时其他的激活函数效果会更好。tanh函数或者双曲正切函数是总体上都优于sigmoid函数的激活函数。

tanh函数是sigmoid的向下平移和伸缩后的结果。对它进行了变形后,穿过了(0,0)点,并且值域介于+1和-1之间。结果表明,如果在隐藏层上使用tanh函数效果总是优于sigmoid函数。因为函数值域在-1和+1,其均值是更接近零的。在训练一个算法模型时,如果使用tanh函数代替sigmoid函数中心化数据,使得数据的平均值更接近0而不是0.5。这会使下一层学习简单一点!!!

但有一个例外:在二分类的问题中,对于输出层,需要的值是0或1,所以想让数值介于0和1之间 ,而不是在-1和+1之间,所以需要使用sigmoid激活函数。这种情况下,可以对隐藏层使用tanh激活函数,输出层使用sigmoid函数。

在不同的神经网络层中,激活函数可以不同。

sigmoid函数和tanh函数两者共同的缺点是:在z特别大或者特别小的情况下,导数的梯度或者函数的斜率会变得特别小,最后就会接近于0,导致梯度下降的速度降低。

1.1.2 Relu激活函数

在机器学习中另一个很流行的函数是:修正线性单元的函数(ReLu)。所以,只要是正值的情况下,导数恒等于1,当是负值的时候,导数恒等于0。但是从实际上来说,当使用的导数时,z=0的导数是没有定义的。但是当编程实现的时候,不需要担心这个值,z=0的时候,假设导数是1或者0效果都可以。

Relu的一个缺点是:当z是负值的时候,导数等于0。

1.1.3 Leaky Relu激活函数

这里也有另一个版本的Relu被称为Leaky Relu。当是负值时,这个函数的值不是等于0,而是轻微的倾斜,如图。这个函数通常比Relu激活函数效果要好,但是在实际中Leaky ReLu使用的并不多 

两者的优点是:

  • 在z的区间变动很大的情况下,激活函数的导数或者激活函数的斜率都会远大于0,在程序实现就是一个if-else语句,而sigmoid函数需要进行浮点四则运算,在实践中,使用ReLu激活函数神经网络通常会比使用sigmoid或者tanh激活函数学习的更快。
  • sigmoidtanh函数的导数在正负饱和区的梯度都会接近于0,这会造成梯度弥散,而ReluLeaky ReLu函数大于0部分都为常数,不会产生梯度弥散现象。(同时应该注意到的是,Relu进入负半区的时候,梯度为0,神经元此时不会训练,产生所谓的稀疏性,而Leaky ReLu不会有这问题)
  • ReLu 中,z的梯度一半都是0,但是,有足够的隐藏层使得z值大于0,所以对大多数的训练数据来说学习过程仍然可以很快。

1.2 不同激活函数的使用场合

快速概括一下不同激活函数的过程和结论。

  1. sigmoid激活函数:若是一个二分类问题,除了在输出层使用,其他基本不会用它。
  2. tanh激活函数:tanh是非常优秀的,几乎适合所有场合。
  3. ReLu激活函数:最常用的默认函数,如果不确定用哪个激活函数,就使用ReLu或者Leaky ReLu。公式中max{0.01z,z}  为什么是常数0.01?当然,可以为学习算法选择不同的参数!!!

二、计算

2.1 随机初始化

当训练神经网络时,权重初始化是很重要的。对于逻辑回归,把权重初始化为0当然是可以的。但是对于一个神经网络,如果你把权重或者参数都初始化为0,那么梯度下降将不会起作用。

分析一下这是为什么。假设有两个输入特征,2个隐藏层单元。 因此与第一个隐藏层相关的矩阵,是2*2的矩阵,假设把它初始化为0的2*2矩阵,也等于 。(偏置项b初始化为0是合理的,但是把权重初始化为0就有问题了)。 如果按照这样初始化的话,你总是会发现  相等,两个激活单元就会一样。因为第一个隐藏层的两个神经元计算同样的函数,当你做反向传播计算时,这会导致 和 也会一样。

如果你这样初始化这个神经网络,那么这两个隐含单元就会完全一样,因此他们完全对称,也就意味着计算同样的函数,并且肯定的是最终经过每次训练的迭代,这两个隐含单元仍然是同一个函数。dW会是一个这样的矩阵,每一行有同样的值。

由此可以推导,如果你把权重都初始化为0,那么由于隐含单元开始计算同一个函数,所有的隐含单元就会对输出单元有同样的影响。一次迭代后同样的表达式结果仍然是相同的,即隐含单元仍是对称的。通过推导,两次、三次、无论多少次迭代,不管你训练网络多长时间,隐含单元仍然计算的是同样的函数。因此这种情况下再多的隐含单元也没什么意义,因为他们计算同样的东西。

如果你要初始化成0,由于所有的隐含单元都是对称的,无论你运行梯度下降多久,他们一直计算同样的函数,这没有任何帮助。这个问题的解决方法就是随机初始化参数。

把W[1]设为np.random.randn(2,2)(生成(2,2)高斯分布),通常再乘上一个小的数,比如0.01,这样把权重初始化为很小的随机数。b没有对称的问题(叫做symmetry breaking problem),所以可以把 b初始化为0。只要随机初始化权重你就有不同的隐含单元计算不同的东西,因此不会有symmetry breaking问题了。相似的,你可以随机初始化W[2],初始化b为0。 

你也许会疑惑,这个常数从哪里来,为什么是0.01,而不是100或者1000。我们通常倾向于初始化为很小的随机数。因为如果你用tanh或者sigmoid激活函数,或者说只在输出层有一个Sigmoid,如果(数值)波动太大,这种情况下你很可能停在tanh/sigmoid函数的平坦的地方,这些地方梯度很小也就意味着梯度下降会很慢,因此学习也就很慢。

W如果很大,那么你很可能最终停在(甚至在训练刚刚开始的时候)很大的值。如果在你整个的神经网络里没有sigmoid/tanh激活函数,就不成问题。但如果你做二分类并且你的输出单元是Sigmoid函数,那么初始参数就不能太大,因此这就是为什么乘上0.01或者其他一些小数的原因。

事实上有时有比0.01更好的常数,当你训练一个只有一层隐藏层的网络时(这是相对浅的神经网络,没有太多的隐藏层),设为0.01可能也可以。但当你训练一个非常非常深的神经网络,你可能要试试0.01以外的常数。但是无论如何w通常都会被初始化为相对小的数。

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

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

相关文章

18487.1 - 2015 电动汽车充电系统标准 第1部分 关键点梳理

一、部分知识介绍 1、连接方式 使用电缆和连接器将电动汽车接入电网(电源)的方法。 1.1、连接方式A 1.2、连接方式B 1.3、连接方式C 2、电动汽车控电设备 2.1、按照输出电压分类 1)交流 单相 220V,三相 380V. 2&#xff09…

2015年五一杯数学建模C题生态文明建设评价问题解题全过程文档及程序

2015年五一杯数学建模 C题 生态文明建设评价问题 原题再现 随着我国经济的迅速发展,生态文明越来越重要,生态文明建设被提到了一个前所未有的高度。党的十八大报告明确提出要大力推进生态文明建设,报告指出“建设生态文明,是关系…

prometheus|云原生|kubernetes内部安装prometheus

架构说明: prometheus是云原生系统内的事实上的监控标准,而kubernetes集群内部自然还是需要就地取材的部署prometheus服务了 那么,prometheus-server部署的方式其实是非常多的,比如,kubesphere集成方式,h…

STM32GPIO速度配置究竟改变了什么-笔记

STM32GPIO速度配置究竟改变了什么-笔记 摘要STM32引脚内部框图STM32时钟树端口寄存器I/O交流特性定义 摘要 一般有 Low、Medium、High,三种速度选择。速度配置变了硬件什么状态? 对 GPIO 的输入输出信号有什么影响? 编程时如何选取速度参数&…

【计算机网络】15、NAT、NAPT 网络地址转换、打洞

文章目录 一、概念二、分类(主要是传统 NAT)2.1 基本 NAT2.2 NAPT 三、访问NAT下的内网设备的方式3.1 多拨3.2 端口转发、DMZ3.3 UPnP IGD、NAT-PMP3.4 服务器中转:frp 内网穿透3.4.1 NAT 打洞3.4.2 NAT 类型与打洞成功率3.4.2.1 完全圆锥形 …

Redis--11--Redis事务的理解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Redis事务事务回滚机制Redis 事务是不支持回滚的,不像 MySQL 的事务一样,要么都执行要么都不执行; Redis的事务原理 Redis事务 …

深度学习手势识别算法实现 - opencv python 计算机竞赛

文章目录 1 前言2 项目背景3 任务描述4 环境搭配5 项目实现5.1 准备数据5.2 构建网络5.3 开始训练5.4 模型评估 6 识别效果7 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习手势识别算法实现 - opencv python 该项目较为新颖…

五款适用于 Mac 电脑操作的顶级Android 数据恢复工具

在本文中,我们将介绍五款适用于 Mac 电脑的最佳 Android 数据恢复工具。借助这些数据恢复软件工具,用户可以从运行 macOS 操作系统的台式机或笔记本电脑恢复 Android 设备中丢失或删除的数据。许多 Mac 用户更喜欢 iPhone 等 iOS 设备,但也有…

180天Java从小白到就业-Day03-03Java位运算符、赋值运算符、数据交换的三种方式

1. 位运算符 Q:为什么要学习位运算 A:由于其运算效率更高,在JDK源码(例如ArrayList、HashMap)中大量使用位运算,想要看懂JDK源码必须懂位预算,但是在公司开发业务系统时位运算使用并不多。 Q…

神经网络 模型表示2

神经网络 模型表示2 使用向量化的方法会使得计算更为简便。以上面的神经网络为例,试着计算第二层的值: 我们令 z ( 2 ) θ ( 1 ) x {{z}^{\left( 2 \right)}}{{\theta }^{\left( 1 \right)}}x z(2)θ(1)x,则 a ( 2 ) g ( z ( 2 ) ) {{a}…

基于SpringBoot学生宿舍管理系统的设计与开发

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对学生宿舍信息管理混乱,出错率高,信息安全性差…

spark的安装与使用:一键自动安装

使用shell脚本一键下载、安装、配置spark(单机版) 1. 把下面的脚本复制保存为/tmp/install_spark.sh文件 #!/bin/bash# sprak安装版本 sprak_version"2.4.0" # sprak安装目录 sprak_installDir"/opt/module" # hadoop安装路径&…

lv11 嵌入式开发 中断处理 15

前言:中断属于7种异常的1种,这节主要讲CPU接收到中断之后怎么处理,回顾之前的知识。 目录 1 异常 1.1 概念 1.2 异常处理机制 1.3 ARM异常源 1.4 异常模式 1.5 ARM异常响应 1.6 异常向量表 1.7 异常返回 ​编辑 1.8 IRQ异常举例 …

什么是DDoS攻击

DDoS攻击 1. 定义2. DDoS攻击类型2.1 网络层攻击2.2 传输层攻击2.3 应用层攻击 3.DDoS攻击态势特点 1. 定义 分布式拒绝服务(DDoS)攻击是一种常见的网络攻击形式。攻击者利用恶意程序对一个或多个目标发起攻击,企图通过大规模互联网流量耗尽…

java学习part29线程通信

139-多线程-线程间的通信机制与生产者消费者案例_哔哩哔哩_bilibili 1.等待唤醒 类似于golang的channel, 1.1用法 类似于go的wait(), 1.sleep和wait的一个重大区别是,sleep不会让线程失去同步监视器,而wait会释放 2.wait必须tr…

【深度学习】深度学习框架的环境配置

目录 1. 配置cuda环境 1.1. 安装cuda和cudnn 1.1.1. 显卡驱动配置 1.1.2. 下载安装cuda 1.1.3. 下载cudnn,将解压后文件复制到cuda目录下 1.2. 验证是否安装成功 2. 配置conda环境 2.1. 安装anaconda 2.2. conda换源 2.3. 创建conda环境 2.4. pip换源 3…

使用MD5当做文件的唯一标识,这样安全么?

使用MD5作为文件唯一标识符可靠么? 文章目录 使用MD5作为文件唯一标识符可靠么?什么是MD5?MD5的用途MD5作为文件唯一标识的优劣优势劣势 使用MD5作为文件唯一标识的建议其他文件标识算法结束语 什么是MD5? MD5(Messag…

企业计算机服务器中了locked1勒索病毒怎么解锁,locked1勒索病毒数据恢复

随着网络技术在企业的不断应用,企业的生产运营效率得到了极大提升,越来越多的企业利用网络开展工作,这也导致了企业的受到的网络安全威胁也不断增加。在本月,云天数据恢复中心陆续接到很多企业的求助,企业的计算机服务…

无线物理层安全学习

文章目录 3.17到3.203.85到3.88 3.17到3.20 3.85到3.88

np.array无法直接用matplotlib画图,因为需要借用np.squeeze先转化

文章目录 前言一、使用步骤1.没使用np.squeeze转化2.使用np.squeeze转化 前言 实际工作中,时而难免会遇见np.array无法直接用matplotlib画图的情况,这个时候,是因为在画图之前少了一个步骤,需要先借用np.squeeze先转化 一、使用步…