吴恩达神经网络和深度学习-学习笔记
Harry嗷
礼貌提问才会礼貌回答,伸手党勿扰!仅讨论知识,不帮人调bug哈。
展开
-
吴恩达神经网络和深度学习-学习笔记-44-交并比IoU + 非极大值抑制
交并比IoU——衡量定位精确度在对象检测任务中,我们希望能够同时定位对象。人们定义IoU这个概念,是为了评价你的对象定位算法是否精准,但更一般地说,IoU衡量了两个边界框重叠的相对大小。如果实际边界框是红色的,我们的算法给出这个紫色的边界框,那么这个结果是好还是坏?交并比(IoU)函数做的是:计算两个边界框交集和并集之比。在这里,绿色部分为并集,黄色部分为交集。交并比函数的计算公...原创 2020-02-18 18:33:22 · 955 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-39-计算机视觉现状
Data vs hand-engineering你可以把大部分的机器学习问题看成是在你的数据相对较少的地方,应用到你拥有大量数据的地方。我们今天有相当数量的语音识别数据,至少相对于这个问题的复杂性而言。虽然今天有合理的大型数据集用于图像识别和图像分类,但由于图像识别是一个复杂的问题,我们仍希望有更多的数据。还有一些问题,比如物体检测,我们拥有的数据更少(它要告诉我们一张图片中的物体的位置...原创 2019-07-26 15:29:59 · 611 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-25-定位数据不匹配
训练集来自和开发集不同的分布,误差显示有数据不匹配的问题,该如何解决?这个问题没有完全系统的解决方案,但有一些可以尝试的事情。翻译为:人工做误差分析,尝试了解训练集(training set)和开发集(dev set)的具体差异。使训练集更像开发-测试集,或收集更多的像开发-测试集的数据。这里只给出粗略的指南,列出可以做的尝试。这不是一个系统化的过程,并不一定能保证make pro...原创 2019-07-22 11:51:42 · 505 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-38-使用开源的方案+迁移学习+数据增强data augmentation
使用别人的开源成果想要用现成的网络,最好在网络上找到开源的实现,这要比从头开始实现快得多。比如:直接在Google上搜索resnets github,找到合适的后点击下载会得到URL,然后在cmd中输入git clone YOURURL,就能下载到本地硬盘。迁移学习如果要做一个计算机视觉应用,相比于随机初始化权重后从头训练权重,下载别人已经训练好的网络结构的权重,通常能进行得更快。用这个作...原创 2019-07-25 23:57:34 · 392 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-37-inception网络
inception层inception层的基本思想是:不需要人为决定使用哪个过滤器、是否使用池化,而是由网络自行决定这些参数。你可以给网络添加这些参数的所有可能值,然后把这些输出连接起来,让网络学习自己需要什么样的参数、采用哪些过滤器组合。inception层的作用是代替人工来确定卷积层中的过滤器类型,或者是否需要创建卷积层或池化层。虽然网络架构因此变得更复杂,但网络表现但非常好。对于不同...原创 2019-07-25 17:56:52 · 731 阅读 · 2 评论 -
吴恩达神经网络和深度学习-学习笔记-24-在不同的划分上进行训练和测试+不匹配数据划分的偏差和方差
深度学习算法对训练数据的胃口很大,当你收集到足够多的带标签数据构成训练集时,算法效果最好。这导致很多团队用尽一切方法收集数据,然后把它们堆到训练集里,让训练的数据量更大。但是有些数据,甚至是大部分数据,都来自和开发集和测试集不同的分布。所以深度学习时代,越来越多的团队都用和dev set、test set分布不同的数据来训练。这里有一些微妙的地方,一些最佳做法来处理训练集training s...原创 2019-07-21 10:24:07 · 485 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-23-快速搭建你的第一个系统原型,然后迭代
如果你正在开发全新的机器学习应用,你应该尽快建立你的第一个系统原型 (quick and dirty),然后快速迭代。下面以语音识别系统为例:一开始,我们有许多选择,不同的方向向前推进,而且每个方向都是相对合理的,可以改善你的系统。但是挑战在于,你如何选择一个方向集中精力处理。吴恩达老师给出的建议是:如果你正在开发全新的机器学习应用,你应该尽快建立你的第一个系统原型(quick and ...原创 2019-07-21 09:52:17 · 222 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-36-网络中的网络以及1×1卷积
在架构内容设计方面,其中一个比较有帮助的想法是使用1×1卷积。功能:给神经网络添加一个非线性函数,从而减少或保持输入层中信道数量(甚至是增加)。1×1卷积(Network in Network )对一个6×6×1信道的图片进行1×1过滤器的卷积,就相当于对矩阵的每一个元素乘一个常数,效果不佳。但如果是一个6×6×32的图片,那么a 1×1 fliter can do something...原创 2019-07-25 11:21:38 · 268 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-22-误差分析
单一误差分析假设我们面对一个猫分类器的准确率不够的原因。队友看了一下算法分类出错的例子,注意到算法将一些够狗分类为猫。在这种条件下,我们应不应该做一个项目专门处理狗?比如搜集更多的狗的图片,或者设计一些只处理狗的算法功能之类的,从而使得猫分类器在狗图上做得更好(狗不再被分类成猫)。有一个误差分析流程,可以让我们很快知道这个方向是否值得努力。首先收集比如100个标记错误的开发集(dev...原创 2019-07-21 00:03:20 · 753 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-35-残差网络(Residual Network)
非常非常深的网络是很难训练的,因为存在梯度消失和梯度爆炸的问题。ResNet用到了跳远连接,使得它可以从某一网络层获取激活,然后迅速反馈给另外一层,甚至是神经网络的更深层。这让ResNet可以训练很深很深的网络。残差块(residual block)ResNet是由残差块构建的以一个简单的神经网络为例,正常一层一层地计算前向传播的路径称为主路径(main path)。表现为上图中的蓝色路...原创 2019-07-24 18:33:56 · 1983 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-16-超参数的系统的调整方法
深度学习中需要调整的超参数值关于训练深度最难的事情之一是要处理的参数的数量。学习率αAdam优化函数中β1、β2、ε网络层数隐藏单元数学习率衰减参数mini-batch size最广泛的学习应用是学习率α,这是需要调试的最重要的超参数。其他参数的重要程度为红>黄>紫>蓝(Adam函数的参数一般不调)超参数的系统的调整方法参数为两个的时候对应二维的空间,...原创 2019-07-17 16:34:15 · 280 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-26-迁移学习(transfer learning)
深度学习中,最强大的理念之一就是,有的时候神经网络可以从一个任务习得知识,并将这些知识应用到另一个独立任务中。所以例如,也许你已经训练好了一个神经网络,能够识别像猫的对象,然后使用那些知识(或者一部分知识)去帮助你更好地阅读x射线的扫描图。而这,就是迁移学习。下面用例子说明(图像识别 --> 放射诊断):步骤如下:训练好原始网络(图像识别 image recognition)...原创 2019-07-22 16:14:09 · 718 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-27-多任务学习
在迁移学习中,你的步骤是串行的。在多任务学习中,你是试图让神经网络同时做几件事情,然后希望这里每个任务都能其他所有任务。一个自动驾驶的例子:在这里,一个x对应多个y,或者说Y = [y(1), y(2), y(3), y(4)]对神经网络的训练如下:需要强调的是,损失函数需要的四个y求和。与Softmax分类给一张图一个标签不同,这里的每张图会有多个标签。当然也可以,训练4个神经网...原创 2019-07-22 18:04:27 · 364 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-45-完全版YOLO算法
构造训练集假设你要训练一个算法去检测三种对象:行人汽车摩托你还需要显式指定完整的背景类别。如果要用两个anchor box,那么输出y就是3×3×2×8。要构造训练集,你需要遍历9个格子,然后构成对应的目标向量y。上图分别对应:通式,左上角(背景),只有车。构造的两个anchor box:训练过程训练一个卷积网络。输入是图片(可能是100×100×3),然后卷积网络...原创 2019-07-28 12:02:08 · 215 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-44-anchor box
到目前为止(笔记)对象检测每个格子只能检测出一个对象。如果想让一个格子检测出多个对象,就要使用anchor box这个概念。简介注意行人的中点和汽车的中点,都落入到同一个格子中。anchor box的思路是:预先定义两个不同形状的anchor box。对应的y也发生变化:总结一下:previously:对于训练集图像中的每个对象,都根据那个对象中点位置,分配到对应的...原创 2019-07-28 11:41:38 · 388 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-43-Bounding box 预测 + YOLO算法
滑动窗口目标检测的缺点在滑动窗法中,取这些离散的位置的集合,然后在它们上面跑分类器。在这种情况下,这些边界框没有一个能完美匹配汽车位置。还有,最完美的边界框甚至不是方形,而是稍微有点长方形。得到更精准的边界框——YOLO算法YOLO算法和图像分类+定位算法非常像(显式地输出边界框坐标),所以这能让神经网络输出边界框,可以具有任意宽高比,并且能输出更精确的坐标,而不会受到滑动窗法分类器的...原创 2019-07-27 21:13:23 · 717 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-29-卷积的基础知识
边缘检测垂直边缘检测器的卷积过程最简单的垂直边缘检测过滤器fliter在原图像上滚动。size输出维度=size输入维度-size过滤器维度+1。在过小的图片上检测时,可能会出现边缘过大的问题。但在大图片上,其可以很好地检测边缘。区分正边和负边的边缘检测上面是由明向暗,下面是由暗到明。水平边缘检测其他边缘检测的滤波器Sobel滤波器增加了中间一行元素的权重,这使得结...原创 2019-07-23 10:30:29 · 237 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-28-端到端的深度学习(end-to-end deep learning )
深度学习最令人振奋的最新动态之一,就是端到端深度学习end-to-end deep learning的兴起。什么是“端到端深度学习”以前有一些数据处理系统或学习系统,它们需要多个阶段的处理。端到端深度学习end-to-end deep learning简而言之就是:忽略这些不同的阶段,用单个的神经网络替代它。例子如下:端到端深度学习的挑战之一是:需要大量的数据才能让系统表现良好。根据...原创 2019-07-23 00:00:31 · 1799 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-42-目标检测
构建一个对象检测算法,通过卷积网络进行对象检测。采用的是基于滑动窗口的目标检测算法。实例:构建一个汽车检测算法训练集简单来说的步骤:创建一个标签训练集(也就是X和Y),表示适当剪切的汽车图片样本(0和1代表有无)。出于我们对这个训练集的期望 你一开始可以使用适当剪切的图片(就是整张图片X几乎都被汽车占据)。开始训练卷积网络。输入这些适当剪切过的图像,卷积网络输出0或1表示图片中...原创 2019-07-26 21:05:04 · 207 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-41-特征点检测
你可以让神经网络的最后一层,多输出两个数字lx和ly,作为眼角的坐标值。如果你想知道两只眼睛的四个眼角的具体位置,对神经网络稍做些修改,输出第一个特征点(l1x,lxy)、第二个特征点(l2x,l2y) 依此类推,这四个脸部特征点的位置就可以通过神经网络输出了。也许除了这四个特征点,你还想得到更多的特征点输出值,假设脸部有64个特征点。简单来说:选定特征点个数生成包含这些特征点的标签...原创 2019-07-26 17:30:40 · 561 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-40-目标定位
目标检测是计算机视觉领域中一个新兴的应用方向。相比前两年,它的性能越来越好。对象定位在构建对象检测之前,我们先了解一下对象定位。定位分类问题:不仅要用算法判断图片中是不是一辆汽车,还要在图片中标记出它的位置。定位分类问题通常只有一个较大的对象位于图片中间位置。对象检测问题:图片可以含有多个对象,甚至单张图片中会有多个不同分类的对象。图片分类的思路可以帮助学习分类定位,而对象定位的...原创 2019-07-26 17:03:49 · 697 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-34-LeNet-5 + Alexnet + VGG
找感觉最好的方法之一,就是去看一些案例。通过研究别人构建有效组件的案例,是个不错的方法。实际上,在计算机视觉任务中表现良好的神经网络框架,往往也适用于其他任务。也就是说,如果有人已经训练或计算出擅长识别猫狗人的神经网络框架,而你的计算机识别的任务是构建一个自动驾驶汽车,你完全可以借鉴别人的神经网络框架,来解决自己的问题。Classic networks:LeNet-5AlexnetVG...原创 2019-07-24 15:32:40 · 555 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-21-何时该改变开发集+测试集或指标
需要我们改变开发集+测试集或指标的情况,是现有的指标或开发测试集并不能帮助我们选择出最好的模型!如果你的评估指标,无法正确评估好算法的排名,那么就需要花时间定义一个新的评估指标。(加权来排除某一类图片,当然是不是,需要我们自己去标记。)另外,如果在指标上表现很好,在当前开发集或者开发集+测试集分布中表现良好,但在实际应用程序中我们真正关心的地方表现不好,那么就需要修改指标或者开发集+测试...原创 2019-07-19 18:17:47 · 258 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-20-训练/开发/测试集划分
设计开发集(dev set)和测试集(test set)机器学习中的工作流程是:尝试很多思路,用训练集训练不同的模型。使用开发集来评估不同的思路,选择一个然后不断迭代去改善开发集的性能。得到一个令人满意的成本,再用测试集去评估。我们需要使得测试集(test set)和开发集(dev set)的数据同分布。一个Guideline:简单来说,就是测试集和开发集的数据应该与我最后实...原创 2019-07-19 17:57:41 · 627 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-9-mini-batch梯度下降法
mini-batch梯度下降法mini-batch梯度下降法的介绍但是当m是一个很大的数(比如500W),在对整个训练集执行梯度下降算法的时候,我们必须处理整个数据集,才能进行下一步梯度下降算法。然后我们需要重新处理500W个训练样本,才能进行下一步梯度下降算法。所以如果你在处理完整个500W个训练样本之前,先让梯度下降算法处理一部分,你的算法速度会更快。In particular, h...原创 2019-07-16 08:06:28 · 805 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-17-batch归一化(Batch Normalization)(BN)
Batch Normalization会使你的参数搜索问题变得很容易,使神经网络对超参数的选择更加稳定,超参数的范围会扩大,工作效果也很好,同时也能使你更容易地训练深层网络。针对一个单层的网络,我们讲了归一化输入(将input X归一化,详见笔记8)。Batch Normalization是指:面对深度网络,对于任何一个隐藏层而言,我们归一化上一层的a值,以更快地训练这一层的W和b(严格来...原创 2019-07-18 08:58:52 · 1447 阅读 · 12 评论 -
吴恩达神经网络和深度学习-学习笔记-8-梯度消失与爆炸 + 梯度检测
直观理解是:权重W只比1(即单位矩阵)大一点,深度神经网络的激活函数将爆炸式增长。权重W只比1(即单位矩阵)小一点,深度神经网络的激活函数将指数式递减。虽然我(吴恩达老师)只是论述了对L函数的激活函数以指数级增长或下降,但它也适用于与层数L相关的导数或梯度函数也是呈指数增长或呈指数递减。如果作为L的函数的激活函数或梯度函数以指数级增长或递减(我的理解是,L作为指数),它们的值会变得极大或极...原创 2019-07-15 08:22:59 · 299 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-8-归一化输入Normalizing inputs
归一化介绍归一化输入包括两个部分:归一化均值归一化方差对于有两个输入特征(features)的数据,先归一化均值再归一化方差。最后x1和x2的均值均为0,方差均为1。提示一下,如果你用这种方法来调整数据,那么用相同的μ和σ2来归一化测试集(尤其是训练集和测试集的归一化应该相同,即用同样的方法调整测试集,而不是在训练集和测试集上分别预估μ和σ2)。归一化的好处如果在左图这样的...原创 2019-07-14 22:57:38 · 634 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-7-正则化regularization方法
解决高方差high variance的方法有两种:正则化准备更多数据其中常用的正则化分为:L2正则化dropout正则化L2正则化L2正则化的原理对于正则化的解释可以看一下这个博客【通俗易懂】机器学习中 L1 和 L2 正则化的直观解释机器学习中,如果参数过多,模型过于复杂,容易造成过拟合(overfit)。即模型在训练样本数据上表现的很好,但在实际测试样本上表现的较差,...原创 2019-07-14 21:14:21 · 889 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-6-训练集、验证集和测试集 + 偏差bias和方差variance
寻找最优超参数是一个迭代过程在今天,应用深度学习是一个典型的迭代过程。创建高质量的训练数据集、验证集和测试集,有助于提高循环效率。训练集、验证集和测试集数据Data分为三部分:训练集trainning set简单交叉验证集hold-out cross validation set(development set)(dev set):检验哪种算法(或模型)更有效,尽可能优化性能测试...原创 2019-07-14 11:51:53 · 930 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-5-参数和超参数
超参数:能够决定参数的参数通常很难知道什么样的超参数最好,所以要尝试很多不同的值而且对于同一个问题,最优的超参数也可能随时间变化应用深度学习领域是一个很大程度基于经验的过程...原创 2019-07-13 22:29:37 · 195 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-4-深度网络
符号约定L:网络的深度(隐藏层+输出层)n[1]:第一层隐藏层单元数,为5a[1]:第一层的激活函数,=g[1](z[1])。另外我们认为x=a[0]前向传播过程对于单个的输入x:简单来说,每一层都会执行这两个操作z[n] = w[n] * a[n-1] + b[n]a[n] = g[n] ( z[n] )然后,a[n]会作为第n+1层的输入,再重复执行上面两个操作。对...原创 2019-07-13 17:11:57 · 208 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-3-参数随机初始化
随机初始化参数的重要性参数的随机初始化很重要,而不是直接初始化为0对于logistic回归,可以将权重初始化为0。但如果将神经网络的各参数全部初始化为0,再使用梯度下降算法,那会完全无效(把偏置b初始化为0是可行的(当然也可以随机初始化),但是将权重w初始化为0就会出问题)至于为什么我们把w在随机生成后还要乘一个0.01。这是因为我们通常会把w的初始值设定为很小很小的非零随机数。因为...原创 2019-07-13 15:30:36 · 530 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-18-Softmax回归
Softmax回归是一个多分类问题。Softmax函数是一个激活函数。Softmax的原理在下面的内容中,我们用C来表示需要分的类数。最后一层的隐藏单元个数为4,为所分的类的数目,输出的值表示属于每个类的概率。Softmax函数的具体步骤如下图:简单来说有三步:计算z值(4×1矩阵)将z作为指数,得到中间变量t(维度同z)对t归一化,得到a(维度同t,同z)。Soft...原创 2019-07-18 22:19:41 · 382 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-10-指数加权平均法 + 偏差修正
指数加权平均法的介绍展示几个优化算法,指数加权平均是基础(在统计学中被称为指数加权移动平均)。每一状态都等于前一状态×0.9 + 当前状态×0.1即:vt = 0.9vt-1 + 0.1vt 。对于v0,我们初始化为0。当然更常规的公式是vt = β*vt-1 + (1-β)*vt由该公式可知vt可大概视为1/(1+β)的每日温度(向前关注)当β取值越大时,得到的曲线越平缓,因为当前...原创 2019-07-16 17:02:33 · 550 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-11-Momentum梯度下降法
Momentum的原理这个算法肯定要好于没有Momentum的梯度下降算法(This will almost always work better than the straightforword gradient descent algorithm without momentum)。Momentum梯度下降法的基本思想是:计算梯度的指数加权平均数,并用该梯度更新你的权重。在常规梯度下降...原创 2019-07-16 18:12:41 · 365 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-15-局部最优
左图为我们对于低维空间的想象,似乎局部最优广泛存在。梯度下降法或者某个算法可能困在一个局部最优中,而不会抵达全局最优。但这些理解并不正确事实上如果我们要创建一个神经网络,通常梯度为0的点并不是左图中的局部最优点。实际上成本函数的零梯度点通常是鞍点。因为一个具有高维空间的函数,如果梯度为0,那么在每个方向,它可能是凸函数也可能是凹函数。如果在20000维空间中想要得到局部最优,发生概率为2-...原创 2019-07-17 12:17:24 · 459 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-33-为什么使用卷积
和只用全连接层相比,卷积层有两个主要优势:参数共享稀疏连接在这个例子中,如果按全连接层有14M+个参数,而卷积层只有156个参数。卷积网络参数少有两个原因:参数共享(parameter sharing)观察发现,特征检测(如垂直边缘检测)如果适用于图片的某个区域,那么它可能也适用于图片的其他区域。稀疏连接即输出的一个单元只与部分输入(而不是全部输入)有关。较少的参数有...原创 2019-07-24 11:43:27 · 263 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-19-机器学习策略(正交化+单一数字评估指标)
一些策略,一些分析机器学习问题的方法。正交化方法建立机器学习系统的挑战之一是:可以尝试和改变的东西太多了。那些效率很高的机器学习专家有个特点,they are very clear-eyed about what to tune in order to try to achieve one effect.这个操作我们称为正交化。 简单来说就是 One thing at a time。...原创 2019-07-19 15:58:53 · 742 阅读 · 0 评论 -
吴恩达神经网络和深度学习-学习笔记-14-学习率衰减
直观理解和本质对于没有设置学习率衰减的,寻找到成本函数最小值的路径为蓝色(带有噪音,不收敛,最后在最小值周围浮动)对于设置了学习率衰减的,寻找到成本函数最小值的路径为绿色(在初期学习率还大,学习速度相对较快。随着α减小,步伐变小变慢,最后曲线会在最小值附近的一小块区域摆动)学习率α衰减的本质在于:在学习初期可以承受较大的步伐,但当开始收敛的时候,小一些的学习率能让步伐小一些。实现方法常...原创 2019-07-17 10:18:59 · 250 阅读 · 0 评论