4.线性代数

news2025/1/24 14:53:45

深度学习作为一门前沿的、应用广泛的学科,对于数学基础的要求非常高。

线性代数

线性代数在深度学习中扮演着至关重要的角色。它不仅是描述和理解数据的基础工具,也是构建和训练神经网络的核心组件。例如,在深度学习中,我们经常需要将图片、文本或其他类型的数据转换为数值向量或矩阵,以便输入到神经网络中进行处理。这些数值向量或矩阵就是线性代数中的基本概念。

此外,线性代数中的矩阵运算、特征值和特征向量等概念,在神经网络的权重更新、数据降维、主成分分析等方面都有着广泛的应用。因此,掌握线性代数的基础知识对于理解深度学习的工作原理和实现深度学习算法都是非常重要的。

标量(Scalar)

标量是一个单一的数值,只有大小没有方向。例如,房间的温度、银行的存款、秤上的体重和头发的根数等,这些都可以被表示为标量。在数学上,标量通常用小写字母(如a, b, c, x, y, z等)表示,而不强调其书写方式(斜体或写体)。在描述标量时,我们通常会说明其数值类型和取值范围,例如实数(real number)或自然数(natural number)。

向量(Vector)

向量是一组有序的标量集合,具有大小和方向。当我们将一组标量排成一行或一列时,就得到了一个向量。这些标量被称为向量的元素或分量。在数学上,向量通常用粗体的小写字母(如a, b, c)或带箭头的字母(如→a, →b, →c)表示。

向量的元素可以通过下标来访问,例如,向量a的第一个元素可以表示为a₁,第二个元素可以表示为a₂,依此类推。假设我们有一个表示班级考试成绩的向量s,其中s₁表示学号为1的同学的成绩,s₂表示学号为2的同学的成绩,依此类推。如果班级有n个同学,则向量s可以表示为[s₁, s₂, ..., sₙ]。

向量的长度(或模)

向量的长度(或模)是一个非负的标量,表示向量在空间中的大小。对于二维向量,其长度可以通过勾股定理计算;对于更高维度的向量,其长度可以通过欧几里得范数(Euclidean norm)来计算,即向量所有元素平方和的平方根。在数学上,向量a的长度或模表示为‖a‖。

向量的方向

除了长度外,向量还具有方向性。方向可以通过向量的元素之间的比例关系来确定。例如,在二维平面上,一个向量的方向可以用它与x轴的夹角来表示;在三维空间中,则需要两个夹角(如与x轴和y轴的夹角)来确定方向。然而,在深度学习和机器学习的很多应用中,我们更多地关注向量的长度和元素之间的相对关系,而不是其具体的方向。

向量的范数(Norm)

向量的范数是衡量向量“大小”或“长度”的一种方式。在深度学习和线性代数中,我们经常使用L2范数(也称为欧几里得范数),它对应于向量在欧几里得空间中的长度。

单位向量(Unit Vector)

单位向量是长度为1的向量。它表示向量在空间中的方向,而不考虑其大小。对于任意非零向量a,其单位向量u可以通过将a除以其范数来得到:

import numpy as np  
  
# 定义一个二维向量  
a_2d = np.array([3, 4])  
  
# 计算二维向量的L2范数(欧几里得范数)  
norm_2d = np.linalg.norm(a_2d)  
print(f"The L2 norm of {a_2d} is: {norm_2d}")  
  
# 计算二维向量的单位向量  
unit_vector_2d = a_2d / norm_2d  
print(f"The unit vector of {a_2d} is: {unit_vector_2d}")  
  
# 定义一个三维向量  
a_3d = np.array([1, 2, 3])  
  
# 计算三维向量的L2范数(欧几里得范数)  
norm_3d = np.linalg.norm(a_3d)  
print(f"The L2 norm of {a_3d} is: {norm_3d}")  
  
# 计算三维向量的单位向量  
unit_vector_3d = a_3d / norm_3d  
print(f"The unit vector of {a_3d} is: {unit_vector_3d}")

这段代码首先定义了两个向量(一个二维向量和一个三维向量),然后分别计算了它们的L2范数(欧几里得范数)和单位向量,并打印了结果。

内积

 

几何意义

 

物理意义

 

相关性

当两个向量被规范化(即转换为单位向量)后,它们的内积等于它们夹角的余弦值。这可以用来衡量两个向量的相关性:

示例

import numpy as np  
  
# 定义两个向量  
A = np.array([1, 2])  
B = np.array([2, -1])  
  
# 计算内积  
dot_product = np.dot(A, B)  
print(f"The dot product of A and B is: {dot_product}")

输出将是 0,与我们的手动计算结果一致。

您正确地指出了向量的外积(叉积)与内积的不同之处。外积(Cross Product)是向量运算中另一个重要的概念,它只在三维空间中定义,并且其结果是一个向量,与原来的两个向量都垂直。

外积(Cross Product)

外积的计算公式

 

外积的几何意义

示例
import numpy as np  
  
# 定义两个三维向量  
A = np.array([1, 2, 3])  
B = np.array([4, 5, 6])  
  
# 计算外积  
C = np.cross(A, B)  
  
print(f"The cross product of A and B is: {C}")

输出将是外积的坐标表示。

矩阵(Matrix)

矩阵(Matrix)是线性代数中的一个核心概念,它表示为一个矩形数组,其中的元素可以是数字、符号或函数等。

在 Python 的 NumPy 库中,可以使用 numpy.transpose() 函数或简单地使用 .T 属性来进行矩阵转置。例如:

import numpy as np  
  
# 创建一个矩阵  
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])  
  
# 使用 .T 属性进行转置  
A_transpose = A.T  
  
print("Original matrix A:")  
print(A)  
print("Transposed matrix A^T:")  
print(A_transpose)

 

对于矩阵乘法,它并不像普通数的乘法那样直观。矩阵乘法要求左侧矩阵的列数必须与右侧矩阵的行数相等,且结果矩阵的行数等于左侧矩阵的行数,列数等于右侧矩阵的列数。乘法运算通过对应行和列的元素乘积求和来进行。

矩阵乘法在 NumPy 中同样可以通过 numpy.dot() 函数或简单的 * 运算符(当操作对象是 NumPy 数组且满足矩阵乘法条件时)来实现。

哈德玛积(Hadamard Product)或元素对应相乘(Element-wise Product)是矩阵或数组的一种特定运算方式。这种运算要求两个矩阵(或数组)具有相同的维度,然后将其对应位置的元素相乘,生成一个新的矩阵(或数组)。

具体来说,如果A和B是两个同阶矩阵,那么A和B的哈德玛积C的每个元素c_{ij}都等于A的对应元素a_{ij}与B的对应元素b_{ij}的乘积,即c_{ij} = a_{ij} × b_{ij}。

哈德玛积与矩阵的普通乘法(如矩阵乘积)不同。普通乘法是将两个矩阵的对应元素分别相乘后再相加,而哈德玛积只是简单地将对应位置的元素相乘,并生成一个新的矩阵。

在Python的NumPy库中,没有直接的函数来执行哈德玛积,但可以通过简单的广播(broadcasting)操作或逐个元素相乘来实现。

张量(Tensor)

张量是更高维度的数组的抽象概念。在零维时,它就是一个标量;一维时,它就是一个向量;二维时,它就是一个矩阵。当维度数超过2时,我们通常称之为张量。在物理和工程领域,张量常用于描述多变量之间的关系,如应力、应变、电磁场等。在深度学习中,张量用于表示多维数据,如图像、文本、音频等。

  • 维度与轴:在谈论张量时,我们经常提到“维度”和“轴”。这两个概念有时候会被混淆,但实际上它们是有区别的。维度是指张量中元素的个数(即数组的阶数),而轴则是指张量中的每一个维度(即数组的每一维)。例如,一个3x4的矩阵有2个维度(行和列),每个维度都是一个轴。

  • 张量的几何意义:向量可以看作是空间中的一个有方向的量,而矩阵则可以看作是空间中的一个线性变换。张量则可以看作是高位空间中的量,它包含了更多的维度信息。在物理中,张量常用于描述不同物理量之间的关系,如应力张量、电磁张量等。在深度学习中,张量则是我们处理多维数据的基本工具。

  • 运算方法:由于向量和矩阵都可以看作是张量的特例(分别是1维和2维的张量),因此向量和矩阵的运算方法也可以推广到张量上。例如,张量也可以进行加法、减法、乘法等运算。这些运算在深度学习中有着广泛的应用。

  • 在深度学习中的应用

    在深度学习中,张量是数据的基本表示形式。神经网络中的输入、输出和中间层的输出通常都是以张量的形式存在的。例如,在图像识别任务中,输入图像可以被表示为一个3阶张量(高度、宽度和颜色通道);在自然语言处理任务中,文本可以被表示为一个2阶张量(句子长度和词向量维度)。神经网络通过学习和优化这些张量之间的复杂关系来完成各种任务。

总结

  1. 标量(Scaler):没有方向或大小的一维数据,可以理解为0维张量。

  2. 向量(Vector):具有大小和方向的量,通常表示为有序数列。在线性代数中,向量可以被看作是一维数组,也可以看作是1维张量。

  3. 矩阵(Matrix):二维数组,其中每个元素都可以是标量、向量或其他数据。矩阵表示线性变换,也可以看作是2维张量。

  4. 张量(Tensor):多维数组,可以看作是矩阵的扩展。张量是N维张量,当N > 2时,它不再具有直观的几何解释,但可以表示高位空间中的复杂数据关系。深度学习中的数据,特别是图像、语音、文本等,通常使用张量来表示。

  5. 深度学习:通过神经网络学习数据中的模式。神经网络中的计算本质上是张量之间的运算。TensorFlow等深度学习框架的名字来源于张量(Tensor),强调了深度学习中的核心计算对象。

  6. 学习建议:深入理解张量的概念对于学习深度学习至关重要。熟练掌握向量和矩阵的运算有助于理解更复杂的张量运算。此外,要具备一些空间想象力和抽象思维能力,以便理解高位空间中的数据关系。

  7. 后续内容:下一节将学习关于维基分解(可能是指特征分解、奇异值分解SVD或其他与矩阵分解相关的内容)的知识,这是线性代数和深度学习中非常重要的概念。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1681207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArcGI基本技巧-科研常用OLS, GWR, GTWR模型实现

ArcGI基本技巧-科研常用OLS, GWR, GTWR模型实现 OLS,GWR,GTWR回归模型均可以揭示解释变量对被解释变量的影响且可以进行预测。Ordinary Least Squares (OLS)是最小二乘法,Geographically Weighted Regression (GWR)是地理加权回归,Geographically and T…

Redis-Redis事务

Redis事务 Redis事务简介 Redis事务是一组命令的集合,一个事务中的所有命令都将被序列化,按照一次性、顺序性、排他 性的执行队列系列的命令。Redis单条命令保证原子性,但是事务不保证原子性,且没有回滚。事务中任意命令执行失败…

大模型对数据库运维的赋能:智能运维的新时代

引言随着人工智能技术的飞速发展,大模型作为AI领域的前沿技术,已经开始在数据库运维(DBA)领域展现出其独特的价值。大模型的引入,不仅提升了数据库运维的效率,还极大地改善了运维的质量和智能化水平。本文将深入分析大模型在数据库…

train_gpt2_fp32.cu - main

llm.c/test_gpt2_fp32.cu at master karpathy/llm.c (github.com) 源码 // ---------------------------------------------------------------------------- // main training loop int main(int argc, char *argv[]) {// read in the (optional) command line argumentsco…

【数据结构】排序(直接插入排序,希尔排序)

目录 一、排序的概念 二、常见的排序算法 三、插入排序 1.直接插入排序 1.直接插入排序实现 2.直接插入排序特性及复杂度 2.希尔排序 1.排序思路 2.希尔排序实现 3.希尔排序的特性及复杂度 一、排序的概念 排序:所谓排序,就是使一串记录&#x…

HTML静态网页成品作业(HTML+CSS)——我的家乡江永网页设计制作(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有1个页面。 二、作品演示 三、代…

适用于 Mac 的 10 种最佳数据恢复工具优点、缺点

数据丢失很常见,并且可能由于许多不同的原因而发生。这种情况在我和我们团队的其他成员身上发生过很多次,即使我们格外小心我们的个人存储设备。 幸运的是,数据恢复软件在大多数情况下都可以工作。但是,由于数据丢失场景彼此之间…

在UBuntu上安装QT环境

一、UBuntu环境 二、官网下载QT https://download.qt.io/archive/qt/ 安装所需选择版本下载,可以现在windows下载在复制进去 三、安装QT 1、复制到ubuntu 2、打开终端,改变刚下载文件的权限 权限代号 r:读取权限,数字代号为 “…

【Pytorch】9.torch.nn.MaxPool2d

什么是MaxPool2d 是对二维矩阵进行池化层下采样的方法 MaxPool2d的用法 相较于卷积层,多出来的参数为ceil_mode 这个参数代表,如果所剩的部分不够卷积核的大小,要不要进行池化操作 具体代码为 import torch import torchvision from torch …

深度学习之卷积神经网络理论基础

深度学习之卷积神经网络理论基础 卷积层的操作(Convolutional layer) 在提出卷积层的概念之前首先引入图像识别的特点 图像识别的特点 特征具有局部性:老虎重要特征“王字”仅出现在头部区域特征可能出现在任何位置下采样图像&#xff0c…

laravel 解决composer install报错

laravel 解决报错: Please provide a valid cache path 这是因为laravel的缓存路径没有找到 laravel缓存文件路径是在 config/cache.php中设置,默认存在storage文件夹中 file > [driver > file,path > storage_path(framework/cache/data),], 解决&#x…

快解析Tplink端口映射如何设置

Tplink作为国内知名路由器品牌,有着广泛的用户群体。使用快解析端口映射是实现内网服务器被外网访问必须要做的设置,很多对网络不懂得小白不知道该到哪里去做,下面我就讲解一下tplink路由器如何做端口映射。 1:访问路由器 &#…

HTML静态网页成品作业(HTML+CSS+JS)——在线购物商城网页设计制作(4个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,使用Javacsript代码实现图片轮播切换,共有4个页面。 二、…

Elasticsearch的并发控制策略

文章目录 利用external对版本号进行外部控制利用if_seq_no和if_primary_term作为唯一标识来避免版本冲突 ES中的文档是不可变更的。如果你更新一个文档,会将就文档标记为删除,同时增加一个全新的文档。同时文是的version字段加1内部版本控制 If_seq_no If_primary_term 使用外…

SpringCloudAlibaba5.2sentinel配置流控

概述 简介 监控应用流量的QPS或并发线程数,当达到指定的阈值时对流量进行控制 规则 1.资源名:请求路径 2.针对来源:配置该规则微服务,一般填写调用方的微服务名称,多个用","分割 3.阈值类型:二…

Linux中的计划任务(crontab)详解

🐇明明跟你说过:个人主页 🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、Linux的起源与发展 2、什么是计划任务&#xf…

ue引擎游戏开发笔记(41)——行为树的建立(2)--丰富ai行为:巡逻后返回原处

1.需求分析: 就敌人ai而言,追踪到敌人有可能丢失目标,丢失目标后应该能返回原来位置,实现这一功能。 2.操作实现: 1.思路:利用clear value函数,禁用掉当前的追踪功能,执行之后的返…

Java环境搭配(一)JDK下载以及介绍、path环境变量配置

目录 JDK Development Kit (JDK) 下载 JDK介绍 : JDK 包括以下主要组件 配置path环境变量 在cmd上打印Helloworld JDK Development Kit (JDK) 下载 下载官方地址 www.oracle.com 进入网址后: 点击产…

构建智慧设施管理平台:数字化引领未来建筑行业发展

随着城市化进程的不断推进和建筑行业的持续发展,智慧设施管理平台的重要性日益凸显。在这一背景下,构建智慧设施管理平台成为推动建筑行业数字化转型的关键举措。本文将深入探讨智慧设施管理平台的构建与优势,助力建筑企业把握数字化转型的主…

山东大学机器学习实验lab9 决策树

山东大学机器学习实验lab9 决策树 所有公式来源于<<机器学习>>周志华github上有.ipynb源文件 修改&#xff1a; 2024 5.15 添加了一些Node属性&#xff0c;用于标记每个Node使用的划分feature的名称&#xff0c;修改后的版本见 github Node 类 构造函数 初始化…