文章目录
Deep learning
- neural network的连接方式决定了它的结构,同时每个neural也不一定是logistic regression,同时:
后面会经常看见这个符号 - Deep = Many hidden layers,有多少层这些都靠直觉与试错, Evolutionary Artificial Neural Networks 能自动确定structure
- 老师会把matrix的每一行称为dimension,每一列称为vector
- 虽然较多的parameter通常意味着更好的performance,但这不是我们使用deep而不是仅一层但非常胖的structure的原因。首先是同样数量的参数的情况下,deep的结构比fat的结构表现好,其次deep相当于modularization,即会有由低到高的抽象,因此deep会更高效,需要的training data会更少。同时也有利于end-to-end的学习
- 使用backpropagation可以高效地计算gradient
- mini-batch可以帮助加速收敛,Smaller batch size means more updates in one epoch,不过速度会下降,而且会有SGD的不稳定问题。但是较大的batch size速度会很快,但可能会造成糟糕的performance,可能很快就loss不再下降了,因为会陷入local minimal或saddle point
。所以需要mini-batch的随机性帮助不要陷入一个不深的local minimal或者不太麻烦的saddle point
Tips
上图说明了在各个阶段遇到各种情况可以尝试的方法。
training data上表现不好
换activation function
有时候会发现,靠近input的那些参数还是random时,靠近output的那些参数已经converge了
原因就在于,sigmoid会降低input的变化对output的影响,即使输入时数据变化很大,输出时变化很小,结果后几个layer就几乎不再变化。可以一个个layer train,类似pre-training。或者换成线性的,比如reLu, maxout等
Adaptive Learning Rate
比如adam
testing data(类似validation set)上表现不好
Early Stopping
并不要在training set上表现最好时停止,而是在validation set上表现最好时停止,相当于简单的避免overfitting
Regularization
一般不考虑bias,因为这个对于函数的平滑无关,所以一般与weight有关。在deep learning中一般帮助并不如SVM中显著,因为deep learning有early stopping,两者效果差不多
- L2 regularization(weight decay)
- L1 regularization,不可微分的地方随便给
sgn的解释:
L2的w变化速度与w大小有关,因为是倍数关系,而L1是减固定值,所以L2最后的w基本都接近0,L1则会参差不齐,结果就是可能不像L2产生的那么平坦
Dropout
每次更新参数前,每个neural都有p%被抛弃,如果用mini-batch,就相当于在每个mini-batch时,重新随机network的structure。在testing时,每个weight乘上(1-p%)。
直觉的原因如下:
其实呢,dropout是一种ensemble(集成),每次dropout看做用一个新的network来train,最后将所有这些network ensemble起来,以求获得比较好的泛化性。dropout与接近线性的function结合可以获得更好的进步,比如maxout。
CNN
为什么要用CNN处理图片?
- 通过考虑图片的性质来简化network,比如某些pattern远比整张图片小,可以用更少的参数与一小块region相连接:
- 同样的pattern可能在不同的图片中出现,对不同图片中的同一个pattern我们就可以用同一组参数
- 忽略掉一张图片中的一些pixel不影响我们对图片的识别
什么是CNN
Convolution
用n个m* m的filter对图片进行特征提取,每个filter detect一个m*m的pattern,得到一个feature map。每个filter里的值是学出来的
实际上这些filter就是neural network,下图中,同样的颜色代表一样的参数,同一个数有两条线是因为他被这个filter圈了两次,我这个图是从左上角向右移动一格后的图
所以convolution就是neural network,但由于共享了参数,所以减少了参数个数。
移动的轨迹,应该是pattern可能重复出现的方向
Dimension是独立的,因此沿着dimension坐标轴移动不make sense
Max pooling
进行subsampling,在固定窗口中取最大就是max pooling,得到新的image。每个filter得到的feature map进行max pooling后是新image的一个channel
优点:
- invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度)
- 保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力
- 可以把变长的输入x整理成固定长度的输入。CNN往往最后连接全连接层,神经元个数需要固定好,但是cnn输入x长度不确定,通过pooling操作,每个filter固定取一个值。有多少个Filter,Pooling就有多少个神经元,这样就可以把全连接层神经元固定住
缺点:
- 特征的位置信息在这一步骤完全丢失。Pooling层只知道这个最大值是多少,但是其出现位置信息并没有保留
- 同一特征的强度信息丢失了。因为Max Pooling只保留一个最大值,所以即使某个特征出现多次,现在也只能看到一次
Flatten
把feature map拉直