Google 研发了十年自动驾驶后,终于在本月上线了自动驾驶出租车做事。
感谢“深度学习”技能,人工智能近年来在自动驾驶、疾病诊断、机器翻译等领域取得亘古未有的打破,乃至还搞出了些让人惊艳的“艺术创作”:

技能科普:用高中数学理解 AI “深度进修”的基本事理_机械_书价 云服务

Prisma 把你的照片变成艺术作品

AI 天生的奥巴马讲话***,看得出谁是本尊吗?

开源软件 style2paints 能自动给漫画人物上色

如果不理解个中的事理,你可能会以为这是黑邪术。

但就像爱情,“深度学习”虽然深奥,实质却很大略。
无论是图像识别还是语义剖析,机器的“学习”能力都来源于同一个算法 — 梯度低落法 (Gradient Descent)。
要理解这个算法,你所须要的仅仅是高中数学。
在读完这篇文章后,你看待 AI 的眼力会被永久改变。

一个例子

我们从一个详细的例子出发:如何演习机器学会预测书价。
在现实中,书的价格由很多成分决定。
但为了让问题大略点,我们只考虑书的页数这一个成分。

在机器学习领域,这样的问题被称为“监督学习 (Supervised Learning)”。
意思是,如果我们想让机器学会一件事(比如预测书的价格),那就给它看很多例子,让它学会举一反三(预测一本从未见过的书多少钱)。
实在跟人类的学习方法差不多,对吧?

现在假设我们网络了 100 本书的价格,作为给机器学习的例子。
大致情形如下:

接下来我们要做两件事:

见告机器该学习什么;等机器学习。

见告机器该学什么

为了让机器听懂问题,我们不能说普通话,得用数学措辞向它描述问题,这便是所谓的“建模”。
为了让接下来的剖析更直不雅观,我们把网络回来的例子画在数轴上:

我们希望机器通过这些样本,学会举一反三,当看到一本从未见过的书时,也能预测价格。
比如说,预测一本480页的书多少钱:

480页的书多少钱?

不雅观察图表,我们能看出页数和书价大致上是线性关系,也便是说,我们可以画一根贯穿样本的直线,作为预测模型。

如果我们把页数看作 X 轴,书价看作 Y 轴,这根直线就可以表示为:

w 决定直线的倾斜程度,b 决定这根直线和 Y 轴相交的位置。
问题是,看起来有很多条线都是不错的选择,该选哪条?换句话说 w 和 b 该即是多少呢?

每根直线都是一个候选的模型,该选哪个?

显然,我们希望找到一根直线,它所预测的书价,跟已知样本的偏差最小。
换句话说,我们希望下图中的所有红线,均匀来说越短越好。

红线的长度,便是模型(蓝色虚线)预测的书价,和样本书价(蓝点)之间的偏差

红线的长度即是预测书价和样本书价的差。
以第一个样本为例,55页的书,价格69元,以是第一根红线的长度即是:

由于绝对值不便于后面的数学推导,我们加个平方,一样能衡量红线的长度。

由于我们的预测模型是:

以是 这个样本是一本 55 页,69 元的书。

算式开始变得越来越长了,但记住,这都是初中数学而已!
前面提到,我们希望所有红线均匀来说越短越好,假设我们有 100 个样本,用数学来表达便是:

至此,我们把“预测书价”这个问题翻译成数学措辞:“找出 w 和 b 的值,使得以上算式的值最小。
”坚持住,第一步立时结束了!

我们现在有 2 个未知数:w 和 b。
为了让问题大略一点,我们假设 b 的最佳答案是 0 好了,现在,我们只须要关注 w 这一个未知数:

把括号打开:

在机器学习领域,这个方程被称为“代价 (cost) 函数”,用于衡量模型的预测值和实际情形的偏差。
我们把括号全打开:

不用在意方程中的数字,都是我瞎掰的。

至此,我们把“预测书价”这个问题翻译成数学措辞:“w 即是多少时,代价函数最小?”第一步完成!
到目前为止,我们只用上了初中数学。

机器是怎么学习的

代价函数是个一元二次方程,画成图表的话,大概会是这样:

不用在意坐标轴上的详细数字,都是我瞎掰的。

前面讲到,机器要找到一个 w 值,把代价降到最低:

机器采纳的策略很大略,先瞎猜一个答案(比如说 w 即是 20 ,下图红点),虽然对应的代价很高,但没紧要,机器会用“梯度低落法”不断改进预测。

如果你微积分学得很好,此时可能会问:求出导数函数为 0 的解不就完事了吗?在实际问题中,模型每每包含上百万个参数,它们之间也并非大略的线性关系。
针对它们求解,在算力上是不现实的。

现在,我们得用上高中数学的求导函数了。
针对这个瞎猜的点求导,导数值会见告机器它猜得怎么样,小了还是大了。

如果你不记得导数是什么,那就理解为我们要找到一根直线,它和这条曲线只在这一个点上擦肩而过,此前往后,都无交集(就像你和大部分朋友的关系一样)。
所谓的导数便是这根线的斜率。

我们可以看得出,在代价函数的最小值处(即曲线的底部)导数即是 0。
如果机器预测的点,导数大于 0,解释猜太大了,下次得猜小一点,反之亦然。
根据导数给出的反馈,机器不断优化对 w 的预测。
由于机器一开始预测的点导数大于 0 ,以是接下来机器会预测一个小一点的数:

机器接着对新预测的点求导,导数不即是 0 ,解释还没到达曲线底部。

那就接着猜!
机器勤学不辍地循环着“求导 – 改进预测 – 求导 – 改进预测”的自我优化逻辑 —— 没错,这便是机器的“学习”办法。
顺便说一句,看看下图你就明白它为什么叫做“梯度低落法”了。

终于,皇天不负有心机,机器猜到了最佳答案:

就这样,头脑大略一根筋的机器靠着“梯度低落”这一招鲜找到了最佳的 w 值,把代价函数降到最低值,找到了最靠近现实的完美拟合点。

总结一下,我们刚刚评论辩论了三件事:

通过不雅观察数据,我们创造页数与书价是线性关系——选定模型;于是我们设计出代价函数,用来衡量模型的预测书价和已知样本之间的差距——见告打算机该学习什么;机器用“梯度低落法”下,找到了把代价函数降到最低的参数 w ——机器的学习方法。

机器“深度学习”的基本事理便是这么大略。
现在,我想请你思考一个问题:机器通过这种方法学到的“知识”是什么?

现实问题中的深度学习

为了让数学推演大略点,我用了一个极度简化的例子。
现实中的问题可没那么大略,紧张的差别在于:

现实问题中,数据的维度非常多。

本日在预测书价时,我们只考虑了页数这一个维度,在机器学习领域,这叫做一个“特色 (feature)”。

但假设我们要演习机器识别猫狗。
一张 200 200 的图片就有 4 万个像素,每个像素又由 RGB 三个数值来决定颜色,以是一张图片就有 12 万个特色。
换句话说,这个数据有 12 万个维度,这可比页数这一个维度繁芜多了。
好在,无论有多少个维度,数学逻辑是不变的。

现实问题中,数据之间不是线性关系。

在本日的例子中,页数和书价之间是线性关系。
但你可以想象得到,猫照片的 4 万个像素和“猫”这个观点之间,可不会是大略的线性关系。
事实上两者之间的关系是如此繁芜,只有用多层神经网络的上百万个参数(上百万个不同的 w:w1, w2,……w1000000)才足以表达。
所谓“深度”学习指的便是这种多层网络的构造。

说到这里,我们可以回答前面的问题了:机器所学到的“知识”到底是什么?

便是这些w。

在本日的例子中,机器找到了精确的 w 值,以是当我们输入一本书的页数时,它能预测书价。
同样的,如果机器找到一百万个精确的 w 值,你给它看一张照片,它就能见告你这是猫还是狗。

正由于现实问题如此繁芜,为了提高机器学习的速率和效果,在实际的开拓中,大家用的都是梯度低落的各种强化版本,但事理都是一样的。

感谢你读到这里

深度学习是个日月牙异的广袤领域,受限于个人水平和篇幅,这篇文章不过是管中窥豹。
希望本文能稍稍掀开机器学习的神秘面纱,给你一个看待“知识”的新角度。

作者:SJL,"大众年夜众号:欠拟合。

本文由 @SJL 原创发布于大家都是产品经理。
未经容许,禁止转载

题图来自Unsplash,基于CC0协议