台湾NTU李宏毅的Machine Learning (2017,Fall),部分要点总结2:DL和CNN

Deep learning

  1. neural network的连接方式决定了它的结构,同时每个neural也不一定是logistic regression,同时:
    在这里插入图片描述
    后面会经常看见这个符号
  2. Deep = Many hidden layers,有多少层这些都靠直觉与试错, Evolutionary Artificial Neural Networks 能自动确定structure
    在这里插入图片描述
  3. 老师会把matrix的每一行称为dimension,每一列称为vector
  4. 虽然较多的parameter通常意味着更好的performance,但这不是我们使用deep而不是仅一层但非常胖的structure的原因。首先是同样数量的参数的情况下,deep的结构比fat的结构表现好,其次deep相当于modularization,即会有由低到高的抽象,因此deep会更高效,需要的training data会更少。同时也有利于end-to-end的学习
  5. 使用backpropagation可以高效地计算gradient
  6. 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,两者效果差不多

  1. L2 regularization(weight decay)
    在这里插入图片描述
    在这里插入图片描述
  2. 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处理图片?

  1. 通过考虑图片的性质来简化network,比如某些pattern远比整张图片小,可以用更少的参数与一小块region相连接:
    在这里插入图片描述
  2. 同样的pattern可能在不同的图片中出现,对不同图片中的同一个pattern我们就可以用同一组参数
    在这里插入图片描述
  3. 忽略掉一张图片中的一些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
在这里插入图片描述
优点:

  1. invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度)
  2. 保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力
  3. 可以把变长的输入x整理成固定长度的输入。CNN往往最后连接全连接层,神经元个数需要固定好,但是cnn输入x长度不确定,通过pooling操作,每个filter固定取一个值。有多少个Filter,Pooling就有多少个神经元,这样就可以把全连接层神经元固定住

缺点:

  1. 特征的位置信息在这一步骤完全丢失。Pooling层只知道这个最大值是多少,但是其出现位置信息并没有保留
  2. 同一特征的强度信息丢失了。因为Max Pooling只保留一个最大值,所以即使某个特征出现多次,现在也只能看到一次

引用1引用2

Flatten

把feature map拉直
在这里插入图片描述

扩展阅读

如何用keras实现CNN
lamda给出的tips以及相关slides

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值