当前位置: 首页 > news >正文

吴恩达机器学习笔记(3)—线性代数回顾(可选)

在本篇内容中,我们将复习线性代数的知识。

一、矩阵和向量

矩阵是指由数字组成矩形阵列,并写在方括号内,矩阵的维数即行数×列数,如下是4×2矩阵。

$R^{4 \times 2} = A = \begin{bmatrix} 1402 & 191 \\ 1371 & 821 \\ 949 & 1437 \\ 147 & 1448 \\ \end{bmatrix}$

矩阵元素 $A_{ij}$ 指第 i 行,第 j 列的元素。 比如:$ A_{11} = 1402,\ A_{12} = 191 $

矩阵提供了一种很好的方式,能够快速整理、索引和访问大量数据。

向量是一种特殊的矩阵,向量是只有一列的矩阵,课程中的向量一般都是列向量。如下是一个向量,也称为四维列向量(4×1)。

$R^{4} = y = \begin{bmatrix} 1402 \\ 1371 \\ 949 \\ 147 \\ \end{bmatrix}$

向量元素 $y_{i}$ 表示向量的第 i 个元素。比如:$ y_{1} = 1402,\ y_{2} = 1371 $

如下图,左图为从 1 开始索引向量,右图为从 0 开始索引向量,如无特别说明,一般用从 1 开始索引向量

二、加法和标量乘法

矩阵的加法,将矩阵的行列数相等的元素都逐个相加,只有相同维度的两个矩阵才能相加。如下:

$\begin{bmatrix} 1 & 0 \\ 2 & 5 \\ 3 & 1 \\ \end{bmatrix} + \begin{bmatrix} 4 & 0.5 \\ 2 & 5 \\ 0 & 1 \\ \end{bmatrix} = \begin{bmatrix} 5 & 0.5 \\ 4 & 10 \\ 3 & 2 \\ \end{bmatrix}$

矩阵和标量的乘法,需要将矩阵中的元素和标量都逐一相乘标量是只有大小、没有方向的量(与向量/矢量相对),标量通常是实数。如下:

$3 \times \begin{bmatrix} 1 & 0 \\ 2 & 5 \\ 3 & 1 \\ \end{bmatrix} = \begin{bmatrix} 3 & 0 \\ 6 & 15 \\ 9 & 3 \\ \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 2 & 5 \\ 3 & 1 \\ \end{bmatrix} \times 3$

三、矩阵向量乘法

矩阵向量乘法,$ A = m \times n$ 矩阵乘以 n 维向量( $x = n \times 1$ 矩阵),计算结果是 m 维向量( $y = m \times 1$ 矩阵),相乘的两个矩阵中的 n 是相等的。计算向量元素 $y_i$ 的过程,将矩阵 A 的第 i 行元素分别乘以向量 x 中的元素,并且相加起来。如下是 3x2 矩阵乘以 2x1 矩阵,计算结果是 3x1 矩阵。

$\begin{bmatrix} 1 & 3 \\ 4 & 0 \\ 2 & 1 \end{bmatrix} \times \begin{bmatrix} 1 \\ 5 \end{bmatrix} = \begin{bmatrix} 1 \times 1 + 3 \times 5 = 16 \\ 4 \times 1 + 0 \times 5 = 4 \\ 2 \times 1 + 1 \times 5 = 7 \end{bmatrix}$

假设有个预测房子价格的公式 $h_\theta \left( x \right)=-40 + 0.25x$ ,同时有四间房子的大小 x 的值分别为2104、1416、1534、852。矩阵向量乘法可以方便用来计算对应每个房子的价格。计算方式如下:

$\begin{bmatrix} 1 & 2104 \\ 1 & 1416 \\ 1 & 1534 \\ 1 & 852 \end{bmatrix} \times \begin{bmatrix} -40 \\ 0.25 \end{bmatrix} = \begin{bmatrix} 1 \times -40 + 2104 \times 0.25 \\ 1 \times -40 + 1416 \times 0.25 \\ 1 \times -40 + 1534 \times 0.25 \\ 1 \times -40 + 852 \times 0.25 \end{bmatrix}$

例子中的小技巧是在计算预测房价时,可通过一行代码而不是一堆代码得到计算结果,代码更简洁并且计算效率更高

四、矩阵乘法

矩阵乘法在线性回归中,可用于解决参数 $ \theta_{0} $ 和 $ \theta_{1} $ 的计算问题而不需要梯度下降法。

矩阵乘法,$ A = m \times n$ 矩阵乘以 $ B = n \times o $ 矩阵,计算结果是 $ C = m \times o $ 矩阵。计算矩阵 C 的第 i 列要用矩阵 A 和矩阵 B 的第 i 列相乘得到。能够相乘的矩阵必须满足第一个矩阵的列数必须等于第二个矩阵的行数的特征如下是 2x2 矩阵乘以 2x2 矩阵,计算结果是 2x2 矩阵。

$\begin{bmatrix} 1 & 3 \\ 2 & 5 \end{bmatrix} \times \begin{bmatrix} 0 & 1 \\ 3 & 2 \end{bmatrix} = \begin{bmatrix} 9 & 7 \\ 15 & 12 \end{bmatrix}$

$\begin{bmatrix} 1 & 3 \\ 2 & 5 \end{bmatrix} \times \begin{bmatrix} 0 \\ 3 \end{bmatrix} = \begin{bmatrix} 9 \\ 15 \end{bmatrix}$

$\begin{bmatrix} 1 & 3 \\ 2 & 5 \end{bmatrix} \times \begin{bmatrix} 1 \\ 2 \end{bmatrix} = \begin{bmatrix} 7 \\ 12 \end{bmatrix}$

如下,假设要预测4间房子的价格,只有3个假设函数。要想将这3个假设都用于这4间房屋,使用矩阵乘法来计算,是一种高效的方法。计算结果的第 i 列是第 i 个假设的预测价格。

五、矩阵乘法特征

矩阵的乘法不满足交换律$A \times B \ne B \times A$

$\begin{bmatrix} 1 & 1 \\ 0 & 0 \end{bmatrix} \times \begin{bmatrix} 0 & 0 \\ 2 & 0 \end{bmatrix} = \begin{bmatrix} 2 & 0 \\ 0 & 0 \end{bmatrix}$

$\begin{bmatrix} 0 & 0 \\ 2 & 0 \end{bmatrix} \times \begin{bmatrix} 1 & 1 \\ 0 & 0 \end{bmatrix} = \begin{bmatrix} 0 & 0 \\ 2 & 2 \end{bmatrix}$

矩阵的乘法满足结合律$A \times (B \times C) = (A \times B) \times C$

单位矩阵是一种特殊的矩阵,类比实数中的数字1,数字1可以看作是一个乘法单位,任意实数z乘以1都等于实数z。单位矩阵通常记作 I(或 $ I_{n \times n} $),从矩阵的左上角到右下角的对角线(称为主对角线)上的元素均为1以外全都为0。如下,1x1的单位矩阵就是数字1。

$\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \quad \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}$

单位矩阵的特性:$A_{m \times n} \times I_{n \times n} = I_{m \times m} \times A_{m \times n} = A_{m \times n} $

六、逆和转置

矩阵的逆:如矩阵 A 是一个 mxm 矩阵(方阵),如果有逆矩阵,则:$A \times A^{-1} = A^{-1} \times A = I $

并非所有矩阵都有逆矩阵,比如全为0的矩阵。不存在逆矩阵的矩阵也称为奇异矩阵或退化矩阵。

矩阵的转置:设 A 为 $m \times n$ 矩阵,第 i 行 j 列的元素是 $a(i,j)$,即:$A = a(i,j)$,A 的转置矩阵为 $n \times m $ 矩阵 B,满足 $B = a(j,i)$,即 $b(i,j) = a(j,i)$,(B的第 i 行第 j 列元素是A的第 j 行第 i 列元素),记 $A^T=B$ 或 $A'=B$。直观来看,将 A 的所有元素绕着一条从第1行第1列元素出发的右下方45度的射线作镜面翻转,即得到 A 的转置。如下:

$\begin{bmatrix} a & b \\ c & d \\ e & f \end{bmatrix} ^T = \begin{bmatrix} a & c & e \\ b & d & f \end{bmatrix}$

http://www.dtcms.com/a/288595.html

相关文章:

  • 【Django】DRF API版本和解析器
  • HTML Style 对象深度解析:从基础到高级应用
  • 上电复位断言的自动化
  • 【数据结构】双向循环链表的实现
  • 18.TaskExecutor获取ResourceManagerGateway
  • 【MySQL】索引中的页以及索引的分类
  • 【Nature Communications】GaN外延层中位错辅助的电子和空穴输运
  • PHPStorm携手ThinkPHP8:开启高效开发之旅
  • selenium4 web自动化测试
  • pip关于缓存的用法
  • minizinc学习记录
  • 如何优雅解决缓存与数据库的数据一致性问题?
  • Docker实践:使用Docker部署WhoDB开源轻量级数据库管理工具
  • 飞船躲避陨石小游戏流量主微信抖音小程序开源
  • 【ESP32设备通信】-使用Modbus RTU读取传感器数据
  • 嵌入式硬件篇---按键
  • 嵌入式硬件篇---机械臂运动学解算(3自由度)
  • CentOS 服务器docker pull 拉取失败
  • 在vue中遇到Uncaught TypeError: Assignment to constant variable(常亮无法修改)
  • 后台管理系统登录模块(双token的实现思路)
  • 音视频学习(四十一):H264帧内压缩技术
  • 通俗易懂神经网络:从基础到实现
  • 【JavaFX国产化适配】快捷键注册(检测快捷键冲突、注册事件)
  • Syncthing实时共享同步数据 服务器数据备份软件(linux、windows)
  • 全面解析MySQL(2)——CRUD基础
  • 从零到精通:用DataBinding解锁MVVM的开发魔法
  • 第十四讲 | AVL树实现
  • Dify工作流实战
  • 安装minerU的API服务
  • 如何避免广度优先搜索(BFS)在有环图中陷入无限循环