神经网络-激活函数总结

学习是不断回顾总结知识的过程。

本文主要介绍常见的激活函数的特征和区别,以及使用matplot绘制。
实现的激活函数包括tanh、sigmoid、softmax、relu等。

激活函数概念

激活函数的主要作用是提供网络的非线性建模能力。
在我们面对线性可分的数据集的时候,简单的用线性分类器即可解决分类问题。但是现实生活中的数据往往不是线性可分的,面对这样的数据,一般有两个方法:引入非线性函数、线性变换。
线性变换,就是把当前特征空间通过一定的线性映射转换到另一个空间,让数据能够更好的被分类。
激活函数,在神经网络中,为了避免单纯的线性组合,我们在每一层的输出后面都添加一个激活函数。

代码实现

import numpy as np 
from matplotlib import pyplot as plt 

def tanh(x):
    return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))

def sigmoid(x):
    return 1. / (1 + np.exp(-x))

def relu(x):
    return np.where(x<0,0,x)

def leaklyrelu(x,a=0.2):
	return x*np.clip((x>=0),a,1)

def softmax(x):
    return np.exp(x) / np.sum(np.exp(x), axis=0)

def show(title,x,y): 
    plt.title(title) 
    plt.xlabel("x") 
    plt.ylabel("y") 
    plt.plot(x,y) 
    plt.show()
    
x = np.arange(-6,6,0.1) 
y = tanh(x) 
show("tanh",x,tanh(x))
show("sigmoid",x,sigmoid(x))
show("softmax",x,softmax(x))
show("relu",x,relu(x))
show("relu",x,relu(x))

运行结果:

sigmoid函数: y = s i g m o i d ( x ) = 1 1 + e − x y=sigmoid(x)=\frac {1}{1+e^{-x}} y=sigmoid(x)=1+ex1
存在问题:
1.输出范围在0~1之间,均值为0.5,需要做数据偏移,不方便下一层的学习。
2.当x很小或很大时,导数很小会导致网络无法有效训练,这就是所谓的梯度消失。神经网络训练使用的是反向传播算法(主要利用的是导数的链式法则,也就是多个导数的乘积),多个导数相乘很容易趋于0。

在这里插入图片描述

tanh函数: y = t a n h ( x ) = e x − e − x e x + e − x y=tanh(x)=\frac {e^{x}-e^{-x}}{e^{x}+e^{-x}} y=tanh(x)=ex+exexex
优点:输出在-1~1之间,均值为0,收敛速度比sigmoid快。
存在问题:在函数左右两侧梯度接近0,会导致梯度消失,导致网络无法有效的训练。

在这里插入图片描述

relu函数:
f ( x ) = { x , if  x ≥ 0 0 , if  x ≤ 0 f(x) = \begin{cases} x, & \text{if $x\geq0$} \\ 0, & \text{if $x\leq0$} \end{cases} f(x)={x,0,if x0if x0
ReLU的全称是Rectified Linear Units。
当x<0时,ReLU硬饱和,当x>0时,则不存在饱和问题。
存在问题:随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新。这种现象被称为“神经元死亡”。

在这里插入图片描述

leakly relu函数:
f ( x ) = { x , if  x ≥ 0 α ( e x − 1 ) , if  x ≤ 0 f(x) = \begin{cases} x, & \text{if $x\geq0$} \\ \alpha(e^x-1), & \text{if $x\leq0$} \end{cases} f(x)={x,α(ex1),if x0if x0
优点: 解决了relu神经元死亡的问题,这里原文建议 α \alpha α=0.25

在这里插入图片描述

//TODO 还有很多激活函数待补充

softmax函数: y = e x ∑ e x y=\frac{e^x}{\sum{e^x}} y=exex
特征:总的概率值为1,用于多分类任务,输出值为每一项的概率。

在这里插入图片描述

参考文献:
https://www.cnblogs.com/missidiot/p/9378079.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值