深度学习阶段性总结

概述

本月结合Datawhale的在线文档和B站的李宏毅机器学习视频,重新回顾并再学习了深度学习的一些基本概念和知识,收获很大。李宏毅老师对于深度学习的理解非常深刻,并且用通俗易懂的语言表达出来,真的非常适合深度学习的初学者。现结合具体章节,再梳理提炼出自己的新收获。

机器学习介绍

  • 人工智能的本质就是尽量避免人为去设定规则;
  • 机器学习的目标就是通过数据资料去寻找一个函数;
  • 机器学习的步骤:确定一个函数集合;评价每一个函数;找出最好的函数。

回归模型

  • 复杂的模型一般会在训练集上得到较好的结果,但不保证在测试集上得到较好的结果,这种情况就是过拟合;
  • 引入新特征会改善训练集的结果,但是有过拟合的风险;
  • 使用正则化,可以避免过拟合;
  • 对线性回归使用L2正则化,实际上是避免出现过大的权重,避免过分强调某一特征,对权重进行平滑,使所有权重都很小,提高模型泛化能力;
  • L2正则化也可能导致权重过小,从而产生欠拟合;
  • 线性回归的正则化不需要考虑偏置,因为偏置对于所有的特征都是一样的,对特征没有选择性,这一点和权重不一样。

误差和梯度下降

  • 误差的两大来源:偏差和方差;
  • 简单的模型方差小,复杂的模型方差大,因为简单的模型受到不同训练集的影响是比较小的;
  • 简单模型的函数集的预测空间比较小,可能不包含预测目标,所以偏差会大;
  • 复杂模型的函数集的预测空间大,一般都会包含预测目标,但是没有办法找到准确的预测目标;
  • 简单模型的误差主要来自于偏差,这种现象是欠拟合;
  • 复杂模型的误差主要来自于方差,这种现象是过拟合;
  • 简单模型在训练集上也有较大的误差,表现为欠拟合;
  • 复杂模型在训练集上误差很小,但是测试集上误差很大,表现为过拟合;
  • 对于欠拟合,要增加模型的复杂度,加入更多的函数,考虑更多的特征,或者对特征做更多的变换,比如多次幂;
  • 对于欠拟合,不改变模型,只是增加训练数据量是没有帮助的,因为设计的备选函数集本身不好,使用再多的训练数据,也不会找到好的预测函数;
  • 对于过拟合,最简单的方法就是收集更多的数据。很多情况下,收集不到更多的数据,就可以采取数据增强的方法;
  • 模型选择往往是在偏差和方差之间做一个权衡,使得总误差最小;
  • 梯度下降法的学习率调参很重要,学习率太小,导致训练过慢;学习率太大,结果会震荡,导致无法到达损失函数最低点;
  • 针对不同参数选择不同的学习率,会有更好的效果;
  • 对特征进行标准化,有利于使用梯度下降法进行参数更新,特别是在所有参数都使用相同学习率的情况下,如果不同参数分布范围差别大,不进行特征缩放,训练会很困难;
  • 使用梯度下降法可以使损失函数值变小的理论基础是学习率足够小,如果学习率没有设定好,损失函数值不会越来越小;
  • 梯度下降法的局限是训练容易卡在梯度是0或接近于0的地方,这里可能是局部极值点,可能是鞍点,也可能只是相对平坦的区域,但并不是全局最小点。

深度学习和反向传播机制

  • 全连接神经网络就是网络层之间的神经元两两都有连接;
  • 前馈就是传递方向由前往后;
  • 深度学习是指神经网络有很多隐藏层;
  • 深度学习的本质是通过隐藏层进行特征转换;
  • 深度学习的网络层数和每层的神经元个数需要用尝试和直觉来进行调试;
  • 对于语音识别和图像识别,深度学习是个好方法,因为特征工程提取特征并不容易;
  • 反向传播算法主要利用了求导的链式法则;
  • 损失函数(loss function)是定义在单个训练样本上的,就是算一个样本的误差;
  • 代价函数(cost function)是定义在整个训练集上的,是所有样本的误差总和的平均,也就是损失函数总和的平均,有没有平均其实不会影响最后参数求解的结果;
  • 总体损失函数(total loss function)是所有样本误差的总和,是反向传播需要最小化的值;
  • 使用反向传播算法,后向传播和前向传播的计算量相差不多。

网络设计的技巧

  • 处于鞍点的时候,损失函数的 H H H矩阵的负特征值对应的特征向量为参数更新的方向;
  • 低维空间的局部最小值可能是高维空间的鞍点,深度学习的参数多,维度高,所以训练更多的时候会卡在鞍点;
  • 训练不用batch,更新参数周期长,更新稳健;使用batch,更新参数周期短,会引入噪声;
  • 如果使用并行计算,不用batch不一定比使用小batch的计算时间长;
  • 由于不同的batch数据不同,会引入噪声,训练不容易在鞍点和局部最小点卡住;
  • 当训练集和测试集数据分布略有不同时,小的 batch size 不容易停在小的局部最低点区域,而大的batch size容易停在小的局部最低点区域,导致泛化性能差;
  • 为了避免训练卡在梯度为0或接近0的点,可以综合考虑梯度方向和前一步更新方向,这样即使梯度接近0或为0,参数依然可以继续更新。
  • 不同参数的学习率需要分别设置,同时随着训练时间的增长,学习率也要随之变化;
  • softmax函数的简单理解就是将回归值压缩到0和1之间,以便作为分类结果;
  • softmax函数让大的值和小的值之间的差别变得更大;
  • 对于二分类问题,sigmoid和softmax函数的效果是一样的;
  • 分类问题使用最小信息熵作为损失函数,相当于进行了最大似然估计;
  • 使用最小信息熵作为损失函数,Pytorch会自动调用softmax函数,不需要手动加入softmax层;
  • 分类问题如果使用MSE作为损失函数,在损失大的时候,训练容易卡住,选择好的优化算法可能解决这个问题,所以损失函数的选择也会影响优化的难度;
  • 在激活函数之前或之后进行Batch Normalization的差别不是很大,如果使用Sigmoid函数作为激活函数,推荐在激活函数之前使有Batch Normalization。
  • Batch Normalization适用于Batch size 比较大的情况,考虑了样本之间的影响,不再独立的考虑样本;
  • 均值为0,方差为1的输出可能不利于后续训练,所以可以恢复为一般情况,恢复的参数可学习;
  • 进行测试时,使用训练时通过滑动平均得到的均值和方差来做Batch Normalization的参数。

卷积神经网络

  • 相比全连接网络,卷积神经网络可以减少参数的数量;
  • 卷积神经网络的每一层都在前一层的基础上提取更高级的特征;
  • 对于图片,全连接网络中有一些参数是不必要的,所以卷积神经网络在全连接网络的基础上做了精简;
  • 参数可以减少的原因:特征只存在于局部区域;不同位置的特征可以通过相同的神经元来识别,不必另外设计神经元;对图片下采样,人对图片的理解不会相差很大;
  • CNN的结构包括卷积层和池化层,卷积层和池化层可以反复使用,最后通过flatten层,传到全连接层得到最后结果;
  • 事实上卷积神经网络学习到的东西和人类的想象和认知并不一样,有待进一步研究。

参考资料

感谢Datawhale对开源学习的贡献!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值