激活函数在神经网络中的应用

激活函数是神经网络中的关键组件,它决定了神经元是否应该被激活。激活函数的主要目的是引入非线性,使得神经网络能够学习和执行更复杂的任务。如果没有激活函数,神经网络本质上就是一个线性回归模型,因为这些函数对神经网络的输入执行非线性计算,使其能够学习并执行更复杂的任务。因此,研究激活函数的导数和应用,以及分析每种激活函数的优缺点,对于选择适当的激活函数类型至关重要,这可能会给特定的神经网络模型带来非线性和准确性。

为什么需要激活函数在卷积神经网络中?

非线性激活函数:没有激活函数,神经网络只是一个线性回归模型。激活函数以非线性方式转换输入,使其能够学习和完成更复杂的任务。从数学上证明这一点,可以观察到即使在应用了隐藏层之后,结果仍然是一个线性函数,因此可以推断,无论在神经网络中添加多少隐藏层,所有层的行为都将相同,因为两个线性函数的组合将产生一个线性函数。

激活函数的变体

1. 线性函数:线性激活函数的方程是y=ax,这与直线方程非常相似。它的问题在于,如果对线性函数求导以引入非线性,结果将不再与输入“x”相关,函数将变得恒定,因此程序将不显示任何行为。例如,确定房屋价格是一个回归问题。由于公寓的价格可能是一个较大或较小的数字,可以使用线性激活在输出层。即使在这种情况下,神经网络的隐藏层也需要非线性函数。

2. Sigmoid函数:这是一个以'S'形绘制的函数。它的公式是A = 1/(1 + e^-x),其值的范围是0到1。Sigmoid函数是非线性的,X的值范围从-2到2,但Y值非常陡峭,这表明X的微小变化将导致Y值的巨大变化。

3. Tanh函数:Tanh函数,也称为双曲正切函数,是一个几乎总是比Sigmoid函数表现更好的激活函数。它实际上是一个经过调整的Sigmoid函数。两者是相关的,可以从彼此推导出来。它的方程是f(x) = tanh(x) = 2/(1 + e^-2x) - 1或者tanh(x) = 2 * sigmoid(2x) - 1。其值的范围是-1到+1。

4. RELU(Rectified Linear Unit):RELU是字母表中的第四个字母。它是最常用的激活方法,主要用于神经网络的隐藏层。它的公式是A(x) = max(0, x)。如果x是正数,它返回x;否则,它返回0。其值的范围是(inf, 0)。RELU函数是非线性的,这意味着简单地反向传播错误并激活多层神经元。

5. Softmax函数:Softmax函数是一种Sigmoid函数,适用于处理分类问题。它通常用于处理多类问题。Softmax函数将输出除以输出的总和,并挤压每个类别的输出在0和1之间。

选择合适的激活函数

import numpy as np # 设计sigmoid函数 def sigmoid(x): s = 1 / (1 + np.exp(-x)) ds = s * (1 - s) return s, ds x = np.arange(-6, 6, 0.01) sigmoid(x) # 设定中心化的坐标轴 import matplotlib.pyplot as plt fig, ax = plt.subplots(figsize=(9, 5)) # 坐标轴的脊线实际上是限制给定绘图区域的线条 ax.spines['left'].set_position('center') ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.yaxis.set_ticks_position('left') # 创建并显示sigmoid图 ax.plot(x, sigmoid(x)[0], color="#307EC7", linewidth=3, label="sigmoid") ax.plot(x, sigmoid(x)[1], color="#9621E2", linewidth=3, label="derivative") # 将图例放置在坐标轴的右上角 ax.legend(loc="upper right", frameon=False) fig.show()
  • 介绍了激活函数的基本概念。
  • 也讨论了部署激活函数的各种需求。
  • 还讨论了激活函数的Python实现。
  • 还讨论了激活函数的各种变体。
  • 最后,讨论了通过激活函数添加非线性的必要性。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485