为什么引入非线性激励函数 为什么引入relu

第一个问题:为什么引入非线性激励函数?
如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了。
正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络就有意义了(不再是输入的线性组合,可以逼近任意函数)。最早的想法是sigmoid函数或者tanh函数,输出有界,很容易充当下一层输入(以及一些人的生物解释balabala)。

第二个问题:为什么引入Relu呢?
第一,采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。
第二,对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失,参见@Haofeng Li 答案的第三点),从而无法完成深层网络的训练。
第三,Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生(以及一些人的生物解释balabala)。

1、逻辑回归原理 
和线性回归很像,逻辑回归将多元线性函数的结果,再通过sigmod激活函数进行运算,从而将结果压缩至0-1区间,该区间表示事件是否发生的概率。 
2、公式推导 
sigmod函数定义如下: 
 
设线性方程为: 
 
则预测函数H为: 
 
注意:hθ(x)函数的值表示结果取1的概率,写成条件概率形式,则为: 
 
注意:y只能取0或1,当为1时,该式为hθ(x),为0时,该式为1-hθ(x) 
对m个样本,取最大似然估计,可得: 
 
为方便计算,取对数得l(θ): 
 
将J(θ)设为l(θ)乘以-1/m,这样,取似然函数l(θ)的最大值,转换为取J(θ)的最小值。 
求J(θ)的最小值可以使用梯度下降法,参数更新公式为: 
 
可以看到,需要对J(θ)求导,为了对J(θ)求导,需要先得出h函数的求导公式: 
 
使用该公式对J函数求导: 

这样参数更新的公式为: 
 
因为式中α本来为一常量,所以1/m一般将省略,所以最终的θ更新过程为: 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值