4.线性代数

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

线性代数

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

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

标量(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.hqwc.cn/news/706331.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp小程序使用scroll-view组件实现上下左右滚动触发事件

在做uniapp开发小程序的时候,有一个需求是在一个表格区域里面可以上下左右滑动元素,并实现表头和左侧的标签联动效果,就想趣运动里面选择场地的效果一样,这里就用到了scroll-view组件,scroll-view官网文档地址&#xf…

积温空间分布数据、气温分布数据、日照数据、降雨量分布、太阳辐射数据、地表径流数据、土地利用数据、npp数据、ndvi数据

引言 积温是某一时段内逐日平均气温之和,它是研究植物生长、发育对热量的要求和评价热量资源的一种指标,是影响植物生长的重要因素之一,对指导农业生产和生态建设具有非常重要的意义。作为重要的气候资源,积温与其它资源的区别在于存在很大的地域差异和时…

Mamba:7 VENI VIDI VICI

若在阅读过程中有些知识点存在盲区,可以回到如何优雅的谈论大模型重新阅读。另外斯坦福2024人工智能报告解读为通识性读物。若对于如果构建生成级别的AI架构则可以关注AI架构设计。技术宅麻烦死磕LLM背后的基础模型。 序列模型的效率与有效性之间的权衡取决于状态编…

解决GitHub提交后不显示自己的头像 显示另一个没见过的账号?

问题说明 最近换了几台电脑开发项目,提交到github,看了下提交记录,怎么冒出来不是我的账号头像? 什么鬼i 原因分析 github是按照你注册时候填的邮箱来查找账号,并显示在提交记录上面的。如果账号找不到头像就出不来…

停车场车位引导管理系统工作原理是什么,由哪些软硬件设备组成?

在现代城市中,随着汽车保有量的持续增长,停车难成为了许多城市面临的共同问题。有效管理停车场资源,提高车位利用率,减少寻找停车位的时间,对于缓解交通拥堵、提高城市运行效率具有重要意义。车位引导管理系统正是为了…

1755jsp学生信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 学生信息管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,…

【Oracle篇】rman物理备份工具的基础理论概述(第一篇,总共八篇)

☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&am…

齐护K210系列教程(二十七)_语音识别

语音识别 1.烧录固件和模型2.语音识别程序2.1训练并识别2.2使用本地文件语音识别 3.课程资源联系我们 1.烧录固件和模型 注:本应用只适用于有麦克风功能的型号:AIstart_pro、AIstart_掌机、AIstart_Mini, 其它型号不支持! 机器码生成以及模…

vue2人力资源项目9权限管理

页面搭建 <template><div class"container"><div class"app-container"><el-button size"mini" type"primary">添加权限</el-button><el-table-column label"名称" /><el-table-co…

基于EBAZ4205矿板的图像处理:05均值滤波算法

基于EBAZ4205矿板的图像处理&#xff1a;05均值滤波算法 项目全部文件已经上传&#xff0c;是免费的 先看效果 可以明显看到图像变糊了&#xff0c;这就是均值滤波的特点&#xff0c;将噪声均摊到每个点上的同时&#xff0c;也会让图像丢失细节。 算法讲解 均值滤波&#x…

【c++】map和set的封装

1.红黑树源码 我们使用上节课的红黑树源码来封装map和set. 因为map存的是&#xff08;key,value&#xff09;,set存的是&#xff08;key&#xff09;,为了我们set和map使用同一个类模板&#xff08;红黑树&#xff09;&#xff0c;所以我们先要修改红黑树结点中存的数据类型&a…

51单片机入门:I2C通讯协议

I2C通讯协议 I2C简介 串口通信只能在两个设备之间进行&#xff0c;如果是三个设备相互通讯&#xff0c;那么每个设备需要两组串口&#xff0c;实际上是3组相互独立的串口通信。如果是4个设备相互通信就更加麻烦了&#xff0c;最突出的问题就是线路连接比较复杂。 为了解决这个…