机器或计算机只理解数字。而这些数字需要以一种方式来表示和处理,让机器通过从数据中学习而不是从预定义的指令中学习来解决问题(如编程的情况)。
所有类型的编程都在某种程度上使用数学。机器学习涉及对数据进行编程,以学习最能描述数据的函数。
使用数据寻找函数的最佳参数的问题(或过程)在ML中被称为模型训练 。
因此,简而言之,机器学习是通过编程来优化可能的最佳解决方案--而我们需要数学来理解这个问题是如何解决的。
为ML学习数学的第一步是学习线性代数。
线性代数是解决机器学习模型中代表数据以及计算问题的数学基础。
它是数组的数学- 技术上被称为向量、矩阵和张量。
常见的应用领域--线性代数在行动
来源:https://www.wiplane.com/p/foundations-for-data-science-ml
在ML背景下,开发模型的所有主要阶段都有线性代数在幕后运行。
由线性代数促成的重要应用领域有。
- 数据和学习模型表示
- 词嵌入
- 降维
数据表示
ML模型的燃料,也就是数据,在你把它输入你的模型之前需要转换成数组。对这些数组进行的计算包括像矩阵乘法(点积)这样的操作。这进一步返回的输出也被表示为数字的转换矩阵/张量。
词嵌入
不要担心这里的术语--它只是用较小维度的向量来表示大维度的数据(想想你的数据中有大量的变量)。
自然语言处理(NLP)处理的是文本数据。处理文本意味着理解大量词汇的含义。每个词都代表不同的含义,可能与另一个词相似。线性代数中的向量嵌入使我们能够更有效地表示这些词。
特征向量(SVD)
最后,像特征向量这样的概念使我们能够减少数据的特征或维度的数量,同时使用称为主成分分析的东西来保持所有的本质**。**
从数据到矢量
来源:https://www.wiplane.com/p/foundations-for-data-science-ml
线性代数基本上是处理向量和矩阵(不同形状的数组)以及对这些数组的操作。在NumPy中,向量基本上是一个一维的数字数组,但从几何学的角度看,它们有大小和方向。
来源:https://www.wiplane.com/p/foundations-for-data-science-ml
我们的数据可以用向量来表示。在上图中,该数据中的一行是由一个特征向量表示的,它有3个元素或组件,代表3个不同的维度。向量中的N个条目使其成为n维向量空间,在这种情况下,我们可以看到3维空间。
深度学习--通过神经网络流动的张量
我们可以在今天所有的主要应用中看到线性代数的作用。例如,对LinkedIn或Twitter帖子的情感分析(嵌入),从X射线图像中检测肺部感染的类型(计算机视觉),或任何语音到文本的机器人(NLP)。
所有这些数据类型都在张量中用数字表示。我们运行矢量操作,使用神经网络从其中学习模式。然后,它输出一个经过处理的张量,而张量又被解码以产生模型的最终推断。
每个阶段都对这些数据数组进行数学运算。
降维--矢量空间转换
来源:https://www.wiplane.com/p/foundations-for-data-science-ml
谈到嵌入,你基本上可以认为一个n维的向量被替换成另一个属于低维空间的向量。这更有意义,而且是克服了计算上的复杂性。
例如,这里是一个3维的向量被2维空间所取代。但是你可以把它推导到一个真实世界的场景,在那里你有非常多的维度。
减少维度并不意味着放弃数据中的特征。相反,它是关于寻找新的特征,这些特征是原始特征的线性函数,并保留了原始特征的方差。
找到这些新的变量(特征)就可以找到主成分(PC)。然后,这就会汇聚到解决特征向量和特征值问题。
推荐引擎--利用嵌入技术
你可以把嵌入想象成一个二维平面被嵌入到三维空间中,这就是这个术语的由来。你可以把你所站的地面想象成一个二维平面,它被嵌入到你所处的这个空间中。
为了给你一个现实世界的用例来联系所有关于矢量嵌入的讨论,所有给你提供个性化建议的应用程序都以某种形式使用矢量嵌入。
例如,上面是谷歌推荐系统课程中的一个图形,我们得到了不同用户和他们喜欢的电影的数据。有些用户是孩子,有些是成年人,有些电影是历史上的经典之作,而有些则更具有艺术性。有些电影是针对年轻观众的,而像memento这样的电影则是成年人的首选。
现在,我们不仅需要用数字来表示这些信息,而且还需要找到新的较小维度的向量表示,以很好地捕捉所有这些特征。
了解我们如何完成这项任务的一个非常快速的方法是了解一种叫做矩阵分解的东西,它允许我们将一个大矩阵分解成更小的矩阵。
暂时不考虑数字和颜色,只是试着理解我们是如何将一个大矩阵分解成两个小矩阵的。
例如,这里这个4X5的矩阵,4行,5个特征,被分解成两个矩阵,一个是4X2,另一个是2X5。我们基本上有了新的更小维度的用户和电影的向量。
这使我们能够在一个二维矢量空间上绘制这个图。在这里你会看到,1号用户和电影《哈利波特》比较接近,3号用户和电影《史莱克》比较接近。
向量的**点积(矩阵乘法)**的概念告诉我们更多关于两个向量的相似性。它在相关性/协方差计算、线性回归、逻辑回归、PCA、卷积、PageRank和许多其他算法中都有应用。
大量使用线性代数的行业
现在,我希望你已经相信线性代数正在推动当今众多领域的ML计划。如果没有,这里列举了一些例子。
- 统计学
- 化学物理学
- 基因组学
- 词嵌入--神经网络/深度学习
- 机器人学
- 图像处理
- 量子物理学
你应该知道多少线性代数才能开始学习ML/DL?
现在,重要的问题是你如何能学会对这些线性代数的概念进行编程。答案是你不需要重新发明轮子,你只需要在计算上理解矢量代数的基础知识,然后你再学习用NumPy对这些概念进行编程。
NumPy是一个科学计算包,它使我们能够获得线性代数的所有基本概念。它的速度很快,因为它运行的是编译过的C代码,它有大量的数学和科学函数供我们使用。
推荐资源
- 3Blue1Brown的线性代数播放列表- 非常吸引人的可视化,解释了线性代数的本质和它的应用。对初学者来说可能有点太难了。
- Ian Goodfellow和Yoshua Bengio写的关于深度学习的书-一个学习ML和应用数学的绝佳资源。读一读吧,少数人可能会觉得它的技术性太强,而且符号太多,要从头开始。
数据科学和ML的基础 -我创建了一个课程,让你对编程、数学(基础代数、线性代数和微积分)和统计有足够的了解。对于学习DS/ML的第一步来说,这是一个完整的方案。
👉 你可以使用代码 **FREECODECAMP10**来获得10%的折扣。
在这里查看课程大纲。
FreeCodeCamp的开源课程已经帮助超过40,000人获得了开发者的工作。开始吧