范数

浅谈压缩感知(十):范数与稀疏性

≡放荡痞女 提交于 2020-01-13 22:05:45
问题: 压缩感知中算法会通过L0,L1范数建立的数学模型得到一个稀疏解,那么为什么L0,L1范数会导致一个稀疏解呢? 分析与解释: 1、范数 常见的有 L 0范数、 L 1范数、 L 2范数,经常要将 L 0范数等价为 L 1范数去求解,因为 L 1范数求解是一个凸优化问题,而 L 0范数求解是一个NP难问题。 (关于NP问题:参考阅读 http://www.cnblogs.com/AndyJee/p/5048556.html ) L 0范数指的是x中非零元素的个数,即x的稀疏度,如果x是K稀疏的,则 L 0范数等于K; L 1范数指的是x中所有元素模值的和; L 2范数指的是x中所有元素模值平方的和再开方,它代表着距离的概念; 还有无穷范数,指的是x中元素模的最大值。 2、稀疏性 在压缩感知里经常提到 "K稀疏" 的概念,这个是很容易理解的:也就是对于长度为N的向量(实际上是指一个N维离散离值信号)来说,它的N个元素值只有K个是非零的,其中K<<N,这时我们称这个向量是K稀疏的或者说是严格K稀疏的;实际中要做到严格K稀疏不容易,一般来说,只要除了这K个值其它的值很小很小,我们就认为向量是稀疏的,这时区别于严格K稀疏且就叫它K稀疏吧。 为什么要谈稀疏这个问题呢?因为如果信号是稀疏的,则它是可压缩的,也就是说里面那么多零,我只记录那些非零值及它的位置就好了。 当然

行列式,矩阵的秩,迹,范数,条件数

血红的双手。 提交于 2020-01-10 01:56:34
方阵的行列式 det(A) 求方阵的A所对应的行列式的值 矩阵的秩 rank(A) 求矩阵A的秩 求3~20阶魔方阵的秩 for n=3:20 magic(n) r(n)=rank(magic(n)) bar(r) grid on end 矩阵的迹 迹等于对角线之和等于特征值之和 trace(A)求矩阵的A的迹 向量和矩阵的范数 norm(V)或norm(V,2) 计算向量V的2范数 矩阵A的转置的最大特征值的平方根 norm(V,1)计算向量V的1范数 矩阵列元素绝对值之和的最大值 norm(V,inf)计算向量V的∞范数 所有矩阵行向量绝对值之和的最大值 矩阵的条件数 条件数是范数与逆矩阵范数的乘积 条件数越接近于一,矩阵的性能越好 cond(A,1) 1范数条件数 cond(A)或cond(A,2) 2 cond(A,inf) 无穷 来源: CSDN 作者: qq_41724350 链接: https://blog.csdn.net/qq_41724350/article/details/103913734

线性代数

放肆的年华 提交于 2020-01-05 22:07:51
线性相关和生成子空间   如果逆矩阵 A -1 存在,那么式子 A x = b 肯定对于每一个向量 b 恰好存在一个解。但是,对于方程组而言,对于向量 b 的某些值,有可能无解或者存在无限多解。存在多于一个解但是少于无限多个解的情况是不可能发生的;因为如果 x 和 y都是某方程组的解,则 z = αx + (1-α)y, (α取任意实数)也是该方程组的解。   形式上,一组向量的线性组合,是指每个向量乘以对应标量系数之后的和,即:∑ i x i v (i) ,一组向量的生成子空间(span)是原始向量线性组合后所能抵达的点的集合。 在线性代数里,矢量空间的一组元素中,若没有矢量可用有限个其他矢量的线性组合所表示,则称为 线性无关或线性独立 (linearly independent),反之称为 线性相关 (linearly dependent)。    例如在三维欧几里得空间R的三个矢量(1, 0, 0),(0, 1, 0)和(0, 0, 1)线性无关;但(2, 0, 1),(1, 0, 1)和(3, 1, 2)线性相关,因为第三个是前两个的和。   确定 A x = b 是否有解,相当于确定向量 b 是否在 A 列向量的生成子空间中。这个特殊的生成子空间被称为 A 的列空间 (column space)或者 A的值域(range)。 范数   范数(norm)函数可以衡量向量大小

从头学pytorch(六):权重衰减

蹲街弑〆低调 提交于 2019-12-28 20:49:00
深度学习中常常会存在过拟合现象,比如当训练数据过少时,训练得到的模型很可能在训练集上表现非常好,但是在测试集上表现不好. 应对过拟合,可以通过数据增强,增大训练集数量.我们这里先不介绍数据增强,先从模型训练的角度介绍常用的应对过拟合的方法. 权重衰减 权重衰减等价于 \(L_2\) 范数正则化(regularization)。正则化通过为模型损失函数添加惩罚项使学出的模型参数值较小,是应对过拟合的常用手段。我们先描述 \(L_2\) 范数正则化,再解释它为何又称权重衰减。 \(L_2\) 范数正则化在模型原损失函数基础上添加 \(L_2\) 范数惩罚项,从而得到训练所需要最小化的函数。 \(L_2\) 范数惩罚项指的是模型权重参数每个元素的平方和与一个正的常数的乘积。 线性回归一文 中的线性回归损失函数 \[ \ell(w_1, w_2, b) = \frac{1}{n} \sum_{i=1}^n \frac{1}{2}\left(x_1^{(i)} w_1 + x_2^{(i)} w_2 + b - y^{(i)}\right)^2 \] 为例,其中 \(w_1, w_2\) 是权重参数, \(b\) 是偏差参数,样本 \(i\) 的输入为 \(x_1^{(i)}, x_2^{(i)}\) ,标签为 \(y^{(i)}\) ,样本数为 \(n\) 。将权重参数用向量 \(

Fourier分析基础(一)——Fourier级数

与世无争的帅哥 提交于 2019-12-23 00:04:59
前言 傅立叶分析的作用是把一个函数变成一堆三角函数的和的形式,也就是分解。首先引入的是傅立叶级数,Fourier级数的作用是把函数变为可数无限个三角函数的和,而且这些三角函数的频率都是某个基频的整数倍。如果这个基频无限趋近于0,那么在极限的情况下这函数的参数(频率)就连续了,将连续时域函数映射到连续的频域函数的变换就是标准的傅立叶变换。 由于工程采集的信号大多都是离散的,把时域离散化以后不可能在得到连续的频域函数,所以在频域上也不连续了,这种离散时域序列到离散频域序列的变换称之为离散傅立叶变换(DFT),然后有人开发出了快速计算的快速傅立叶变换(FFT)。 以上介绍的每一种Fourier变换都有其逆变换。 Fourier级数 考虑一下,假设存在2个序列 和 ,还有一个数字 。 现在有一个时域上变化的函数 。这个函数可以表达为如下的形式: 这就是傅立叶级数,傅立叶变换最基础的形式。上式中和式的形式或许并不直观,如果画出一部分或许会直观一些。 如图所示,是从圆频率为1rad/s~10rad/s的正弦信号的合集。 在 空间上的Fourier级数展开 考虑傅立叶级数,首先考虑周期函数在 上的展开,但是在展开之前,需要做几个计算和证明。 计算 ( 就不计算了,这个是一样的)。 积分过程略,得到。 这样就求出了 在 上的范数,就是 那么正交基不妨使用 构成。

torch.nn.functional.normalize详解

瘦欲@ 提交于 2019-12-22 16:01:49
torch.nn.functional.normalize torch.nn.functional.normalize(input, p=2, dim=1, eps=1e-12, out=None) 功能 :将某一个维度除以那个维度对应的范数(默认是2范数)。 v = v max ⁡ ( ∥ v ∥ p , ϵ ) v = \frac{v}{\max(\lVert v \rVert_p, \epsilon)} v = max ( ∥ v ∥ p ​ , ϵ ) v ​ 主要讲以下三种情况: 输入为一维 Tensor a = torch . Tensor ( [ 1 , 2 , 3 ] ) torch . nn . functional . normalize ( a , dim = 0 ) tensor ( [ 0.2673 , 0.5345 , 0.8018 ] ) 可以看到每一个数字都除以了这个 Tensor 的范数: 1 2 + 2 2 + 3 2 = 3.7416 \sqrt{1^2+2^2+3^2}=3.7416 1 2 + 2 2 + 3 2 ​ = 3 . 7 4 1 6 输入为二维 Tensor b = torch . Tensor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] ) torch . nn . functional .

特征工程之距离相关系数( Distance correlation coefficient )

故事扮演 提交于 2019-12-18 02:23:36
距离相关系数: 线性关系可以通过pearson相关系数来描述,单调关系可以通过spearman或者kendall来描述,非线性如何描述,距离相关系数可以非线性相关性。 我们都知道,皮尔森关联系数只能描述数据键的线性相关性程度,对于非线性相关数据,皮尔森关联系数显然不适合的, 距离相关系数 恰恰能在很大程度上客服皮尔森相关系数的弱点。 比如:Pearson相关系数等于0,这两个变量并不一定就是独立的(有可能是非线性相关);但如果距离相关系数为0的话,那么就可以说这两个变量是独立的了。 距离相关系数的计算依赖于距离协方差和距离方差,首先我们先了解下距离协方差的定义,假设有n维(X,Y)统计样本。 首先计算包含的所有成对距离(即:数组间每行数据之间的范数距离) 为了防止我没有描述清楚,直接上代码: #生成一个3行2列的数组 X = np.random.randint(-100,100,(3,2)) 0.1 out:array([[ 4.8, 7.7], [-2.6, 6.8], [ 5.9, 9. ]]) Y = X**2 #取数据集的行 col = X.shape[0] #做成n n的零矩阵,用于盛放数据 a = np.zeros((col,col)) b = np.zeros((col,col)) A = np.zeros((col,col)) B = np.zeros((col

PyTorch学习笔记

孤者浪人 提交于 2019-12-17 12:29:37
【PyTorch深度学习60分钟快速入门 】Part1:PyTorch是什么?来源:https://www.cnblogs.com/leejack/p/8370634.html import torch import numpy as np #用于替代NumPy(torch对象叫张量,带前缀和括号,并用逗号分隔,numpy对象叫数组,用空格分隔),#torch可以使用GPU的计算力,一种深度学习研究平台,可以提供最大的灵活性和速度 x = torch.Tensor(5, 3) #创建一个5x3且未初始化的矩阵,如果将首字母大写的Tensor改成小写tensor,会报错 #print(x) x = torch.rand(5, 3)#创建一个随机初始化的矩阵rand表示0~1之间均匀分布的随机数 #print(x) #print(x.size()) y = torch.rand(5, 3) #print(x + y) #print(torch.add(x, y)) result = torch.Tensor(5, 3) #print(result) torch.add(x, y, out=result) #print(result) y.add_(x) #原地替换,任何原地改变张量值的操作后缀都是固定的_,例如:x.copy_(y)、x.t_(),都将原地改变x的值。 #print(y

Eigen(5)-Reductions, visitors and broadcasting(规约、迭代和广播)

六月ゝ 毕业季﹏ 提交于 2019-12-13 12:10:05
规约、迭代、广播 规约 Eigen中规约是指对一个矩阵或数组操作并返回一个标量的函数,常用的是sum()方法,返回矩阵或数组的所有元素的和。 # include <iostream> # include <Eigen/Dense> using namespace std ; int main ( ) { Eigen :: Matrix2d mat ; mat << 1 , 2 , 3 , 4 ; cout << "Here is mat.sum(): " << mat . sum ( ) << endl ; cout << "Here is mat.prod(): " << mat . prod ( ) << endl ; cout << "Here is mat.mean(): " << mat . mean ( ) << endl ; cout << "Here is mat.minCoeff(): " << mat . minCoeff ( ) << endl ; cout << "Here is mat.maxCoeff(): " << mat . maxCoeff ( ) << endl ; cout << "Here is mat.trace(): " << mat . trace ( ) << endl ; } output Here is mat.sum(): 10

[学习笔记] L1-PCA

半世苍凉 提交于 2019-12-13 02:27:59
L1-PCA Intro PCA的本质就是从高维空间向低维空间投影,投影的本质又是左乘(或右乘)一个向量(表征原来特征空间到投影后特征空间的权重),经过线性加权,转换到低维空间表征,如果将向量换成矩阵(假设由m个向量组成),则是将原高维空间降维到m维空间上去。 L1-PCA解决的问题是outlier问题(一般PCA假设噪声服从高斯分布,如果有异常不服从,那么此时PCA的效果将非常差),一般PCA是对outlier比较敏感的,而L1-PCA不对outlier敏感. PCA回顾 有必要从数学角度理解一下PCA。 就像上面我说的,PCA本质是做一种变换,一种变换往往可以通过矩阵乘积来表征,因此: \[ 定义向量a \in R^{p \times 1},特征矩阵X\in R^{n \times p},那么将X降维到1维是相当简单:\\X' = Xa,x'\in R^{n \times 1} \] 在我们学过的信号处理书中,我们知道,信号往往具有较大的方差,而噪声的方差是较小的,因此我们就很当然的认为,经过降维后的数据应该具有较大的方差。因此,下一步就是方差最大化: \[ \sigma^2_a = (Xa)^T(Xa) = a^TX^TXa = a^TVa \] 下面的任务就成了最大化方差优化求解a的问题了,我们引入约束条件,利用拉格朗日法: \[ z = a^TVa - \lambda(a