神经网络和深度学习Neural Networks and Deep Learning:
第一周:深度学习引言(Introduction to Deep Learning)
1.1 欢迎(Welcome)
1.2 什么是神经网络?(What is a Neural Network)
1.3 神经网络的监督学习(Supervised Learning with Neural Networks)
1.4 为什么深度学习会兴起?(Why is Deep Learning taking off?)
1.5 关于这门课(About this Course)
试题练习
将学习到的内容
第一门课中 神经网络和深度学习,学习如何建立神经网络(包含一个深度神经网络)以及如何在数据上面训练它们,本课程结尾,将用一个神经网络进行辨认猫。
第二门课中 将进行深度学习方面的实际,学习严格地构建神经网络,将要学习超参数调整、正则化、诊断偏差和方差以及高级优化算法,比如Momentum和Adam算法。
第三门课中 将学习如何结构化你的机器学习工程。构建机器学习系统的策略改变了深度学习的错误,也将了解端到端的深度学习。
举个例子,分割数据的方式,分割成训练集、比较集或改变的验证集,以及测试集合,改变了深度学习的错误。
第四门课中:将会提到卷积神经网络 CNNs,它经常被用于图像领域,将学习如何搭建这样的模型。
第五门课中,将会学习到序列模型,以及如何将应用其于自然语言处理,序列模型包括的模型有循环神经网络(RNN)、全称是长短期记忆网络(LSTM)。你将在课程五中了解其中的时期是什么含义,并且有能力应用到自然语言处理(NLP)问题。
常用深度学习 Deep Learning 的术语来指训练神经网络的过程。有时它指的是特别大规模的神经网络训练。
举一个房价预测的例子。 假设有一组数据集,包含六栋房子的信息,已知每个房子的面积(输入x) ,还知道其对应的每个房子的价格(输出y)。根据这些输入和输出,我们建立一个函数模型,来预测房价:y=f(x)。将已知的房子的面积和价格关系绘制在二维平面上,如下图所示:
一般情况下,会用一条直线来拟合图中这些离散点,即建立面积与房价的线性模型。但是从现实考虑,知道房价永远不会是负数。所以需要对直线做一点修正,当面积小于某个值时,价格始终为零,如下图所示,蓝色折现就是建立的房价预测模型。
作为一个最简单的神经网络(蓝色折线),我们把房屋的面积作为神经网络的输入x,通过中间的神经元,最终输出y是房屋价格,
上图神经元的预测函数(蓝色折线),从趋向于零开始,然后变成了一条直线,这个函数被称作ReLU激活函数,即线性整流函数(Rectified Linear Unit),如下图
上面讲的只是由单个神经元(输入x只是房屋面积一个因素)组成的神经网络,而通常一个大型的神经网络往往是由许多神经元组成。
现在,把上面的房价预测例子变得复杂一些,除了考虑房屋面积(size)之外,我们还考虑卧室数目(#bedrooms)。这两点实际上与家庭成员的个数(family size)有关。还有,房屋的邮政编码(zip code/postal code),代表了该房屋位置的交通便利性,是否需要步行还是开车?即决定了可步行性(walkability)。另外,还有可能邮政编码和地区财富水平(wealth)共同影响了房屋所在地区的学校质量(school quality)。如下图所示,该神经网络共有三个神经元,分别代表了family size,walkability和school quality。每一个神经元都包含了一个ReLU函数(或者其它非线性函数)。那么,根据这个模型,我们可以根据房屋的面积和卧室个数来估计family size,根据邮政编码来估计walkability,根据邮政编码和财富水平来估计school quality。最后,由family size,walkability和school quality等这些人们比较关心的因素来预测最终的房屋价格。
所以,在这个例子中,输入x是size,#bedrooms,zip code/postal code和wealth这四个输入;y是房屋的预测价格。这个神经网络模型包含的神经元个数更多一些,相对之前的单个神经元的模型要更加复杂。那么,在建立一个表现良好的神经网络模型之后,在给定输入x时,就能得到比较好的输出y,即房屋的预测价格。
实际上,上面这个例子真正的神经网络模型结构如下所示。它有四个输入,分别是size,#bedrooms,zip code和wealth。在给定这四个输入后,神经网络所做的就是输出房屋的预测价格y。图中,三个神经元所在的位置称之为中间层或者隐藏层(x所在的称之为输入层,y所在的称之为输出层),每个神经元与所有的输入x都有关联(直线相连)。
值得注意的是神经网络给予了足够多的关于𝑥和𝑦的数据,给予了足够的训练样本有关𝑥和𝑦。神经网络非常擅长计算从𝑥到𝑦的精准映射函数。
到目前几乎所有由神经网络创造的经济价值,本质上都离不开一种叫做监督学习的机器学习类别,监督式学习与非监督式学习本质区别就是是否已知训练样本的输出y。举例:在监督学习中你有一些输入𝑥,你想学习到一个函数来映射到一些输出𝑦,首先,第一个例子还是房屋价格预测。根据训练样本的输入x和输出y,训练神经网络模型,预测房价。第二个例子是线上广告,这是深度学习最广泛、最赚钱的应用之一。其中,输入x是广告和用户个人信息,输出y是用户是否对广告进行点击。神经网络模型经过训练,能够根据广告类型和用户信息对用户的点击行为进行预测,从而向用户提供用户自己可能感兴趣的广告。第三个例子是电脑视觉(computer vision)。电脑视觉是近些年来越来越火的课题,而电脑视觉发展迅速的原因很大程度上是得益于深度学习。其中,输入x是图片像素值,输出是图片所属的不同类别。第四个例子是语音识别(speech recognition)。深度学习可以将一段语音信号辨识为相应的文字信息。第五个例子是智能翻译,例如通过神经网络输入英文,然后直接输出中文。除此之外,第六个例子是自动驾驶。通过输入一张图片或者汽车雷达信息,神经网络通过训练来告诉你相应的路况信息并作出相应的决策。至此,神经网络配合监督式学习,其应用是非常广泛的。
对于一般的监督式学习(房价预测和线上广告问题),我们只要使用标准的神经网络模型就可以了。对于图像应用,我们经常在神经网络上使用卷积(Convolutional Neural Network),通常缩写为CNN。对于序列数据,例如音频,有一个时间组件,随着时间的推移,音频被播放出来,所以音频是最自然的表现。作为一维时间序列(两种英文说法one-dimensional time series / temporal sequence).对于序列数据,经常使用RNN,一种递归神经网络(Recurrent Neural Network),语言,英语和汉语字母表或单词都是逐个出现的,所以语言也是最自然的序列数据,因此更复杂的RNNs版本经常用于这些应用。
递归神经网络(RNN)非常适合这种一维序列,数据可能是一个时间组成部分。
CNN一般处理图像问题,RNN一般处理语音信号。他们的结构是什么意思?如何实现CNN和RNN的结构?这些问题我们将在以后的课程中来深入分析并解决。
数据类型一般分为两种:Structured Data和Unstructured Data。
你可能也听说过机器学习对于结构化数据和非结构化数据的应用,结构化数据意味着数据的基本数据库。例如在房价预测中,你可能有一个数据库,有专门的几列数据告诉你卧室的大小和数量,这就是结构化数据。或预测用户是否会点击广告,你可能会得到关于用户的信息,比如年龄以及关于广告的一些信息,然后对你的预测分类标注,这就是结构化数据,意思是每个特征,比如说房屋大小卧室数量,或者是一个用户的年龄,都有一个很好的定义。 相反非结构化数据是指比如音频,原始音频或者你想要识别的图像或文本中的内容。这里的特征可能是图像中的像素值或文本中的单个单词。
数据规模、计算量及算法的创新推动了深度学习变得热门的主要因素。
深度学习为什么这么强大?下面我们用一张图来说明。如下图所示,横坐标x表示数据量(Amount of data),纵坐标y表示机器学习模型的性能表现(Performance)。
上图共有4条曲线。其中,最底下的那条红色曲线代表了传统机器学习算法的表现,例如是SVM,logistic regression,decision tree等。当数据量比较小的时候,传统学习模型的表现是比较好的。但是当数据量很大的时候,其表现很一般,性能基本趋于水平。红色曲线上面的那条黄色曲线代表了规模较小的神经网络模型(Small NN)。它在数据量较大时候的性能优于传统的机器学习算法。黄色曲线上面的蓝色曲线代表了规模中等的神经网络模型(Media NN),它在在数据量更大的时候的表现比Small NN更好。最上面的那条绿色曲线代表更大规模的神经网络(Large NN),即深度学习模型。从图中可以看到,在数据量很大的时候,它的表现仍然是最好的,而且基本上保持了较快上升的趋势。值得一提的是,近些年来,由于数字计算机的普及,人类进入了大数据时代,每时每分,互联网上的数据是海量的、庞大的。如何对大数据建立稳健准确的学习模型变得尤为重要。传统机器学习算法在数据量较大的时候,性能一般,很难再有提升。然而,深度学习模型由于网络复杂,对大数据的处理和分析非常有效。所以,近些年来,在处理海量数据和建立复杂准确的学习模型方面,深度学习有着非常不错的表现。然而,在数据量不大的时候,例如上图中左边区域,深度学习模型不一定优于传统机器学习算法,性能差异可能并不大。深度学习强大的原因:Data Computation Algorithms。
深度学习如此强大的原因归结为三个因素:
* Data:数据量变大,模型性能提高
* Computation:计算能力增加,深度学习应用广泛
* Algorithms:算法提升,模型性能和计算速度提高,并且学习过程迭代加快
在这个小的训练集中,各种算法的优先级事实上定义的也不是很明确,所以如果你没有大量的训练集,那效果会取决于你的特征工程能力,那将决定最终的性能。假设有些人训练出了一个SVM(支持向量机)表现的更接近正确特征,然而有些人训练的规模大一些,可能在这个小的训练集中SVM算法可以做的更好。
构建一个深度学习的流程是首先产生Idea,然后将Idea转化为Code,最后进行Experiment。接着根据结果修改Idea,继续这种Idea->Code->Experiment的循环,直到最终训练得到表现不错的深度学习网络模型。如果计算速度越快,每一步骤耗时越少,那么上述循环越能高效进行。
1.Neural Networks and Deep Learning
2.Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
3.Structuring your Machine Learning project
4.Convolutional Neural Networks
5.Natural Language Processing: Building sequence models
下面是关于第一门课的一些细节,这门课有四周的学习资料:
第一周:关于深度学习的介绍。在每一周的结尾也会有十个多选题用来检验自己对材料的理解;
第二周:关于神经网络的编程知识,了解神经网络的结构,逐步完善算法并思考如何使得神经网络高效地实现。从第二周开始做一些编程训练(付费项目),自己实现算法;
第三周:在学习了神经网络编程的框架之后,你将可以编写一个隐藏层神经网络,所以需要学习所有必须的关键概念来实现神经网络的工作;
第四周:建立一个深层的神经网络。
本节课的内容比较简单,主要对深度学习进行了简要概述。
首先,我们使用房价预测的例子来建立最简单的但个神经元组成的神经网络模型。然后,我们将将例子复杂化,建立标准的神经网络模型结构。接着,我们从监督式学习入手,介绍了不同的神经网络类型,包括Standard NN,CNN和RNN。不同的神经网络模型适合处理不同类型的问题。对数据集本身来说,分为Structured Data和Unstructured Data。近些年来,深度学习对Unstructured Data的处理能力大大提高,例如图像处理、语音识别和语言翻译等。最后,我们用一张对比图片解释了深度学习现在飞速发展、功能强大的原因。
归纳其原因包含三点:Data,Computation和Algorithms。
试题练习
第 1 题
“人工智能是新电力”这个比喻指的是什么?
A.人工智能为我们的家庭和办公室的个人设备供电,类似于电力。
B.通过“智能电网”,人工智能正在传递新一波的电力。
C.人工智能在计算机上运行,因此由电力驱动,但它让计算机做以前不可能做的事情。
D.与100年前开始的电力类似,人工智能正在改变多个行业。
第 2 题
以下哪些是最近深度学习开始崛起的原因?(选出所有答案)
A.我们拥有了更多的计算能力
B.神经网络是一个崭新的领域。
C.我们有了更多的数据。
D.深度学习在诸如在线广告、语音识别和图像识别等重要应用方面取得了显著的改进。
第 3 题
回想一下这个机器学习迭代的图。以下哪项陈述是正确的?(选出所有正确项)
A.能够快速地尝试各种想法可以让深入学习的工程师更快地迭代。
B.更快的计算有助于加快团队迭代一个好主意所需的时间。
C.在大数据集上训练比在小数据集上训练更快。
D.深度学习算法的最新进展使我们能够更快地训练好的模型(即使不改变CPU/GPU硬件)。
第 4 题
当一个有经验的深度学习工程师处理一个新问题时,他们通常可以在第一次尝试时利用以前问题的洞察力来训练一个好的模型,而不需要在不同的模型中重复多次。
A.对
B.不对
第 5 题
这些图中的哪一个表示ReLU激活函数?
第 6 题
用于猫识别的图像是“结构化”数据的一个例子,因为它在计算机中表示为结构化的数组。
A.对
B.不对
第 7 题
人口数据集包含不同城市人口、人均GDP、经济增长的统计数据,这是“非结构化”数据的一个例子,因为它包含来自不同来源的数据。
A.对
B.不对
第 8 题
为什么RNN(递归神经网络)被用于机器翻译,比如说将英语翻译成法语?(选出所有正确项)
A.它可以训练成一个有监督的学习问题
B.它比卷积神经网络(CNN)更强大
C.当输入/输出是一个序列(例如,一个单词序列)时适用
D.RNN表示 想法->代码->实验->想法->… 的循环过程
第 9 题
在这PPT截图中,水平轴(X轴)和垂直轴(Y轴)代表什么?
A.X轴代表数据量,Y轴代表模型规模
B.X轴代表数据量,Y轴代表模型表现
C.X轴代表模型表现,Y轴代表数据量
D.X轴代表模型的输入,Y轴代表输出
第 10 题
假设前一个问题中所描述的趋势是准确的(并且希望你的坐标轴标签正确),下列哪一个是正确的?(选出所有正确项)
A.增加训练集的大小通常不会影响算法的性能,而且可能会有很大帮助。
B.增加神经网络的规模通常不会影响算法的性能,而且可能会有很大帮助。
C.减小训练集的大小通常不会影响算法的性能,而且可能会有很大帮助。
D.减小神经网络的规模通常不会影响算法的性能,而且可能会有很大帮助。
1-10题 答案
1.D 2.ACD 3.ABD 4.B 5.C 6.B 7.B 8.AC 9.B 10.AB