您的位置:首页 > 理论基础 > 计算机网络

CS231n课程笔记5.1:神经网络历史&激活函数比较

2016-12-24 16:43 465 查看

CS231n简介

详见 CS231n课程笔记1:Introduction

注:斜体字用于注明作者自己的思考,正确性未经过验证,欢迎指教。

课程笔记

关于神经网络的简介请参考 CS231n课程笔记4.2:神经网络结构

1. 神经网络历史

具有神经网络的结构,但是使用电门手动构造函数。[Frank Rosenblatt, ~1957: Perceptron;Widrow and Hoff, ~1960: Adaline/Madaline]

BP出现 [Rumelhart et al. 1986: First time back-propagation became popular]

可以训练深层神经网络[Hinton and Salakhutdinov 2006]

再度复兴,可以得到很好的成果[George Dahl, Dong Yu, Li Deng, Alex Acero, 2010;Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton, 2012]

2. 激活函数的选择

激活函数是作用于线性函数之后的非线性函数,使得模型具有非线性区分能力。常见的激活函数如下图:



衡量激活函数通常有三个方向的考量:是否会有效地传播gradient;是否是均值为0;计算消耗是否很大。

1. 传播gradient的部分的考量是为了让模型可以快速有效地收敛。

2. 数据集均值为0同样是处于收敛的考虑。这部分课程中没有详细解释,举了个特例,然后说有相关论文证明均值为0有助于收敛。如下图所示,假设所有的输入都大于0,那么考虑从激活函数传回线性函数中的权重的gradient,必然只能位于一三象限(如果是二维的话),那么如果理想的方向位于第二象限的话,则需要之字形前行,收敛变慢。



2.1. sigmoid函数



曾经很火的激活函数,易求导,可解释。但是有很多缺点:对于y接近1以及0的部分,导数几乎为0,所以BP的时候基本不会传播gradient;不是zero mean的,指数函数计算代价高。

2.2. tanh 函数

此函数被yann lecun于1991年提出,认为比sigmoid要好。从上诉衡量标准可以看出,tanh具有所有sigmoid的优势以及缺点,除了其是zero mean的。所以是在这种评价体系中明显优于sigmoid。



2.3. ReLU函数

函数非常简单,如下图所示,基本就是对于小于0的部分截断,但是具有很多优良的性质,是现在神经网络的默认激活函数,最开始出现于[Krizhevsky et al., 2012]。



其在大于0的部分直接传回gradient;计算代价很小;实际中收敛速度很快。但是均值不是0;0的部分无法计算梯度;对于小于0的部分直接kill gradient。如果初始化或者训练过程中,某次的权重恰好使得输出都为0,即无法传回gradient,那么此次优化就会停止在非最优点无法收敛,如下图所示。



2.4. ReLU的变种

如上所述,ReLU具有令人难以拒绝的优良性质,但有一些缺点;所以有一些变种用于保留优点,同时修补一些缺点(不收敛)。

Leaky ReLU、Parametric ReLU以及如下图所示:





Leaky ReLU用于简单修补ReLU不会收敛的缺点,对于小于0的部分,传回0.01*gradient。

而Parametric ReLU则是用于修补Leaky ReLU中简单实用0.01倍数的缺点,用一个参数替代,注意这个参数不是超参数,是需要在BP中修正的。

ELU则进一步修正ReLU中非zero mean的缺点,它可以证明的预期输出zero mean的数据,但是因为使用了指数函数,计算代价比ReLU要高。

还有一个maxout neuron如下图所示,也是属于ReLU的变种,但变化较大,非线性能力也很强,但是对于整个模型来说参数加倍,并不是很常用。



2.5. 实际使用的建议

默认使用ReLU,可以试一试ReLU的变种,可以尝试tanh但是不要期待过多,永远不要用sigmoid。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息