本文是吴恩达深度学习第一课:神经网络与深度学习的笔记。神经网络与深度学习主要讨论了如何建立神经网络(包括一个深度神经网络)、以及如何训练这个网络。
第一课有以下四个部分,本文是第一部分。
需要机器学习基础
假设我们知道六个房屋价格样本,特征是房屋大小。它们的分布如上图,纵轴是房屋价格,标签。横轴是特征房屋大小。
我们知道通过一条直线可以拟合只写样本点,并且房屋价格不会是负数,因此画出了上面这样一条直线。
我们可以把刚才得到的拟合房屋价格的函数看成是一个最简单的神经网络(Neural Network,NN)。
我们输入了房屋大小Size,通过刚才的拟合函数可以得到一个价格的输出。
这个拟合函数可以看成是神经网络中的神经元(Neuron)。
这个神经元的作用是接收输入,进行线性运算,取不小于0的值,最后得到预测价格。
刚才这个函数叫ReLu(Rectified Linear Unit,修正线性单元),它的函数图像是下面这样的
修正指的是函数取不小于0的值,它也是一种激活函数,就像Sigmoid函数,后面还会看到。
这只是一个简单的单神经元网络,大一点的神经网络是把这个单神经元堆叠起来而形成的。
下面来看个例子,假设我们不仅通过房屋的大小(size)来预测价格(price),我们还通过卧室的数量(bedrooms)、邮编(zip code,代表能否步行去学校、超市,说的是交通便利性)、富裕程度(wealth)这四个特征来决定。
然后Size和bedrooms能说明适合多大的家庭;zip code代表交通便利;zip code和富裕程度可能决定附近学校的质量。
上面每一个圆圈都代表一个ReLu,一个神经元。输入size和bedrooms可以得到家庭大小;输入zip code可以得到交通便利情况等等。
家庭大小、交通便利情况以及学校质量又可以作为最后一个神经元的输入,经过ReLu得到最终的房屋价格。
这里x
表示上面的输入(size,bedrooms,zip code,wealth) y
表示价格的输出。
神经网络的神奇之处在于,我们只要输入x
,就能得到输出y
,中间的这些family size,school quality等等是神经网络自己帮我们计算的。
上面我们就得到了这样一个神经网络:
我们用 x 1 x_1 x1到 x 4 x_4 x4分别表示size到wealth,这一层称为输入层(Input layer);
中间的有两层,其中一层有3个神经元,另一层只有1个神经元,叫隐藏层(Hidden layer)
最后输出 y y y,也可以看成一层,叫输出层(Output layer)
如今几乎所有由神经网络创造的经济价值都基于监督学习。
下面简单的看一些应用。
Input(x) | Output(y) | 应用 |
---|---|---|
房屋特征 | 房屋价格 | 房地产(常用标准的神经网络) |
广告信息、用户信息 | 该用户是否会点击广告(0/1) | 在线广告(标准的神经网络) |
图像 | 物体 | 给照片打标签(卷积神经网络) |
语音 | 文本 | 语音识别(循环神经网络) |
英文 | 中文 | 机器翻译(更复杂的循环神经网络) |
汽车前方的图像以及雷达信息 | 汽车的位置 | 自动驾驶(混合神经网络) |
你可能会听过结构化数据与非结构化数据。
用像数据库中的表保存的数据就是结构化数据;语音、图像以及文本是非结构化数据。
结构化数据的每个特征都有清晰的定义,而非结构化数据中的特征可能是图像中的某个像素或是文本中的某个单词。非结构化数据更难让计算机理解。
幸运的是,我们有神经网络技术。通过神经网络技术可以让计算机很好的理解非结构化数据。
因此我们说规模推动着神经网络的进步,这里的规模不仅指的是神经网络的规模,还指数据的规模。
但是这只能在一定程度上起作用,因为随着规模的增加,训练时间的增长也是比较惊人的。哪怕有海量的数据,如果训练一个网络需要一年,这肯定不是我们能忍受的。这一点要注意。
我们用 m m m表示训练集的大小,这就是为什么你可以在横轴上的括号里面看到一个 m m m。
(推荐网易云课堂,可以免费看并且还有课堂笔记。)
1. 吴恩达深度学习