(Tensorflow之四)激活函数、交叉熵及优化器

4 篇文章 0 订阅

一、激活函数

激活函数的主要作用是提供网络的非线性建模能力。如果没有激活函数,那么该网络仅能够表达线性映射,此时即便有再多的隐藏层,其整个网络跟单层神经网络也是等价的。因此也可以认为,只有加入了激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。 那么激活函数应该具有什么样的性质呢?

可微性: 当优化方法是基于梯度的时候,这个性质是必须的。
单调性: 当激活函数是单调的时候,单层网络能够保证是凸函数。

1.1 sigmoid函数

f(x)=11+ex

激活函数
标准的sigmoid函数取值范围在(0,1)之间,即将x映射在(0,1)之间分布。在实际运用中,可调整输出值分布的区间,如下公式所示:
f(x)=A1+ex

则其分布区间在:(0,A)之间;

1.2 softmax函数

将N维的向量值 [X1,X2,,XN] 映射至0~1区间 [Y1,Y2,..,YN] ,其中 Y1+Y2++YN=1 ; 映射方法如下公式如示;

yi=eain1eaj

为什么要采用这么复杂的公式,不直接用如下线性的映射方法呢?
yi=ain1aj

主要的原因是在深度学习时,大多采用反向传播的方法,此时需要Loss函数N阶可导, ex 导数是直自身,求导较为简便,同时 ex 也是单调递增函数也能反应出向量中元素 xi 的概率值。
注意: softmax只是一种映射的方法,其本身并不是Loss函数

二、交叉熵

交叉熵可理解为衡量预测概率P与直接概率q之间距离的一种方法,公式如下:
例如,对于3维数组的概率p为[0.5,0.3,0,2],而真实分布概率q为[0.3,0.2,0.5],那么p之间的距离是多少呢?我们不能通过简单的加减法得到,而交叉熵函数则提供了一种计算方法,计算如下:
H(p,q) = -(0.5*log0.3+0.3*log0.2+0.1*log0.5)
若另有3维数组的概率p1为[0.3,0.2,0.5],那么其交叉熵为
H(p,q) = -(0.3*log0.3+0.2*log0.2+0.5*log0.5)
在深度学习中,可以将交叉熵作为Loss函数,目标减少p与q之间的距离;

三、优化器

3.1 梯度下降法GradientDescentOptimizer

原理:若函数f(x,y,z)可导,则(αf/αx0, αf/αy0, αf/αz0)为函数在点(x0,y0,z0)中变化最快的方向。
对于深度学习,往往是求Loss函数是最小值,即函数f(x,y,z)的极小值点。在一定的区间内,越接近极值点时,梯度值越小,变化越慢,而越远离极值点时,变化越快,从而可以实现Loss函数有方向的收敛。
这里写图片描述

3.2 AdagradOptimizer

原理:基于梯度下降法,对梯度值的选取进行了优化。优法方法如下:

Δθ=Rt1i=1g2i+ϵgt

式中:
Δθ 为每次优化的调整量;
R 为设定的全局学习速率;
ϵ为防止为零时的常量;
gt 为求得的梯度值;
gi 为前n次求得的梯度值;
由此公式可知:
Δθ 的变化受限于之前所有的梯度值。前期时, Δθ 较大,而后期 Δθ 越来越小,该变化规律与深度学习的变化规律是一致的;
优点:若前期 Δθ 较小时,可以通过学习率方大梯度,加速收敛;而后期 Δθ 若较大,会因累积使之趋于稳定;
缺点:容易陷于局部最优,后期 Δθ 因累积趋于零,提前结束学习;

3.3 MomentumOptimizerOptimizer

原理:基于梯度下降法,对于梯度值进行优化,优化方法如下:

Δθt=Υtg0+Υt1g1+Υt2g2+...+Υ0gn

式中:
Υ 为冲量的衰减程度;
g0 为每轮求得的梯度值;
t 为迭代的轮数;
冲量优化法会累积之前所有梯度值,根据衰减程序叠加入优化的步长Δθ中,使得梯度值不会产生较大的振荡;
普通方法
冲量法

3.4 AdamOptimizer

原理:基于梯度下降法,对于梯度值进行优化,优化方法类似矩估计法:

mt=μmt1+(1μ)gt

nt=νnt1+(1ν)g2t

mt=mt1μt

nt=nt1νt

Υ=mtnt+ϵgt

mt nt 类似对梯度的一阶与二阶进行矩估计,从而对调整梯度值。这么调整有啥好处??还得研究一下吧。。

3.5 RMSPropOptimizer

原理:同样,也是基于梯度法,优化了梯度值
求梯度的平均和

E|g2|t=ρE|g2|t1+(1ρ)g2t

再求随机均根
RMS|g2|t=E|g2|t+ϵ

将RMS均根做为学习率的约束
Δθ=ηRMS|g2|tgt

3.6 优化器的总结

上述的总总优化器,最基本的方法基实就是采用梯度法,其他的优化器都是对梯度法的调整步长进行改进。至于改进的效果怎么样,具体问题具体分析。

4 学习率

在Tensorflow中,所有的优化器,都需设定学习率。学习率并非是多高深的东西,其实就是对所求得的梯度值进行权重的调整。
例:设梯度向量法所求得的梯度值为 gt ,其调整步长:

Δθ=Rategt

学习率就是上述的 Rate 值,学习率越大,则单次调整步长越大,可以会导致函数振荡而无法收敛;而学习率过小的话,调整步长太长,收敛速率慢,需更多的训练次数。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值