深度学习1【吴恩达】

视频链接:1.5 关于这门课_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1FT4y1E74V?p=5&spm_id_from=pageDriver&vd_source=3b6cdacf9e8cb3171856fe2c07acf498

视频中吴恩达老师所有的话语收录:

机器学习初学者-AI入门的宝典 (ai-start.com)icon-default.png?t=N7T8http://www.ai-start.com/这里重点感谢制作上面公益性网站的人,感谢你们花费大量精力翻译,话语收录,祝福你们生活幸福,事业有成。

我为了方便,在听取吴恩达老师的课程之后,根据自己的理解,删除掉自己认为无用(或者简单)的话语,copy你们的部分文本,制作的深度学习笔记。如涉及到侵权问题,请与我联系!!!

如果有人看到了我的博客,我感到非常荣幸。强烈建议您先看吴恩达老师的课程,针对每一节课程看收录笔记,如果有什么不懂的,可以再看我的博客,希望我整理的内容对您有所帮助。

一、第一周课程 

1.1、什么是神经网络

“深度学习”指的是训练神经网络。

以一个房价预测的例子开始:

假设有一个六间房屋的数据集(包含房屋的面积、房屋价格)。现在想要找到一个函数,根据房屋面积预测房价的函数。此时可以利用线性回归,用这些数据来拟合一条直线,这条粗的蓝线就是想要的函数。如下图所示

也许可以把这个房屋加个拟合函数看成是一个非常简单的神经网络。我们把房屋的面积作为神经网络的输入,称之为x,通过这个节点(这个小圈圈),输出了预测价格,用y表示。这个小圆圈就是一个独立的神经元。此时的网络实现了上边这个函数的功能。这个神经元所做的就是输入面积完成线性运算,取不小于0的值最后得到预测价格。

图1.1.2

图1.1中的蓝线(开始为0,后面是一条直线),这种函数被称作ReLU函数(全称是修正线性单元,“修正”指的是取不小于0的值)。

这是一个单神经元网络,是规模很小的神经网络。大一点的神经网络,是把这些单个神经元堆叠起来形成的,比如说:

不仅仅可以用房屋的面积来预测价格,现在你还有一些房屋的其它特征,知道了一些别的信息,比如卧室的数量。这样记下来,你可能想到有一个很重要的因素会影响房屋价格,就是家庭人数,这个性质和面积大小相关,还有卧室的数量能否满足住户的家庭人数需求。你可知道邮编,或许能作为一个特征说明了步行化程度,另外根据邮政编码还能体现富裕程度、附近学校的质量。我画的每一个小圈圈,都可能是一个ReLU,即修正线性单元或者其它的不那么线性的函数,基于房屋面积和卧室数量估算家庭人口、基于邮编可以评估步行化程度、学校质量。最后你可能会想,人们愿意在房屋上花费多少钱,和他们关注什么息息相关。在这个例子中,家庭人口、步行化程度以及学校质量,都能帮助你预测房屋的价格。在这个例子中x是所有的这四个输入,y是预测的价格,把这些独立的神经元叠加起来,现在有了一个稍微大一点的神经网络,当你实现它之后,你要做的只是输入x,就能得到输出y。不管训练集有多大,所有的中间过程它都会自己完成。

图1.1.3

那么你实际上做的就是,这有四个输入的神经网络,输入的特征是房屋面积、卧室的数量,邮政编码和周边的富裕程度。已知这些输入的特征,神经网络的工作就是预测对应的价格。同时也注意到这些圈圈,在一个神经网络中它们被叫做“隐藏单元”。每个的输入都同时来自四个特征,此如说我们不会具体说,第一个节点表示家庭人口,或者说家庭人口仅取决于特征x1和x2,我们会这么说,神经网络你自己决定这个节点是什么,我们只给你四个输入特征随便你怎么计算。因此我们说第一层是输入层。中间的这一层,在神经网络中连接数是很高的,因为输入的每个特征,都连接到了中间的每个圈圈,值得注意的是神经网络,只有你喂给它是够多的数据(关于x和y的数据),给到足够的x、y训练祥本,神经网络非常擅长于计算从x到y的精准映射函数,这就是一个基本的神经网络。你可能发现自己的神经网络,在监督学习的环境下是如此有效和强大。

图1.1.4

 1.2、用神经网络进行监督学习

监督学习是机器学习的一种。

在监督学习中,输入x,会习得一个函数,映射出y。重要的是,需要机智的选择x和y,才能解决待定问题。

其中1、2使用的是 Standard NN(通用标准的神经网络架构);3图像领域里我们经常应用的是卷积神经网络(CNN);4对于序列数据,例如音频中含有时间成分,音频是随着时间播放的,所以音频很自然地被表示为一维时间序列,对于序列数据经常使用循环神经网络(RNN);4、5语言,比如英语和汉语字母或单词都是逐个出现的,所以语言最自然的表示方式也是序列数据,使用更复杂的RNNS;6对于更复杂的应用,比如无人驾驶,你有一张图片可能需要CNN ”卷积神经网络结构” 架构去处理,雷达信息则不一样,需要更加复杂的 混合的神经网络结构。

所以为了更具体地说明,标准的CNN和RNN结构是什么,请看下图:

图1.2.2 

图1.2.3 

图1.2.4 

 数据分为两种,结构化数据、非结构化数据。

二、第二周课程

这周我们将学习神经网络的基础知识,其中需要注意的是,当实现一个神经网络的时候,我们需要知道一些非常重要的技术和技巧。例如有一个包含个样本的训练集,你很可能习惯于用一个for循环来遍历训练集中的每个样本,但是当实现一个神经网络的时候,我们通常不直接使用for循环来遍历整个训练集,所以在这周的课程中你将学会如何处理训练集。

另外在神经网络的计算中,通常先有一个叫做前向暂停(forward pause)或叫做前向传播(foward propagation)的步骤,接着有一个叫做反向暂停(backward pause) 或叫做反向传播(backward propagation)的步骤。所以这周我也会向你介绍为什么神经网络的训练过程可以分为前向传播和反向传播两个独立的部分。

在课程中我将使用逻辑回归(logistic regression)来传达这些想法,以使大家能够更加容易地理解这些概念。即使你之前了解过逻辑回归,我认为这里还是有些新的、有趣的东西等着你去发现和了解,所以现在开始进入正题。

2.1 二分分类(logistic回归)

logistc回归是一个用于二分类(binary classification)的算法。

示例:给你一张图片,输出图片里是否是猫的预测值,1表示是猫,0表示不是猫。假如输入特征向量为x,希望y-hat=P(y=1|x),即给你x输出y=1的概率。此时可以使用sigmod函数,y-hat = sigmod(wx+b)。sigmod函数如下图所示:

2.1.1 logistic回归的损失函数

为了估计模型的好坏,我们需要设计一个损失函数。训练模型,调整参数时,需要计算出可以将损失函数最小化的w和b。

如果将损失函数定义成下图所示,可能会变成非凸函数,出现多个局部最优解。

通常情况下,逻辑回归的损失函数这样定义:

 

注意,损失函数是在单个训练样本中定义的,它衡量了在单个训练样本上的表现。成本函数,它衡量的是在全体训练样本上的表现。逻辑回归的成本函数定义如下图所示:

2.2 梯度下降法

我们已经学习了logistic回归模型,也知道了损失函数(是衡量单一训练样例的效果)、成本函数(用于在全部训练集上来衡量参数w和b的效果)。下面我们讨论如何使用梯度下降法来训练或学习训练集上的参数w和b。

回顾一下,第一行是是熟悉的logistic回归算法,第二行是成本函数J(是参数w和b的函数),他是一个平均值,即1/m的损失函数之和。损失函数可以衡量算法的效果,每一个训练样例都输出y^(i) ,把它和真值标签y (i)进行比较,等于右边展开的完整的公式。

成本函数衡量了参数w和b在训练集上的效果,要习得合适的参数w和b,我们可以想到求出使得成本函数J(w, b)尽可能小的w和b,可以使用梯度下降法解决。具体的实现方法,看以下链接:

机器学习第一周-CSDN博客文章浏览阅读345次。机器学习大致会被划分为两类:监督学习,无监督学习。https://blog.csdn.net/qq_44228301/article/details/133953893

2.3 计算图

一个神经网络的计算,都是按照前向和反向传播过程组织的。我们计算出一个神经网络的输出(这个称为前向过程)。反向传输操作是用来计算出对应的梯度或导数。计算图解释了为什么我们用这种方式组织这些计算过程。下面举一个简单示例:

前向传播:按照流程图,从左到右进行计算,最终得到想要的结果J。

2.3.1 反向传播计算导数

在下图中,我们首先可以计算出J对v的导数为3。再计算v对a的导数为1,v对u的导数为1,再计算J对a的导数3\times1=3(当a变化时,首先影响v的值,v变化量和a相等。v变化后继续影响J,J的变化量是v的三倍),J对u的导数3\times1=3。

这就是反向传播,可以计算出输出量对输入量的偏导数,知道每一个输入量对输出量的影响程度。

流程图中最终的输出量为J,我们规定da就表示dJ/da。因此最终da=3,db=6,dc=9。

2.3.2 逻辑回归中的梯度下降法

下图是逻辑回归的计算图:

目标:求出w1,w2和b,使L(a,y)最小化。反向导图如下图所示:

 同理dw1=x1dz,dw2=x2dz,db=dz。因此梯度下降时,各个形参的变化如下所示:

2.3.3 m个样本的梯度下降

2.3.2中是单个样本的梯度下降算法,现在要把他应用到m个样本上。如下图所示:

下图左边是程序演示,第一行是初始化变量,m表示训练样本的个数。走完for循环后,需要将dw1,dw2,db乘以1/m(也就是平均化)。下图右边是更新w1、w2,b变量。

2.3.4 向量化

向量化是消除代码中显式for循环语句的艺术。下图左边是用for循环计算wTx+b,右边是相同作用的向量化表示方法,但是后者比前者的速度快。

逻辑回归向量化计算方法:

逻辑回归的梯度下降:

完整代码如下图所示: 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值