吴恩达深度学习——学习笔记

一、神经网络和深度学习
1.了解到了神经网络是怎样一种结构:input->hidding layers->output,其中hidding layers(隐藏层)可以设置多个layers,每一层可以设置多个节点(神经元)
2.3种激活函数:sigmoid(通常用于回归、二分类等问题中)、tanh、ReLu,而且必须有非线性的激活函数,否则数据输入进来只是经过一系列线性组合然后输出。
3.W和b的初始化问题:在多层神经网络中,不能将w和b初始化为0,否则每一层的计算都是一样的,这样的网络就变得没有意义了。
4.向量化:节省了数据计算的时间,避免使用了for循环
5.迭代的过程:(图片取自吴恩达教授的视频内容)
吴恩达的视频截图
二、改善深层神经网络

第一周,深度学习的实用层面
1.在机器学习中,通常将样本分为训练集、验证集、测试集三部分,数据集规模较小时,适用于传统的划分比例,70/30或者60/20/20;数据规模较大时,验证集和测试集可以占到数据总量的10%~20%以下。(尽可能保证测试集和验证集来自同一分布)
2.从训练集到验证集,可以判断方差和偏差的大小:
过拟合-高方差(预测模型波动较大)
欠拟合-高偏差(预测模型准确度低)
在这里插入图片描述
3.正则化有助于避免过度拟合,或减少网络误差,通常使用L2正则化(权重衰减)
在这里插入图片描述
4.Dropout(随机失活)(keep_prob用于训练的前向传播过程中)是一种正则化方法,预防过拟合,可以随机删除网络中的神经单元,将权重平均的分布给每一个节点。(主要用于计算机视觉)
5.数据增强也可作为正则化方法使用,扩充训练集
6.Early stopping
提早结束迭代循环训练神经网络,避免过拟合(缺点:停止训练时损失值较高)
7.正交化概念:提出一种方法同时解决两个问题(如同时降低损失函数和避免过拟合)
8.归一化输入:加速神经网络的训练速度(如果输入特征处于不同范围内,通常需要归一化处理)。
9.梯度检验
总结:本周解决网络过拟合问题
● 合适的权重初始化方法
● 正则化(L1/L2,L2常用)
● Dropout
● 数据增强
● Early stopping

第二周,优化算法
1.mini-batch梯度下降法

(1)当训练集数据量庞大时,将训练集分为多个子集,每次迭代遍历每个子集,每处理一个子集更新一次权重,参数W和b总共更新了迭代次数×子集个数次,而梯度下降法每迭代一次全部样本才更新一次参数,mini-batch梯度下降法一次迭代就可以更新多次参数,所以可以加快算法的训练速度同时加速成本函数的收敛。

(2)训练过程中,由于每次参与训练的均是不同样本,所以成本值会出现噪音(上下波动,并非一直下降),但总体是处于下降趋势的。

(3)if mini-batch size =m:batch gradient descent(批处理梯度下降)(全部样本同时参与训练)
   缺点:训练集庞大时,单次迭代耗时太长。
   if mini-batch size =1 :stochastic gradient descent(随机梯度下降)(每个mini-batch都是单个样本)
   缺点:每次只处理一个训练样本,失去了向量化带来的加速效果,效率太低。
  
Make sure:
● mini-batch大小应该选择不大不小,介于1~m之间
● 通常样本量m<2000时,使用批处理梯度下降法就好
● 样本量较大时,mini-size的大小可以选择为64,128,256,512等(通常为2次方)
● 是否符合CPU/GPU内存情况
2.指数加权移动平均数与偏差修正
3.动量梯度下降法(momentum gradient descent)
   ● 利用指数加权移动平均数算法来优化参数W和b,降低迭代训练过程中的成本值波动,加快梯度下降。
   ● 超参数Hyperparameters:α,β,通常β取0.9
在这里插入图片描述4.RMSprop(root mean square prop)——同样可以加速梯度下降
在这里插入图片描述5.Adam优化算法——结合Momentum和RMSprop(适用于不同的神经网络结构)
在这里插入图片描述6.学习率衰减——加快训练
7.局部最优问题
   ● 解决局部最小值的条件之一是在训练较大的神经网络时存在大量参数,并且成本函数J被定义在较高的维度空间
   ● 平稳段会导致学习速率降低(利用Momentum、RMSprop、Adam等优化算法加速训练)
总结:本周解决梯度下降问题
图片截取来自本周作业
●Mini-batch
●动量梯度下降法-V(指数加权移动平均)
●RMSprop-S
●Adam优化算法-V+S

在这里插入图片描述第三周,超参数调试、Batch正则化和程序框架
1.Hyperparameters

参数(重要性从上到下递减)含义
α学习率
β动量梯度参数
hidden units隐层单元节点数
mini-batch size随机梯度下降的训练集大小
layers层数
learning rate decay学习率衰减因子
β1、β2、εAdam参数

2.Batch归一化
标准化隐层单元值Z的均值和方差,有助于训练神经网络
在这里插入图片描述batch归一化减少了输入值改变的问题,使神经网络层变得更加坚实,减弱了前层参数与后层参数之间的联系,使得每层都可以自己独立学习。

3Softmax激活函数——多分类
在这里插入图片描述Softmax损失函数:
在这里插入图片描述3.深度学习框架——Tensorflow

三、结构化机器学习项目
第一周———机器学习ML策略(1)
1.评估模型指标
Precision——查准率,Recall——查全率
F1——查准率和查全率的调和平均值
在这里插入图片描述
2.确保开发集和测试集来自同一分布中。
3.如何分配训练集、开发集(测试多个模型,选择最佳模型)、测试集:
数据量较小时:训练集70%,测试集30%或者训练集60%、开发集20%、测试集20%
数据量较大时:训练集98%、开发集1%、测试集1%
4.避免偏差策略与避免方差策略
5.利用人类误差代替贝叶斯误差来分析算法的偏差与方差,并进行优化
6.避免偏差的方法:1.用更大的网络来进行训练
            2.用更好的优化算法(动量梯度下降、RMSprop、Adam)
            3.不同的网络结构或者调整超参数
7.避免方差的方法:1.更多的数据
           2.正则化(L2、Dropout、数据增强等)
           3.不同的网络结构或者调整超参数
第二周——机器学习ML策略(2)
1.数据集中存在错误标签时:
   ●(深度学习对随机性误差鲁棒性较好,对于系统性误差鲁棒性较差)
(1)标签错误引起的误差较小时,没有必要进行修改标签
   ●观察模型在开发集的误差大小,假如这里为10%
   ●统计有6%标签错误产生的误差,占总误差的0.6%
   ●其他原因导致的误差,占9.4%(着重于分析其他原因带来的误差)
(2)标签错误引起的误差较大时,要着重修改错误标签,减少误差
   ●观察模型在开发集的误差大小,假如这里为2%
   ●统计有30%标签错误产生的误差,占总误差的0.6%(着重于分析标签错误带来的误差)
   ●其他原因导致的误差,占1.4%
(3)修改错误标签时的注意事项:
   ●要同时作用到开发集和测试集上
   ●检测结果正确的例子和结果错误的例子
2.当数据来自不同分布时:
例如老师讲的一部分来自网络图片,一部分来自用户自己拍的图片
在这里插入图片描述**Option1:**将两部分数据融合到一起,随机分配到训练集、开发集、测试集中
优点:均来自同一分布;
缺点:开发集和测试集中的数据大部分来自网络图片
**Option2:**将网络图片和一半的用户图片组成训练集,剩下的用户图片放到开发集和测试集中。
优点:开发集和测试集就是你想要处理的目标
缺点:训练集与开发集和测试集不来自同一分布
   ●试验证明,往往Option2会带来更好的系统性能
  
3.设立Training-dev(训练-开发集)来分析偏差和方差
  当训练集与开发集来自不同分布,开发集误差较大时,并不能直接判断是由过拟合引起的误差,可以建立新的训练-开发集来进一步判断,是由什么原因引起的误差(过拟合or数据不匹配)
在这里插入图片描述
如下图所示,一个判断误差原因的流程图:
在这里插入图片描述
举两个例子:左边测试集误差较高是由于对训练集过拟合,产生了较高的方差;右边测试集误差较高是由于测试集的数据与训练集数据不匹配(ex:训练集高分辨率,测试集低分辨率)
在这里插入图片描述   ●当存在数据不匹配的问题时:
   1.进行误差分析,检查训练集和开发集两个数据分布有什么不同之处
   2.收集更多类似于开发集的数据进行训练或者进行人工合成数据(存在过拟合弊端

  
4.迁移学习
在这里插入图片描述   当我们已经做好一个猫的检测器,用该监测器同样可以用来检测医学图像,只需改变输出层的权重W和b(以及再增加层数),对权重进行随机初始化,然后重新训练网络;如果数据量很小,可以只训练最后一层的权重,前面层的权重可以直接拿来使用。
   ●迁移学习在何时有用呢?(用于迁移目标数据量较少的情况)
   举例:对于图像识别有上百万个数据来训练,但是针对放射科图像可能只有100个数据,如果以100个放射科数据进行训练,数据量不足,则模型效果肯定较差。所以可以利用图像识别训练中学到的知识来迁移到放射科图像识别中。
   1.任务A和任务B有相同的输入,例如都是图像或者音频。
   2.当任务A的数据量比任务B多得多时,迁移学习意义更大。
   3.任务A的低层次特征有助于任务B学习,迁移学习更有意义。
  
5.多任务学习
在这里插入图片描述    同时学习多个目标,输出一个多维的Y,例如在研究无人驾驶时,要同时检测出行人、红绿灯、交通标志等情况
   ●多任务学习在何时有意义呢?
   1.多个目标之间可以共享一些低层次的特征
   2.每个目标的数据量很接近时(类似迁移)
   3.可以训练一个大的神经网络,应用在多个任务中,往往比单个神经网络应用在单个目标上性能更高。
   ●在机器学习中,迁移学习比多任务学习利用率更高
  
6.端到端学习(类似黑盒子,输入数据到模型当中,模型输出预测)
   ●在构建一个新的机器学习系统时是否使用端到端深度学习的关键问题:是否有足够的数据能够直接学到从x映射到y足够复杂的函数

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值