教程是本人学习吴恩达老师DeepLearing系列课程中整理的最为详细的学习笔记。学习视频主要来自B站[双语字幕]吴恩达深度学习deeplearning.ai_哔哩哔哩_bilibili?,以及DeepLearning官方网站Deep Learning by deeplearning.ai | Coursera。该系列课程总共有180多个,我会将学习笔记陆续分享出来,为有兴趣深度学习的同仁提供便利。再次由衷感谢吴恩达老师的精彩讲解和无私奉献!
特别说明:图片来源于吴恩达老师视频截图。
“深度学习”指的是训练神经网络,有时候规模很大。那么,神经网络究竟是什么呢?
先从一个房价预测的例子开始。假设有一个六间房屋的数据集,已知房屋的面积(单位是平方英尺或平方米)、房屋价格,想要找到一个函数,根据房屋面积预测房价的函数。
如果你懂线性回归,你可能会说,“好吧,用这些数据来拟合一条直线”,于是你可能会得到下面这样一条直线。
但奇怪的是,你可能也知道,价格永远不会为负,因此直线不太合适,它最后会让价格为负。我们在这里弯曲一点,让它结束于0。这条粗的蓝线就是你要的函数。
根据房屋面积预测价格,在开始端为0,后面的直线段拟合的也很好。你也许可以把这个房屋加个拟合函数,看成是一个非常简单的神经网络。这几乎是最简单的神经网络了。
我们把房屋的面积作为神经网络的输入,称之为x。通过这个小圈圈的节点,最后输出了价格,用y表示。
这个小圆圈的节点就是一个独立的神经元。你的网络实现了左边
这个函数的功能。这个神经元所做的就是输入面积,完成线性运算,取不小于0的值,最后得到输入预测价格。
神经网络中经常看到这个函数,这个函数一开始是0,然后就是一条直线。这个函数被称为ReLU函数(Rectified Linear Unit),全称是“修正线性单元”,“修正”指的是取不小于的值。
这就是一个单神经元网络,规模很小的神经元网络。大一点的神经网络是把这些单个神经元堆叠起来形成的。你可以把这些神经元想象成单独的乐高积木。你通过搭积木来构建一个更大的神经网络。
来看一个不仅仅用房屋的面积来预测价格的例子。现在你还有一些房屋的其他特征,知道了一些别的信息,比如卧室的数量。你可能想到还有一个很重要的因素会影响房屋价格,就是“家庭人数”。这个房屋能住下一个三口之家、四口之家,或者五口之家。这个性质和面积大小相关,还有卧室的数量能否满足住户的家庭人数需求。
你可能知道邮编,在一些国家也被成为邮政编码。邮编或许能作为一个特征,说明了步行化程度,这附近是不是高度步行化?你是否能步行去杂货店或者是学校?是否需要开车?有些人喜欢高度步行化的地方。另外根据邮政编码,还有富裕程度(在美国是这样的,其他国家也可能一样)体现了附近学校的质量
。
图中的每一个圈,都可能是一个ReLU,即“修正线性单元”,或者其他的不那么线性的函数。基于房屋面积和卧室数量,你可以估算家庭人口。基于邮编,你可以评估步行化程度。基于邮编,你还可以评估学校质量。最后,你可能会想,人们愿意在房屋上花费多少钱和他们关注什么息息相关。在这个例子中,家庭人口、步行化程度以及学校质量,能帮你预测房屋的价格
。
在这个例子中,x是所有的这四个输入,y是预测的价格。把这些所有的独立的神经元叠加起来,就形成了一个稍大一点的神经网络。神经网络的一部分神奇之处在于,当你实现它以后,你要做的只是输入x,就能得到输入出y,不管训练集有多大,所有过程它都会自动完成。
那么实际上要做的就是,这有四个输入的神经元,输入的特征可能是卧室的数量、邮政编码和周边的富裕程度。已知这些输入的特征,神经网络的工作就是预测对应的价格。同时也注意到,这些圆圈
,在一个神经网络中,它们被叫做“隐藏单元”。每个输入都是来自四个特征。比如说,我们不会具体的说,第一个节点表示家庭人口,或者家庭人口取决于特征x1和x2。我们会这么说,神经网络你自己觉得这个节点是什么?
我们只给你四个输入特征,随便你怎么计算。因此我们说这一层
叫“输入层”,在中间的这一层
,在神经网络中,连接数是很高的,都连接到了中间的每一个圆圈。值得注意的是,对于神经网络,只要你喂给它足够多的数据,关于x和y的数据,给到足够的x、y训练样本,神经网络非常擅长于计算从x到y的精准映射函数
。
这就是一个基本的神经网络。你可能发现,自己的神经网络在监督学习的环境下是如此的有效和强大。也就是说,你只要尝试输入一个x,即可把它映射成y,像我们在刚在房屋价格预测的例子中看到的。在下一个视频中,你会看到很多监督学习的例子,有些例子会让你觉得你的神经网络对你的应用场景非常有帮助。