DeepAI学习回顾笔记之二( Improving Deep Neural Networks)

来源:互联网 发布:ie浏览器java插件下载 编辑:程序博客网 时间:2024/05/22 18:56

前言

刚刚完成了coursera上 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization这门课程的学习,并通过考核。在这里记录一下学习感受,来为大家提供一些关于这门课的资料和学习建议。

课程简介

Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization这门课是Deeplearning.ai在cousera的系列课程的第二门课,这门课的主要作用使学习人员在了解深度学习的基本原理后掌握其高阶参数的调优方法及其背后原理。 由于深度学习的神经网络涉及的参数很多,在调优的过程有很多需要注意的地方,这门课将在学习者实际应用深度学习系统时发挥重要作用。
这门课程还是秉承着吴恩达的一贯风格,学习门槛很低,思路清晰,表达流畅,语速也较低,这门课的采访大牛有一个中国人是在百度下领导国家人工智能实验室,看起来也很牛,可见在这个领域国内还是出发的比较早的。

主要内容

主要内容如下图所示
这里写图片描述

基本概念

数据集

1.训练集:用于训练模型
2.交叉验证集:用于调整训练模型
3.测试集:用于确认模型效果
要想有一个有用的模型那这三个数据集的一定要独立,而且比例也要合适,要是数据量极大>100万,则测试和交叉验证都给1万,其他全部用于训练。
只有这三个数据集的数据分配合理才能有效优化模型,如下如图所示:
这里写图片描述

模型表现结果

1.过拟合:即训练模型过于针对训练数据集,在测试集表现非常差
2.高偏差:即训练模型对于训练数据集和测试集上表现均非常差。

优化方法

L2 Regularization

缺乏Regularization的损失函数

J=1mi=1m(y(i)log(a[L](i))+(1y(i))log(1a[L](i)))

L2 Reularization对应的损失函数

Jregularized=1mi=1m(y(i)log(a[L](i))+(1y(i))log(1a[L](i)))cross-entropy cost+1mλ2lkjW[l]2k,jL2 regularization cost

可见增加了一项,这一项就有效提升了优化效率。

Dropout

Dropout就是再优化过程中随机的管理网络中的节点,以减少模型对于训练数据集的依赖,从而降低过拟合的概率。
这个视频有效的说明了这个方法的流程
https://hub.coursera-notebooks.org/user/yhxyvyusmrzdtogfylozjd/notebooks/week5/Regularization/images/dropout1_kiank.mp4
https://hub.coursera-notebooks.org/user/yhxyvyusmrzdtogfylozjd/notebooks/week5/Regularization/images/dropout2_kiank.mp4
注意:

  1. 从本质上来说Dropout也是一种Regularization技术。
  2. 正向传播和反向传播都要使用。
  3. 不要再测试集上使用Dropout。

归一化

通过对数据进行归一化可以有效降低模型优化的所需要的迭代次数,一般过程是对各个维度将去平均值再除以方差。

初始化

对神经网络的权重一定要初始化为接近0 的随机数,否则神经网的优化将无法正常运行。

mini-batch

将训练集的数据划分为多个子集进行训练,这样的方法既可以利用并行算法提高计算效率又可以解决数据集过大内存不足的问题。
过程一般分为两步
1.数据集混洗(保证随机行)
图片来自coursera
2.数据集切分
图片来自coursera

动量法

普通的优化方法如下式所示

动量法优化如下式所示

{vdW[l]=βvdW[l]+(1β)dW[l]W[l]=W[l]αvdW[l]

{vdb[l]=βvdb[l]+(1β)db[l]b[l]=b[l]αvdb[l]

β就是动量系数

Adam法

Adam法就是将动量法和RmsProp方法结合起来的方法,优化方法如下式所示。

vdW[l]=β1vdW[l]+(1β1)JW[l]vcorrecteddW[l]=vdW[l]1(β1)tsdW[l]=β2sdW[l]+(1β2)(JW[l])2scorrecteddW[l]=sdW[l]1(β1)tW[l]=W[l]αvcorrecteddW[l]scorrecteddW[l]+ε

TensorFlow

tensorFlow是谷歌开源的机器学习框架,网络上对其介绍的文章不计其数,大家可以简单从查看一下。关于开源框架Anderw提示就算现在开源以后也未必是开源的,因此要选择有强力机构监督的开源框架。

回顾

1.这门课是关于如何优化模型的课程,实战价值极高,有可能为你节省大量的优化时间,少走不少弯路。
2.选择开源框架也是有讲究的。
3.TensorFlow还不是很人性化,但令人印象深刻,只需要定义能量函数,以及正向传播过程就可以完成反向传播过程节省了大量的开发时间和工作量,而且反向传播过程往往需要大量的数学知识,这也大幅度的降低了深度学习开发的门槛。
4.最后晒一下证书啦
这里写图片描述

阅读全文
0 0
原创粉丝点击