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

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

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(

相关文章
|
6月前
|
机器学习/深度学习 测试技术 Python
【激活函数】基础回顾:带你认识神经网络中常见的激活函数
【激活函数】基础回顾:带你认识神经网络中常见的激活函数
760 0
【激活函数】基础回顾:带你认识神经网络中常见的激活函数
|
机器学习/深度学习
【从零开始学习深度学习】9.多层感知机MLP及常用激活函数介绍
【从零开始学习深度学习】9.多层感知机MLP及常用激活函数介绍
【从零开始学习深度学习】9.多层感知机MLP及常用激活函数介绍
|
3月前
|
机器学习/深度学习 算法
神经网络中激活函数的重要性
【8月更文挑战第23天】
31 0
|
5月前
|
机器学习/深度学习 Java Serverless
Java开发者的神经网络进阶指南:深入探讨交叉熵损失函数
今天来讲一下损失函数——交叉熵函数,什么是损失函数呢?大体就是真实与预测之间的差异,这个交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。在信息论中,交叉熵是表示两个概率分布 p,q 的差异,其中 p 表示真实分布,q 表示预测分布,那么 H(p,q)就称为交叉熵:
|
机器学习/深度学习 网络架构 索引
神经网络初学者的激活函数指南
如果你刚刚开始学习神经网络,激活函数的原理一开始可能很难理解。但是如果你想开发强大的神经网络,理解它们是很重要的。
96 0
|
机器学习/深度学习 算法
|
算法 程序员
程序员的数学【最优化】(三)
本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 最优化
207 0
程序员的数学【最优化】(三)
|
机器学习/深度学习 算法 数据挖掘
程序员的数学【最优化】(一)
本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 最优化
215 0
程序员的数学【最优化】(一)
|
程序员
程序员的数学【最优化】(二)
本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 最优化
248 0
程序员的数学【最优化】(二)