深度学习提示
神经网络的表现
小结:如果training set上的结果变现不好,那么就要去neural network在一些调整,如果在testing set表现的很好,就意味成功了。
如何改进神经网络——改进training
新的激活函数
梯度消失
- 现象:比较靠近input 的几层Gradient值十分小,靠近output的几层Gradient会很大,
- 影响:当你设定相同的learning rate时,靠近input layer 的参数updata会很慢,靠近output layer的参数updata会很快。当前几层都还没有更动参数的时候(还是随机的时候),随后几层的参数就已经收敛了。
- 原因:激活函数是sigmoid function,一个large input,通过sigmoid function,得到small output,每通过一次sogmoid function就会衰减一次(因为sogmoid function会将值压缩到0到1之间,将参数变化衰减),hidden layer很多的情况下,最后对loss 的影响非常小(对input 修改一个参数其实对output 是影响是非常小)。
ReLU家族
-
https://blog.csdn.net/edogawachia/article/details/80043673激活函数汇总
-
修改activation function,ReLU
-
ReLU 作用于两个不同的range,一个range是当activation input大于0时,input等于output,另外一个是当activation function小于0时,output等于0。
- -
那么对那些output等于0的neural来说,对我们的network一点的影响都没,就可以直接拿掉
-
改进1 leaky ReLU
- input小于0时,output有一点的值(例如input小于0时,output等于0.01乘以input)
-
改进2 Parametric ReLU
- f(x) = max(ax,x) 但是这里的a不是固定下来的,而是可学习的。
-
改进3Exponential linear Unit (ELU)
大一统 Maxout
- maxout是通过分段线性函数来拟合所有可能的凸函数来作为激活函数的,但是由于线性函数是可学习,所以实际上是可以学出来的激活函数。
Adaptive Learning Rate
之前Adagrad
RMSProp
- 希望学习率能根据形状快速变动
问题——卡再local minimize
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zBxSyA3v-1619774191557)(C:\Users\wangxiaobing\Desktop\机器学习笔记大全\我的机器学习笔记\图片\chapter18-20.png)]
-
深度学习在error surface上没有太多的local minimize,所以不用太担心
-
解决方法:加入惯性Momentu
Adam:RMSProp+Momentum
在training data已经得到了很好的结果了,但在testing data上得不到很好的结果
Early Stopping
Regularization
L2-Norm
L1-Norm
- w是正的微分出来就是+1,w是负的微分出来就是-1,可以写为sgn(w)。
区别
- L2、L1都可以让参数变小,但是有所不同的,若w是一个很大的值,L2下降的很快,很快就会变得很小,在接近0时,下降的很慢,会保留一些接近01的值;L1的话,减去一个固定的值(比较小的值),所以下降的很慢。所以,通过L1-Norm training 出来的model,参数会有很大的值。
Dropout
操作
- 在train的时候:每一次update参数之前,对network里面的每个neural(包括input),做sampling(抽样)。 每个neural会有p%会被丢掉,跟着的weight也会被丢掉。
- 在testing上注意两件事情:
- 第一件事情就是在testing上不做dropout。
- 在dropout的时候,假设dropout rate在training是p%,all weights都要乘以(1-p%)
原理
-
在一个团队里面,总是会有人摆烂(摆烂,指事情已经无法向好的方向发展,于是就干脆不再采取措施加以控制而是任由其往坏的方向继续发展下去),这是会dropout的。
假设你觉得你的队友会摆烂,所以这个时候你就想要好好做,你想要去carry他。但实际上在testing的时候,大家都是有在好好做,没有需要被carry,因为每个人做的很努力,所以结果会更好。
-
dropout是一个终极的ensemble方法
ensemble的意思是:我们有一个很大的training set,每次从training set里面只sample一部分的data。我们之前在讲bias和variance时,打靶有两种状况:一种是bias很大,所以你打准了;一种是variance很大,所以你打准了。如果今天有一个很复杂的model,往往是bias准,但variance很大。若很复杂的model有很多,虽然variance很大,但最后平均下来结果就很准。所以ensemble做的事情就是利用这个特性。
以你打准了。如果今天有一个很复杂的model,往往是bias准,但variance很大。若很复杂的model有很多,虽然variance很大,但最后平均下来结果就很准。所以ensemble做的事情就是利用这个特性。
转载:https://blog.csdn.net/weixin_41413511/article/details/116307019