线性代数的概念对于理解机器学习背后的原理非常重要,尤其是在深度学习领域中。它可以帮助我们更好地理解算法内部到底是怎么运行的,借此,我们就能够更好的做出决策。所以,如果你真的希望了解机器学习具体算法,就不可避免需要精通这些线性代数的概念。这篇文章中,我们将向你介绍一些机器学习中涉及的关键线性代数知识。

现代讲解

  • 基本介绍
  • 数学对象
  • 运算法则
  • 单位矩阵
  • 矩阵的逆和转置
  • https://www.lanqiao.cn/courses/2947,提供准备好的云主机ros环境,进行实操,课程包括了 Topic 通讯, Service 通讯,ROS 自定义消息,URDF可视化,TF坐标转换等技术要点。每个技术点都会结合例子先把原理讲解清楚,为了达到学以致用的目的,我们会再进行知识拓展,针对每个技术点实现对应的生动有趣的需求,保证学完后会有很大的收获。

基本介绍

  1. 线性代数是一种连续形式的数学,被广泛应用于理工类学科中;因为它可以帮助我们对自然现象建模,然后进行高效的计算。但是,由于线性代数是一种连续而非离散的数学,因此,很多计算机科学家都不太了解它。另外,线性代数还在几乎所有的数学学科中都拥有着核心地位:例如几何学和泛函分析。

  2. 线性代数中的概念是理解机器学习理论所必需的基础知识,尤其是对那些处理深度学习算法的人而言。在刚接触机器学习时,你可以不需要掌握线性代数。但到了一定程度后,当你希望更好地理解不同机器学习算法运作原理时,线性代数就很有用了,它可以帮助你在开发机器学习系统时更好地做决策。

  3. 在线性代数中,我们使用线性方程来表示数据,并把它们写成矩阵或向量的形式。因此,基本上你都是在与矩阵和向量打交道,而不是标量(我们会在文章的稍后部分介绍这些概念)。如果你能够想到使用一个合适的库,比如 NumPy,你就可以通过简短的几行代码,轻松实现复杂的矩阵乘法。请注意,这篇文章忽略了那些对机器学习并不重要的线性代数概念。

数学对象

  1. 标量
    标量就是一个简单的数,比如 24。

  2. 向量
    向量是一个有序数组,能够写成一行或者一列的形式。向量只包含一个索引,用来表示向量中的某个特定元素。比如 V_2 表示向量中的第二个元素,在上面淡黄色的图中是-8。

  3. 矩阵
    矩阵是一个有序的二维数组,有两个索引。第一个索引表示行,第二个索引表示列。例如,M_23 表示的是第二行、第三列的元素,在上面淡黄色的图中是 8。矩阵可以有多个行或者列,注意一个向量也是一个矩阵,但仅有一行或者一列。

  4. 张量
    三维张量是按照一定规律排列在方格中的数组,其中一个变量数字表示轴。张量有三个索引,其中第一个索引表示行,第二个索引表示列,第三个索引表示轴。例如,V_232 指向第二行、第三列、第二轴的元素,在下图右边的张量中表示 5。
    张量是上面谈到的概念中最常用的一个,因为张量是一个多维数组,同时可以是一个向量或者一个矩阵,具体取决于它的索引数量。例如,一阶张量可以表示向量(1 个索引),二阶张量可以表示矩阵(2 个索引),三阶就是张量(3 个索引),更高阶的称为高阶张量(超过 3 个索引)

运算法则

  1. 矩阵和标量的计算
    如果你在一个矩阵上加、减、乘、除一个标量,你所做的就是直接对矩阵的每个元素进行这些数学运算。下图给出了矩阵数乘的一个很好的例子。

  2. 矩阵和向量的运算
    对一个矩阵乘以一个向量,可以理解为对矩阵的每一行乘以向量的每一列,运算结果会是一个向量,它的行数和矩阵的行数一样。
    为了更好地理解这个概念,我们详细讲解一下第二张图中的计算步骤。为了得到结果向量中的第一个元素 16,选择拿来和矩阵相乘的向量中的元素 1 和 5,把它们与矩阵第一行中的元素 1 和 3 相乘,像这样:11 + 35 = 16。对矩阵第二行的元素进行相同的计算:41 + 05 = 4。同样,再计算矩阵第三行的元素:21 + 15 = 7。


  3. 矩阵间的加减法
    矩阵间的加减法非常简单直接。这里要求,两个矩阵需要维度相同,运算结果也会是一个相同维度的矩阵。你只需要将第一个矩阵中的每 一个元素和第二个矩阵中对应位置的元素相加或者相减就可以了。

  4. 矩阵间的乘法
    如果你知道如何计算矩阵和向量间的乘法,矩阵间的乘法就也简单了。注意,只有当第一个矩阵的列数和第二个矩阵的行数相等时,才能把它们两个乘起来。运算结果会是一个矩阵,行数和第一个矩阵的行数相等,列数和第二个矩阵的列数相等。(A42 * B27 = C47)
    计算方法如下:
    你只需要将第二个矩阵分成列向量,然后分别将第一个矩阵和每个列向量相乘。然后,将运算结果拼接成一个新的矩阵(不要把它们加起来!)。下图逐步展示了计算过程:

    矩阵的乘法性质
    矩阵乘法拥有一些性质,根据这些性质,我们可以将大量计算整合成一个矩阵乘法。在下面我们会依次讨论这些性质。为了便于理解,我们会先用标量来解释这些性质,然后再使用矩阵形式。

    交换律
    数乘满足交换律,但矩阵乘法并不满足。这意味着,当我们在将两个标量乘在一起的时候:7×3 和 3×7 的结果是一样的,但当我们将两个矩阵相乘起来的时候:A×B 并不等于 B×A。

    结合律
    数乘和矩阵乘法都满足结合律。这意味着,数乘 3×(5×3)等于(3×5)×3,同时矩阵乘法 A×(B×C)等于(A×B)×C。

    分配律
    数乘和矩阵乘法都满足分配律。这表示,数乘 3×(5+3)等于 3×5+3×3,而矩阵乘法 A×(B+C)等于 A×B +A×C。

单位矩阵

单位矩阵是一种特殊的矩阵,不过首先,我们需要定义什么是「单位」。数字 1 是一个「单位」,因为任何数乘以 1 都等于它自身。因此,任何矩阵乘以一个单位矩阵都应该等于它自己。例如,矩阵 A 乘以单位矩阵还等于矩阵 A。
单位矩阵的主对角线元素都是 1,其余元素都是 0,你可以根据这个性质得到一个单位矩阵。同时它也是一个「方阵」,这表示它的行数和列数是相等的。
我我们之前说,矩阵乘法不满足交换律,但这里有一个例外:将一个矩阵和一个单位矩阵相乘。因此,下式是成立的:A × I = I×A = A。

矩阵的逆和转置

矩阵的逆和矩阵的转置是两种矩阵特有的性质。同样的,我们首先在实数上讨论这些性质,然后再使用在矩阵中。

  1. 逆运算
    首先,什么是逆(倒数)? 一个数乘以它的逆(倒数)等于 1。注意,任何非零的数都有倒数。如果将矩阵和它的逆矩阵相乘,结果就应该是单位矩阵。下面的例子展示了标量的逆(倒数):

不过,并不是每个矩阵都有逆矩阵。如果一个矩阵是方阵,而且它可逆,就可以求出它的逆矩阵。很遗憾,讨论什么矩阵可逆超出了这篇文章的范围。
我们为什么需要逆矩阵呢?这是因为我们不能计算用矩阵相除,并没有「除以矩阵」的定义,但我们可以用一个矩阵乘以一个逆矩阵,来达到相同的目的。
下图展示了一个矩阵乘以它的逆矩阵,计算结果是一个 2×2 的单位矩阵。

可以利用 NumPy 轻松计算出一个矩阵的逆矩阵(如果它可逆的话)。

  1. 转置

最后,我们讨论矩阵转置的性质。这基本上就是将一个矩阵沿着 45 度轴线镜像翻转。计算矩阵的转置非常简单,原始矩阵的第一列就是转置后矩阵的第一行,第二列则变成了转置后矩阵的第二行。一个 m×n 的矩阵仅仅是转成了 n×m 的矩阵。同时,矩阵 A 的元素 A_ij 等于转置后矩阵的元素 A_ji。下图展示了矩阵的转置:
总结

在这篇文章中,你接触到了一些机器学习中使用到的线性代数概念。你学会如何对这些对象进行加、减、乘、「除」。另外,你还掌握了矩阵最重要的性质,以及它们为什么可以帮我们得到更有效的计算。在这些知识的基础上,你还学习了逆矩阵和转置矩阵的概念,以及可以如何使用它们。虽然机器学习中还有很多线性代数知识,但这篇文章提供了关于最核心的概念的一些适当介绍。

https://www.lanqiao.cn/courses/2947,提供准备好的云主机ros环境,进行实操,课程包括了 Topic 通讯, Service 通讯,ROS 自定义消息,URDF可视化,TF坐标转换等技术要点。每个技术点都会结合例子先把原理讲解清楚,为了达到学以致用的目的,我们会再进行知识拓展,针对每个技术点实现对应的生动有趣的需求,保证学完后会有很大的收获。

这是一份高中生都能看懂的线性代数简介(史上最详细)相关推荐

  1. 一篇高中生都能看懂的MySQL入门博客(长文)

    写在前面: 本篇博客共一万五千字左右,是我自己对MySQL进行重新学习时写的,是一些偏基础的东西. 如果你对MySQL足够的了解,本篇博客最多只能起一个查漏补缺的作用. 博客的主要面向对象为:想学习了 ...

  2. 一文带你看懂java 泛型,史上最全面的泛型教学啦。

    认真看这篇文章,保证你们对泛型又有新的理解,如果没有的话,请顺着网线来打我呀. 概述 引用下百度百科的回答 泛型是程序设计语言的一种特性.允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那 ...

  3. Win10/win11安装tensorflow,不用anaconda(高中生都能看懂版)/CUDA、cuDNN安装教程

    最近在kaggel上弄一个推介算法的比赛,虽然之前可以用谷歌colab跑一些机器学习的程序,但由于内存限制以及输出数据等极度不方便的问题,还是决定在自己的电脑上安装环境.现在来记录自己踩过的坑. 我的 ...

  4. 最强android pad,一文看懂华为发布会:史上最强安卓平板买不买?

    11月25日下午消息,华为在上海举行新品发布会,正式发布了华为MatePad Pro平板.华为Sound X智能音箱等一大波新品. 华为MatePad Pro 这是华为第一次单独为平板举办发布会,并且 ...

  5. 随机森林的特征 是放回抽样么_机器学习超详细实践攻略(10):随机森林算法详解及小白都能看懂的调参指南...

    一.什么是随机森林 前面我们已经介绍了决策树的基本原理和使用.但是决策树有一个很大的缺陷:因为决策树会非常细致地划分样本,如果决策树分得太多细致,会导致其在训练集上出现过拟合,而如果决策树粗略地划分样 ...

  6. 《小学生都能看懂的快速沃尔什变换从入门到升天教程》(FWT / FMT / FMI)(最最严谨清晰的证明!零基础也能得学会!)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 0x00 卷积 0x01 多项式 0x02 卷积的定义 0x03 卷积的基本性质 0x04 位运 ...

  7. 兄弟,用大白话给你讲小白都能看懂的分布式系统容错架构

    点击上方"蓝字", 右上角选择"设为星标" 周一至周五早11点半!精品文章准时送上! 本文来自石杉的架构笔记 目录 (1)TB级数据放在一台机器上:难啊! (2 ...

  8. 小学生都能看懂的FFT!!!

    小学生都能看懂的FFT!!! 前言 在创新实践中心偷偷看了一天FFT资料后,我终于看懂了一点.为了给大家提供一份简单易懂的学习资料,同时也方便自己以后复习,我决定动手写这份学习笔记. 食用指南: 本篇 ...

  9. 小白都能看懂的关于Mixins机制的理解

    前言 ​ 在学习Flutter源码的时候,看到各种复杂的mixin和on,为了便于后续Flutter的学习,这里有必要一起来份详细Dart 的 Mixin机制. 什么是mixins 首先看看官方文档的 ...

最新文章

  1. Java 类和对象的内存分配机制
  2. python opencv图片编码为h264文件
  3. C API可使用的函数归纳
  4. 漫谈MySQL索引与字段儿长度的关系
  5. 初学python之路-day20
  6. lin通信ldf文件解析_手把手教你在CANoe中创建一个LIN通讯工程
  7. js修改地址栏url_不同寻常的地址栏过渡
  8. android 系统gpu 调试_【资讯】高通公布首批可OTA更新GPU驱动手机:谷歌Pixel 4/三星S10在列...
  9. nohup后台运行以及重定向标准输出和标准异常
  10. centos后台登录ftp_安卓TikTok无限制版、手游扫码登录更新
  11. 2021年下半年 全国计算机技术与软件专业技术资格考试 浙江省合格人员数据分布
  12. 纯命令行linux环境,Ubuntu Server纯命令行环境安装 Dropbox
  13. 白话计算机入门书籍--《穿越计算机的迷雾》有感
  14. ubuntu14.04彻底卸载ibus安装fcitx拼音输入法
  15. 更改AVD安卓模拟器默认存储位置
  16. 鸿蒙系统有通知服务器吗,鸿蒙系统通知栏怎么清除和打开?鸿蒙系统没有下拉菜单怎么回事?...
  17. 漫反射:兰伯特和半兰伯特
  18. python处理word_Python操作word手册
  19. iOS:app直播---原理篇
  20. 洛谷P2265 路边的水沟

热门文章

  1. EditText自定义下划线
  2. Android--Activity的跳转
  3. Excel工作表密码破解
  4. mysql关系模式_数据库学习--关系模式
  5. SCRUM项目中的产品分解图和Sprint分解图
  6. 读“道法自然”的非技术有感
  7. 手把手教你使用wallpaper engine展示超炫酷星云变幻桌面
  8. 使用css选择器容易犯的一个小错误
  9. Codeforces round #649 B. Most socially-distanced subsequence
  10. Windows Server 2003广州虚拟主机网DVD版