美文网首页
神经网络之激活函数_Sigmoid和Tanh探索

神经网络之激活函数_Sigmoid和Tanh探索

作者: 我叫钱小钱 | 来源:发表于2018-09-19 01:41 被阅读124次

Sigmoid是神经网络常用的激活函数,相信大家在学机器学习的时候都知道Sigmoid的值域在 ( 0,1 ) 区间,模型结果y_label值是概率值,那么今天就来谈谈别的。


Tanh(双曲正切函数)
值域:( -1,1 )
公式:
tanh = \frac{e^{(x)}-e^{(-x)}}{e^{x}+e^{(-x)}}

  • 图形看上Tanh与Sigmoid差异


    1、Sigmoid函数比Tanh函数收敛饱和速度慢
    2、Sigmoid函数比Tanh函数梯度收敛更为平滑
    3、Sigmoid函数比Tanh函数值域范围更窄
  • 具体代码细节

from scipy.special import expit, logit
import numpy as np
from sklearn import preprocessing
import matplotlib.pyplot as plt

np.set_printoptions(precision = 2)
x = np.random.uniform(-10,10,size=(10000,10))

先随机模拟1W个10维sample,

s = x.sum(axis=1)
s = np.sort(s).reshape(-1,1)

对每个样本进行 ( ∑sample1,Σsample2,Σsample3... ) 得到1W个结果,尝试用sigmoid进行压缩

# sigmoid函数
np.set_printoptions(suppress=True)
y_sigmoid = 1/(1+np.exp(-s))

再尝试用tanh进行压缩

# tanh函数
y_tanh = (1.0 - np.exp(-2 * s)) / (1.0 + np.exp(-2 * s))

可以看到所有的结果都近似与两函数值域,图形显示

这里就会看到问题,当Sigmoid和Tanh因变量过大时,所有过大的因变量落在函数饱和区间内,函数对因变量的收敛几乎不敏感,这就是为什么在做逻辑回归的时候要对数据先做 Normalize 处理的原因,机器学习教程里很少提到这个点。

我们重新对原始数据做 Normalize 处理

min_max_scaler = preprocessing.MinMaxScaler()  
y = min_max_scaler.fit_transform(s)

由于Sigmoid和Tanh函数因变量值域为(-∞,+∞),MinMaxScaler将函数因变量压缩到(0,1),所以就形成了截断一半的曲线,两个函数分别以0.5、0为起点。

再对原始数据再进行一次转换,这次StandardScaler是以0为基准通过σ计算到基准点的距离

z_score_scaler = preprocessing.StandardScaler()  
y = z_score_scaler.fit_transform(s)

最后得出结果图,如果后续还有加权计算,需注意tanh函数结果集可能小于0,会造成加权计算错误,sigmoid则不会。


相关文章

  • Chapter4 2018-03-20

    深层神经网络 激活函数 - 非线性 ReLU,sigmoid, tanh..... 损失函数 分类问题- 交叉熵...

  • 深度学习基础

    深度学习 一、神经网络基础 1.感知机 2.神经网络 激活函数 ①sigmoid 函数 ②tanh函数(双曲正切函...

  • 神经网络之激活函数_Sigmoid和Tanh探索

    Sigmoid是神经网络常用的激活函数,相信大家在学机器学习的时候都知道Sigmoid的值域在 ( 0,1 ) 区...

  • 深度学习--激活函数

    激活函数: Sigmoid Leaky ReLU ReLU tanh(x) ELU

  • AI常用激活函数分析5,Tanh函数

    在分类任务中,双曲正切函数(Tanh)逐渐取代 Sigmoid 函数作为标准的激活函数,其具有很多神经网络所钟爱的...

  • 关键概念

    1.激活函数 主要的激活函数(Activation Functions)包括: sigmoid tanh ReLU...

  • 03 多层感知机

    激活函数 ReLU ReLU(x)=max(x,0) Sigmoid函数 tanh函数 激活函数的选择 多层感知机...

  • 几种常见的激活函数

    常见的传统激活函数主要有两个:sigmoid和tanh。 首先说一下sigmoid函数。 它是使用范围最广的一...

  • ReLu(Rectified Linear Units)激活函数

    Sigmoid函数以及传统线性函数 在ReLU激活函数出现之前,神经网络训练都是勇Sigmoid作为激活函数。其中...

  • 激活函数比较

    下面内容转自深度学习:激活函数的比较和优缺点,sigmoid,tanh,relu[https://blog.csd...

网友评论

      本文标题:神经网络之激活函数_Sigmoid和Tanh探索

      本文链接:https://www.haomeiwen.com/subject/qlwtnftx.html