深度学习必备数学知识之线性代数篇(附代码实现)

栏目: 编程工具 · 发布时间: 5年前

内容简介:作者 | Vihar Kurama译者 | 李众望

深度学习必备数学知识之线性代数篇(附代码实现)

作者 | Vihar Kurama

译者 | 李众望

编辑 | Jane

出品 | AI科技大本营

【导读】线性代数是一种连续的、非离散的数学形式,许多计算机科学家对此缺乏应用经验,掌握线性代数对理解深度学习算法至关重要。今天AI科技大本营就为大家整理了学习过程中需要必备的线性代数知识,并附上代码实现,帮助大家加深理解。

为什么数学是必要的?

线性代数、概率论和微积分都是机器学习的“语言”。学习这些科目将有助于深入了解底层的算法机制和开发新的算法。从较低的层级来看,深度学习背后的一切都是以数学为基础的。因此,理解基础的线性代数对于探索深度学习和上手与深度学习相关的编程来说是必要的。

深度学习中的核心数据结构由标量、向量、矩阵和张量组成。从编程的角度来说,我们只需运用这些知识就能解决所有基本的线性代数问题。

深度学习必备数学知识之线性代数篇(附代码实现)

参考阅读:

https://hadrienj.github.io/posts/Deep-Learning-Book-Series-2.1-Scalars-Vectors-Matrices-and-Tensors/

标量

标量仅用于表达值的大小,也是零阶张量的一个例子。符号 x ∈ ℝ 表示标量 x 属于实数值数组“ ℝ ”。

在深度学习中我们比较关注以下几个数集,ℕ、ℤ 和ℚ。ℕ 表示正整数集(1,2,3,...)。 ℤ 表示整数集,它包含了正值、负值和零值。 ℚ 表示可以由两个整数所构成的分数进行表达的有理数数集。

Python 中内置了少数几种标量类型,如 int,float,complex,bytes,Unicode。而在 Python 库 NumPy 中,有 24 种新的基本数据类型来描述不同类型的标量。

参考阅读:

https://docs.scipy.org/doc/numpy-1.14.0/reference/arrays.scalars.html

如何在Python中定义和运算标量?

以下代码片段解释了基础的标量(Scalars)运算。

深度学习必备数学知识之线性代数篇(附代码实现)

参考阅读:

https://gist.github.com/vihar/fbd3406bd9ba2402465fb1c8f3d8b3a6#file-scalars-py

返回如下:

深度学习必备数学知识之线性代数篇(附代码实现)

以下代码片段用于检验所给的变量类型是否为标量。

深度学习必备数学知识之线性代数篇(附代码实现)

参考阅读:

https://gist.github.com/vihar/b9ef648d47c1cb3db977f13fd3071dc6#file-is_scalar-py

返回如下:

深度学习必备数学知识之线性代数篇(附代码实现)

向量

向量是由多个单个数字组成的有序数组,也是一阶张量的一个例子。向量是向量空间中的片段。向量空间则可以被认为是在特定长度(或维度)中所有可能存在的向量集合。我们通常说的现实世界中的三维空间,在数学里可以用向量空间表达为 ℝ ^ 3。 

深度学习必备数学知识之线性代数篇(附代码实现)

为了清晰明确地标示向量中的必要成分,向量中的第 i 个标量元素被记做 x[i] 。

在深度学习中,向量通常表示特征向量,它的原始成分则表示特定特征的相关程度。这些元素可以包括如二维图像中一组像素的强度的相关重要性,或是金融 工具 的横截面的历史价格值。

如何在 Python 中定义和运算向量?

深度学习必备数学知识之线性代数篇(附代码实现)

参考阅读:

https://gist.github.com/vihar/7ede36aa2f5ba5e7f70960225a2d351e#file-vectors-py

返回如下:

深度学习必备数学知识之线性代数篇(附代码实现)

矩阵

矩阵是由数字构成的矩形阵列,是二阶张量的一个例子。若 m 和 n 为正整数( m,n ∈ N ),则 m × n 的矩阵中包含 m * n 个元素,由m 行和 n 列构成。

完整的 m × n 矩阵可写做:

深度学习必备数学知识之线性代数篇(附代码实现)

我们通常会将上面的矩阵缩写为以下的表达式:

深度学习必备数学知识之线性代数篇(附代码实现)

在 Python 里,我们会使用 numpy 库来帮助我们创建 n 维的数组,这基本上可以被认作为矩阵。我们将列表传入名为 matrix 方法来定义一个矩阵。

深度学习必备数学知识之线性代数篇(附代码实现)

如何在 Python 中定义和运算矩阵?

矩阵加法

矩阵可以与标量、向量或其他的矩阵进行相加。每一种加法都有一个精确的定义。这些技巧在机习和深度学习有着非常广泛而频繁的使用,所以它们值得你去熟悉。

深度学习必备数学知识之线性代数篇(附代码实现)

参考阅读:

https://gist.github.com/vihar/1bdc39d126b4772f5a8e9d0b5185625f#file-matrix_addition-py

矩阵与矩阵的加法

C = A + B( A 和 B 的形状应当一致)

方法 shape 能够返回矩阵的形状,方法 add 会将传入的两个作为参数的矩阵相加,并返回相加的总和。若两个作为参数的矩阵的形状不一致,该方法则会提示存在“不能相加”的错误。

深度学习必备数学知识之线性代数篇(附代码实现)

参考阅读:

https://gist.github.com/vihar/b25716665d72d5e6b50c9149718df076#file-m_m_addition-py

矩阵与标量的加法

将给定矩阵中的各个元素都与给定的标量进行相加

深度学习必备数学知识之线性代数篇(附代码实现)

参考阅读:

https://gist.github.com/vihar/ba689ec9a07b1c50f69269454373359a#file-matrix_s_addition-py

矩阵与标量的乘法

将给定矩阵中的各个元素都与给定的标量进行相乘

深度学习必备数学知识之线性代数篇(附代码实现)

参考阅读:

https://gist.github.com/vihar/5dcc0beeb7e48f0f271a75108401d34c#file-m_s_multiplication-py

矩阵之间的乘法

形状为 m x n 的矩阵 A 与形状为 n x p 的矩阵 B 相乘则会得到 形状为 m x p 的矩阵 C

深度学习必备数学知识之线性代数篇(附代码实现)

参考阅读:

https://hadrienj.github.io/posts/Deep-Learning-Book-Series-2.2-Multiplying-Matrices-and-Vectors/

深度学习必备数学知识之线性代数篇(附代码实现)

参考阅读:

https://gist.github.com/vihar/1510e248a117f0af6a3843a4307de7b2#file-matrix_mul-py

矩阵的转置

矩阵的转置可以使一个行向量变成一个列向量,或反方向操作亦成立作亦成立:

A = [aij]m x n

AT = [aji]n × m

深度学习必备数学知识之线性代数篇(附代码实现)

深度学习必备数学知识之线性代数篇(附代码实现)

参考阅读:

https://gist.github.com/vihar/3f2091377b3a1f36c402a203f25ffe33#file-martix_transpose-py

张量

笼统的来讲,张量包含了标量,向量,矩阵。有些时候,例如在物理及机器学习中,使用超过二阶的张量是非常必要的。

深度学习必备数学知识之线性代数篇(附代码实现)

参考阅读:

https://refactored.ai/track/python-for-machine-learning/courses/linear-algebra.ipynb

我们通常不会将矩阵进行嵌套来表示张量,而是会使用像 tensoTflow 或者 PyTorch 这样的 Python 库来对张量进行表示张量 PyTorche 中定义一个简单的张量

深度学习必备数学知识之线性代数篇(附代码实现)

参考阅读:

https://gist.github.com/vihar/eb78a6171de9740b128cbff21fc0b6ea#file-tensors-py

一些在 Python 中其他的张量的运算操作

src:
https://gist.github.com/vihar/7b03ca54e4fe811e1053e09bdc1278b5#file-tensor_operations-py

深度学习必备数学知识之线性代数篇(附代码实现)

深度学习必备数学知识之线性代数篇(附代码实现)

更多关于张量和 PyTorch 的文档,请参阅

https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html

原文链接:

https://towardsdatascience.com/linear-algebra-for-deep-learning-506c19c0d6fa

--【完】--

2018 AI开发者大会

AI热潮下,技术和落地相辅而进。

2018 AI开发者大会以『 AI技术与应用 』为核心,力邀国内外一线大牛,带你从项目中贯通AI。

即刻扫码,抢购福利票!

深度学习必备数学知识之线性代数篇(附代码实现)

点击 「阅读原文」 ,精彩信息抢先看


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

奇点临近

奇点临近

Ray Kurzweil / 董振华、李庆成 / 机械工业出版社 / 2011-10 / 69.00元

人工智能作为21世纪科技发展的最新成就,深刻揭示了科技发展为人类社会带来的巨大影响。本书结合求解智能问题的数据结构以及实现的算法,把人工智能的应用程序应用于实际环境中,并从社会和哲学、心理学以及神经生理学角度对人工智能进行了独特的讨论。本书提供了一个崭新的视角,展示了以人工智能为代表的科技现象作为一种“奇点”思潮,揭示了其在世界范围内所产生的广泛影响。本书全书分为以下几大部分:第一部分人工智能,第......一起来看看 《奇点临近》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具