0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

学习过程中需要必备的线性代数知识

电子工程师 来源:未知 作者:李倩 2018-10-04 09:02 次阅读

【导读】线性代数是一种连续的、非离散的数学形式,许多计算机科学家对此缺乏应用经验,掌握线性代数对理解深度学习算法至关重要。今天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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8095

    浏览量

    130514
  • python
    +关注

    关注

    51

    文章

    4667

    浏览量

    83440
  • 深度学习
    +关注

    关注

    73

    文章

    5223

    浏览量

    119863

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

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    线性代数要和科学计算结成好伙伴(稿)

    在科学研究,逐渐发现线性代数用的越来越多,在老师的博客里发现了这篇文章,觉得很不错,因此放在这里,希望大家能有所收获。在此,也贴出我们矩阵理论老师的博客地址http
    发表于 10-29 22:03

    labview线性代数求解输入控件如何输入未知变量

    labview线性代数求解输入控件如何输入未知变量
    发表于 04-07 09:11

    线性代数超强总结

    线性代数超强总结
    发表于 05-26 07:26

    程序世界:线性代数是一种特定语言

    就明显复杂了,而且还要分很多种情况去分别讨论。相反,如果我们用线性代数知识来解决这个问题就非常轻松。在线性代数两个向量a,b的叉积(Cross Product)是一个向量,其方向与a
    发表于 04-22 06:30

    线性代数课程大纲的建议

    线性代数课程大纲的建议 致基础数学分教指委一.问题的提出:现在的“线性代数”大纲不能满足后续课的要求。为后续课程打好基础,应该成为任何
    发表于 05-26 16:59 5次下载

    Matlab线性代数实验

    Matlab线性代数实验8.1 实验(Ⅰ):用Matlab学线性代数8.1.1实验与观察:向量组的线性关系和解线性方程组1.  用线性
    发表于 10-17 00:36 1920次阅读

    工程线性代数matlab版

    MATLAB,工程线性代数matlab版。
    发表于 12-21 14:41 0次下载

    线性代数相关的基本知识

    线性代数包含了关于矩阵的所有相关的基本知识,可以快速学习,适合自学。
    发表于 12-22 17:58 0次下载

    算法大全__Matlab在线性代数中的应用

    算法大全__Matlab在线性代数中的应用。
    发表于 01-14 17:56 0次下载

    线性代数教材(同济四版)

    线性代数教材(同济四版),有需要的下来看看
    发表于 03-22 11:13 0次下载

    机器学习线性代数基础

    机器学习需要的一些线性代数知识
    发表于 09-04 10:08 0次下载

    线性代数是什么?存在的意义是什么?

    在大学数学学科中,线性代数是最为抽象的一门课,从初等数学到线性代数的思维跨度比微积分和概率统计要大得多。
    的头像 发表于 08-19 10:24 29.3w次阅读
    <b class='flag-5'>线性代数</b>是什么?存在的意义是什么?

    线性代数附册学习辅导与习题全解第五版PDF电子书免费下载

    线性代数附册学习辅导与习题全解(同济·第5版)》是与同济大学数学系编《线性代数》第五版配套的学习辅导书,主要面向使用该教材的读者。《线性代数
    发表于 11-29 08:00 0次下载

    线性代数》pdf

    线性代数》第四版pdf
    发表于 02-18 10:12 0次下载

    线性代数在机器学习中的应用实例

    线性代数研究的是向量空间以及将一个向量空间映射到另一个向量空间的函数。我们主要考虑线性函数(对于任何常数α和β以及向量 x 和 y,满足关系 f (α · x + β · y) = α · f (x) + β · f (y)。
    发表于 04-14 14:31 706次阅读