机器学习——sigmoid、tanh、relu等激活函数总结_TopTAO-的博客-程序员秘密

技术标签: 机器学习  深度学习  

一、什么是激活函数?

一个神经元会同时接收多个信号,然后将这些信号乘以一定权重求和,再用函数处理后再输出新的信号。对神经元的输入进行处理,以获得输出的函数称为激活函数。

二、为什么要用激活函数?

  1. 激活函数对模型学习、理解非常复杂和非线性的函数具有重要作用。
  2. 激活函数可以引入非线性因素。如果不使用激活函数,则输出信号仅是一个简单的线性函数。线性函数一个一级多项式,线性方程的复杂度有限,从数据中学习复杂函数映射的能力很小。没有激活函数,神经网络将无法学习和模拟其他复杂类型的数据,例如图像、视频、音频、语音等。
  3. 激活函数可以把当前特征空间通过一定的线性映射转换到另一个空间,让数据能够更好的被分类。

三、为什么激活函数需要非线性函数?

  1. 假若网络中全部是线性部件,那么线性的组合还是线性,与单独一个线性分类器无异。这样就做不到用非线性来逼近任意函数。
  2. 使用非线性激活函数 ,以便使网络更加强大,增加它的能力,使它可以学习复杂的事物,复杂的表单数据,以及表示输入输出之间非线性的复杂的任意函数映射。使用非线性激活函数,能够从输入输出之间生成非线性映射。

四、常见的激活函数

1. sigmoid函数

sigmoid函数是最常用的连续、平滑的激励函数,也被称作逻辑函数(Logistic函数)。用于隐层神经元输出,可以将一个实数映射到(0,1)的区间,用来做二分类。

a. 函数定义: f ( x ) = 1 1 + e − x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+ex1,值域: ( 0 , 1 ) (0,1) (0,1)

b. 函数图像:

c. 导数:: f ′ ( x ) = 1 1 + e − x ( 1 − 1 1 + e − x ) = f ( x ) ( 1 − f ( x ) ) f^{'}(x)=\frac{1}{1+e^{-x}}\left( 1- \frac{1}{1+e^{-x}} \right)=f(x)(1-f(x)) f(x)=1+ex1(11+ex1)=f(x)(1f(x))

d. 特点:当 x = 10 x=10 x=10,或 x = − 10 x=-10 x=10 f ′ ( x ) ≈ 0 f^{'}(x) \approx0 f(x)0,当 x = 0 x=0 x=0 f ′ ( x ) = 0.25 f^{'}(x) =0.25 f(x)=0.25

2. Tanh函数

a. 函数定义: f ( x ) = t a n h ( x ) = e x − e − x e x + e − x f(x) = tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} f(x)=tanh(x)=ex+exexex,值域: ( − 1 , 1 ) (-1,1) (1,1)

b. 函数图像:

c. 导数: f ′ ( x ) = − ( t a n h ( x ) ) 2 f^{'}(x)=-(tanh(x))^2 f(x)=(tanh(x))2

d. 特点:当 x = 10 x=10 x=10,或 x = − 10 x=-10 x=10 f ′ ( x ) ≈ 0 f^{'}(x) \approx0 f(x)0,当 x = 0 x=0 x=0 f ‘ ( x ) = 1 f^{`}(x) =1 f(x)=1

3. ReLU函数

ReLU是神经网络最常用的非线性函数。其函数为max(0,x),连续但不平滑。

a. 函数定义: f ( x ) = m a x ( 0 , x ) f(x) = max(0, x) f(x)=max(0,x)值域: [ 0 , + ∞ ) [0,+∞) [0,+)

b. 函数图像:

c. 导数: f ′ ( x ) = { 0 , x < 0 1 , x > 0 u n d e f i n e d , x = 0 f^{'}(x)=\begin{cases} 0,x<0 \\ 1,x>0 \\ undefined,x=0\end{cases} f(x)=0,x<01,x>0undefined,x=0

d. 特点:具有单侧抑制;相对宽阔的兴奋边界;稀疏激活性等性质。

4. Leak Relu 激活函数

a. 函数定义: f ( x ) = { a x , x < 0 x , x > 0 f(x) = \left\{ \begin{aligned} ax, \quad x<0 \\ x, \quad x>0 \end{aligned} \right. f(x)={ ax,x<0x,x>0,值域: ( − ∞ , + ∞ ) (-∞,+∞) (,+)

b. 函数图像(a=0.5):

c. 导数: f ′ ( x ) = { a , x < 0 1 , x > 0 u n d e f i n e d , x = 0 f^{'}(x)=\begin{cases} a,x<0 \\ 1,x>0 \\ undefined,x=0\end{cases} f(x)=a,x<01,x>0undefined,x=0

5. ELU函数

a. 函数定义: f ( x ) = { a ( e x − 1 ) , x < 0 x , x > 0 f(x) = \left\{ \begin{aligned} a(e^x-1), \quad x<0 \\ x, \quad x>0 \end{aligned} \right. f(x)={ a(ex1),x<0x,x>0,值域: ( − a , + ∞ ) (-a,+∞) (a,+)

b. 函数图像(a=0.5):

6. SoftPlus 函数

a. 函数定义: f ( x ) = l n ( 1 + e x ) f(x) = ln( 1 + e^x) f(x)=ln(1+ex)值域: $ (0,+∞) $

b. 函数图像:

c. 导数: f ′ ( x ) = e x 1 + e x f^{'}(x)=\frac{e^x}{1 + e^x} f(x)=1+exex

7. softmax函数

softmax 函数可以把它的输入,通常被称为 logits 或者 logit scores,处理成 0 到 1 之间,并且能够把输出归一化到和为 1。这意味着 softmax 函数与分类的概率分布等价。它是一个网络预测多酚类问题的最佳输出激活函数。

a. 函数定义: P ( i ) = e x p ( θ i T x ) ∑ k = 1 K e x p ( θ i T x ) P(i) = \frac{exp(\theta_i^T x)}{\sum_{k=1}^{K} exp(\theta_i^T x)} P(i)=k=1Kexp(θiTx)exp(θiTx),其中, θ i \theta_i θi x x x 是列向量, θ i T x \theta_i^T x θiTx 可能被换成函数关于 x x x 的函数 f i ( x ) f_i(x) fi(x)

五、如何选择激活函数

选择一个适合的激活函数并不容易,需要考虑很多因素,通常的做法是,如果不确定哪一个激活函数效果更好,可以把它们都试试,然后在验证集或者测试集上进行评价。然后看哪一种表现的更好,就去使用它。以下是常见的选择情况:

  1. 如果输出是 0、1 值(二分类问题),则输出层选择 sigmoid 函数,然后其它的所有单元都选择 Relu 函数。
  2. 如果在隐藏层上不确定使用哪个激活函数,那么通常会使用 Relu 激活函数。有时,也会使用 tanh 激活函数,但 Relu 的一个优点是:当是负值的时候,导数等于 0。
  3. sigmoid 激活函数:除了输出层是一个二分类问题基本不会用它。
  4. tanh 激活函数:tanh 是非常优秀的,几乎适合所有场合。
  5. ReLu 激活函数:最常用的默认函数,如果不确定用哪个激活函数,就使用 ReLu 或者 Leaky ReLu,再去尝试其他的激活函数。
  6. 如果遇到了一些死的神经元,我们可以使用 Leaky ReLU 函数。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41921520/article/details/100123521

智能推荐

服务器端脚本语言和客户端脚本语言_alwaysyk的博客-程序员秘密

转自网易--Jenna(一)常见的服务器端脚本语言,php,jsp,asp。像我们普通浏览网页基于一种BS模式,其实它也只是一种统一于Browser(浏览器)的CS模式。我们的浏览器作为客户端,在点击链接或者输入地址时,向目的主机发送HTML,FTP等等服务请求,然后目的主机根据请求类型,请求内容给予响应。这种万变不离其宗的服务形式普遍存在于所有的网络通信模式中。

如何在ubuntu16.04上添加开机自启动的python脚本_ubuntu /etc/init.d 可以放python吗_saminsysu的博客-程序员秘密

如何在ubuntu16.04上添加开机自启动的python脚本复制脚本到/目录/etc/init.d/下,并赋予脚本执行权限示例bash脚本如下所示#!/bin/sh### BEGIN INIT INFO# Provides: monitor-agent# Short-Description: Start and stop monitor-agent# Description: moni

编译问题:找不到头文件,ft2build.h: No such file or directory_SundayO的博客-程序员秘密

问题描述:在字体设置文件夹中,没有找到ft2build.h文件,即使复制ft2build.h到/usr/include/fontconfig/目录下或者创建软连接,编译出现同样问题。原因分析:一是系统中没有相关的头文件,二是在编译过程中,gcc和g++没有找到对应的头文件,并不是系统中不存在文件。解决方法:在编译过程中,添加头文件路径。export C_INCLUDE_PATH=/u...

BZOJ[1901]Zju2112 Dynamic Rankings 树套树(线段树套Splay)_Duan2baka的博客-程序员秘密

传送门ber~少了几个操作的二逼平衡树 简化了我的Delete函数emmm行行行过几天打一遍主席树版本的(18/1/29UPD):线段树套树状数组看这里代码如下:#include#include#include#define INF 2147483647#define N 10020using namespace std;inline int read(){

Redis HyperLogLog 是什么?这些场景使用它~_CSDN云计算的博客-程序员秘密

作者 | 就是码哥呀来源 | 码哥字节在移动互联网的业务场景中,数据量很大,我们需要保存这样的信息:一个 key 关联了一个数据集合,同时对这个数据集合做统计。统计一个 APP 的日活、月活数;统计一个页面的每天被多少个不同账户访问量(Unique Visitor,UV));统计用户每天搜索不同词条的个数;统计注册 IP 数。通常情况下,我们面临的用户数量以及访问量都是巨...

链表队列(LinkedListQueue)_linkedlist queue_吃米饭的博客-程序员秘密

栈操作入队template&lt;typename T&gt;void LinkedListQueue&lt;T&gt;::enqueue(T e) { if (tail == nullptr) //队列是否为空 { tail = new QNode&lt;T&gt;(e); //为空则添加在对尾指针 head = tail; ...

随便推点

xp怎么看自己计算机密码,XP如何查看wifi密码?_JunJIe.Y的博客-程序员秘密

问:XP怎么查看本机wifi密码?我的笔记本电脑是Windows XP系统的,由于XP系统会自动记录wifi密码,时间长了,忘记了这个wifi密码是多少;请问如何用这台XP电脑查看wifi密码?答:Windows XP默认会保存已连接wifi的密码,之后只要XP笔记本电脑出现在该wifi信号覆盖范围,XP笔记本电脑会自动连接wifi上网的。时间长了,很多用户会忘记wifi密码。这个时候有2种方法来...

关于使用WinSCP或MobaXterm远程连接虚拟机请求超时或拒绝连接的解决方案_winscp连接超时_程序员洲洲的博客-程序员秘密

情况背景:本周在部署项目到虚拟机时,想使用WinSCP拉一个比较大的文件压缩包到虚拟机中,但是在虚拟机创建好之后,使用终端软件连接不上虚拟机,提示连接超时或拒绝连接。解决方案如下:**(1)可能是防火墙问题:开启|关闭防火墙(这里需要关闭)sudo ufw enable|disable(即disable)(2)未开启远程服务:终端界面键入:sudo /etc/init.d/ssh restart (或sudo /etc/init.d/ssh start)(3)端口号22 要打开:su

Complex复数类_HeyWeCome的博客-程序员秘密

complex复数类,进行加减乘除操作。

使用v-viewer实现图片查看_viewer 中文文档_tys87198312的博客-程序员秘密

一、环境vue + springboot + v-viewerv-viewer中文文档二、开始1、使用npm命令安装npm install v-viewer2、引入v-viewer及必需的css样式,并使用Vue.use()注册插件,之后即可使用。import 'viewerjs/dist/viewer.css'import Viewer from 'v-viewer' // 预览...

UE4 后期处理材质_ue4后期盒子怎么放材质_我要睡个好觉的博客-程序员秘密

1 在利用后期处理材质在视口上显示UI参考图标位置如图操作2 在后期盒子中添加后期材质

linux安装离线docker包教程,Centos7离线安装Docker环境_洋林的博客-程序员秘密

1、安装介质准备(1)操作系统Centos7镜像: ftp://ftp.xxx.com/software/ISO/CentOS-7-x86_64-DVD-1810.iso(2)Docker安装包依赖包: ftp://ftp.xxx.com/software/ISO/docker-ce-17.03.1.ce-1.el7.centos.x86_64.rpmftp://ftp.xxx.com/softw...

推荐文章

热门文章

相关标签