deep learning
New activation function
当训练集的结果不是很好的时候
可能是neural network的架构不是很好
可以换一些新的activation function去得到比较好的结果
80年代常用的activation function 是 sigmoid
如果用sigmoid函数,会导致当输入小时,靠近输入的值对梯度的值是小的。
解决方法:ReLU
将 Rectified Linear Unit当作activation function
当input>0,则output=input
当input<=0,则output=0
使用ReLu 的原因
- 计算快
- 生物上存在原因
- 无穷个sigmiod函数叠加
- 可以解决 vanishing gradient problem
ReLU如何解决 vanishing gradient problem
当经过activation后输出为0,就可以当作这个network没有了,并且activation后输出不为0 ,且和输入一样,就不会有更小的梯度了。
Maxout
Maxout 可以用来当activation function
现将输入乘以权重,再取最大值,就可以得到一个neural.
然后用backpropagation 去train,由于有多个输入,就会训练到各个权重参数。
Relu可以被看作Maxout的一种。
先得到两个输入与输出z1、z2的关系.再将这两个z1、z2比较得到最大值。就能看到和ReLU的图像一样
Adaptive Learning rate
RMSProp–均方根梯度下降法
early stopping
当learning rate调的对的话,训练时total loss就会越来越小
但由于training set和testing set(有label的)的分布不一定一样,就会导致testing set的total loss可能上升。所以我们需要找到resting set的loss 最小的地方
Regularization
让我们得到的值变得平滑
L
(
θ
)
是
原
始
的
损
失
L(\theta)是原始的损失
L(θ)是原始的损失
按上图的计算权重方法,权重就会越来越小,就是weight decay
dropout
在training时,在update参数之前,对每个neural(包括input)做sampling, 有些neural在sample以后,就会被丢掉,相对应的weight也会被丢掉。
在dropout以后,这个network就会变得细长。dropout后,training的结果可能会变差,这正是dropout的目的,让training变差,testing变好
在testing时
如果不做dropout,就需要将testing中的w手动乘以(1-p)%(p是training时的dropout率)
Why Deep Learning better when network is fat and short?
发现fat&short要优于Thin&Tall
Deep learning 是一个模组化过程(Modularization)
把原来的问题切成比较小的问题 basic classifier+many classifier
举个例子–剪窗花去描述模组化
我们先将纸对折,然后按照一定简单形状去剪,再打开对折,就会出现复杂图形。
映射到模组化,我们是先训练一个简单但是信息很有用的模型,把同一类型的数据对折,再测试时,也可以很好的得到数据类型。