常用的激活(激励)函数——深度学习笔记(建议收藏)
1
bottom_diff[i]=top_diff[i]*((bottom_data[i]>0)+negative_slope*(bottom_data[i]<=0));
这句话就是说间断点的求导按左导数来计算 。 也就是默认情况下(negative_slope=0),RELU的间断点处的导数认为是0 。
3.5LeakyReLU函数(P-ReLU)
2
3
4
5
6
7
8
9
10
11
12
13
frommatplotlibimportpyplotasplt
importnumpyasnp
fig=plt.figure()
x=np.arange(-10,10,0.025)
a=0.2
plt.plot(x,x*np.clip((x>=0),a,1))
plt.title("y=LeakyRelu(x)")
plt.show()
frommatplotlibimportpyplotasplt
plt.plot(x,np.clip((x>=0),a,1),"o")
plt.title("y=LeakyRelu'(x)")
plt.show()
人们为了解决DeadReLUProblem , 提出了将ReLU的前半段设为ax而非0 , 通常a=0.01 , 另外一种直观的想法是基于参数的方法 , 即ParmetricReLU:f(x)=max(ax,x) , 其中a可由方向传播算法学出来 。 理论上来说 , LeakyReLU有ReLU的所有优点 , 外加不会有DeadReLU问题 , 但是在实际操作当中 , 并没有完全证明LeakyReLU总是好于ReLU 。
LeakyReLU主要是为了避免梯度小时 , 当神经元处于非激活状态时 , 允许一个非0的梯度存在 , 这样不会出现梯度消失 , 收敛速度快 。 他的优缺点根ReLU类似 。
3.6ELU函数(ExponentialLinearUnit)融合了Sigmoid和ReLU , 左侧具有软饱和性 , 右侧无饱和性 。
右侧线性部分使得ELU讷讷狗狗缓解梯度消失 , 而左侧软饱能够让ELU对输入变化或噪声更鲁棒 。 因为函数指数项所以计算难度会增加 。
因此 , Maxout继承了ReLU的优点 , 同时又没有“一不小心就挂了”的担忧 。 但相比ReLU , 因为有2次线性映射运算 , 因此计算量也会翻倍 。
3.8ReLU6函数ReLU在x>0的区域使用x进行线性激活 , 有可能造成激活后的值太大 , 影响模型的稳定性 , 为抵消ReLU激活函数的线性增长部分 , 可以使用ReLU6函数 。
ReLU6激活函数和导函数分别如下:
2
3
4
5
6
7
8
9
10
11
12
frommatplotlibimportpyplotasplt
importnumpyasnp
fig=plt.figure()
x=np.arange(-10,10,0.025)
plt.plot(x,np.clip(x,0,6))
plt.title("y=relu6(x)=min(max(x,0),6)")
plt.show()
frommatplotlibimportpyplotasplt
plt.plot(x,(x>0)&(x<6),"o")
plt.title("y=relu6'(x)")
plt.show()
3.9Softmax函数提起softmax函数 , 我们首先理清全连接层到损失层之间的计算 , 来看下面这幅图(侵删!):
softmax函数 , 又称为归一化指数函数 。 它是二分类函数Sigmoid在多分类上的推广 , 目的是将多分类的结果以概率的形式展现出来 , 下图展示了softmax的计算方法:
softmax就是将在负无穷到正无穷上的预测结果按照这两步转换为概率的 。
3.9.1将预测结果转化为非负数 。
下图是y=exp(x)的图像 , 我们可以知道指数函数的值域取值范围是零到正无穷 , softmax第一步就是将模型的预测结果转化到指数函数上 , 这样保证了概率的非负性 。
简单举个例子:
假如模型对一个三分类问题的预测结果为-3、1.5、2.7 。 我们要用softmax将模型结果转为概率 。 步骤如下:
1)将预测结果转化为非负数
y1=exp(x1)=exp(-3)=0.05
y2=exp(x2)=exp(1.5)=4.48
y3=exp(x3)=exp(2.7)=14.88
2)各种预测结果概率之和等于1
z1=y1/(y1+y2+y3)=0.05/(0.05+4.48+14.88)=0.0026
z2=y2/(y1+y2+y3)=4.48/(0.05+4.48+14.88)=0.2308
z3=y3/(y1+y2+y3)=14.88/(0.05+4.48+14.88)=0.7666
总结一下 , softmax如何将多分类输出转换为概率 , 可以分为两步:
1 , 分子:通过指数函数 , 将实数输出映射到零到正无穷2 , 分母:将所有结果相加 , 进行归一化下面是斯坦福大学CS224n课程中最softmax的解释:
如果是使用ReLU , 那么一定要小心设置learningrate , 而且要注意 , 不要让网络出现很多“dead”神经元 , 如果这个问题不好解决 , 那么可以试试LeakyReLU,PReLU,或者Maxout 。
最好不要用Sigmoid函数 , 不过可以试试tanh , 不过可以预期它的效果会比不上ReLU和maxout 。
最后 , 咱给小编:
1.点赞+关注
2.点头像关注后多多评论 , 转发给有需要的朋友 。
谢谢!!
推荐阅读
- 鸡翅家常做法,做法简单 ,汤汁浓郁,美味下饭,真的超赞!
- 春天来了教你几道好吃不油腻的家常菜,美味简单下饭,百吃不厌!
- 冬天到了,教你几道暖胃家常菜,营养健康,孩子营养不发愁!
- 精选几道好吃的宴菜,五香排骨,麻辣烫,在家请客吃饭非常有面子
- 绝对超级下饭的家常菜,烹制简单,香味浓郁特别解馋,百吃不厌!
- 美食推荐:家常小炒鸡,小炒杏鲍菇,凉粉,干煸五花肉杏鲍菇的做法
- 酸甜开胃的番茄肉丸虾汤,营养均衡,非常好吃
- 几道家常菜,食材健康,做法简单快捷,一年四季适合吃的
- 非常下饭的家常菜,比大鱼大肉好吃,做法简单
- 水煮鱼到底怎么做即简单还好吃呢?下面三款家常做法你觉得怎样?
