0
点赞
收藏
分享

微信扫一扫

激活函数是个啥?

Separes 2021-09-19 阅读 102
机器学习

想必接触过神经网络的童鞋们肯定都听过一个术语:激活函数,但激活函数到底是个神马东东喃?今天我们来扒一扒,let's begin...

1、基本知识点

        首先,从机器学习的角度来看,神经网络可以看作是一个非线性模型,其基本组成单元就是具有非线性激活函数的神经元,通过大量神经元间的连接使得神经网络成为了一种高度非线性的模型。神经网络的训练和学习过程,其实就是学习连接各个神经元间的连接权重(参数)。那么不禁会产生几个疑问:什么是非线性?什么是神经元?什么是激活函数?接下来为各位看官一一解答:

        1.1、线性与非线性:针对线性和非线性的问题,按个人理解需要从函数和模型两个层面进行解释:

        (1)函数层面来看,若满足以下两个条件:

                (a):;

                (b):的导数为一个常数;

           则表明该函数是一个线性函数,且线性函数的组合仍然是一个线性函数,反之该函数则为一个非线性函数。

        (2)从模型层面来看,最直接的划分标准就是其决策边界是否为一条直线,若模型的决策边界为一条直线,则该模型为线性模型,反之则为非线性模型。线性模型中可以使用非线性函数来执行决策分类,例如logistic函数为一个非线性函数(导数不为常数嘛),但是logistic回归模型则为一个线性模型(因为其决策分类边界为这条直线)。此外,线性模型的组合可能是一个非线性模型,例如单层感知机是一个线性模型,而多层感知机则为一个非线性模型,因为在多层结构中每一层的自变量是受到前面各层权重值的共同影响。至此,还有一种区分模型线性与非线性的方法:若一个式子中自变量只受到一个参数的影响,那么此模型就是一个线性模型;若一个式子中的自变量受两个及以上参数的影响,那么此模型就是一个非线性模型。

        通过对线性和非线性的解读,其实可以有一个概括:神经网络中通过引入各种非线性函数并进行网络叠加,使得单层的线性模型拼接成可以执行非线性分类任务的非线性模型。

        1.2、什么是神经元

        神经元(Neuron)是来源于生物学的一个概念,生物学家在20世纪初就发现了生物神经元的结构:一个神经元常由多个树突和一个轴突组成,树突用于接收信息、轴突用于发送信息,当接收到的信息积累超过某个阈值时就将使神经元处于兴奋状态并产生电脉冲,轴突尾部的神经末梢与其他神经元的树突产生连接,并将电脉冲信号传递给其他神经元。

        神经元作为构成神经网络的基本单元,其主要作用是:模拟神经元的结构和特性,接受输入信号并产生输出。神经元的首次提出是1943年心理学家McCulloch和数学家Pitts根据生物神经元的结构提出的MP神经元,当时的MP神经元的激活函数为0/1阶跃函数。一个典型的神经元结构如下图所示:


        表示神经元接收到的输入,可以用表示神经元获得的输入信号的加权和,也称为净输入(Net Input),其中w称为权重矩阵,b称为偏置。净输入接下来将经过一个非线性函数得到神经元的活性值a,这个非线性函数就称为激活函数。

2、激活函数及其意义

        激活函数在神经元中起到了非常重要的作用,从最初的0/1阶跃函数演化成为现在的非线性可导等具有良好数学性质的函数。最开始驱使激活函数向前发展的原因就是XOR的问题:针对数据可以线性可分的情况下,使用线性激活函数是OK的,但针对异或这种无法线性可分的情况时使用线性激活函数就是无法执行分类决策。如下图:【以下图片及内容主要来源于https://www.zhihu.com/question/22334626进行整理】



        针对线性不可分的数据(以XOR为代表)常有两种方法来解决:

        第一:直接针对数据做线性变换,例如提升数据维度(变成),则此时点在空间中的位置变化为下图所示:


        第二:引入针对激活函数进行修改,即引入非线性的激活函数(这些激活函数大家也称为“空间魔法师”)。其设计过程暂且不论,但其根本目的就是将数据的原始空间进行扭曲变形,使得无法线性可分的空间变为线性可分【“数值上挤压,几何上变形”这句话很精辟呀】。如下图所示:


        经过非线性激活函数后,原来不可分的二维空间进行空间扭曲后就变成了线性可分的结果。

        从上面的表述其实可以有一个概括:激活函数最根本的作用就是实现输入到输出的映射,而在这个映射的过程中通过引入非线性因素使得神经网络具有了更强大的表达能力,解决了线性模型不能解决的问题。

3、激活函数的性质

        再次强调,激活函数在神经元中有着重要的意义,使得网络有了更加强大的表达能力,为了使得这种表达能力最大化,激活函数还需要具备几点性质:

        (1)连续并可导【允许部分点上不可导】的非线性函数;连续且可导保证了函数在其定义域内的可利用性,选择非线性函数则是为网络结构引入了非线性因素,使得网络具有更强大的表达能力。

        (2)函数本身及其导函数要尽可能简单;函数本身及其导函数要尽可能简单是因为神经网络训练过程中存在大量的梯度计算,选用简单的函数及导函数有利于提高网络的计算效率。

        (3)激活函数的导函数值域要在一个合适的区间;激活函数的导函数值域在一个合适区间内是为了保证训练过程的效率和稳定性。

        非线性激活函数的出现通过引入非线性因素使神经网络具有了更加强大的表达能力,具有重要的意义。下一节我们就来看看有哪些常见的激活函数以及它们之间各自的优缺点。

举报

相关推荐

0 条评论