IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 李宏毅深度学习笔记(三)——调整模型的技巧 -> 正文阅读

[人工智能]李宏毅深度学习笔记(三)——调整模型的技巧

在训练神经网络的时候,如果没有得到好的结果,我们就需要使用一些特殊的技巧。下面分别讨论在两种不同的情况下,调整模型的方法。

1.训练集上得到的误差很大

如果模型在训练集上得到的误差就已经很大,说明可能是你没有选择合适的函数集或者是漏掉了最优解,针对这两种情况,可以选择两种改进方法。

(1)修改激活函数(activation?function)

在之前两篇文章中使用的激活函数是sigmoid函数,但是sigmoid函数的问题在于它对于输入的变化是不敏感的,也就是说,输入产生的变化对输出的影响是很小的。

于是,每经过一次sigmoid函数,输入的变化就会衰减一次,在经过很多层Hidden?Layer之后,输入对于输出的结果就几乎没有什么影响了。这会导致我们的训练误差偏大。

选用其他的激活函数可以解决这个问题。

ReLU:在z<0时,函数值为0;在z>0时,函数值等于输入。这样z<0的部分对于整个神经网络没有影响,z>0的部分,函数是线性的,\Delta a=\Delta z,解决了衰减的问题。

?

Maxout:把原本要作为激活函数的输入的值进行分组(分组的方式和数量人为指定),取每组的最大值作为输出。

这样的结构代表了激活函数的形式是可学习的。它能包含许多函数形式在内,包括ReLU。下图展示了Maxout如何实现与ReLU相同的效果。

?当然,Maxout也可以实现更多的函数形式。这些函数都是分段的,并且每一段都是线性的。

但是有一个问题,这样的激活函数是不能微分的,那么如何使用梯度下降的方法训练这样的神经网络呢?答案是如果每次只使用分段函数的一段就可以避免这个问题。我们注意到,在取max之后,只有一个神经元的输入发挥了作用。这意味着,对于一组固定的输入而言,删去那些没有被用到的神经元对整个神经网络的学习是没有影响的,激活函数等同于一个线性的函数。所以在训练的时候只需要考虑这些发挥作用的神经元的参数即可。

如下图所示,在训练过程中,针对输入x1和x2,第一层只有z_{1}^{1}z_{4}^{1}发挥了作用,此时相当于删除了神经元z_{2}^{1}z_{3}^{1},激活函数是\sigma(z)=z。这样我们就能像处理一般的神经网络一样,使用Backpropagation训练参数。

那没有被考虑到的神经元呢?他们的参数如何训练?答案是在训练神经网络的过程中,通常会提供多批输入数据,数据不同,被训练到的神经元也不同。只要多次训练模型,就可以保证每个神经元的参数都被训练到。

(2)采用不固定的学习率

RMSProb:如下图所示是RMSProp的递推式,其中α是一个超参,取值范围是0到1。α越大,代表越重视之前的计算出的梯度;α越小代表越重视刚计算出的梯度。

Momentum:假设从\theta_{0}处开始计算,定义一个量Movement,每次迭代的方向变就变成该点梯度(Gradient)和Movement的矢量和。具体的迭代式子如下图所示,其中 \lambda\eta是常数。

这个过程与物理过程类似。如图中的小球,假如从一个比较高的的地方滚下来的话,有可能借助惯性翻过比较大的局部最小值,从而达到更小的局部最小值,得到更优解。

Adam:这种方法综合了前两种方法,能得到更好的效果。

?2.训练集上得到的误差较小,但是测试集的误差较大

如果在训练集上得到的误差较小,但是在测试集上的误差较大,说明有可能出现了过拟合的情况。有三种常见的方法能解决该问题。

?(1)及时停止

为了避免在测试集上的误差过大,采用让训练的迭代次数减少的方法可以减少过拟合的情况。与一般机器学习使用方法相同。

(2)正则化?

为了防止过拟合,可以在Loss?function中增加正则项,来增加对参数过多的“惩罚”。与一般的机器学习使用方法相同。

?(3)Dropout

Dropout是在深度学习特有的一种方法。在训练之前,把每个神经元以p%的概率删除,用得到的新的神经网络训练参数。在测试的的时候,保留所有的神经元,但是每个神经元的weight都要乘1-p%。通常p%取0.5.

?dropout神奇的地方在于,这样的做法与集成的做法(训练许多神经网络然后对结果取平均)得到的结果是相似的。而且如果使用类似线性的激活函数,dropout的效果往往比其他的函数效果要好。

最后要指出的是调整模型一定要对症下药,先判断出目前的模型处于什么状态再做出改变,否则可能无济于事甚至得到更差的结果。比如,模型在训练集上就表现得不好,如果此时再使用dropout的方法,模型可能就会越来越差。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 11:38:10  更:2021-07-29 11:41:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/22 10:12:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码