本文将从一个简单的线性回归例子开始,让你逐步了解神经网络和机器学习的概念。
blog: Vito Wang
线性回归(Linear Regression)
相信在中学时期我们都见过以下类似的“应用题”:
在研究硝酸钠的可溶性程度时,对不同的温度观测它在水中的溶解度,得观测结果如下:
![892309c1a80fcef2564f655817e31774.png](https://i-blog.csdnimg.cn/blog_migrate/a498f02785a4bdfb6f33494db9ad1e50.png)
求变量
如何求解?首先,我们需要画一个散点图:
![8f22a1fda09c948ad6db82771926000b.png](https://i-blog.csdnimg.cn/blog_migrate/11758aeb4e2f1db0225bd095e627e59d.png)
这时候我如果问你,温度
![7a6250bd938c58c7c2c5cc250252c3a1.png](https://i-blog.csdnimg.cn/blog_migrate/f3276daa444e4eb7ead931a645c97362.jpeg)
上述方法虽然易于理解和实施,但是它至少有两个缺点:
- 无法得到相对精确且稳定的数值,不同的人可能得到不同的结果。
- 难以推广到多变量的情形。比如溶解度
不仅跟温度
有关,还跟压强
有关,此时我们要求解的是
和
的关系,我们需要画一个平面。假如继续增加变量(比如1000个),将超出人类视觉感知所能处理的范围。
接下来,我们用另一个方法来求解,它包含以下几个步骤:
- 假设
- 将表格中的x值代入 1. 中的方程,得到一系列代数表达式:
,我们称之为“预测值”
- 求解 a 和 b,使得预测值和实际测量值(即表格中的 y 值)“最接近”
以上步骤如果你觉得很简单,那么我想恭喜你,你已经掌握了“神经网络”的基本方法!
我们来仔细思考每一步骤背后的含义。
关于 y = ax + b 。为什么我们会做如此假设?因为我们通过观察散点图,猜测 y 和 x 最有可能是“直线关系”。但这不是唯一可能正确的假设,我们还可以假设它们满足“曲线关系”,图3。事实上,我们可以用一些技巧让算法自动选择最适合的假设(或者模型),将在后续的文章探讨。
![ad5bf10f1f2a743343f528c26d630aa7.png](https://i-blog.csdnimg.cn/blog_migrate/bccce239cbb5ddbec685069edca7dd3b.png)
关于“预测值”。仔细想想,我们其实有一些“乐观”,因为我们认为我们可以通过任意的 x 预测 y 。事实上我们给出 y = ax + b 的假设的同时,已经做了另一个假设: x 与 y 之间存在某种必然联系,并且这种联系就隐含在已知的测量数据中。当然,实践证明很多自然事物之间都存在联系,这可以说是整个自然科学研究的基础。这里提出“假设的假设”的思考,只是想提醒读者所有结论都有作为其基础的假设,因此我们在必要的时候,可以对结论或其假设提出质疑。
关于“最接近”。回顾之前的步骤,我们有一系列已知的测量值,如表1。然后,我们通过观察数据提出假设 y = ax + b ,得到另一个表格:
![1beab8a115e544398c259ca87c6e815e.png](https://i-blog.csdnimg.cn/blog_migrate/21e8e76b09a7cbd44cdeb562c6dc81e5.jpeg)
显然,我们希望找到 a, b 的值,使得测量值 y 尽可能接近预测值
其中
接下来,我们的目标是:求解 a 和 b ,使得函数 L(a, b) 取得最小值。
我们可以用计算机画出L的数值随着 a, b 变化的可视化图形:
![c8f01f0d6b2a0c109385a3b13b8759fc.png](https://i-blog.csdnimg.cn/blog_migrate/da63ca640e6445501090a572fbc6fa3d.jpeg)
显然, L 将在曲面的最低点取得最小值,其相应的 a, b 值就是我们要求的解。
所以,最终的问题是如何得到 a, b 的确切数值。这里我将直接给出结论:分别令 L 对 a 和 b 的偏导数为零,联立两个二元一次方程求解,具体如下,
其中
关于偏导数与极值点。想象吐鲁番盆地的上空固定了一块巨大的玻璃,你行走在玻璃上,影子投射到地形表面(假设太阳在正上方),每走一步都会引起影子的位置上升/下降一个高度。假设你往北走1米,影子下降了0.5米,那我们可以粗略估计:在你的位置附近,地形表面的海拔关于北方向的偏导数大概是 -0.5;相反地,如果影子上升了0.5米,那偏导数会是 +0.5。因此,偏导数将告诉你地形表面随着某一特定方向上升/下降的趋势和幅度。如果你一直往盆地的海拔最低处走,影子往各个方向下降/上升的幅度将会越来越小,并且在盆地最低处的变化幅度最小。这就是函数偏导数和极小值关系的直观理解(极大值同理)。
![718d73e7dae67d806743bc9a70b30b05.png](https://i-blog.csdnimg.cn/blog_migrate/a99f3208438db7fda852056324673729.jpeg)
上述的“玻璃行走”其实就是神经网络中“梯度下降”的形象化表述,我们将在后续文章中详细阐述。
神经网络(Neural Network)
我们再次总结并精简上述问题的求解步骤:
- 根据数据样本提出假设 y = ax + b
- 得到衡量预测值和观测值差距的误差函数 L(a,b)
- 求解 a 和 b,使得 L 取得最小值
以上描述用到了“数据样本”“观测值”“误差函数”这样的词汇,相信你能很快理解,这些只是在机器学习领域的通用表达,在后续的文章将会经常见到。
接下来,我们将问题推广到复杂一些的情形。
如果溶解度 y 不仅与温度有关,还取决于压强、溶剂等变量,不失一般性,我们假设 y 与 n 个变量
![49b222acf0e3c799777a7a79d75a76ad.png](https://i-blog.csdnimg.cn/blog_migrate/33d73b30a6c813929d5c8c4d9f6b4d04.png)
我们可以得到多变量线性回归问题的一般化求解步骤,n 为变量个数,m 为样本个数,
- 假设:
- 设定误差函数:
- 求解
,使得
取得最小值。
线性回归中的“线性”指的是 y 相对于变量系数是线性的,因此类似
作为个人的建议,可以把“神经网络模型”理解为函数或者映射,“训练”理解为求解误差函数的极值点,而求得的极值点为神经网络模型的“参数”。至于为什么叫“神经网络”,后续讲到激活函数的时候会稍作探讨。
机器学习(Machine Learning)
“Machine learning (ML) is the study of computer algorithms that improve automatically through experience.” —— Wikipedia
机器学习算法可以理解为自动通过历史经验提升性能的计算机算法,神经网络就是其中一类机器学习算法的统称。在线性回归例子中,我们通过数据样本(历史经验),“习得”描述 y 和 x 关系的数学模型,从而可以预测 y 值,随着训练数据的增加(更多的经验),模型的性能会逐步提升。
关于定义。机器学习的术语,很多没有严格的定义,比如backpropogation、covariate shift、activation function这样的词汇都是在解决或描述某个问题时提出的概念,在我看来仅仅是便于信息交流的符号。因此当你对新概念感到不理解,不要试图从字面去猜测其含义,而是去了解概念所对应解决的问题。
物理与机器学习。物理学家的主要工作是测量和建模,机器学习的核心是数据和模型。地心说的“本轮-均轮”模型是过拟合问题,牛顿定律对广义相对论的近似体现了欠拟合问题。这很有趣,不是吗?