PyTorch深度学习实战(4) | 您所在的位置:网站首页 › 导函数大于等于0意味着该函数一定单调递增 › PyTorch深度学习实战(4) |
PyTorch深度学习实战(4)——常用激活函数和损失函数详解
0. 前言1. 常用激活函数1.1 Sigmoid 激活函数1.2 Tanh 激活函数1.3 ReLU 激活函数1.4 线性激活函数1.5 Softmax 激活函数
2. 常用损失函数2.1 均方误差2.2 平均绝对误差2.3 分类交叉熵
2.4 实现自定义损失函数小结系列链接
0. 前言
激活函数和损失函数是深度学习模型中重要组成部分,激活函数和损失函数的选择很大程度上决定了深度神经网络的性能和精度,需要根据具体问题的特点和数据分布等因素进行选择。在本节中,将介绍深度学习中常见的激活函数和损失函数,并说明不同函数的常见应用场景。 1. 常用激活函数使用激活函数可以实现网络的高度非线性,这对于建模输入和输出之间的复杂关系非常关键。如果没有非线性激活函数,那么该网络将仅仅能够表达简单的线性映射,即便有再多的隐藏层,其整个网络跟单层神经网络也是等价的,只有加入了非线性激活函数之后,深度神经网络才具备了令人惊异的非线性映射学习能力,可以在网络中的多个层中应用激活函数。 1.1 Sigmoid 激活函数sigmoid 是使用范围最广的一类激活函数,其取值范围为 [0, 1],它可以将一个实数映射到 [0, 1] 的区间,可以将其用于二分类问题。 Sigmoid 函数公式定义如下所示: s i g m o i d ( x ) = 1 1 + e − x sigmoid(x)=\frac 1 {1+e^{-x}} sigmoid(x)=1+e−x1 使用 Python 实现此函数: def sigmoid(x): return 1/(1+np.exp(-x))函数图像如下所示,可以看到函数的形状如 S 曲线,因此也称为 S 型生长曲线: sigmoid 函数优点:平滑、易于求导。sigmoid 函数缺点:反向传播求导涉及除法,因此计算量大;反向传播时,很容易就会出现梯度消失的情况,从而限制了深层网络的训练。 1.2 Tanh 激活函数Tanh 是双曲函数的一种,其是 Sigmoid 激活函数的改进,是以零为中心的对称函数,其取值范围为 [-1, 1]。Tanh 激活函数计算公式如下: t a n h ( x ) = e x − e − x e x + e − x = 2 s i g m o i d ( 2 x ) − 1 tanh(x) =\frac {{e^x} -e^{-x}} {{e^x} +e^{-x}}=2sigmoid(2x)-1 tanh(x)=ex+e−xex−e−x=2sigmoid(2x)−1 使用 Python 实现此函数: def tanh(x): return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))函数图像如下所示,它在开区间 (-1, 1) 内是单调递增的奇函数,函数图形关于原点对称: tanh 函数优点:tanh 函数是 sigmoid 函数的改进,收敛速度快,不易出现 loss 值晃动。 tanh 函数缺点:无法解决梯度弥散的问题,函数的计算量同样是指数级的,计算相对复杂。 1.3 ReLU 激活函数修正线性单元 (Rectified Linear Units, ReLU) 激活函数是 sigmoid 和 tanh 激活函数的完美替代激活函数,是深度学习领域最重要的突破技术之一。ReLU 激活函数计算公式如下: r e l u ( x ) = { 0 , x < 0 x , x ≥ 0 relu(x) = \begin{cases} 0, & {x |
CopyRight 2018-2019 实验室设备网 版权所有 |