第一章:1. 神经网络与深度学习:深度学习简介

459 阅读15分钟
深度学习改变了传统互联网业务,例如网络搜索和广告。 但是深度学习同时也使得许多新产品和企业以更多方式帮助人们。 深度学习做的非常好的一个方面就是读取 X 光图像,到生活中的个性化教育,到精准化农业,甚至到驾驶汽车以及其它一些方面。 如果你想要学习深度学习的这些工具,并应用它们来做这些令人窒息的操作,本课程将帮助你做到这一点。
当你完成一系列专项课程,你将能更加自信的继续深度学习之路。 在接下来的十年中,我认为我们所有人都有机会创造一个惊人的世界和社会,这就是 AI 的力量。 我希望你们能在创建 AI 社会的过程中发挥重要作用。
我认为 AI 是最新的电力,大约在一百年前,我们社会的电气化改变了每个主要行业,从交通运输行业到制造业、医疗保健、通讯等方面,我认为如今我们见到了 AI 明显的令人惊讶的能量,带来了同样巨大的转变。 显然,AI 的各个分支中,发展的最为迅速的就是深度学习。 因此现在,深度学习是在科技世界中广受欢迎的一种技巧。
通过这个课程,以及这门课程后面的几门课程,你将获取并且掌握那些技能,下面是你将学习到的内容: 神经网络与深度学习
  • 深度学习概述
  • 神经网络基础之逻辑回归
  • 神经网络基础之Python与向量化
  • 浅层神经网络
  • 深层神经网络
优化深度神经网络
  • ​深 度学习的实用层面
  • 优化算法
  • 超参数调 试、Batch正则化和编程框架
构建机器学习项目
  • 机器学习策略(上)
  • 机器学习策略(下)
卷积神经网络CNN
  • 卷积神经网络基础
  • 深度卷积模型: 案例研究
  • 目标检测
  • 人脸识别与神经风格迁移
序列模型
  • 循环神经网络(RNN)
  • NLP 和 Word Embeddings
  • 序列模型和注意力机制

What is a Neural Network ?

深度学习这个术语是指训练神经网络的过程,有时它指的是特别大规模的神经网络训练。 那么神经网络究竟是什么呢? 在本文中,我会讲解一些直观的基础知识。 让我们从一个房价预测的例子开始讲起: 假设你有一个数据集,它包含了六栋房子的信息。 所以,你知道房屋的面积是多少平方米,并且知道房屋价格。 把房屋面积当左 x 轴,房屋价格当作纵坐标,我们可以绘制出下面的图像:
这时,你想要拟合一个根据房屋面积预测房价的函数,可以理解为找到一条上图中红叉尽可能挨着的线。 如果你对线性回归很熟悉,你可能会得到这样一条直线:
我们知道价格永远不会是负数的,因此,我们把直线弯曲修正一点,让它最终在零结束。 上图蓝色折线就是最终的函数,用于根据房屋面积预测价格。 其实这个简单的模型(蓝色折线)就可以看成是一个神经网络,而且几乎是一个最简单的神经网络。 我们把该房价预测用一个最简单的神经网络模型来表示,如下图所示:
该神经网络的输入 x 是房屋面积,输出 y 是房屋价格,中间包含了一个神经元(neuron),即房价预测函数(蓝色折线)。 该神经元的功能就是实现函数 f(x) 的功能。 现在关注上图的蓝色折线,这个折线代表的函数被称作 ReLU 激活函数,它的全称是 Rectified Linear Unit,rectify(修正)可以理解成 ,这也是得到一个这种形状的函数的原因。 你现在不用担心不理解 ReLU 函数,只需知道它长什么样就可以,你将会在后面再次看到它。
上面讲的只是由单个神经元(输入 x 仅仅是房屋面积一个因素)组成的神经网络,而通常一个大型的神经网络往往由许多神经元组成,就像通过乐高积木搭建复杂物体(例如火车)一样。 现在,我们把上面举的房价预测的例子变得复杂一些,而不是仅仅使用房屋面积一个判断因素。 例如: 除了考虑房屋面积size 之外,我们还考虑卧室数目 #bedrooms 。 这两点实际上与家庭成员的个数 family size 有关。 还有,房屋的邮政编码 zip code/postal code ,代表了该房屋位置的交通便利性,是否需要步行还是开车 ? 即决定了可步行性 walkability  。 另外,还有可能邮政编码和地区财富水平 wealth 共同影响了房屋所在地区的学校质量 school quality 。 对于一个房子价格来说,上述因素都是与它息息相关的事情,家庭人口、步行化程度以及学校的质量都能帮助你预测房屋的价格。 Tips: 你可能知道邮政编码或许能作为一个特征,告诉你步行化程度。 比如这附近是不是高度步行化,你是否能步行去商店或者是学校,以及你是否需要驾驶汽车。 有些人喜欢居住在以步行为主的区域,另外邮政编码还和富裕程度相关,在美国是这样的,但在其它国家也可能体现出附近学校的水平有多好。
如上图所示,该神经网络共有三个神经元,分别代表了 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。 在给定这四个输入后,神经网络所做的就是输出房屋的预测价格 图中,三个神经元所在的位置称之为中间层或者隐藏层( 所在的称之为输入层, 所在的称之为输出层),每个神经元与所有的输入 都有关联。 这就是基本的神经网络模型结构。 在训练的过程中,只要有足够的输入 和输出 ,就能训练出较好的神经网络模型,该模型在此类房价预测问题中,能够得到比较准确的结果。

Supervised Learning with Neural Networks

关于神经网络也有很多的种类,考虑到它们的使用效果,有些使用起来恰到好处.但事实表明,到目前几乎所有由神经网络创造的经济价值,都离不开一种叫做监督学习的机器学习类别,让我们举例看看:
房价预测 在监督学习中你有一些输入 ,你想学习到一个函数来映射到一些输出 ,比如我们之前提到的房价预测的例子,你只要输入有关房屋的一些特征,试着去输出或者估计价格。 在线广告 如今应用深度学习获利最多的一个领域就是在线广告。 根据用户的相关信息,网站就会考虑是否向你展示广告。 神经网络已经非常擅长预测你是否会点开这个广告,通过向用户展示最有可能点开的广告,这就是神经网络在很多家公司提高获利的一种应用。 计算机视觉 计算机视觉在过去的几年里也取得了长足的进步,这也多亏了深度学习。 输入 x 是图片像素值,输出是图片所属的不同类别。 语音识别 深度学习在语音识别方面的进步也非常迅速,你现在可以将音频片段输入神经网络,然后让它输出文本记录。 得益于深度学习,机器翻译也有很大的发展。 你可以利用神经网络输入英语句子,接着输出一个中文句子。 自动驾驶 在自动驾驶技术中,你可以输入一幅图像,就好像一个信息雷达展示汽车前方有什么,据此,你可以训练一个神经网络,来告诉汽车在马路上面具体的位置,这就是神经网络在自动驾驶系统中的一个关键成分。 神经网络类型的轻微不同,可以产生不同的应用,比如说: 应用到我们在上篇文章提到的房地产领域,我们不就使用了一个普遍标准神经网络架构吗? 也许对于房地产和在线广告来说可能使用的是相对的标准一些的神经网络,但是需要根据不同的问题和应用场合,使用不同类型的神经网络模型。 图像应用: 我们经常在神经网络上使用卷积( Convolutional Neural Network ),通常缩写为 CNN。 音频、语言: 比如音频,一维时间序列( one-dimensional time series / temporal sequence ),对于序列数据,经常使用RNN( Recurrent Neural Network )。 英语和汉语字母表或单词都是逐个出现的,所以语言也是最自然的序列数据,因此更复杂的 RNNs 版本经常用于这些应用。 自动驾驶: 对于更复杂的应用比如自动驾驶,你有一张图片,可能会显示更多的 CNN 卷积神经网络结构,其中的雷达信息是完全不同的,你可能会有一个定制、复杂的混合的神经网络结构。 所以为了更具体地说明什么是标准的 CNN 和 RNN结构,我们看下图:
其中 Standard NN 是一个标准的神经网络结构,Convolutional NN这是一个卷积神经网络的例子,Recurrent NN 是递归神经网络的例子,它非常适合一维序列,数据可能是一个时间组成部分。 你可能也听说过机器学习对于结构化数据和非结构化数据的应用,结构化数据意味着数据的基本数据库。 如下图所示,在房价预测中,你可能有一个数据库,有专门的几列数据告诉你卧室的大小和数量,这就是结构化数据。 或预测用户是否会点击广告,你可能会得到关于用户的信息,比如年龄以及关于广告的一些信息,然后对你的预测分类标注,这就是结构化数据,意思是每个特征都有一个很好的定义,比如说房屋大小卧室数量,或者是一个用户的年龄。 相反非结构化数据是指比如音频,原始音频或者你想要识别的图像或文本中的内容。 这里的特征可能是图像中的像素值或文本中的单个单词。
从历史经验上看,处理非结构化数据是很难的,与结构化数据比较,让计算机理解非结构化数据很难,而人类进化得非常善于理解音频信号和图像,文本是一个更近代的发明,但是人们更擅长解读非结构化数据。 多亏了深度学习和神经网络,计算机现在能更好地解释非结构化数据,这是与几年前相比的结果,许多新的应用被使用,语音识别、图像识别、自然语言文字处理,甚至可能比两三年前的还要多。 但结果也表明,神经网络在许多短期经济价值的创造,也是基于结构化数据的。 比如更好的广告系统、更好的利润建议,还有更好的处理大数据的能力。 许多公司不得不根据神经网络做出准确的预测。 因此在这篇笔记中,我们将要讨论的许多技术都将适用,不论是对结构化数据还是非结构化数据。 我希望你能发现,神经网络算法对于结构化和非结构化数据都有用处。

Why is Deep Learning taking off?

如果说深度学习和神经网络背后的技术思想已经出现数十年了,那么为什么直到现在才开始发挥作用呢 ? 接下来,我们来看一下深度学习背后的主要动力是什么,方便我们更好地理解并使用深度学习来解决更多问题。 深度学习为什么这么强大? 下面我们用一张图来说明。 如下图所示,横坐标 x 表示数据量(Amount of data),纵坐标 y表示机器学习模型的性能表现(Performance)。
上图共有4条曲线: 其中,最底下的那条红色曲线代表了传统机器学习算法的表现,例如是 SVM,logistic regression,decision tree 等。 当数据量比较小的时候,传统学习模型的表现是比较好的。 但是当数据量很大的时候,其表现很一般,性能基本趋于水平。 红色曲线上面的那条黄色曲线代表了规模较小的神经网络模型(Small NN)。 它在数据量较大时候的性能优于传统的机器学习算法。 黄色曲线上面的蓝色曲线代表了规模中等的神经网络模型(Media NN),它在在数据量更大的时候的表现比 Small NN 更好。 最上面的那条绿色曲线代表更大规模的神经网络(Large NN),即深度学习模型。 从图中可以看到,在数据量很大的时候,它的表现仍然是最好的,而且基本上保持了较快上升的趋势。 值得一提的是,近些年来,由于数字计算机的普及,人类进入了大数据时代,每时每分,互联网上的数据是海量的、庞大的。 如何对大数据建立稳健准确的学习模型变得尤为重要。 传统机器学习算法在数据量较大的时候,性能一般,很难再有提升。 然而,深度学习模型由于网络复杂,对大数据的处理和分析非常有效。 所以,近些年来,在处理海量数据和建立复杂准确的学习模型方面,深度学习有着非常不错的表现。 然而,在数据量不大的时候,例如上图中左边区域,深度学习模型不一定优于传统机器学习算法,性能差异可能并不大。 所以说,现在深度学习如此强大的原因归结为三个因素:
  • Data
  • Computation
  • Algorithms
其中,数据量的几何级数增加,加上 GPU 出现、计算机运算能力的大大提升,使得深度学习能够应用得更加广泛。 另外,算法上的创新和改进让深度学习的性能和速度也大大提升。 举个算法改进的例子,之前神经网络神经元的激活函数是Sigmoid 函数,后来改成了 ReLU 函数。 之所以这样更改的原因是对于 Sigmoid 函数,在远离零点的位置,函数曲线非常平缓,其梯度趋于 0,所以造成神经网络模型学习速度变得很慢。 然而,ReLU 函数在 x 大于零的区域,其梯度始终为 1,尽管在 x 小于零的区域梯度为 0,但是在实际应用中采用 ReLU 函数确实要比 Sigmoid 函数快很多。
如上图所示: 构建一个深度学习的流程是首先产生 Idea,然后将 Idea 转化为 Code,最后进行 Experiment。 接着根据结果修改 Idea,继续这种 Idea->Code->Experiment 的循环,直到最终训练得到表现不错的深度学习网络模型。 如果计算速度越快,每一步骤耗时越少,那么上述循环越能高效进行。 关注我: 欢迎关注我的微信公众号「王改改」,一个专注于算法的原创公众号。 关注后回复「文章」即可获取历史发布的原创笔记。 ​

▲扫描关注,获取更多推送