什么是深度学习?
什么是激活函数?
如何选择激活函数?
1.深度学习&激活函数
首先我们有一些输入数据,并且将其量化。
然后将数据输入到神经网络中,这一步基本上对输入数据逐层进行一系列的矩阵运算。
input*权重(w)+偏移(b)=output1(hj)
aj=激活函数例如sigmiod(hj)
不断重复这个过程知道网络最后一层,输出就是我们的预测结果,如下图,可以把Ok看做y^
我们找到预测值y^和标签y之间的差距E,如下图
使用这个差距E,利用权重,计算出偏导数,递归地反向传播(所以后期需要学习反向传播函数)
然后运用求的的值不断地更新权重
重复这个过程,知道误差值尽量地缩小,这就是“深度学习”----Deep learning。
2.为什么要应用激活函数?反向地再做运算和调整权重?(这点是显而易见的,为了让模型预测更加准确)
前者则是因为激活函数非常重要,它们为神经网络引入了非线性属性。
为什么激活函数好?
我们希望可以表示出神经网络中任何类型的函数,而神经网络常被看做通用函数的合拢器,意思是他们可以计算任何函数,所以我们需要方法即可以计算出线性函数又能够计算出非线性激活函数。而应用激活函数后,输入到输出的映射就会变成非线性。
我们想让函数可微(意思就是能够计算出导数),这样就能执行反向传播的优化策略,我们会找到一个非线性误差梯度来学习复杂行为。
总的来说,激活函数背后的整个原理就是模仿了
3.我们有很多激活函数,到底该如何应用哪一种?
常见:sigmoid函数、Tanh函数和ReLU函数
a:sigmoid函数(使数据0-1)0未激活 1激活
缺点:1.它会导致模型的梯度消失
2.Sigmoid函数的输出并不是以0为基准(全正或全负,梯度会往完全不同的方向优化)
b.Tanh函数(数字-1-1)区间内
输出以0为基准,优化更加容易(存在梯度消失)
c.ReLU函数(只应用于隐藏层)****
max(0,x) x小于0,值就为0,x大于0,直线斜率为1
收敛状况比Tanh函数提高了6倍
问题:部分神经元在训练中会很脆弱,甚至会死掉。
较大梯度通过该函数时,会导致梯度更新,无法激活任何数据点,那么它的梯度数据起点会一直是0
为了解决这个问题,我们又引入了LeakyReLU函数解决这个问题
输出层应该使用Softmax函数用于分类(因为她能生成不同类别的概率),简单理解模型如下
总结:使用什么激活函数?那必须是ReLU,注意学习率这类的设置
如果神经元死的太多,那就试试LeakReLU,或者Maxout
参考网址:https://www.bilibili.com/video/BV1PW411r7er