视频链接:1.5 关于这门课_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1FT4y1E74V?p=5&spm_id_from=pageDriver&vd_source=3b6cdacf9e8cb3171856fe2c07acf498
视频中吴恩达老师所有的话语收录:
机器学习初学者-AI入门的宝典 (ai-start.com)http://www.ai-start.com/这里重点感谢制作上面公益性网站的人,感谢你们花费大量精力翻译,话语收录,祝福你们生活幸福,事业有成。
我为了方便,在听取吴恩达老师的课程之后,根据自己的理解,删除掉自己认为无用(或者简单)的话语,copy你们的部分文本,制作的深度学习笔记。如涉及到侵权问题,请与我联系!!!
如果有人看到了我的博客,我感到非常荣幸。强烈建议您先看吴恩达老师的课程,针对每一节课程看收录笔记,如果有什么不懂的,可以再看我的博客,希望我整理的内容对您有所帮助。
一、第一周课程
1.1、什么是神经网络
“深度学习”指的是训练神经网络。
以一个房价预测的例子开始:
假设有一个六间房屋的数据集(包含房屋的面积、房屋价格)。现在想要找到一个函数,根据房屋面积预测房价的函数。此时可以利用线性回归,用这些数据来拟合一条直线,这条粗的蓝线就是想要的函数。如下图所示
图1.1.1
也许可以把这个房屋加个拟合函数看成是一个非常简单的神经网络。我们把房屋的面积作为神经网络的输入,称之为x,通过这个节点(这个小圈圈),输出了预测价格,用y表示。这个小圆圈就是一个独立的神经元。此时的网络实现了上边这个函数的功能。这个神经元所做的就是输入面积完成线性运算,取不小于0的值最后得到预测价格。
图1.1.2
图1.1中的蓝线(开始为0,后面是一条直线),这种函数被称作ReLU函数(全称是修正线性单元,“修正”指的是取不小于0的值)。
这是一个单神经元网络,是规模很小的神经网络。大一点的神经网络,是把这些单个神经元堆叠起来形成的,比如说:
不仅仅可以用房屋的面积来预测价格,现在你还有一些房屋的其它特征,知道了一些别的信息,比如卧室的数量。这样记下来,你可能想到有一个很重要的因素会影响房屋价格,就是家庭人数,这个性质和面积大小相关,还有卧室的数量能否满足住户的家庭人数需求。你可知道邮编,或许能作为一个特征说明了步行化程度,另外根据邮政编码还能体现富裕程度、附近学校的质量。我画的每一个小圈圈,都可能是一个ReLU,即修正线性单元或者其它的不那么线性的函数,基于房屋面积和卧室数量估算家庭人口、基于邮编可以评估步行化程度、学校质量。最后你可能会想,人们愿意在房屋上花费多少钱,和他们关注什么息息相关。在这个例子中,家庭人口、步行化程度以及学校质量,都能帮助你预测房屋的价格。在这个例子中x是所有的这四个输入,y是预测的价格,把这些独立的神经元叠加起来,现在有了一个稍微大一点的神经网络,当你实现它之后,你要做的只是输入x,就能得到输出y。不管训练集有多大,所有的中间过程它都会自己完成。
图1.1.3
那么你实际上做的就是,这有四个输入的神经网络,输入的特征是房屋面积、卧室的数量,邮政编码和周边的富裕程度。已知这些输入的特征,神经网络的工作就是预测对应的价格。同时也注意到这些圈圈,在一个神经网络中它们被叫做“隐藏单元”。每个的输入都同时来自四个特征,此如说我们不会具体说,第一个节点表示家庭人口,或者说家庭人口仅取决于特征x1和x2,我们会这么说,神经网络你自己决定这个节点是什么,我们只给你四个输入特征随便你怎么计算。因此我们说第一层是输入层。中间的这一层,在神经网络中连接数是很高的,因为输入的每个特征,都连接到了中间的每个圈圈,值得注意的是神经网络,只有你喂给它是够多的数据(关于和y的数据),给到足够的x、y训练祥本,神经网络非常擅长于计算从x到y的精准映射函数,这就是一个基本的神经网络。你可能发现自己的神经网络,在监督学习的环境下是如此有效和强大。
图1.1.4
1.2、用神经网络进行监督学习
监督学习是机器学习的一种。
在监督学习中,输入x,会习得一个函数,映射出y。重要的是,需要机智的选择x和y,才能解决待定问题。
图1.2.1
其中1、2使用的是 Standard NN(通用标准的神经网络架构);3图像领域里我们经常应用的是卷积神经网络(CNN);4对于序列数据,例如音频中含有时间成分,音频是随着时间播放的,所以音频很自然地被表示为一维时间序列,对于序列数据经常使用循环神经网络(RNN);4、5语言,比如英语和汉语字母或单词都是逐个出现的,所以语言最自然的表示方式也是序列数据,使用更复杂的RNNS;6对于更复杂的应用,比如无人驾驶,你有一张图片可能需要CNN ”卷积神经网络结构” 架构去处理,雷达信息则不一样,需要更加复杂的 混合的神经网络结构。
所以为了更具体地说明,标准的CNN和RNN结构是什么,请看下图:
图1.2.2
图1.2.3
图1.2.4
数据分为两种,结构化数据、非结构化数据。
图1.2.5
二、第二周课程
这周我们将学习神经网络的基础知识,其中需要注意的是,当实现一个神经网络的时候,我们需要知道一些非常重要的技术和技巧。例如有一个包含个样本的训练集,你很可能习惯于用一个for循环来遍历训练集中的每个样本,但是当实现一个神经网络的时候,我们通常不直接使用for循环来遍历整个训练集,所以在这周的课程中你将学会如何处理训练集。
另外在神经网络的计算中,通常先有一个叫做前向暂停(forward pause)或叫做前向传播(foward propagation)的步骤,接着有一个叫做反向暂停(backward pause) 或叫做反向传播(backward propagation)的步骤。所以这周我也会向你介绍为什么神经网络的训练过程可以分为前向传播和反向传播两个独立的部分。
在课程中我将使用逻辑回归(logistic regression)来传达这些想法,以使大家能够更加容易地理解这些概念。即使你之前了解过逻辑回归,我认为这里还是有些新的、有趣的东西等着你去发现和了解,所以现在开始进入正题。
2.1 二分分类(logistic回归)
logistc回归是一个用于二分类(binary classification)的算法。
2.2 logistic回归的假设函数
2.3 logistic回归的损失函数
2.4 梯度下降法
我们已经学习了logistic回归模型,也知道了损失函数(是衡量单一训练样例的效果)、成本函数(用于在全部训练集上来衡量参数w和b的效果)。下面我们讨论如何使用梯度下降法来训练或学习训练集上的参数w和b。
回顾一下,第一行是是熟悉的logistic回归算法,第二行是成本函数J(是参数w和b的函数),他是一个平均值,即1/m的损失函数之和。损失函数可以衡量算法的效果,每一个训练样例都输出y^(i),把它和真值标签y (i)进行比较,等于右边展开的完整的公式。
成本函数衡量了参数w和b在训练集上的效果,要习得合适的参数w和b,我们可以想到求出使得成本函数J(w, b)尽可能小的w和b,下面来看看梯度下降法:
以下内容可以直接看笔记原文,从梯度下降法的形象化说明开始看!!!
修改1:
我们之所以使用logistic回归的这个特定成本函数J(w.b) ,是因为它是凸函数。为了找到更好的参数值,我们要做的就是用某初始值初始化w和b。
补充2:
对这张图片进行补充
梯度下降法所做的就是从初始点开始,朝最陡的下坡方向走一 步,在梯度下降一步后,或许在那里停下,因为它正试图沿着最快下降的方向往下走,或者说尽可能快地往下走,这是梯度下降的一次迭代。两次迭代或许会到达那里,或者二次...等等。下图中,隐藏在图上的曲线很有希望收敛到这个全局最优解或接近全局最优解。