第二章:8.1选择激活函数

关于激活函数

ReLU 激活函数

ReLU(Rectified Linear Unit,整流线性单元)是一种非常常用的激活函数。它的特点是:

  • 如果输入 z 小于 0,输出是 0。

  • 如果输入 z 大于等于 0,输出就是 z 本身。

用公式表示就是:

ReLU 的好处是计算简单,只需要判断输入是否大于 0,然后取最大值。

Sigmoid 激活函数

Sigmoid(乙状结肠)激活函数也很常用,它的输出范围在 0 到 1 之间,公式是:

Sigmoid 函数的输出是一个平滑的曲线,当 z 很大时,输出接近 1;当 z 很小时,输出接近 0。

线性激活函数

线性激活函数就是 g(z)=z,也就是直接输出输入值。如果在神经网络中使用线性激活函数,那么整个网络的输出仍然是输入的线性函数。

这三个可能是迄今为止神经网络中最常用的激活函数,分别是乙状结肠激活函数(中间),

relu激活函数(最右侧),线性激活函数(最左侧)。


在考虑输出层的激活函数时,往往是一个相对自然的选择,需要看具体目标是什么。

选择激活函数的场景

二进制分类问题

如果你在处理一个二进制分类问题(比如判断图片中是否有猫,结果是 0 或 1),那么在输出层使用 Sigmoid 激活函数是最自然的选择。因为 Sigmoid 的输出范围是 0 到 1,可以解释为概率。

回归问题

如果你在解决一个回归问题(比如预测明天的股票价格),那么在输出层使用线性激活函数是合适的。因为线性激活函数可以输出任何实数值,包括正数和负数。

预测非负值

如果你需要预测的值是非负的(比如房价,不可能是负数),那么 ReLU 激活函数是一个不错的选择,因为 ReLU 的输出是非负的。

relu是迄今为止许多人训练神经网络的最常见的选择

ReLU 和 Sigmoid 的比较

计算效率

ReLU 的计算速度比 Sigmoid 快。ReLU 的计算只需要判断输入是否大于 0,然后取最大值。而 Sigmoid 需要计算指数和逆运算,计算量更大,效率稍低。

梯度消失问题

  • ReLU:ReLU 函数在 z≥0 时梯度为 1,在 z<0 时梯度为 0。这意味着在 z≥0 的区域,梯度不会消失,训练速度更快。

  • Sigmoid:Sigmoid 函数在两端(z 很大或很小时)梯度接近 0,容易导致梯度消失问题。这使得训练速度变慢,尤其是在深层网络中。

使用relu激活函数可以使你的神经网络学习得更快一点

为什么需要激活函数?

总之,激活函数就像是给模型加上了“魔法”,让它能够更好地学习和理解复杂的数据!

  • 激活函数可以引入非线性因素。以常见的 Sigmoid 激活函数为例,它的数学表达式是 f(x)=1+e−x1​。这个函数的输出范围是(0,1),并且具有非线性的 S 形曲线。当神经网络的神经元使用 Sigmoid 激活函数后,即使是简单的多层神经网络结构,也能够学习复杂的非线性关系。例如,在图像识别任务中,图像的像素值和目标类别之间的关系是高度非线性的。通过在神经网络中使用激活函数,网络可以对这些复杂的非线性关系进行建模,从而能够准确地识别图像中的物体。

  • 简单来说,激活函数在机器学习中的作用主要有两个:

  • 让模型变得“聪明”


  • 激活函数可以让模型处理更复杂的问题。如果没有激活函数,模型就像一个简单的加法器,只能解决直线相关的问题。但有了激活函数,模型就能处理曲线、形状等复杂的关系,比如识别图片里的猫和狗。

  • 控制输出范围


  • 激活函数可以限制神经元的输出,防止数值变得太大或太小。比如,Sigmoid函数把输出限制在0到1之间,这样可以让模型更稳定,避免计算时出现错误。

  • 激活函数类型

  • 总结

  • ReLU:计算简单,训练速度快,适合隐藏层。

  • Sigmoid:输出范围在 0 到 1,适合二进制分类问题的输出层。

  • 线性激活函数:适合回归问题的输出层。

  • 避免线性激活函数在隐藏层:因为多层线性函数仍然是线性函数,无法学习复杂的模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值