python 归一化函数_激活函数快速概述

本文介绍了神经网络中常见的激活函数,包括Sigmoid、Softmax和ReLU。Sigmoid适用于二元分类,但在深度网络中易出现梯度消失问题;Softmax用于多类分类,输出概率分布;ReLU常用于隐藏层,防止梯度消失,但可能遇到Dying ReLU问题。
摘要由CSDN通过智能技术生成

每个神经元的正向传播步骤计算输入的加权和加上偏差:

60fc1cead84dbcd8b5c764648aa6144e.gif

然后应用激活函数A在每个神经元处生成输出:

0eac09c2ff487b5206ef665aac615fef.gif

激活函数执行Y 的非线性变换,该范围将基于某个阈值确定神经元是否将触发。将许多这些神经元堆叠在一起,最终得到一个神经网络。

非线性变换是激活函数的重要特性。如果你的激活函数是线性的,那么无论你的神经网络中有多少层,最终结果仍然是线性函数。

有许多激活函数各有其优缺点。以下是当今最常用激活函数。

sigmoid

sigmoid激活函数定义如下:

24afdd97527ad6099b39f241db66a2d2.png

最初常用于隐藏层和outer层,现在主要用于outer层。它介于0和1之间,是二元分类问题的理想选择。

由于速度的原因,隐层中sigmoid函数的使用减少了。这个函数遇到了所谓的梯度消失问题。看看下面的图。在负的和正的极端情况下导数都接近于0。这给深度神经网络带来了一个问题,因为模型停止学习或以非常小的速度学习,从而成倍地增加了训练时间。

在使用sigmoid激活函数时,反向传播也没有得到优化。在预处理步骤中,通常将值归一化为均值0,以提高梯度法的效率。以0.5为中心的sigmoid函数在这方面没有帮助。

由于上述原因,sigmoid函数现在主要用于outer层中以进行二元分类任务。

2069c405e3a870297dc5e16b2fde8787.png

sigmoid函数的向量化python实现如下:

c26fe487f90c20567d535cacb254bd85.png

SOFTMAX

当处理多类分类问题时,该函数通常用于神经网络的输出层。

与sigmoid函数类似,Softmax将其输入转换为0到1之间的范围。它用所有类的指数和除以每一项的e来归一化输出。结果是一个分类概率分布。

最有可能为True的类是概率最大的类。很容易看出为什么,这是在输出层选择多类分类的函数,将网络的输出转化为分类概率分布。

Softmax的公式如下:

500b1f0bb363bfb6943b0d93fdbf5a80.gif

其中z是向量,K是向量维度,j是向量的第i个元素。

9da763c47655f4dd505e57dc3de12b67.png

要在python中实现softmax函数,您将执行以下向量化实现:

ecefcccc353186bdef6ebb04c0b32f52.png

如果我们将上面图像的向量传递给此函数,您将得到相同的结果:

z=[0.5,2.3,0.8]softmax(z)

array([ 0.11905462, 0.72023846, 0.16070692])

RELU

RELU通常用于神经网络的隐藏层。

它们是机器学习从业者能够训练更深层神经网络的原因之一。RELU没有表现出前面描述的梯度消失问题,允许在更快的时间内训练大型神经网络。

Relu的公式如下:

657424cf8e6c674dedffc3759ed5ac68.png

RELU的导数总是1或0,不包括0处的导数,0处的导数没有定义,但通常被1代替,这意味着在外部范围内的导数不会变得非常小,就像sigmoid函数或其他激活函数(如tanh)的情况一样。

008fcc52bf6318ea5838cec1a4c87b40.png

并不是所有关于RELU的事情都是完美的,他们可以表现出一个不同的问题,称为Dying Relu问题,特别是当学习率太高的时候。简而言之,较大的梯度会导致权重更新,从而导致RELU在任何其他数据点不再激活。因此,表现出这种反应的神经元永远不会再fires,因此被认为是死的。

即使存在Dying Relu问题的可能性,但经验法则是在隐藏层中使用RELU,除非你有充分的理由不这样做。

要在python中实现RELU,请使用以下代码:

bd6e0756d8de58f36243fc5d96816850.png

结论

我们现在已经了解了神经网络中最常用的3种激活函数,您可以在实现算法时使用以下经验法则,特别是如果您刚刚开始并且不知道从哪里开始。

  • 对于二元分类,请在outer层使用sigmoid函数。
  • 对于多标签分类,请在outer层使用sigmoid函数。
  • 对于多类分类,请在outer层使用softmax函数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值