神经网络的激活函数(二)Sigmiod、Softmax和Tanh 本文我们介绍三个古早的激活函数,虽然古老,但是在神经网络中仍然有着广泛的应用,尤其是Softmax作为输出层,仍然是统治地位. Sigmoid函数 Sigmoid函数的概念可以追溯到19世纪,但在现代科学和工程中,它的广泛应用主要是从20世纪中期开始的。 0 定义 Sigmoid函数的数学形式为: $$\sigma(x) = \frac{1}{1 + e^{-x}}$$ 关键性质 输出范围:Sigmoid函数的输出值在0到1之间,可以看作是一个概率值。 平滑性:Sigmoid函数是一个平滑的、连续的函数,具有良好的导数性质。 非线性:Sigmoid函数是一种非线性函数,可以引入非线性变换,增加神经网络的表达能力。
神经网络的激活函数(二)Sigmiod、Softmax和Tanh
本文我们介绍三个古早的激活函数,虽然古老,但是在神经网络中仍然有着广泛的应用,尤其是Softmax作为输出层,仍然是统治地位.
Sigmoid函数的概念可以追溯到19世纪,但在现代科学和工程中,它的广泛应用主要是从20世纪中期开始的。
Sigmoid函数的数学形式为:
早期数学背景:
生物学和神经科学中的应用:
人工神经网络中的应用:
Softmax函数是一种广泛应用于机器学习和深度学习中的激活函数,特别是在多分类任务中。它将一个包含任意实数的向量转换为一个概率分布。Softmax函数的提出和应用与统计力学和信息理论中的概念有关。
给定一个包含 n 个实数的向量 \mathbf{z} = [z_1, z_2, \ldots, z_n],Softmax函数将其转换为一个概率分布 \mathbf{p} = [p_1, p_2, \ldots, p_n],其中每个 p_i 的计算公式为:
Softmax函数的概念来源于统计力学中的Boltzmann分布(也称为Gibbs分布),它描述了系统在热平衡状态下不同能量状态的概率分布。这个概念在信息理论和机器学习中得到了广泛应用。
多分类问题:Softmax函数常用于神经网络的输出层,在多分类问题中将网络的输出转换为类别的概率分布。
假设有一个包含三个元素的向量 \mathbf{z} = [2.0, 1.0, 0.1],则Softmax函数的输出为:
import numpy as np z = np.array([2.0, 1.0, 0.1]) softmax = np.exp(z) / np.sum(np.exp(z)) print(softmax)
输出:
[0.65900114 0.24243297 0.09856589]
这表示第一个元素的概率最大,约为0.659,第二个元素的概率约为0.242,第三个元素的概率最小,约为0.099.
Tanh函数(双曲正切函数)是一个常见的激活函数,广泛应用于神经网络和机器学习中。它的数学表达式为:
Tanh函数的导数可以表示为:
这意味着在输入值接近 -1 或 1 时,导数值接近0,而在输入值接近0时,导数值接近1
Tanh函数与双曲函数的研究可以追溯到18世纪。它在数学和工程学中有广泛的应用,特别是在信号处理和控制系统中。随着神经网络的发展,Tanh函数被引入作为一种激活函数。
在神经网络中,Tanh函数常用于隐藏层的激活函数。它的输出范围在 -1 到 1 之间,这使得它在某些情况下比Sigmoid函数更有优势,因为它的输出是零中心的,有助于加速梯度下降的收敛。
今天我们介绍了三个古老的激活函数,它们在神经网络中仍然有着广泛的应用。Sigmoid函数作为一种非线性函数,可以引入非线性变换,增加神经网络的表达能力;Softmax函数常用于多分类问题,将网络的输出转换为类别的概率分布;Tanh函数作为隐藏层的激活函数,输出范围在 -1 到 1 之间,有助于加速梯度下降的收敛。
下一次我们进入到更加现代的激活函数,如ReLU、Swish等,敬请期待!
[1] Sigmoid Activation Function
[2] A pseudo-softmax function for hardware-based high speed image classification
仓库上有原始的Markdown文件,完全开源,欢迎大家Star和Fork!