本文是深度学习线性代数系列文章的第一篇。它的目的是让读者了解一些基本思想和符号,这些思想和符号将在更高级的深度学习教材和研究论文中频繁出现。对于找到最佳的量化交易方法,阅读这些论文是必不可少的,因此,掌握这些术语和语言对于从事深度学习行业的人来说非常重要。
线性代数是数学学科中的一个基本主题,在物理科学中非常普遍。它也是许多机器学习算法的核心。因此,深度学习从业者理解线性代数的核心思想是至关重要的。
线性代数是连续数学的一个分支,而不是离散数学。数学家、物理学家、工程师和量子学家可能会通过对微分方程的研究熟悉连续数学,微分方程被用于模拟许多物理和金融现象。
然而,计算机科学家、软件开发人员或零售交易员可能只接触离散数学中的图论或组合数学等科目,对于他们来说,这里介绍的集合和函数表示法可能会比较陌生。
因此,本系列文章的讨论将省略本科数学教科书中常用的“定理和证明”方法。相反,我们将重点放在与来自不同背景的深度学习从业者相关的选定主题上,以使本文的内容更易于理解和消化。
动机
线性代数、概率和微积分是机器学习的“语言”。学习这些主题将有助于更深入理解底层算法机制,并开发出新的算法。这些算法最终可以被部署为更复杂的量化交易策略。
许多有监督的机器学习和深度学习算法需要通过调整模型参数来优化损失函数。要实现这一点,需要了解损失函数如何随着模型参数的变化而变化。这引出了微积分的基本主题----它描述了一个数量相对于另一个的变化。特别是,它需要一个偏导数的概念,规定了损失函数是如何通过每个参数的单独变化来改变的。
这些偏导数通常以矩阵形式组合在一起,以便进行更直接的计算。即使是最基本的机器学习模型,如线性回归,也可以使用这些线性代数技术进行优化。
线性代数中的一个关键主题是向量和矩阵表示法。能够“阅读线性代数的语言”将有助于理解包含更复杂模型描述的教科书、网络帖子和研究论文。这不仅将允许复制和验证现有模型,而且还将允许扩展和新的开发,以便随后在交易策略中部署。
线性代数为矢量化提供了第一步,为某些操作的并行化提供了更深入的思考方式。用标准“for loop”表示法编写的算法可以重新表述为矩阵方程,从而显著提高计算效率。这些方法在主要的Python库中使用,如NumPy、SciPy、Scikit Learn、Pandas和Tensorflow。GPU被设计用于执行优化的线性代数运算。深度学习的爆炸性增长部分归因于商品GPU硬件上底层算法的高度并行性。
线性代数是一门连续的数学学科,但下面讨论的实体最终是在离散计算环境中实现的。线性代数实体的这些离散表示可能导致上溢和下溢问题,这代表了在计算上有效表示极大和极小数字的极限。
一种减轻有限数值表示影响的机制是利用矩阵因子分解技术。这种技术允许用更简单、结构化的矩阵表示某些矩阵,这些矩阵具有有用的计算性质。常用的矩阵分解技术包括上下三角分解(LU)、正交分解(QR)和奇异值分解(SVD)。它们是某些机器学习算法内在的组成部分,如线性最小二乘法和主成分分析(PCA)。 线性代数对于深度学习的重要性不言而喻,对于打算部署基于深度学习技术的复杂量化模型的人来说,学习线性代数都是必不可少的。
标量
标量是单个数,也是0阶张量的一个例子。在数学中,需要指定标量所属的值的集合。符号x ∈ R 表示标量值x是实数集合R的一个元素。 在机器学习中有各种不同的数集,N表示正整数集合(1,2,3,…),Z表示整数集合,包括正数、负数和零,Q表示可以表示为两个整数的分数的有理数集合。
向量
向量是由有序数组组成的单个数,是一阶张量的一种形式。向量是向量空间中的成员,向量空间是具有特定维度(或长度)的所有可能向量的整个集合。通常,我们用R^3表示三维实数向量空间来表示现实世界中的三维空间概念。更正式地说,向量空间是一个集合与其自身的n维笛卡尔积,以及如何进行向量加法和标量乘法的正确定义。如果向量中的所有标量都是实值,则表示向量x是实数的n维向量空间的成员。有时需要明确地标识向量的分量,其中向量的第i个标量元素写为xi,这是非粗体小写,因为元素是标量。n维向量可以使用以下符号表示:
向量的一个重要用例是表示具有大小和方向的物理量。与标量只能表示大小不同,向量可以同时表示大小和方向,例如,汽车速度和速度方向。在机器学习中,向量通常表示特征向量,其各个组成部分指定特定特征的重要性。这些特征可能包括文本文档中单词的相对重要性、二维图像中一组像素的强度或金融工具横截面的历史价格值。
- 矩阵
矩阵是由数字组成的矩形阵列,是二阶张量的一个例子。一个mn的矩阵包含mn个数字,具有m行和n列。如果矩阵中的所有元素都是实数,则矩阵通常用大写字母表示,例如A。这意味着矩阵存在于mn维实值向量空间中,实际上是以二维表格形式表示的向量。矩阵的每个元素由两个索引i和j表示,其中i表示矩阵的行索引,而j表示矩阵的列索引,A的每个元素由Aij表示。
完整的m*n矩阵可以写成:
将矩阵的所有元素表示为以下表达式通常很有用:
其中aij被称为矩阵A的(i,j)元素。
矩阵表示一种被称为线性映射的函数类型。矩阵之间或矩阵与向量之间的乘法运算在物理科学、定量金融、计算机科学和机器学习中非常重要。矩阵可以编码几何运算,如旋转、反射和变换。因此,如果矢量集合表示计算机辅助设计软件中三维几何模型的顶点,则将这些矢量单独乘以预定义的旋转矩阵将输出表示旋转顶点位置的新矢量。这是现代3D计算机图形的基础。在深度学习中,神经网络的权重存储为矩阵,而特征输入存储为向量。用线性代数来表述问题可以简化这些计算。通过使用张量来解决问题并利用线性代数的机制,可以在现代GPU硬件上获得快速的训练时间。
- 张量 张量是一个更一般的实体,封装了标量、向量和矩阵。在物理科学和机器学习中,有时需要使用阶数超过2的张量。 在理论物理学,特别是广义相对论中,黎曼曲率张量是描述时空局部曲率的四阶张量。在机器学习中,特别是深度学习中,可以使用三阶张量来描述二维图像中多个通道(例如红色、绿色和蓝色)的强度值。