从线性代数视角解读神经网络的数学本质
与常规博文不同,本文内容简洁扼要,直击核心。深度学习常被誉为数据分析领域的下一个重大突破,但其热度之高,以至于许多人(甚至从业者)开始将其视为魔法。本文旨在为这种期望提供现实基础,并深入解析深度学习的本质。
本文面向的读者已对机器学习、深度学习及基础线性代数有所了解。请知悉。
线性代数——前言
我们都在学校里学过线性代数。向量、矩阵、矩阵乘法、点积——这些都是我们听过并学过手动计算的概念。但有多少人能真正直观地理解线性代数呢?除了在方块中书写数字并进行晦涩奇特的乘加运算,我们对线性代数还了解多少?这正是包括我在内的许多人过去所欠缺的。如今,信息唾手可得,还有什么能阻止我们以正确的方式学习它呢?
Grant Sanderson 通过其著名的 YouTube 频道 3blue1brown,也有一个播放列表,他以类似的方式讲解,并从视觉上澄清了线性代数的直觉。我强烈建议观看该播放列表,以获得对线性代数的坚实几何解释。若要更正式的讲解,可以求助于 Gilbert Strang。这位著名的数学家和教育家有一套精炼而优美的线性代数课程。
关键在于线性代数的几何直觉,这对于理解机器学习,尤其是深度学习,是无价的。在此仅总结几点作为回顾:
- 向量是空间中的一个点。
- 当向量与矩阵相乘时,我们进行的是线性变换,矩阵的内容定义了所进行的变换。
- 根据矩阵内容的不同,矩阵乘法对向量执行旋转、反射、缩放、剪切等操作。
实验
现在,让我们来看一个简单的分类问题,一个非线性可分的问题。我们可以生成一个如下所示的合成螺旋数据集,包含 2 个类别和 1000 个数据点。
一个合成螺旋数据集
一条线性直线显然无法分割这些类别,对吧?在此数据上训练一个神经网络来高精度地分类它们是非常直接的。我们将使用两个隐藏层,分别包含 128 个和 2 个单元来完成此任务,最终获得了 95% 的准确率。
现在,有趣的部分开始了。让我们揭开"引擎盖",看看发生了什么。
决策边界
审视任何机器学习模型输出(尤其是分类模型)最流行的方法之一是通过观察决策边界。线性模型将拥有直线作为决策边界,非线性模型则会有曲线边界。让我们看看神经网络学习到的决策边界。
决策边界——神经网络
看起来我们的网络正如预期那样绘制了一个非线性的决策边界。
但还有另一种方式可以观察发生了什么,这涉及到线性代数的几何直觉。
向量空间的扭曲
正如我们之前讨论的,神经网络是一系列线性变换,中间点缀着非线性激活函数。我们知道神经网络的最后一层只是一个线性层,对吧?因此,如果考虑最后一层之前的所有层,它们所做的只是应用矩阵乘法和激活函数,以便数据对最后一层变得线性可分。从线性代数的几何解释来看,我们知道矩阵乘法只是向量空间的一种线性变换。
现在让我们在正在处理的分类问题中可视化这一点。下图展示了原始空间中的点,以及网络倒数第二层的输出可视化。
我们可以看到,这些点变得线性可分了,而最后一层(只不过是一个线性分类器)能够分离这些点。因此,隐藏层所学到的是从原始输入空间到另一个空间的转换,在这个新空间中,点变得线性可分。
让我们也看看这个过程的动画(3blue1brown 风格),因为没有什么能比视频更具体地建立直觉。
我们可以看到神经网络是如何扭曲和折叠空间,使得输入点变得线性可分的。
而激活函数(本例中使用的是 ReLU)使这种非线性变换成为可能。如果没有激活函数,总的变换仍将是线性的,并且无法将非线性分布的点转换成线性可分的。让我们看看在没有激活函数的情况下相同的变换效果。
下次面试官问你为什么需要激活函数时,你可以用"激活函数引入了非线性"的几何解释来惊艳他。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码

公众号二维码


浙公网安备 33010602011771号