本文不太适合深度学习初学者,适合于深度学习已入门的朋友来梳理知识的大纲,里面的一些技术我也会在后面的逐一进行讲解,本文将从过拟合这个问题来贯穿整个深度学习。
从输入端到输出端会得到一个预测结果,将预测结果和真实结果进行比较得到误差,将误差反向传播到网络的各个层之中,调整网络的权重和参数直到模型收敛或者达到预期的效果为止,中间所有的操作都包含在神经网络内部,不再分成多个模块处理。由原始数据输入,到结果输出,从输入端到输出端,中间的神经网络自成一体(也可以当做黑盒子看待),这是端到端的,但是我们在学习深度学习的时候不能把它当做黑盒,这不利于我们的学习。
思考怎么把非端到端模型的优点(解释性强+好训练)放到端到端(泛化性强)模型?
级联结构:小任务串联
整体结构:统一大模型(多个小模型)利用中间任务损失逐步引导总损失(损失引导学习)
建议在商业项目时常采用“先级联,再整体”的思想,因为这样可以在低成本的代价(且不容易过拟合)下快速的判断方向是否有误。(接到项目的第一时间应该首先进行任务拆解逐个击破)
以上我们就解释清楚了深度学习实际问题解决的基本思路,那么下面我们通过“过拟合问题”和“模型表达能力问题”来深入的梳理一下深度学习的一些知识:
过拟合的本质:拟合的根本原因就是参数量远大于数据量
eg:,只有这一个方程我们可以解出无数多个w1和w2,因为数据量太少了,换个角度来说“这个方程过拟合了”。拿神经网络来说,当参数量过多时会导致模型忽高忽低。
综上我们就清楚了如何解决过拟合了,大方向分别是:增大信息量、降低参数量、限制解空间
增加信息量:(增加采样数据和数据增强)
这里引入一个概念:IID(独立同分布),及数据采集尽可能的满足不一样但同源的特征(所以数据量必须远大于参数量),深度学习是一个“求异去同”的过程,这一点很重要。
数据进行仿射变换(帮助不大,差异只是一个变换矩阵的信息量)、更换背景(前期效果好,后期效果差-网络的注意力原因)、抠图(自监督学习、马赛克)、图像拼接等。
减少参数量:
缩小模型规模、dropout(在训练时减少,测试时不减少)、激活函数relue(ReLu会使一部分神经元的输出为0,这样就造成了 网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生,但会造成模型退化,有些参数直接丢失了。
限制解空间:增加先验(结构先验(注意力机制—存异去同)、迁移学习)、正则化(L1\L2、GP、自定义)
eg:,利用先验减少了参数量限制了解空间。
解决了过拟合问题,我们来思考一下模型的“鲁棒性”
鲁棒性:
数据由真实值(一般得不到)、错误值(可以避免)、误差值(可以缩小)构成
鲁棒性——对误差不敏感——(这里姑且理解为稳定性吧)
eg:假设一个简单的模型,我们发现随着输入X的改变输出Y也会改变,那么怎么让X对Y的影响最小呢?——|w|要小。如果参数W太大了,说明模型还有进步的空间,其实换个角度思考“鲁棒性”和“过拟合”只是表象不同,其本质是相同的。
满足李普希兹条件(输出对输入求导=1,y对x变化快慢—不能太小,也不能太大)就是鲁棒性好的——GP正则化运用()
模型的能力——数据离本质有多远(抽象能力,阶越高能力越强)
什么东西决定了表达能力呢?(表达空间的维度有多高)
线性:变化是均匀的——(空间升维)——>非线性:
决定空间的维度(基(坐标轴)——负相关)——特征在坐标轴上——正交分解(当维度足够高时特征点就可以线性可分得到权重)
如何选择好的激活函数?
激活函数:看抽象的表达能力(空间维度——“泰勒”级数分解的项数——层数越多求导的次数越多抽象能力就强,eg:sigmoid里面的可以求导无数次)、反向传播的能力(非饱和函数-看图像变化)
比较好的激活函数:SWISH(X*sigmoid)-有点像lkrule、MISH(X*tgh(x))有的硬件不支持这两个激活函数,要综合考虑。
反向传播:(梯度弥散问题)
解决梯度弥散的办法:
激活函数rule(符合李普希兹条件)、RES(RES+RNN(像n层神经网络)的效果不错)、稠密网络
RES在图像处理效果好的原因:
滤波:高通滤波、低通滤波、阻带滤波,频率(梯度)——变化的快慢
1.对识别来说:高频信号更重要,但是图像上低频信号多,卷积更容易学习到低通信号(数据不均衡导致,eg:卷积对颜色很敏感),res=原始信号-低频信号=高频信号
2.加了残差收敛速度快的原因:符合求异去同的基本原理
batchnormal:防止梯度爆炸
很多数据也要标准化——新数据=(原数据-均值)/标准差 (减去均值就是去同的过程,除标准差是为了统一量纲)。数据中有0(有缺失时不能用标准化)不能无中生有
数据分析:连续、离散(离散数据需要one-hot编码、词向量等
batcnormal后面进行补充。
本文实际是在从过拟合的角度建立整个深度学习的体系,其中有很多没有提到的细节,但是总的来说,掌握了过拟合就算是打开了深度学习的大门吧,继续加油。