我很难想象激活函数是如何实际处理非线性可分的训练数据集的分类问题。
为什么激活函数(例如tanh函数)适用于非线性情况?当激活函数将输入投影到输出时,数学上到底发生了什么?是什么区分了不同类别的训练样本,如果要图形化地展示这个过程,它是如何工作的?
我查阅了许多资料,但关于激活函数在神经网络中如何实际用于分类训练样本的具体原因,我始终无法轻易理解,我希望能在脑海中形成一个清晰的图像。
回答:
激活函数与分类非线性可分的数据集关系不大。
激活函数被用作在神经网络的每一步中标准化信号的一种方式。它们通常具有无限的定义域和有限的值域。例如,tanh函数的定义域是(-∞,∞),值域是(-1,1)。而sigmoid函数将相同的定义域映射到(0,1)。
你可以将其视为在给定神经层(也称为特征缩放)上强制所有学习特征平等的一种方式。由于输入的定义域事先未知,因此不像线性回归中的常规特征缩放那么简单,因此必须使用激活函数。在反向传播计算误差时,会对激活函数的效果进行补偿。
反向传播是一个将误差应用于神经网络的过程。你可以将其视为对正确分类的贡献的神经元给予正向奖励,而对错误分类的贡献的神经元给予负向奖励。这种贡献通常被称为神经网络的梯度。梯度实际上是一个多变量导数。
在反向传播误差时,每个神经元对梯度的贡献是该神经元输入值处激活函数的导数。Sigmoid函数特别有趣,因为它的导数计算成本极低。具体来说,s'(x) = 1 – s(x);它就是这样设计的。
这是一个示例图像(通过谷歌图片搜索“神经网络分类”找到),展示了神经网络如何可能叠加在你的数据集之上:
我希望这能让你对神经网络如何分类非线性可分的数据集有一个相对清晰的理解。