深度学习的基础——笔记

本文内容根据 网易云课堂 吴恩达《深度学习工程师》整理

课程的文字版内容参考:https://blog.csdn.net/yangshaojun1992/article/details/105151717

学习内容摘要:

一、具有神经网络思维的Logistic回归的实现过程:

  1. 定义模型结构(例如输入特征的数量)
  2. 初始化模型的参数
  3. 循环:
  • 计算当前损失(前向传播

  • 计算当前梯度(反向传播

  • 更新参数(梯度下降

涉及知识点:数据集操作(训练集/测试集)、numpy数组操作(降维、归一化、sigmoid激活)、前向传播(损失函数、权重、偏差)、反向传播(导数、梯度下降、学习率、权重、偏差)、向量化

编程习题参考:https://blog.csdn.net/u013733326/article/details/79639509

 

二、具有单隐藏层的2类分类神经网络的实现过程:

  1. 定义神经网络结构(输入单元的数量,隐藏单元的数量等)。
  2. 初始化模型的参数
  3. 循环:
  • 实施前向传播

  • 计算损失
  • 实现后向传播

 

    4.更新参数(梯度下降

涉及知识点:不同的激活函数及其导数(tanh、sigmod、ReLU)、多样本向量化、随机初始化(针对参数w)

编程习题参考:https://blog.csdn.net/u013733326/article/details/79702148

 

三、构建多层隐藏层的神经网络

  1. 初始化网络参数
  2. 前向传播
    1. 计算一层中的线性求和的部分
    2. 计算激活函数的部分(ReLU使用L-1次,Sigmod使用1次)
    3. 结合线性求和与激活函数
  3. 计算损失
  4. 反向传播
    1. 线性部分的反向传播公式
    2. 激活函数部分的反向传播公式
    3. 结合线性部分与激活函数的反向传播公式
  5. 更新参数

涉及知识点:多层网络中参数矩阵的维数

 

超参数

编程习题参考:https://blog.csdn.net/u013733326/article/details/79767169

 

四、改善深层神经网络(超参数调试、正则化以及优化)

进行深度学习方面的实践,学习超参数调整、正则化、诊断偏差和方差以及一些高级优化算法,比如Momentum和Adam算法,使得网络表现更加良好。

  1. 数据集划分:
    1. 数据量较少(10000条) train/dev/test   60/20/20
    2. 数据量较多(1000000条) train/dev/test  98/1/1
  2. 偏差Bias,方差Variance

高偏差 => 欠拟合,高方差 => 过拟合

 

3. 如果存在欠拟合——高偏差,甚至无法拟合训练集,那么你的解决方式可以是选择一个新的网络,比如含有更多隐藏层或者隐藏单元的网络,或者花费更多时间来训练网络,或者尝试更先进的优化算法。

4. 深度学习可能存在过拟合问题——高方差,有两个解决方法,一个是正则化,另一个是准备更多的数据。

  • 正则化方法:L2正则化、随机失活(dropout)正则化。

  • 数据扩增(额外增加或人工合成):随意翻转和裁剪图片,我们可以增大数据集,额外生成假训练数据。

5. 梯度消失/梯度爆炸 => 随机初始化权重

 

6.优化算法:Mini-batch 梯度下降、动量梯度下降法、RMSprop算法、Adam 优化算法、学习率衰减、指数加权平均数

作用:让神经网络运行得更快

编程习题参考:https://blog.csdn.net/u013733326/article/details/79847918https://blog.csdn.net/u013733326/article/details/79907419

 

五、卷积神经网络

对于图像应用,我们经常在神经网络上使用卷积(Convolutional Neural Network),通常缩写为CNN。

  1. 卷积神经网络的基本操作:
  • 边缘检测(如垂直边缘),使用过滤器

 

  • Padding填充,分为Valid卷积和Same卷积

  • 卷积步长

  • 池化层:最大池化、平均池化

 

2. 搭建卷积神经网络模型

  • 卷积模块

使用0扩充边界

卷积窗口

前向卷积

反向卷积(可选)

  • 池化模块,包含了以下函数:

前向池化

创建掩码

值分配

反向池化(可选)

  • 使用TensorFlow来实现卷积神经网络

编程习题参考:https://blog.csdn.net/u013733326/article/details/80086090 (tf1.x)、https://blog.csdn.net/weixin_47440593/article/details/107938235?spm=1001.2014.3001.5501 (tf2.x)

 

3. 经典卷积网络

  • LeNet-5

  • AlexNet

  • VGGNet

 

4. 残差网络ResNets

层数非常非常深的神经网络是很难训练的,因为存在梯度消失和梯度爆炸问题。但是,我们可以利用跳跃连接构建能够训练深度网络的ResNets。跳跃连接(Skip connection),它可以从某一层网络层获取激活,然后迅速反馈给另外一层,甚至是神经网络的更深层。

残差网络ResNets是由残差块(Residual block)构建的。

 

5. 谷歌Inception 网络中的卷积模块

 

6. 迁移学习和数据增强

  • 迁移学习:下载的其他人已经训练好几周的权重,并用作自己神经网络的初始化。
  • 数据增强:数据扩充(镜像对称、随机裁剪、旋转、扭曲变形)、彩色转换

编程习题参考:https://blog.csdn.net/u013733326/article/details/80250818 (tf1.x)、https://blog.csdn.net/weixin_47440593/article/details/108028694?spm=1001.2014.3001.5501 (tf2.x)

 

六、目标检测

  1. Yolo

YOLO(“you only look once”)因为实时高准确率,这使得它是目前比较流行的算法。在算法中“只看一次(only looks once)”的机制使得它在预测时只需要进行一次前向传播,在使用非最大值抑制后,它与边界框一起输出识别对象。

2. 目标定位(目标标签y的定义)

3. 基于滑动窗口的目标检测算法(选用不同大小的窗口)

 

滑动窗口的卷积实现

 

4. Bounding Box预测

 

5. 非极大值抑制

首先看检测概率pc最大的那个,这个例子(右边车辆)中是0.9,然后就说这是最可靠的检测,所以我们就用高亮标记,就说我这里找到了一辆车。这么做之后,非极大值抑制就会逐一审视剩下的矩形,所有和这个最大的边框有很高交并比(loU),高度重叠的其他边界框,那么这些输出就会被抑制。所以检测概率pc这两个矩形分别是0.6和0.7,这两个矩形和淡蓝色矩形重叠程度很高,所以会被变暗,表示它们被抑制了。

 

6. Anchor Boxes:一个格子检测出多个对象

 

编程习题参考:https://blog.csdn.net/u013733326/article/details/80341740 (tf1.x)

(注:因为第五课是序列模型,它用于自然语言处理,有兴趣的可以接着学习)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值