首页 > 其他分享 >深度学习-线性代数

深度学习-线性代数

时间:2023-03-25 13:57:26浏览次数:39  
标签:matrix 矩阵 张量 学习 线性代数 深度 范数 向量 vdots

1.标量

仅包含一个数值被称为标量。

image

2.向量

向量被视为标量值组成的列表,这些标量被称为向量的元素,在数学上,具有一个轴的张量表示向量。一般来说,张量可以具有任意长度,这取决于机器的内存。

image

3.长度、维度、形状

向量的长度通常称为向量的维度,我们可以用Python内置函数len访问张量长度。
image

当用张量(只有一个轴)表示一个向量时,也可以用.shape访问向量的长度,列出张量沿每个轴的长度,对于只有一个轴的张量,形状只有一个元素。

image

在此区别,向量或轴的维度被用来表示向量和轴的长度,即向量和轴的元素数量。而张量的维度用来表示张量具有的轴数。在这个意义上,张量的某个轴的维数就是这个轴的长度。

4.矩阵

类比向量将标量从零阶推广到一维,矩阵又将向量从一维推广到二维。

\[A = \left[ \begin{matrix} a_{11} & a_{12} & a_{13} & \cdots & a_{1n} \\ a_{21} & a_{22} & a_{13} & \cdots &a_{2n}\\ \vdots & \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & a_{m3} & \cdots &a_{mn} \end{matrix} \right] \]

A的形状时(m,n),当行列数量相等时,称为方阵。image

我们可以通过行索引i,列索引j访问矩阵元素aij,例如[Aij]。

当我们交换矩阵行列时,结果称为转置。用B=AT表示。有aij=bji,因此形状是(n,m)的矩阵。

\[B = \left[ \begin{matrix} a_{11} & a_{12} & a_{31} & \cdots & a_{m1} \\ a_{12} & a_{22} & a_{32} & \cdots &a_{m2}\\ \vdots & \vdots & \vdots & \ddots & \vdots \\ a_{1n} & a_{2n} & a_{3n} & \cdots &a_{mn} \end{matrix} \right] \]

image

方阵的一种特殊类型,对称矩阵,即B=BT

image

尽管,单个向量的默认方向是列向量,但在表示表格数据集的矩阵中,将每个数据样本作为矩阵中的行向量更为常见。

5.张量

张量是描述具有任意数据轴的n维数组的通用方法。image

6.张量算法的基本性质

给定具有相同形状的任意两个张量,任何按元素二元运算的结果都将是相同形状的张量。例如将两个相同形状的矩阵相加,会在这两个矩阵上执行元素加法。

image

具体而言,两个矩阵的按元素乘法称为哈达玛积,对于矩阵B符合(m,n),第i行第j列元素的元素是bij,矩阵A和矩阵B的哈达玛积为

\[A\circ B =\left[ \begin{matrix} a_{11}b_{11} & a_{12}b_{12} & a_{13}b_{13} & \cdots & a_{1n}b_{1n} \\ a_{21}b_{21} & a_{22}b_{22} & a_{13}b_{13} & \cdots &a_{2n}b_{2n}\\ \vdots & \vdots & \vdots & \ddots & \vdots \\ a_{m1}b_{m1} & a_{m2}b_{m2} & a_{m3}b_{m3} & \cdots &a_{mn}b_{mn} \end{matrix} \right] \]

image

将张量加上或乘以一个标量不会改变张量的形状,其中张量的每个元素都将与标量相乘或相加。

image

7.降维

我们可以对任意张量进行一个有用的操作是计算其元素的和。为表示长度为d的向量中元素的总和,可以记为

\[\sum_{i=0}^dx_i \]

image

同样,我们可以表示任意张量的元素和,例如矩阵A的元素和可以记为

\[\sum_{i=1}^m\sum_{j=1}^na_{ij} \]

image

默认情况下,调用求和函数会对所有列的元素求和来降低张量维度,使它变成一个标量。我们还可以指定张量沿哪一个轴来进行降维。以矩阵为例,为了通过对所有行元素求和来降维,在调用函数市可以指定axis=0。对输入矩阵沿轴0进行降维以生成输出向量,因此输入轴0的维数将会在输出形状中消失。

image

指定axis=1即为对所有列元素进行求和降维。image

沿着行和列求和,等价于对矩阵所有元素进行求和。

image

一个与求和相关的量是平均值(mean或average)。我们通过将总和除以元素总数来计算平均值。在代码中,我们可以调用函数来计算任意形状张量的平均值。image

同样,计算平均值的函数也可以沿指定轴降低张量维度。

image

8.非降维求和

有时,调用函数来计算总和或平均值时保持轴数不变很有用。

image

例如,由于sum_A在对每行进行求和后仍然保持两个轴,我们可以通过广播将A除以sum_A。

image

如果我们沿某个轴计算A的元素的累积总和,如axis=0,可以调用cumsum函数。此函数不会沿任何轴降低输入张量的维度。

image

9.点积

给定两个向量,它们的点积是相同位置按元素乘积的和:

\[x^Ty=\sum_{i=0}^dx_iy_i \]

image

我们也可以通过执行按元素乘法,然后求和来表示两个向量的点积:

image

10.矩阵-向量积

我们将前面的矩阵A用它的行向量来表示:

\[A= \left[ \begin{matrix} a_1^T \\ a_2^T \\ \vdots \\ a_m^T \end{matrix} \right] \]

其中,每个aiT表示矩阵第i行,矩阵向量积是一个长度为m的列向量,其第i个元素是点积aiTx:

\[Ax=\left[ \begin{matrix} a_1^T \\ a_2^T \\ \vdots \\ a_m^T \end{matrix} \right]x=\left[ \begin{matrix} a_1^Tx \\ a_2^Tx \\ \vdots \\ a_m^Tx \end{matrix} \right] \]

在代码中,我们使用张量表示矩阵-向量积。我们使用mv函数。注意A的列维数必须与x的维数相同。

image

11.矩阵-矩阵乘法

假设有两个矩阵A(n,k),B(k,m):

\[A = \left[ \begin{matrix} a_{11} & a_{12} & a_{13} & \cdots & a_{1k} \\ a_{21} & a_{22} & a_{13} & \cdots &a_{2k}\\ \vdots & \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & a_{n3} & \cdots &a_{nk} \end{matrix} \right], B = \left[ \begin{matrix} b_{11} & b_{12} & b_{13} & \cdots & b_{1m} \\ a_{21} & b_{22} & b_{13} & \cdots &b_{2m}\\ \vdots & \vdots & \vdots & \ddots & \vdots \\ b_{k1} & b_{k2} & b_{k3} & \cdots &b_{km} \end{matrix} \right] \]

用行向量aiT表示矩阵A的第i行,并用bj表示矩阵B的第二列。要生成矩阵积C=AB,最简单的方法是考虑A的行向量和B的列向量:

\[A= \left[ \begin{matrix} a_1^T \\ a_2^T \\ \vdots \\ a_m^T \end{matrix} \right], B= \left[ \begin{matrix} b_1^T & b_2^T & \dots & b_m^T \end{matrix} \right] \]

当我们简单地将每个元素cij计算为点积aiTbj:

\[C=AB=\left[ \begin{matrix} a_1^T \\ a_2^T \\ \vdots \\ a_m^T \end{matrix} \right]\left[ \begin{matrix} b_1^T & b_2^T & \dots & b_m^T \end{matrix} \right]=\left[ \begin{matrix} a_{1}^Tb_1 & a_{2}^Tb_2 & \cdots & a_{1}^Tb_m \\ a_{2}^Tb_1 & a_{2}^Tb_2 & \cdots &a_{2}^Tb_m\\ \vdots & \vdots & \ddots & \vdots \\ a_{n}^Tb_1 & a_{n}^Tb_2 & \cdots &a_{n}^Tb_m \end{matrix} \right] \]

image

矩阵-矩阵乘法可以简单称为矩阵乘法,不要与哈达玛积混淆。

12.范数

非正式地说,向量的范数表示一个向量的大小,这里的大小概念不涉及维度,而是分量的大小。

在线性代数中,向量范数是将向量映射到标量的函数f,给定任意向量x,向量范数具有一些性质。

第一个性质是:如果我们按照常数因子a缩放向量的所有元素,其范数也会按照相同常数因子的绝对值缩放:

\[f(ax)=|a|f(x) \]

第二个性质是三角不等式:

\[f(x+y)\leqslant f(x)+f(y) \]

第三个性质简单来说范数必须是非负的:

\[f(x) \geq 0 \]

因为在大多数情况下,任何数最小的大小是0.最后一个性质要求范数最小为0,当且仅当向量全由0组成:

\[\forall i,[x]_i=0\iff f(x)=0 \]

范数可以类比于距离的度量。事实上,欧几里得距离是一个L2范数。假设n维向量x中元素是x1...,xn,其L2范数范数是向量元素平方和的平方根

\[||x||_2= \sqrt{\sum_{i=1}^nx_i^2} \]

其中,L2范数常常省略下标2,也就是说||x||等同于||x||2,在代码中我们可以按如下方式计算向量的L2范数:

image

深度学习中常使用L2范数的平方,也会遇到L1范数,它表示为向量元素的绝对值的和:

\[||x||_1=\sum_{i=1}^n|x_i| \]

与L2范数相比,L1范数收异常值影响较小。为计算L1范数,我们将绝对值函数和按照元素求和组合起来。image

L2和L1范数都是更一般的Lp范数特例:

\[||x||_p=(\sum_{i=1}^n|x_i|^p)^{1/p} \]

类似于L2范数,矩阵(m,n)的弗罗贝尼乌斯范数是矩阵总元素平方和的平方根:

\[||x||_F=\sqrt{\sum_{i=1}^m\sum_{j=1}^nx_{ij}^2} \]

弗罗贝尼乌斯范数具有向量范数的所有性质,它就像是矩阵形向量的L2范数,调用以下函数将计算矩阵的弗罗贝尼乌斯范数。

image

在深度学习中,我们经常试图解决优化问题:最大化分配给观测数据的概率;最小化预测函数值与真实观测值之间的距离。用向量表示物品,以便最小化相似项目之间的距离。除了数据目标或许是深度学习算法最重要的组成部分,通常被表达为范数。

标签:matrix,矩阵,张量,学习,线性代数,深度,范数,向量,vdots
From: https://www.cnblogs.com/nobodyx/p/17254596.html

相关文章

  • java学习日记20230325-模版设计模式
    模版设计模式利用多态的动态绑定,将通用的方法设计为模版抽象类,通过子类继承重写抽象方法实现模版调用。 父类抽象类abstractpublicclassTemplate{......
  • Markdown语法学习
    Markdown学习标题:#+空格+标题名字二级标题##+空格+标题名字三级标题同理最多六级标题字体Hello,World!粗体:两边+**Hello,World!斜体:两边+*Hello,World!粗......
  • DINO-DETR论文学习记录
    摘要我们介绍了DINO(带有改进的去噪器box的DETR),一种最先进的端到端对象检测器。DINO通过使用对比方式进行去噪训练、混合查询选择方法进行锚点初始化以及用于框预测的ookfo......
  • 因果推断dowhy之-ihdp数据集上的案例学习
    0x01.案例背景IHDP(InfantHealthandDevelopmentProgram)就是一个半合成的典型数据集,用于研究“专家是否家访”对“婴儿日后认知测验得分”之间的关系。原数据集是基......
  • DETR源码学习(一)之网络模型构建
    这篇文章主要为记录DETR模型的构建过程首先明确DETR模型的搭建顺序:首先是backbone的搭建,使用的是resnet50,随后是Transformer模型的构建,包含编码器的构建与解码器的构建,完......
  • helm 学习(二)
    helm3内置对象一、常用的内置对象Release对象Values对象Chart对象Capabilities对象Tenpalte对象二,各个内置对下详解1,Rekease对象 描述了版本发布的自身的一些......
  • 快速掌握 机器学习(Machine Learning) 常用概念术语,常用算法
    1、什么是机器学习?机器学习的概念:传统上如果我们想让计算机工作,我们给它一串指令,然后它遵照这个指令一步步执行下去。有因有果,非常明确。这样的方式计算机是无法执行固定流......
  • 【Java学习笔记】 apache-maven安装
    maven与jdk版本对应关系https://maven.apache.org/download.cgimaven在windows下的安装与环境配置以3.9.1版本为例1.官网下载2.解压(记住路径)3.设置环境变量我......
  • 架构师学习--常见系统的性能最大量级,nginx,kafka,4个9等
    1、nginx负载均衡性能是3万左右,2、一般的Linux服务器上装一个Nginx大概能到5万/秒;3、LVS的性能是十万级,据说可达到80万/秒;4、而F5性能是百万级,从200万/......
  • go语言学习-grpc-1
    grpc简介gRPC由google开发,是一款语言中立、平台中立、开源的远程过程调用系统,gRPC客户端和服务端可以在多种环境中运行和交互,例如用java写一个服务端,可以用go语言写客户端......