深度学习 --- stanford cs231学习笔记四(训练神经网络的几个重要组成部分之一,激活函数)

训练神经网络的几个重要组成部分 一

1,激活函数(activation functions)

激活函数是神经网络之于线性分类器的最大进步,最大贡献,即,引入了非线性。这些非线性函数可以被分成两大类,饱和非线性函数和不饱和非线性函数。


1,1 饱和非线性函数

1,1,1  Sigmoid

原函数:

sigmoid(x)=(1+e^{-1})^{-1}

函数的导数: 

sigmoid(x)'=sigmoid(x)*(1-sigmoid(x))

sigmoid函数的性质:

        结合指数函数的图像可知,当x<0时,-x>0,指数函数随着x的减小而增大,当x=-10时,几乎exp(-(-10))=exp(10),约等于2W2,如果x再继续小下去sigmoid的分母就变成无穷大了,此时sigmoid趋近于0。即,当x<0时,随着x越来越小,sigmoid函数越来越趋近于0。

when\; x<0\Rightarrow-x>0\Rightarrow exp(-x)>0\Rightarrow \lim_{x \to -\infty }exp(-x)=+\infty \Rightarrow sigmoid(x)=0

        反之,当x>0时,-x<0,指数函数随着x的增大而减小,当x=10时,几乎exp(-(10))=exp(-10),约等于0,如果x再增加下去sigmoid的分母就变成1了,此时sigmoid趋近于1/1=1。即,当x>0时,随着x越来越大,sigmoid函数越来越趋近于1。

when\; x>0\Rightarrow-x<0\Rightarrow exp(-x)<0\Rightarrow \lim_{x \to +\infty }exp(-x)=0 \Rightarrow sigmoid(x)=1

函数值始终为正,且不关于0对称。

 sigmoid函数的缺点:梯度消失

在计算损失函数L关于x的梯度时,不论上游梯度传过来的是什么,sigmoid函数的本地梯度为:

sigmoid(x)'=sigmoid(x)(1-sigmoid(x))

因此,当x过大时,sigmoid的值为1,1-sigmoid为0,则,本地梯度为0。当x过小时,sigmoid的值为0,同样会导致本地梯度为0。如此一来,损失函数L就无法通过梯度下降法去更新W。

        当然sigmoid函数还有其他问题,例如,均值不为0,和输出总是正数,这会导致梯度下降时的zig-zag问题,也就是梯度下降速度慢的问题。但相对于梯度消失这个最为严重的问题,可忽略不计。


1,1,2 Tanh(x)双曲正切函数

        双曲正切函数有点像是sigmoid函数经过整体向下平移后得到的函数。 

原函数:

tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}

函数的导数: 

tanh(x)'=1-(tanh(x))^{2}

函数的特点:

        函数的值域为-1~1,输出有正有负,均值为0,即函数值关于0对称。从一定程度上弥补了sigmoid函数的不足。

函数的缺点:梯度消失

已知双曲正切的函数为: 

tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}

他所对应的导数为: 

\frac{\partial tanh(x)}{\partial x}=1-(tanh(x))^{2}

该导数作为本地梯度,当x较大时,tanh(x)=1,平方后仍然为1,上面的导数为1-1=0。

当x较小时,tanh(x)=-1,平方后为1,导数为0。

这也就是说,双曲正切函数仍然会有梯度消失的问题,也就是梯度为0的问题

饱和非线性函数的小结: 

         饱和非线性函数在神经网络中指的是那些在输入值非常大或非常小时,其输出值趋于某个常数值的激活函数,也就是说他不能很好的保持x的原貌。常见函数有sigmoid和tanh。


1,2 不饱和非线性函数 

1,2,1 ReLU激活函数(Rectified Linear Unit)

原函数:

\begin{cases} ReLU(x)=0& x<=0\\ ReLU(x)=x & x>0 \end{cases}

函数的导数: 

\begin{cases} ReLU(x)'=0& x<=0\\ ReLU(x)'=1 & x>0 \end{cases}

ReLU函数的特性:

        1,不同于sigmoid和tanh,对于大于0的输入,在前向传播的过程中ReLU会使得输出等于输入,而不是把任何输入都限制在一个比较狭窄的值域内

        2,计算速度非常快,只需对输入x做一个判断。

        3,学习效率高,迭代速度快。

函数的问题:

\begin{cases} ReLU(x)'=0& x<=0\\ ReLU(x)'=1 & x>0 \end{cases}

        结合该函数的梯度来看,当x<0时,会出现本地梯度为0。如此一来,无论上游梯度传过来的是什么,最终结果都是0,使得梯度无法更新。也就说,ReLU函数依然存在梯度消失的问题。

        值得一提的是ReLU函数在著名的AlexNet中被首次提出,这也可以说是这篇paper最重要的贡献之一。ReLU的出现使得训练时的迭代速度比tanh快了接近6倍。


1,2,2 Leaky ReLU

         为了克服ReLU函数中,当x为负值时,梯度直接为0的情况,leaky ReLU使得x为负数时,依然会保留一个较小的梯度,这个值很小但不为0。

原函数:

\begin{cases} f(x)=\alpha x& x<=0\\ f(x)=x & x>0 \end{cases}

函数的导数: 

\begin{cases} f(x)'=\alpha & x<=0\\ f(x)'=1 & x>0 \end{cases}

函数的特性:

        1.  x > 0时:Leaky ReLU的输出等于输入,导数为1。

        2. x <= 0时:输出是输入乘以一个小于一的系数,导数为该系数。使得x为负时,避免了梯度为0的情况,依然可以跟新W。

函数存在的问题:

        虽然有非零梯度,但负值区间的梯度较小,导致该区间的权重更新速度较慢。


1,2,3 ELU

         ELU函数是ReLU函数更进一步的改进版。

原函数:

\begin{cases} f(x)=\alpha (e^{x}-1)& x<=0\\ f(x)=x & x>0 \end{cases}

函数的导数: 

\begin{cases} f(x)'=\alpha e^{x}& x<=0\\ f(x)'=1 & x>0 \end{cases}

函数的特性:

        1.  x > 0时:与Leaky ReLU相同。

        2. x <= 0时:导数恒为正,同样避免了梯度为0的情况,可以跟新W。


1,2,4 SELU


1,2,5 GELU


1,3 summary of activation functions

        在上面关于不饱和激活函数的介绍我到后面就懒得写了,主要原有是因为下面这个PPt中的结论。这个作者在三个著名的网络中,分别使用了不同的不饱和激活函数并比较了准确率。可见,ReLU函数在这三组实验中的表现并不俗,和表现最好的其他激活函数比也就相差了不到1%的准确率。但ReLU函数的计算确是最简单了,计算速度最快的。做到这里还得是人家AlexNet的作者Alex牛,ReLU函数就在在这篇文章中被首次提及并成功运用的。他的出现几乎彻底取代了原有的sigmoid函数和tanh函数。

         结合上面所说的,cs231n给出了如下建议:

1,在选择activation function时,不要太过纠结,直接无脑的使用ReLU就好,只是要明白为什么。

2,如果你想追求更好效果,即,更高准确率,可是试试其他激活函数。但不要用sigmoid和tanh。

3,在一些非常非常新的模型中可能会用到GeLU。


(全文完) 

--- 作者,松下J27

 参考文献(鸣谢): 

1,Stanford University CS231n: Deep Learning for Computer Vision

2,训练神经网络(第一部分)_哔哩哔哩_bilibili

3,10 Training Neural Networks I_哔哩哔哩_bilibili

4,Schedule | EECS 498-007 / 598-005: Deep Learning for Computer Vision 

版权声明:所有的笔记,可能来自很多不同的网站和说明,在此没法一一列出,如有侵权,请告知,立即删除。欢迎大家转载,但是,如果有人引用或者COPY我的文章,必须在你的文章中注明你所使用的图片或者文字来自于我的文章,否则,侵权必究。 ----松下J27

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

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

相关文章

一站式家装服务管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;装修风格管理&#xff0c;主材管理&#xff0c;用户管理&#xff0c;基础数据管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;装修风格&#xff0…

Chained Together卡顿严重怎么办 链在一起卡顿频繁的解决方法

链在一起/Chained Together这款游戏特别适合四个人一起玩&#xff0c;游戏里四个玩家将会被锁链“链在一起”&#xff0c;然后一起在各个地图闯关&#xff0c;不仅考验玩家们的默契配合&#xff0c;还考验智慧和勇气。在链在一起中&#xff0c;玩家需要根据地形和岩浆的分布情况…

淘宝订单物流信息获取:详细操作指南

一、前言 淘宝作为中国最大的电商平台之一&#xff0c;其订单管理系统为商家提供了丰富的接口&#xff0c;用于查询、管理和跟踪订单信息。本指南将详细介绍如何通过淘宝订单接口获取物流信息&#xff0c;帮助商家更好地管理订单和提供优质的物流服务。 二、获取物流信息的步…

php框架的文档和社区支持如何?

在选择 php 框架时&#xff0c;文档和社区支持至关重要,拥有全面的文档和庞大活跃的社区&#xff0c;而 symfony 的文档内容丰富但更适合高级开发人员。codeigniter 4 的文档易于理解&#xff0c;社区规模较小但活跃。yii 2 的文档全面深入&#xff0c;但格式可能令初学者困惑。…

牛拜克拉丝的wordpress免费企业模板

wordpress免费企业模板 挺简洁实用的wordpress免费企业模板&#xff0c;黄色模板搭建公司网站。 演示 https://www.wpniu.com/themes/40.html

allegro 打开 brd文件时提示 WARNING(SPMHDB-212) 告警 应该如何解决呢?

WARNING(SPMHDB-212) &#xff1a;This design has functionality disabled due tothe current product plus options selected. The following features aredisabled: Maximum Crosstalk, Maximum Peak Crosstalk. [help] 步骤 按下图 将allegro编辑器为可设计高速线相关的…

Elastisearch集群(单节点)

目录 一、文件下载 二、创建linux es用户 三、上传、解压canal、es、kibana 四、配置es通讯证书&#xff08;生成证书给es配置使用&#xff09; 五、配置elastisearch 六、修改系统配置 七、添加ik分词器支持&#xff08;可选&#xff09; 八、给文件赋值权限 九、设置…

71-TCP协议工作原理及实战

一 服务器端 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QTcpServer> // 专门用于建立TCP连接并传输数据信息 #include <QtNetwork> // 此模块提供开发TCP/IP客户端和服务器的类QT_BEGIN_NAMESPACE namespace Ui { class M…

164万年后的日期解析引发的OOM

名词解释 商家销项发票业务&#xff08;平台给商家开票&#xff09;&#xff0c;是平台提供给商家的工具产品&#xff0c;商家购买了平台的服务&#xff0c;那么平台需要开票给商家。 前言 本文所描述的问题&#xff0c;是应用的OOM引发的接口成功率下跌&#xff0c;排查过程中…

【LLM之NL2SQL】DAIL-SQL论文阅读笔记

研究背景 该研究旨在提供一个全面、系统的评估框架&#xff0c;用于评估基于大型语言模型&#xff08;LLM&#xff09;的Text-to-SQL技术。特别强调了不同的提示工程策略的有效性和效率&#xff0c;以及开源LLM的可行性。研究的重点是评估在零样本和少样本场景下的不同问题表示…

webgis 之 地图投影

地图投影 什么是地图投影目的种类等角投影的分类墨卡托投影Web 墨卡托投影 参考小结 为了更好地展示地球上的数据&#xff0c;需要将地球投影到一个平面上。地图投影是一个数学问题&#xff0c;按照一定的几何关系&#xff0c;将地球上的经纬度坐标映射到一个平面上的坐标。地球…

力扣hot100:(The Last one)287. 寻找重复数(快慢指针,静态链表)

LeetCode&#xff1a;287. 寻找重复数 “暴力” 不懂技巧&#xff0c;那就暴力&#xff01; 哈希表&#xff1a; 时间复杂度&#xff1a; O ( n ) O(n) O(n) 这个题体现不出 O ( n ) O(n) O(n)的作用&#xff0c;因为 n < 100 n < 100 n<100 空间复杂度&…

VirtualBox出错,从主机复制文件,乱改内容

昨天烧录机器&#xff0c;测试对方更新的一个库&#xff1a; 开始正确。后来莫名其妙崩溃。反复烧了几次&#xff0c;都错误。复制了老版本的库&#xff0c;正常。再改回新版本&#xff0c;崩溃。 于是把整个打包目录给了对方&#xff0c;他一对比&#xff0c;发现文件不对&am…

Windows应急响应靶机 - Web2

一、靶机介绍 应急响应靶机训练-Web2 前景需要&#xff1a;小李在某单位驻场值守&#xff0c;深夜12点&#xff0c;甲方已经回家了&#xff0c;小李刚偷偷摸鱼后&#xff0c;发现安全设备有告警&#xff0c;于是立刻停掉了机器开始排查。 这是他的服务器系统&#xff0c;请你…

Springboot获取resources中的文件

1.Springboot以文件的形式获取resources中的文件 import com.google.gson.JsonIOException; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.JsonSyntaxException; import org.springframework.util.ResourceUtils; import j…

2024.6最新版eclipse下载与安装(汉化教程)超详细教程来咯!!!包懂的

1.eclipse简介 Eclipse 是一个开放源代码的集成开发环境&#xff08;IDE&#xff09;&#xff0c;主要用于Java编程&#xff0c;但也可以通过插件支持其他编程语言&#xff0c;如C/C、Python、Perl等。Eclipse 被广泛应用于企业环境中&#xff0c;特别是在Java社区中&#xff0…

selenium常见难点解决方案

勾选框勾选问题 勾选框代码逻辑实现过程&#xff1a; 第一步&#xff1a;首先找到勾选框的元素&#xff1b; 第二步&#xff1a;检查它是否已经被勾选。如果已经勾选&#xff0c;则进行取消勾选操作&#xff1b;如果未勾选&#xff0c;则进行点击勾选操作&#xff1b; 以下是一…

audacity音频处理

1.安装 Audacity | Free Audio editor, recorder, music making and more! 添加OpenVINO插件: https://zhuanlan.zhihu.com/p/676542556 2.使用 2.1注意事项 1.编辑音频,点击左上方打开或导入都可以;打开视频文件则需要安装ffmpeg模块,打开后只显示视频中的音频信息; 2.编辑…

可变分区管理 分区分配算法

First Fit Algorithm Best Fit Algorithm FFA&#xff1a;按照分区编号找到第一个能装下进程的起始地址填入第二个表 此时 原表中将起始地址进程大小 分区大小-进程大小 如此继续 BFA&#xff1a;按分区大小排序 从小到大 找到第一个能装下的 剩余步骤和FFA一样 装满了可以直…

ls命令的参数选项

ls命令的参数的作用 可以指定要查看的文件夹&#xff08;目录&#xff09;的内容&#xff0c;如果不指定参数&#xff0c;就查看当前工作目录的内容。ls 命令的选项 常用语法&#xff1a;ls [-a -l -h] [linux路径] -a 选项表示 all &#xff0c;即列出全部内容&#xff0c;包括…