学妹分享的大模型八股:“激活函数在神经网络中有什么用?”
原创 看图学 看图学 2024年07月29日 07:55 北京
题目:
激活函数(Activation Function) 在神经网络中有什么用?
答案
代数的角度
如果没有激活函数,那么神经网络就是简单的线性变换,无法解决一些非线性的问题,比如最简单的 xor (异或)。
人工智能之父之一的马文·明斯基,曾经因为神经网络无法解决 XOR 问题,给神经网络判了死刑,直接导致神经网络的研究进入了寒冬期。具体可以看:AI 的第一次代表大会
但是神经网络自从有了激活函数之后,可以将数据从线性空间映射到非线性空间,这使得神经网络可以分离一些原始输入中无法线性分割的数据。
而且不止如此,多层的神经网络函数可以以任意的精度去拟合任意的连续函数。这个理论被称作 Universal Approximation Theorem。
关于这个理论有两点需要注意:
-
本质上是近似和逼近,并不能变成任意的函数。
-
理论上存在,但是我们训练模型的方法并不一定能保证最终得到的结果是最优的逼近函数。
一个非线性变换后变成线性可分的例子:
这里推荐一个网站:playground.tensorflow.org,这里可以可视化的看到不同的神经网络到底在什么,以及神经网络是如何做一些非线性的决策边界的。
比如对下图中的点进行分类:
下图用了3层神经网络去拟合,可以看出,图片中的拟合结果还不太好,有一小部分蓝色点并没有成功的分割出来。但这已经很厉害了。
信息学的角度
从信息论的角度来说,神经网络就是对信息的增强和压缩。这里激活函数就起到了很重要的作用。
激活函数除了做非线性映射,还在某种程度上对前一层的信息进行了筛选和加强,尤其是近期越来越流行的门控激活函数更加验证了这一点。
激活函数的存在,让模型能够丢弃噪音,保留相关信息,提高模型的决策能力和泛化能力。
感兴趣的可以进一步看一下 The information bottleneck theory 与深度学习的关系,里面也都会提到激活函数对结果的影响。比如下面的几篇论文:
-
《Adaptive Estimators Show Information Compression in Deep Neural Networks》
-
《Understanding Neural Networks and Individual Neuron Importance through Information Theory》
-
《Justices for Information Bottleneck Theory》
-
《Information Scaling Law of Deep Neural Networks》
微积分角度
既然激活函数必不可少,那什么样的不同的激活函数对神经网络有什么影响呢?
反向传播就可以检验激活函数的好坏,精心设计的激活函数可以保证模型在训练的时候有一个稳定的梯度流。
后面会专门写一篇文章来介绍激活函数的发展史,通过激活函数的变迁可以发现人们在稳定模型训练和加速模型收敛上做出的努力。
— END —