吴恩达2022机器学习专项课程C2W2:2.19 sigmoid函数的替代方案 & 2.20如何选择激活函数 & 2.21 激活函数的重要性

这里写目录标题

引言

截至目前,我们一直使用sigmoid激活函数构建神经网络,但通过采用不同的激活函数,可以提升神经网络的性能。本篇主要记录激活函数都有什么?如何选择激活函数?为什么神经网络要有激活函数?

sigmoid激活函数的局限

1.回顾需求案例

之前的案例中,T恤知名度(awareness)只有好和坏,是一个二元分类问题。而实际上,它可能不是二元的,他们可能有点意识到,相当意识到,极度意识到,或者它可能已经完全病毒式传播了,因此这个神经元的激活值应该是一个任意非负数而不是仅仅在0-1。

2.ReLU激活函数

原来的sigmoid激活值,范围在0-1,如果想让激活值的范围更大,我们可以选择ReLU(修正线性单元)激活函数,当z小于0时,输出为0;当输入z大于或等于0时,输出为z,其数学表达式为g(z) = max(0, z)。

常用的激活函数

分别为线性激活函数,sigmoid激活函数,ReLU激活函数

1.线性激活函数的解释

使用线性激活函数等同于没有使用激活函数,因为输出只是输入的线性组合(即z = wx + b)。在课程中会提到使用线性激活函数而不是没有激活函数。如果听到其他人说没有使用激活函数,他们指的是使用了线性激活函数。

如何选择激活函数?

1.选择输出层的激活函数

取决于目标或真实标签y是什么,有以下3种选择:

  • (1)sigmoid激活函数:处理分类问题时,特别是二元分类问题,其中目标变量y只有两个可能的值,0或1,sigmoid激活函数是最合适的选择。
  • 2)线性回归激活函数:在处理回归问题时,它的目标是预测一个连续的数值,例如预测明天的股价相对于今天的变化量,此时建议使用线性激活函数。线性激活函数的特点是它的输出可以取任意实数值,包括正数和负数。这意味着神经网络的输出可以自由地表示股价上升或下降的量,无论是正值还是负值。
  • (3)ReLU激活函数 :如果y只能取非负值且范围不是0-1,例如如果你正在预测房价,那永远不会是负数,那么最自然的选择将是ReLU激活函数。

2.选择隐藏层的激活函数

到目前为止,ReLU激活函数是最常见选择,它使你的神经网络学习得更快一些。原因如下:

  • 1)计算效率:ReLU激活函数的计算比sigmoid函数更快。ReLU函数的计算仅涉及计算0和输入值z之间的最大值,这是一个简单的操作。相比之下,sigmoid函数需要进行指数运算和取倒数,这在计算上更为复杂和耗时。
  • (2)梯度下降的效率 :当使用梯度下降算法来训练神经网络时,ReLU函数只有一个方向平坦,而sigmoid有两个方向平坦,如果一个函数平坦较多,梯度下降会非常慢。

选择激活函数的总结

1.输出层总结

对于输出层,如果你有一个二元分类问题,使用sigmoid;如果y是一个可以取正值或负值的数字,使用线性;或者如果y只能取正值或零正值或非负值,使用ReLU。

2.隐藏层总结

然后对于隐藏层,我只是使用ReLU作为默认激活函数。

3.TensorFlow设置激活函数

第一层第二层为隐藏层,使用ReLU,输出层可以根据需求更换激活函数。

激活函数多样性

通过使用不同的激活函数,可以构建比单一使用sigmoid激活函数时更为强大和灵活的神经网络。在研究文献中,除了常用的激活函数如ReLU,还有其他类型的激活函数,例如tanh、LeakyReLU、swish等。尽管存在多种激活函数,但对于大多数应用场景,本篇中介绍的激活函数已经足够。

为什么神经网络需要激活函数

1.简述

将神经网络退化为全由线性激活函数构成的形式,就等于放弃了其处理非线性问题的能力,使其等同于较为基础的线性回归工具,违背了利用神经网络解决更复杂问题的初衷。

2.线性激活函数的局限

以一个简单的只有一个输入、一个隐藏层单元和一个输出层单元的神经网络为例,当神经元都使用线性激活函数时,计算过程表明最终输出是关于输入的线性函数,即等同于线性回归模型的输出。这是因为线性函数的复合依然是线性函数。因此与其使用一个包含隐藏层和输出层的神经网络,我们还不如直接采用线性回归模型。

3.其它案例

当神经网络的多层(包括隐藏层和输出层)均采用线性激活,输出等同于线性回归的输出。

若隐藏层维持线性而仅输出层采用逻辑激活函数,则模型相当于逻辑回归。这类神经网络并未超越逻辑回归的能力。因此,神经网络的隐藏层通常不使用线性激活函数,而是推荐使用ReLU等非线性激活函数。

4.小结

数激活函数对于神经网络至关重要,因为它们引入非线性,使网络能够学习复杂模式。如果所有层使用线性激活函数(等于未使用激活函数),网络就退化为线性回归,无法拟合复杂的数据。因此,为了使神经网络能够计算出比线性模型更复杂的特征,必须使用非线性激活函数,如ReLU。

相关推荐
浊酒南街35 分钟前
决策树python实现代码1
python·算法·决策树
FreedomLeo12 小时前
Python机器学习笔记(十三、k均值聚类)
python·机器学习·kmeans·聚类
冠位观测者2 小时前
【Leetcode 热题 100】208. 实现 Trie (前缀树)
数据结构·算法·leetcode
小王爱吃月亮糖3 小时前
C++的23种设计模式
开发语言·c++·qt·算法·设计模式·ecmascript
B1nna4 小时前
Redis学习(三)缓存
redis·学习·缓存
_im.m.z4 小时前
【设计模式学习笔记】1. 设计模式概述
笔记·学习·设计模式
IT猿手5 小时前
最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解LRMOP1-LRMOP6及工程应用---盘式制动器设计,提供完整MATLAB代码
开发语言·算法·matlab·智能优化算法·多目标算法
最好Tony5 小时前
深度学习blog-Transformer-注意力机制和编码器解码器
人工智能·深度学习·机器学习·计算机视觉·自然语言处理·chatgpt
InfiSight智睿视界6 小时前
AI 技术,让洗护行业焕然「衣」新
人工智能·算法
程序员一诺6 小时前
【机器学习】嘿马机器学习(算法篇)第11篇:决策树算法,学习目标【附代码文档】
人工智能·python·算法·机器学习