吴恩达深度学习课程笔记-Classes 1

简介: 吴恩达深度学习笔记 classes1

详细笔记地址: http://www.ai-start.com/dl2017/
这里只是做些自己的摘抄与理解

写在前面

吴恩达(英语:Andrew Ng)是斯坦福大学计算机科学系和电气工程系的客座教授,曾任斯坦福人工智能实验室主任。他还与达芙妮·科勒一起创建了在线教育平台Coursera。
吴恩达老师的机器学习课程可以说是入门机器学习的同学最先接触的课程,当然后续的deeplearning.ai是更深入的课程。对在线教育,以及人工智能领域的发展提供了很大的帮助,感谢。

Classes 1 神经网络

1 神经网络与深度学习

1.1什么是神经网络

在这里插入图片描述
输入层输入的是特征,什么是特征,与预测或处理物体息息相关的事情都可以考虑作为特征,只是特征有轻有重,不同的特征对应的权重不一样,所以需要神经网络去学习特征前的权重参数。
给予足够多的训练样本有关𝑥 和𝑦,神经网络非常擅长计算从𝑥到𝑦的精准映射函数。

1.2 神经网络的监督学习

在这里插入图片描述

  • 监督学习:表明你的数据不仅只有特征,还有标签
  • 结构化数据:结构化数据意味着数据的基本数据库。例如有专门的几列数据告诉你卧室的大小和数量,这就是结构化数据。
  • 非结构化数据:非结构化数据是指比如音频,原始音频或者你想要识别的图像或文本中的内容。这里的特征可能是图像中的像素值或文本中的单个单词。
    在这里插入图片描述

神经网络算法对于结构化和非结构化数据都有用处

1.3 为什么深度学习会兴起

在这里插入图片描述
传统的算法面对大数据时候性能有瓶颈
对于神经网络而言,得益于大数据的发展以及计算性能的提升,再次得到发展。
想要获得较高的性能体现,那么你有两个条件要完成,第一个是你需要训练一个规模足够大的神经网络,以发挥数据规模量巨大的优点
在这里插入图片描述
小型网络、中型网络以及大型网络对应的数据量以及其性能

另外就是算法上的创新

  • 激活函数
  • 网络结构
  • 快速的迭代
    在这里插入图片描述

2 神经网络的编程基础

2.1 二分类(Binary Classification)

在这里插入图片描述
在电脑的眼里,图片是用矩阵的形式表示
在这里插入图片描述
这里将矩阵转化为列向量后作为神经网络的输入
在这里插入图片描述

2.2 逻辑回归

在这里插入图片描述
为什么用逻辑回归而不是线性回归,因为线性回归wx+b的输出值比1大,或者是比 0小,无法比较输出类别的概率大小,因此使用sigmoid函数对其进行非线性激活,将范围变为0-1之间
在这里插入图片描述

2.4 逻辑函数的损失函数

损失函数:用来衡量预测输出值和实际值有多接近
逻辑回归不实用mse均方误差这类损失函数是由于其不是凸函数,只能找到多个局部最优值,梯度下降法很可能找不到全局最优值。
在逻辑回归中用到的损失函数是二元交叉熵损失函数:
𝐿(𝑦^ , 𝑦) = −𝑦log(𝑦^) − (1 − 𝑦)log(1 − 𝑦^)

  • 当𝑦 = 1时损失函数𝐿 = −log(𝑦^) ,如果想要损失函数𝐿尽可能得小,那么𝑦^就要尽可能大,因为 sigmoid 函数取值[0,1],所以𝑦^会无限接近于 1。
  • 当𝑦 = 0时损失函数𝐿 = −log(1 − 𝑦^) ,如果想要损失函数𝐿尽可能得小,那么𝑦^就要尽可能小,因为 sigmoid 函数取值[0,1],所以𝑦^会无限接近于 0。
    在这里插入图片描述

损失函数只适用于像这样的单个训练样本,而代价函数是参数的总代价。这里总容易将损失函数与代价函数混为一谈,损失函数关心个体,代价函数关心总的样本。

2.4 梯度下降算法

用于更新参数的一种训练方法,这里不作过多的介绍
在这里插入图片描述
在这里插入图片描述

2.5 计算图

一个神经网络的计算,都是按照前向或反向传播过程组织的。首先我们计算出一个新的网络的输出(前向过程),紧接着进行一个反向传输操作。
在这里插入图片描述

2.6 使用计算图求导数

在这里插入图片描述
链式法则反向求J对变量a、b、c的偏导数
在这里插入图片描述

2.7 逻辑回归的计算题求解梯度下降

以单样本为例,损失函数L为
-(ylog(a) + (1-y)log(1-a)) y是标签,a是激活值
在这里插入图片描述
求解得到
dl/da = (-y/a + (1-y)/(1-a))
dl/dz = dl/da da/dz = (-y/a + (1-y)/(1-a)) a(1-a) = a-y
dl/dw1 = dl/da da/dz dz/dw1 = (a-y) * x1

2.8 向量化(Vectorization)

向量化是非常基础的去除代码中 for 循环的艺术
在这里插入图片描述
用向量操作替换循环元素处理

2.9 向量化逻辑回归(Vectorizing Logistic Regression)

在这里插入图片描述
在这里插入图片描述
numpy 广播机制
在这里插入图片描述

  • axis=0: 沿着列进行处理
  • axis=1: 沿着行进行处理
    建议不使用一维数组, 总是使用 𝑛 × 1维矩阵(基本上是列向量),或者 1 × 𝑛 维矩阵(基本上是行向量)表示n个元素。

或者用assert来判断其形状assert(a.shape == (5, 1))

3 浅层神经网络

3.1 神经网络概述

在这里插入图片描述
可以把许多sigmoid 单元堆叠起来形成一个神经网络
在这里插入图片描述

3.2 神经网络的表示

在这里插入图片描述
输入层:传递输入
隐藏层:线性加权求和,再通过激活函数激活
输出层:预测值

在这里插入图片描述
向量化表示
在这里插入图片描述

3.3 激活函数的类型

sigmoid:输出范围是0~1

在这里插入图片描述

tanh: 输出范围是-1~1

在这里插入图片描述
注意:

  • tanh 函数或者双曲正切函数是总体上都优于 sigmoid 函数的激活函数。tanh 函数是 sigmoid 的向下平移和伸缩后的结果。对它进行了变形后,穿过了(0,0)点。
  • sigmoid和tanh共同的缺点是,在𝑧特别大或者特别小的情况下,导数的梯度或者函数的斜率会变得特别小,最后就会接近于 0,导致降低梯度下降的速度。
ReLU: 输出范围0~+∞

在这里插入图片描述
正数的导数为1,负数的导数为0,神经元此时不会训练,易导致稀疏性。

Leaky Relu:输出范围 -∞ ~ + ∞

在这里插入图片描述
避免了ReLU负数阶段的导数为0,以一个非常小的数作为梯度值。
在这里插入图片描述
总结

  • ReLu 激活函数神经网络通常会比使用 sigmoid 或者 tanh 激活函数学习的更快;
  • sigmoid 和 tanh 函数的导数在正负饱和区的梯度都会接近于 0,这会造成梯度弥散,而 Relu 和 Leaky ReLu 函数大于 0 部分都为常数,不会产生梯度弥散现象。(同时应该注意到的是,Relu 进入负半区的时候,梯度为 0,神经元此时不会训练,产生所谓的稀疏性,而 Leaky ReLu 不会有这问题)
  • sigmoid 激活函数:除了输出层是一个二分类问题基本不会用它。
  • tanh 激活函数:tanh 是非常优秀的,几乎适合所有场合。
  • ReLu 激活函数:最常用的默认函数,如果不确定用哪个激活函数,就使用 ReLu 或者Leaky ReLu。

如果不确定哪一个激活函数效果更好,可以把它们都试试,然
后在验证集或者发展集上进行评价。然后看哪一种表现的更好,就去使用它。

3.4 为什么使用非线性激活函数

如果隐藏层使用的是线性函数的话就没有意义,等价于逻辑回归时候,中间的多个隐藏层可以直接由一个线性函数表示。
对于神经网络而言,就是需要使用非线性激活函数来获得有意思的函数映射。
但是对于回归问题,其输出层可以使用线性激活函数。唯一可以用线性激活函数的通常就是输出层。

3.5 激活函数的导数

  • sigmoid
    在这里插入图片描述
  • tanh
    在这里插入图片描述

在这里插入图片描述

  • ReLU 和leaky ReLU
    *在这里插入图片描述

在这里插入图片描述

3.6 神经网络的梯度下降算法

梯度下降算法用于更新网络中的参数w和偏置b,基于输出值与预期值之间的误差函数来进行反向传播来更新的。

  • 正向传播(forward): 从左到右
    在这里插入图片描述
  • 方向传播(back propagation): 从右到左
    在这里插入图片描述

3.7 随机初始化

当你训练神经网络时,权重随机初始化是很重要的。如果你把权重或者参数都初始化为 0,那么梯度下降将不会起作用。
对于𝑊可以随机初始化,𝑏可以初始化为 0。

𝑊= 𝑛𝑝.𝑟𝑎𝑛𝑑𝑜𝑚.𝑟𝑎𝑛𝑑𝑛(2,2) ∗ 0.01 
𝑏 = 𝑛𝑝.𝑧𝑒𝑟𝑜𝑠((2,1)) 

通常倾向于初始化为很小的随机数, 你用 tanh 或者sigmoid 激活函数,或者说只在输出层是 sigmoid,如果(数值)波动太大,当计算激活值时,如果𝑊很大,𝑧就会很大。𝑧的激活值𝑎就会很大或者很小,这种情况下很可能停在 tanh/sigmoid 函数的平坦的地方,这些地方梯度很小也就意味着梯度下降会很慢,因此学习也就很慢。

4 深层神经网络

4.1 深层神经网络

在这里插入图片描述

  • 严格上来说逻辑回归也是一个一层的神经网络,而上边右图一个深得多的模型,浅与深仅仅是指一种程度。
  • 算神经网络的层数时,不算输入层,只算隐藏层和输出层。

到有一些函数,只有非常深的神经网络能学会,而更浅的模型则学不到。尽管对于任何给定的问题很难去提前预测到底需要多深的神经网络,所以先去尝试逻辑回归,尝试一层然后两层隐含层,然后把隐含层的数量看做是另一个可以自由选择大小的超参数,然后再保留交叉验证数据上评估,或者用你的开发集来评估。

4.2 深层神经网络反向传播

  • 前向传播
    在这里插入图片描述
  • 反向传播
    在这里插入图片描述

4.3 为什么使用深层表示

在这里插入图片描述
深度神经网络的这许多隐藏层中,较早的前几层能学习一些低层次的简单特征,等到后几层,就能把简单的特征结合起来,去探测更加复杂的东西。

目录
相关文章
|
1月前
|
机器学习/深度学习 算法 测试技术
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
本文是关于如何搭建深度学习环境,特别是使用mmdetection进行CPU安装和训练的详细指南。包括安装Anaconda、创建虚拟环境、安装PyTorch、mmcv-full和mmdetection,以及测试环境和训练目标检测模型的步骤。还提供了数据集准备、检查和网络训练的详细说明。
86 5
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
|
1月前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
58 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
1月前
|
机器学习/深度学习 并行计算 PyTorch
深度学习环境搭建笔记(一):detectron2安装过程
这篇博客文章详细介绍了在Windows环境下,使用CUDA 10.2配置深度学习环境,并安装detectron2库的步骤,包括安装Python、pycocotools、Torch和Torchvision、fvcore,以及对Detectron2和PyTorch代码的修改。
91 1
深度学习环境搭建笔记(一):detectron2安装过程
|
1月前
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
162 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
深度学习笔记(十四):Transormer知识总结
关于深度学习中Transformer模型的知识总结,涵盖了Self-attention机制、QKV、Multi-head attention、位置编码和并行运算等关键概念,以及如何在PyTorch中实现Self-attention。
59 1
|
9天前
|
机器学习/深度学习 人工智能 测试技术
深度学习在图像识别中的应用与挑战
本文探讨了深度学习技术,尤其是卷积神经网络(CNN)在图像识别任务中的最新进展和面临的主要挑战。通过分析不同的网络架构、训练技巧以及优化策略,文章旨在提供一个全面的概览,帮助研究人员和实践者更好地理解和应用这些技术。
41 9
|
5天前
|
机器学习/深度学习 人工智能 算法
深度学习在图像识别中的应用与挑战
本文探讨了深度学习技术在图像识别领域的应用,重点分析了卷积神经网络(CNN)的工作原理及其在处理图像数据方面的优势。通过案例研究,展示了深度学习如何提高图像识别的准确性和效率。同时,文章也讨论了当前面临的主要挑战,包括数据不足、过拟合问题以及计算资源的需求,并提出了相应的解决策略。
|
7天前
|
机器学习/深度学习 分布式计算 并行计算
深度学习在图像识别中的应用与挑战
本文深入探讨了深度学习技术在图像识别领域的应用,分析了当前主流的卷积神经网络(CNN)架构,并讨论了在实际应用中遇到的挑战和可能的解决方案。通过对比研究,揭示了不同网络结构对识别准确率的影响,并提出了优化策略。此外,文章还探讨了深度学习模型在处理大规模数据集时的性能瓶颈,以及如何通过硬件加速和算法改进来提升效率。
|
7天前
|
机器学习/深度学习 人工智能 计算机视觉
深度学习在图像识别中的应用与挑战
【10月更文挑战第38天】本文将深入探讨深度学习如何在图像识别领域大放异彩,并揭示其背后的技术细节和面临的挑战。我们将通过实际案例,了解深度学习如何改变图像处理的方式,以及它在实际应用中遇到的困难和限制。
|
7天前
|
机器学习/深度学习 传感器 自动驾驶
深度学习在自动驾驶中的应用与挑战####
本文探讨了深度学习技术在自动驾驶领域的应用现状、面临的主要挑战及未来发展趋势。通过分析卷积神经网络(CNN)和循环神经网络(RNN)等关键算法在环境感知、决策规划中的作用,结合特斯拉Autopilot和Waymo的实际案例,揭示了深度学习如何推动自动驾驶技术向更高层次发展。文章还讨论了数据质量、模型泛化能力、安全性及伦理道德等问题,为行业研究者和开发者提供了宝贵的参考。 ####