程序员必知:常见的激活函数

简介: 程序员必知:常见的激活函数

1. 什么是激活函数

??在神经网络中,我们经常可以看到对于某一个隐藏层的节点,该节点的激活值计算一般分为两步:

??(1)输入该节点的值为 x1,x2x1,x2 时,在进入这个隐藏节点后,会先进行一个线性变换,计算出值 z【1】=w1x1+w2x2+b【1】=W【1】x+b【1】z【1】=w1x1+w2x2+b【1】=W【1】x+b【1】 ,上标 11 表示第 11 层隐藏层。

??(2)再进行一个非线性变换,也就是经过非线性激活函数,计算出该节点的输出值(激活值) a(1)=g(z(1))a(1)=g(z(1)) ,其中 g(z)g(z) 为非线性函数。

2. 常用的激活函数

??在深度学习中,常用的激活函数主要有:sigmoid函数,tanh函数,ReLU函数。下面我们将一一介绍。

2.1 sigmoid函数

??在逻辑回归中我们介绍过sigmoid函数,该函数是将取值为 (?∞,+∞)(?∞,+∞) 的数映射到 (0,1)(0,1) 之间。sigmoid函数的公式以及图形如下:

g(z)=11+e?zg(z)=11+e?z

??对于sigmoid函数的求导推导为:

??sigmoid函数作为非线性激活函数,但是其并不被经常使用,它具有以下几个缺点:

???(1)当 zz 值非常大或者非常小时,通过上图我们可以看到,sigmoid函数的导数 g′(z)g′(z) 将接近 00 。这会导致权重 WW 的梯度将接近 00 ,使得梯度更新十分缓慢,即梯度消失。下面我们举例来说明一下,假设我们使用如下一个只有一层隐藏层的简单网络:

???对于隐藏层第一个节点进行计算,假设该点实际值为 aa ,激活值为 a【1】a【1】 。于是在这个节点处的代价函数为(以一个样本为例): $$ J^{【1】}(W) = \frac{1}//代码效果参考:http://www.ezhiqi.com/bx/art_4885.html{2} (a{【1】}-a)2 $$

???而激活值 a【1】a【1】 的计算过程为:

z【1】=w11x1+w12x2+b【1】z【1】=w11x1+w12x2+b【1】

a【1】=g(z【1】)a【1】=g(z【1】)

???于是对权重 w11w11 求梯度为:

ΔJ【1】(W)Δw11=(a【1】?a)?(a【1】)′=(a【1】?a)?g′(z【1】)?x1ΔJ【1】(W)Δw11=(a【1】?a)?(a【1】)′=(a【1】?a)?g′(z【1】)?x1

???由于 $ g'(z^{【1】}) =g(z{【1】})(1-g(z{【1】})) ,当,当 z^{【1】}//代码效果参考:http://www.ezhiqi.com/bx/art_1673.html $ 非常大时,g(z【1】)≈1,1?g(z【1】)≈0g(z【1】)≈1,1?g(z【1】)≈0 因此, g′(z【1】)≈0,ΔJ【1】(W)Δw11≈0g′(z【1】)≈0,ΔJ【1】(W)Δw11≈0。当 z【1】z【1】 非常小时,g(

相关文章
|
2月前
|
机器学习/深度学习 测试技术 Python
【激活函数】基础回顾:带你认识神经网络中常见的激活函数
【激活函数】基础回顾:带你认识神经网络中常见的激活函数
421 0
【激活函数】基础回顾:带你认识神经网络中常见的激活函数
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch基础之激活函数模块中Sigmoid、Tanh、ReLU、LeakyReLU函数讲解(附源码)
PyTorch基础之激活函数模块中Sigmoid、Tanh、ReLU、LeakyReLU函数讲解(附源码)
152 0
|
10天前
|
机器学习/深度学习
激活函数:神经网络的生命之花
激活函数:神经网络的生命之花
激活函数:神经网络的生命之花
|
12月前
|
机器学习/深度学习 算法
反向传播算法如何工作
反向传播算法如何工作
|
机器学习/深度学习 网络架构 索引
神经网络初学者的激活函数指南
如果你刚刚开始学习神经网络,激活函数的原理一开始可能很难理解。但是如果你想开发强大的神经网络,理解它们是很重要的。
77 0
|
机器学习/深度学习 人工智能 算法
【Pytorch神经网络基础理论篇】 06 自动求导+导数与微分
【Pytorch神经网络基础理论篇】 06 自动求导+导数与微分
258 0
|
机器学习/深度学习 人工智能 自然语言处理
【Pytorch神经网络理论篇】 07 激活函数+Sigmoid+tanh+ReLU+Swish+Mish+GELU
对于分类任务来说,如果仅仅给出分类的结果,在某些场景下,提供的信息可能并不充足,这就会带来一定的局限。因此,我们建立分类模型,不仅应该能够进行分类,同时,也应该能够提供样本属于该类别的概率。这在现实中是非常实用的。例如,某人患病的概率,明天下雨概率等。因此,我们需要将z的值转换为概率值,逻辑回归使用sigmoid函数来实现转换。
522 0
|
机器学习/深度学习 Python
神经网络中的损失函数正则化和 Dropout 并手写代码实现
神经网络中的损失函数正则化和 Dropout 并手写代码实现
150 0
神经网络中的损失函数正则化和 Dropout 并手写代码实现
|
机器学习/深度学习 存储 人工智能
手推公式:LSTM单元梯度的详细的数学推导
手推公式:LSTM单元梯度的详细的数学推导
208 0
手推公式:LSTM单元梯度的详细的数学推导
|
机器学习/深度学习 算法
无公式理解反向传播算法之精髓
无公式理解反向传播算法之精髓
无公式理解反向传播算法之精髓