当前位置: 首页 > 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.xdnf.cn/news/1155097.html

相关文章:

  • 嵌入式硬件篇---按键
  • Nginx的location匹配规则
  • Android 项目中如何在执行 assemble 或 Run 前自动执行 clean 操作?
  • Go语言--语法基础6--基本数据类型--map类型
  • Node.js 中基于请求 ID 实现简单队列(即时阻止策略/排队等待策略)
  • 在NLP深层语义分析中,深度学习和机器学习的区别与联系
  • 【数据结构】二维差分数组
  • 技术演进中的开发沉思-40 MFC系列:多线程协作
  • JavaScript平滑滚动与锚点偏移控制的完整指南
  • InfluxDB 核心概念与发展历程全景解读(二)
  • 18.TaskExecutor获取ResourceManagerGateway
  • Unity笔记——Unity 封装方法指南
  • OpenCV 入门知识:图片展示、摄像头捕获、控制鼠标及其 Trackbar(滑动条)生成!
  • QT无边框窗口
  • 2025 年科技革命时刻表:四大关键节点将如何重塑未来?
  • 详解Mysql Order by排序底层原理
  • RK3588 编译 Android 13 镜像方法
  • 用C语言实现控制台应用的按键方向控制
  • Qt的安装和环境配置
  • 【愚公系列】《MIoT.VC》002-构建基本仿真工作站(布局一个基本工作站)
  • OPC UA, CAN, PROFINET, SOCKET, MODBUS, HTTP, S7七种物联网常用协议解释
  • 金融工程、金融与经济学知识点
  • Claude 3模型深度剖析:架构创新与性能突破
  • JAVA面试宝典 -《容灾设计:异地多活架构实践》
  • 从零搭建智能搜索代理:LangGraph + 实时搜索 + PDF导出完整项目实战
  • 从TPACK到TPACK - AI:人工智能时代教师知识框架的重构与验证
  • Kubernetes中为ELK组件配置持久化存储
  • nginx定期清理日志
  • 线程池的状态
  • AI开发 | 基于FastAPI+React的流式对话