【线性分类器】(二)“深度学习”的鼻祖——感知器_采用单一感知器神经元解决一个简单的分类问题,将四个输入输出样本分为两类,其中两-程序员宅基地

技术标签: 机器学习  深度学习  感知器  

学习资料:

传送门

“深度学习”的鼻祖——感知器

我们前面介绍了最简单的一种分类器形式——线性分类器【线性分类器】(一)线性判别,它是由线性判别函数及相应的分类决策规则构成的。
那这个线性判别函数是如何得到的呢?如果有一个模式识别问题,我们怎么才能设计出一个合适的线性分类器,使它能对问题中的样本正确地分类呢?
这就是牵涉到线性分类器训练的问题。

1 线性分类器训练的一般思路

在介绍感知器训练算法之前,我们先来看一看学习分类器训练的一般思路。
如果给定了一个包含两类样本的样本集,那么训练一个线性分类器,就是希望计算机能够依据样本集中的数据,自行寻找到一条分类决策边界,也就是确定能把两类样本正确分类的权向量 w w w 和偏置量 w 0 w_0 w0

我们再来看看如果给定了训练集,那么最终能求到的线性判别函数会在什么位置呢?

在这里插入图片描述

在这里插入图片描述

显然, G i j ( x ) = 0 G_{ij}(x)=0 Gij(x)=0 的分类决策边界,可以旋转,直到与两类样本的分布区域相切,这代表不同的权向量 w w w;还可以平移,直到两类样本的分布区域相切,这代表不同的偏置量 w 0 w_0 w0。因此,最终的解不是唯一解,而是位于一个区域内,称为解区域

在这里插入图片描述

那么,求解一个线性分类器的过程,就是按照某种准则,找到解区域中一个最优解的过程,其一般的思路是:

  1. 首先设定一个标量的准则函数(Criterion Function),使其值能够代表解的优劣程度,准则函数值越小,说明解越符合要求,越好;
  2. 通过寻找准则函数的极小值,就能找到最优的一个解,使准则函数 取得极小值的增广权向量 ,就是最优解;

在求解线性分类器的过程中,既要求权向量 w w w,又要求偏置量 w 0 w_0 w0,比较麻烦,可不可以进行一些规范,简化数据和计算的表达形式呢?

首先,我们看一下要求的线性判别函数,它的形式是
G i j ( x ) = w T x + w 0 G_{ij}(x)=w^Tx+w_0 Gij(x)=wTx+w0
其中 x x x n n n 维的样本特征向量, w w w n n n 维的权向量, w 0 w_0 w0 是偏置量。为将 w 0 w_0 w0统一纳入求解过程,对 x x x w w w 都进行增广,变为 n + 1 n+1 n+1 维。

在这里插入图片描述

此时,判别函数也就变为了
G i j ( x ) = w T x G_{ij}(x)=w^Tx Gij(x)=wTx
我们再来看求解的目标,也就是要求两类中所有样本都能够被正确地分类,即以下不等式方程组成立。

在这里插入图片描述

我们可以看到,这些不等式中,对于第 i i i 类样本 x l i x^{l_i} xli判别函数值大于 0,对于第 j j j 类样本 y l j y^{l_j} ylj判别函数值小于 0。大于小于混在一起,也不方便处理。我们可以把位于分类决策边界负侧的第 j j j 类的所有样本的特征向量乘以-1,则求解目标就统一变为了大于 0 的不等式方程组形式:

在这里插入图片描述

规范化后要求找到满足 G i j ( x ) = w T x > 0 G_{ij}(x)=w^Tx>0 Gij(x)=wTx>0 的判别函数。

2 感知器算法的原理

要学习感知器算法,需要先了解感知器模型。
感知器模型是一种神经元模型。而神经元模型是根据神经生理学的研究,所提出的模拟神经元功能的数学模型。你可能了解过,生理解剖发现,神经元是一种有输入输出的细胞,它的输入端称为“树突”,可以输入神经刺激;输出端称为“轴突”,可以传导出神经冲动。一个神经元的轴突连接到其他神经元的树突,这种神经元间的相互连接,就构成了一个神经元网络,可以实现复杂的信息处理功能。一个神经元一般具有多个树突,树突所搜集到的输入信号,经过神经元的集中处理,如果达到一定的激发阈值,就会激活轴突的输出

感知器(Perceptron)作为一种神经元模型,是美国计算机科学家罗森布拉特(F. Rosenblatt)在 1957 年提出的。它具有多路的输入和单路的输出,将所有输入信号加权求和后与一个阈值相比较,如果大于阈值,则神经元输出为 1,小于等于阈值,神经元输出为 0。因此,感知器是一种非常简单的神经元模型,它没有反馈和内部状态,只是依靠输入信号是否超过阈值来决定是否激活神经元的输出。

很明显,如果把感知器的输入信号看作是一个待识别样本的特征向量,那么感知器的数学模型就构成了一个典型的线性分类器,可以做出非常明确的二分类决策。因此,感知器模型不仅是一个仿生神经元模型,也是一个可实现的线性分类器模型。如果我们能够通过样本集,使感知器学习到输入权重值和输出的阈值,我们也就可以针对具体的模式识别问题,训练出一个可以实现线性分类的分类器。

感知器是一个通过输入加权和与阈值的比较来觉得是否激活输出的神经元模型,这是一个线性分类器,输入的权构成了线性分类决策边界的权向量,激活输出的阈值 θ θ θ就是分类决策边界的偏置量 w 0 w_0 w0。所以,经过数据规范化以后,得到了统一的求解目标,即
w T x > 0 w^Tx>0 wTx>0

在这里插入图片描述

感知器算法设定准则函数的依据很简单,就是最终分类器要能正确分类所有的样本,所以,感知器算法的准则函数 J J J 设定为所有错分样本的判别函数值之和,再乘以-1。即:
J ( w ) = ∑ x ∈ X 0 ( − w T x ) , X 0 是所有错分样本的集合。 J(w)=\sum_{x\in X_0}(-w^Tx),X_0是所有错分样本的集合。 J(w)=xX0(wTx)X0是所有错分样本的集合。

因此,只要存在错分样本,准则函数值就是大于 0 的,只有当所有样本都正确地被分类了,准则函数才能取得极小值 0。

如何求解呢?感知器算法采用了数值优化中经典的梯度下降法
w ( k + 1 ) = w ( k ) + ρ ( k + 1 ) ∇ J ( x ( k ) ) w(k+1)=w(k)+\rho(k+1)\nabla J(x(k)) w(k+1)=w(k)+ρ(k+1)J(x(k))

即从一个任意的初始权向量 w 0 w_0 w0 出发,沿准则函数值下降最快的方向,也就是负梯度方向对权向量进行一步步修正,直到获得全局最优解为止。即第 k + 1 k+1 k+1 步是在第 k k k 步获得的权向量基础上进行递推,得到第 k + 1 k+1 k+1 步的权向量。其中 ρ ρ ρ是每一次递推的调整步长

求得准则函数第 k k k 步时对 w ( k ) w(k) w(k)的梯度为:

在这里插入图片描述

正好是所有错分样本的和乘以-1。

因此感知器算法的权向量递推公式为:
w ( k + 1 ) = w ( k ) − ρ ( k + 1 ) ∑ x ∈ X 0 ( − x ) = w ( k ) + ρ ( k + 1 ) ∑ x ∈ X 0 x w(k+1)=w(k)-\rho(k+1)\sum_{x\in X_0}(-x)=w(k)+\rho(k+1)\sum_{x\in X_0}x w(k+1)=w(k)ρ(k+1)xX0(x)=w(k)+ρ(k+1)xX0x

即每一步把当前被错分的样本加起来,在调整步长的控制下,去修正权向量。要特别注意的是,修正的方向是“+”,这是因为负梯度和准则函数梯度中的负号相抵消的原因

感知器算法可采取全样本修正和采取单样本修正。
两种方法的具体步骤为:

方法1:采取全样本修正的算法,步骤为:

  • a、设定初始权向量 w ( 0 ) w(0) w(0) k = 0 k=0 k=0
  • b、对训练样本集的所有规范化增广特征向量进行分类,将分类错误的样本(即不满足 G i j ( x ) = w T x > 0 G_{ij}(x)=w^Tx>0 Gij(x)=wTx>0的样本)放入集合 X 0 X_0 X0中;
  • c、修正权向量: w ( k + 1 ) = w ( k ) + ρ ( k + 1 ) ∑ x ∈ X 0 x w(k+1)=w(k)+\rho(k+1)\sum_{x\in X_0}x w(k+1)=w(k)+ρ(k+1)xX0x
  • d、 k = k + 1 k=k+1 k=k+1,返回步骤 b,直至所有样本都能被正确分类为止。

方法2:采取单样本修正的算法,步骤为:

  • a、设定初始权向量 w ( 0 ) w(0) w(0) k = 0 k = 0 k=0

  • b、从训练样本集中顺序抽取一个样本,将其规范化增广特征向量 x x x代入到判别函数中计算;

  • c、若分类正确(即 G i j ( x ) = w T x > 0 G_{ij}(x)=w^Tx>0 Gij(x)=wTx>0)返回到步骤 b b b,抽取下一个样本;若分类错误(即不满足 G i j ( x ) = w T x > 0 G_{ij}(x)=w^Tx>0 Gij(x)=wTx>0),修正权向量: w ( k + 1 ) = w ( k ) + ρ ( k + 1 ) x w(k+1)=w(k)+\rho(k+1)x w(k+1)=w(k)+ρ(k+1)x

  • d、返回到步骤 b,抽取下一个样本;直至训练样本集中所有样本均被正确分类。

我们来直观地看一下感知器算法的过程。

方法1:采取全样本修正的算法

在这里插入图片描述

如图5所示,如果在二维特征空间中有 3 个样本,分别属于两个类。如果我们考虑训练得到一个偏置量为 0 的线性分类器,显然分类决策边界会通过原点,而解区域是如图这样的黄色区域。假设我们取初始权向量为 0 向量,那么显然所有的样本都将
被错分。所以,如果取调整补充为 1 的话,下一步的 w ( 1 ) w(1) w(1),就等于 0 向量加上所有样本的向量和。特别要注意的是,为什么样本 c c c 不是直接与 a 、 b a、b ab 相加呢?

因为我们要对负侧的样本进行规范化(求解目标统一变为大于 0 的不等式方程组形式),在分类器训练的过程中,实际使用的是负侧样本乘以-1 以后的向量。可以看到,感知器算法确实成功地求得了线性分类器的解(红线),可以把所有样本正确地分类。

方法2:采取单样本修正的算法

在这里插入图片描述

如图6所示,假设我们仍然取初始权向量为 0 向量,那么开始依次处理 a b c abc abc 三个样本。因为初始权向量是 0 向量,所以 a a a 是被错分的,修正的结果 w ( 1 ) w(1) w(1)就是 a a a,此时得到了一个线性判别函数。在用这个线性判别函数处理样本 b b b 时, b b b 是被正确分类的,所以权向量无需修正。接着在处理样本 c c c 时,样本 c c c 是被当前的判别函数错分的,因此需要用 c c c 来修正权向量,得到 w ( 2 ) w(2) w2。此时的 w ( 2 ) w(2) w(2)能够正确分类所有样本,所以就是最优解。

我们可以发现这种算法流程求得的最优解,与前一种算法流程求得的最优解并不相同。那么,如何评判哪一个解更优呢?感知器算法真的能找到最优的权向量吗?
事实上,这个两个解都是最优解,因为感知器算法进行求解的准则函数只与是否能够将所有样本都正确分类有关。只要没有错分样本,最终的解落入解区域内,那么,从感知器算法的准则函数来说,就都取得了极小值,得到了算法的最优解。而在解区域中是否还能优中选优,感知器算法就无能为力了。
因此,一个寻优的过程中,评价方式所觉得的目标设定高低,直接决定了我们最终能得到什么样的结果。之所以我们经常强调要立鸿鹄志、志存高远,与此是完全相同的道理。

3 感知器算法的学习速率

感知器算法通过设定所有错分样本的判别函数值之和的负值,推导除了权向量调整的递推公式,就是这两种形式。

在这里插入图片描述

在递推公式中, ρ ρ ρ是调整步长,它的实质是梯度下降法中,每一步向当前负梯度方向调整的大小因子,也就是分类器学习到最优权向量的速度。因此,当我们在线性分类器的学习过程中使用梯度下降法时,调整步长 ρ ρ ρ也称为“学习速率”。

如图7所示

在这里插入图片描述

  • ρ ρ ρ的取值越大,求解的速度越快,但求解路径越不光滑,求解的精度越差,容易过冲甚至振荡;
  • ρ的取值越小,求解的速度越慢,但求解精度越高。

因此,只要使用梯度下降法来训练分类器,其求解精度和速度之间是存在矛盾的。

ρ ( k + 1 ) \rho(k+1) ρ(k+1)的选择

为在算法求解的速度和精度之间取得平衡,感知器算法中的学习速率有各种不同的设定方法:

  • 固定值

ρ ( k + 1 ) \rho(k+1) ρ(k+1)选择固定的非负数;

  • 绝对修正

在单样本修正算法中,为保证分类错误的样本在对权向量进行一次修正后能正确分类,需要满足
w T ( k + 1 ) x > 0 w^T(k+1)x>0 wT(k+1)x>0

将递推修正公式

w ( k + 1 ) = w ( k ) + ρ ( k + 1 ) x w(k+1)=w(k)+\rho(k+1)x w(k+1)=w(k)+ρ(k+1)x

代入得:

w T ( k + 1 ) x = w T ( k ) x + ρ ( k + 1 ) x T x > 0 w^T(k+1)x=w^T(k)x+\rho(k+1)x^Tx>0 wT(k+1)x=wT(k)x+ρ(k+1)xTx>0
即:
ρ ( k + 1 ) > ∣ w T ( k ) x ∣ x T x \rho(k+1)>\frac{|w^T(k)x|}{x^Tx} ρ(k+1)>xTxwT(k)x
满足该条件的 ρ ( k + 1 ) \rho(k+1) ρ(k+1)称为绝对修正因子。

  • 部分修正

若取
ρ ( k + 1 ) = λ ∣ w T ( k ) x ∣ x T x , 0 < λ ≤ 2 \rho(k+1)=\lambda\frac{|w^T(k)x|}{x^Tx},0<\lambda\le 2 ρ(k+1)=λxTxwT(k)x,0<λ2
则称为部分修正。

  • 变步长法

可以取按照某种规律逐步减少的 ρ ( k + 1 ) \rho(k+1) ρ(k+1),使得算法开始时收敛较快,接近最优解时收敛速度变慢,以提高求解的精度。比较常用的变步长法是取
ρ ( k + 1 ) = λ 1 k , λ > 0 \rho(k+1)=\lambda\frac{1}{k},\lambda>0 ρ(k+1)=λk1,λ>0

  • 最优步长法

在每一步时,通过求准则函数
J ( w ( k + 1 ) ) J(w(k+1)) J(w(k+1))

对于不同的 ρ ( k + 1 ) \rho(k+1) ρ(k+1)可以取得的最小值,来确定最优的 ρ ( k + 1 ) \rho(k+1) ρ(k+1)
该方法的问题在于:相比采用小步长带来的递推次数增加,每步求最优步长会带来更大的计算量。

感知器算法是历史上首个有效的有监督学习算法,虽然今天看起来过于简单,但罗森布拉特在 1957 年首次提出时确实引起了人工智能界的轰动,并且对后续的人工智能、特别是基于神经网络的机器学习算法产生了深远的影响。
至于为什么略显粗糙的一个算法会有这么重要的意义,接下来将为您做深入的分析!

4 感知器算法的深入分析

感知器算法是一种模拟神经元功能的机器学习算法。它采用了能够实现一个线性分类器的感知器模型,并通过设定错分样本判别函数和的准则函数,采用梯度下降法得到了非常简单的递推式算法流程,能够对线性可分问题找到正确分类所有特别的解。
感知器算法虽然看起来很简单,并且也只能找到没有错分的线性分类器解,不能再解区域中继续寻找最优的解,但是,它仍然在人工智能的发展历史上占据了重要的地位,说它是当今热火朝天的“深度学习”的鼻祖,也完全当之无愧。

究其原因,是因为感知器算法在简单的模型的求解过程中,已经包含了以机器学习中的许多重要思想和算法原理,为后世的人工智能发展奠定了基础。下面,我们就从学习规则、收敛性、优化方法等方面来做一下分析。

最初的人工智能研究,重点在于通过“设计”使机器具有类似人的智能,从而能够处理推理、概念理解、抽象思维甚至创造等任务。一直到上世纪 50 年代初,人们才意识到,人工智能最重要的能力是“学习”的能力,就是计算机能够自主地去学习知识,学习处理事务的能力。学习的基本规则有多种,总体上可以分为有监督学习和无监督学习两类。

有监督学习的依据就是学习到的模型的输出与真实输出之间的误差,对模型参数的调整方向,就是去减少这种误差,从而使学习到的模型逼近真实的模型。

如果要调整的模型参数就是输入加权求和的权向量 w w w,那么通用的误差反馈学习规则就是:
w ( k + 1 ) = w ( k ) + ρ ( k + 1 ) r ( y ( x ) − y ^ ( x ) ) x w(k+1)=w(k)+\rho(k+1)r(y(x)-\hat{y}(x))x w(k+1)=w(k)+ρ(k+1)r(y(x)y^(x))x

其中, y ( x ) y(x) y(x)是样本 x x x 对应的真实输出, y ^ ( x ) \hat{y}(x) y^(x)则是当前模型的实际输出。 r r r 是输出误差的一个函数,称为学习信号,代表误差如何反馈影响权向量的调整。
对于二分类问题,如果考虑输出就是分类决策结果,则输出就只有 0,1 两个值。

感知器算法直接把输出误差值作为学习信号,而样本数据规范化后,分类正确时,输出误差位 0;分类错误时,输出误差位 1,因为此时 y ( x ) y(x) y(x)应该永远输出 1(因为规范化)。所以,感知器算法的权向量递推调整算法就是:
w ( k + 1 ) = w ( k ) + ρ ( k + 1 ) x , x ∈ X 0 w(k+1)=w(k)+\rho(k+1)x,x\in X_0 w(k+1)=w(k)+ρ(k+1)x,xX0
和前面我们用梯度法得到的算法时一致的。

感知器算法正因为是首个采用误差反馈学习规则来是实现的机器学习算法,它模拟人类学习的试错过程,不是希望计算机能够一次学会复杂的逻辑推理,而是通过一个形式确定但是参数不确定的模型来逐步逼近真实存在的客观规律,所以对后世产生了深远的影响。一直到现在热门的深度学习,从根本上仍然是以有监督的误差反馈学习为核心,当然,其分类器的模型和学习信号的设计,又比感知器有了更多的进步

以上只是从误差反馈学习的角度对感知器算法进行了粗略的分析。如果要从数学上更严密地说明误差反馈学习规则,就必须得提到损失函数(Loss Function)

损失函数针对一个机器学习算法,如果学习到一个输入输出映射模型,那么对一个样本输入,模型得到的输出与该样本对应的真实输出之间的差别,就称为损失函数。损失函数是对单个样本来说的,如果对于具有一定分布的样本整体的损失函数的数学期望,就称为代价函数(Cost Function)。而机器学习的目标,就是通过不断优化模型的参数,来找到最小的代价函数。

对于二分类问题,如果我们只考虑分类结果是否正确,那么损失函数就可以设定为只有 0,1 两个值,称为 0-1 损失函数。有了损失函数和代价函数,我们就可以用最常用的梯度下降法,来求解代价函数最小的分类器最优解。

当然,0-1 损失函数虽然简单,但是无法反映能够正确分类所有样本的解中哪个解更好,更重要的是,0-1 损失是阶跃函数形式,在使用梯度下降法是无法求导。所以,我们也常常使用能够包容损失函数的结果,又能连续可求导地反映每一个解的优劣的损失函数,称为 0-1 损失函数的代理损失函数,例如:铰链损失函数(hinge loss function)、交叉熵损失函数(cross-entropy loss function)、指数损失函数(exponential loss function)。

误差反馈学习一般采用梯度下降法来逐步调整模型参数,感知器算法也是这样。但是,在梯度下降的优化方法里,也有两种不同的算法思路,我们一起来看一看。

代价函数取得极小值,是我们基于误差反馈学习规则的模型参数优化目标。当采用梯度下降法时,应当是找到当前代价函数对模型参数的负梯度方向,也就是代价函数值下降最快的方向来调整模型参数。

注意:此时需要将所有样本集中的样本对应的损失函数值都计算出来,才能得到代价函数值,也才能求得代价函数对模型参数的负梯度,这就称为“批量梯度法(BGD)”。

批量梯度法的每一次对模型参数的调整,都朝向代价函数值减小的方向,因此,寻优路径相对式比较平滑的。但是当样本集中的样本数量非常多时,每一步模型参数的调整,都要将所有样本的损失函数计算一遍,整个算法的计算量是非常巨大的。由此,可以采用一个简化的方法,就是每次只对随机抽取的一个样本计算损失函数值,并且按损失函数对模型参数的负梯度方向调整模型参数,这种方法称为“随机梯度法(SGD)”。

在这里插入图片描述

如图8所示,随机梯度法在每一次模型参数调整时,不一定会朝着整体代价函数值减少的方向去前进,而是可能随机振荡,甚至最终不会确保收敛到极值点。但是,可以证明,随机梯度下降法会以很高的概率收敛于极值点,更重要的是,随机梯度法的计算量比批量梯度法的计算量大大地减少了,使得学习速度加快了很多,还可以边学习边加入新的样本,实现在线学习。这也是随机梯度法得到了非常广泛使用的原因,一直到现在的深度学习算法中,随机梯度下降法也是进行模型训练不可或缺的算法之一。

我们回顾一下感知器算法的两种权向量更新方法——感知器算法采取全样本修正和采取单样本修正。有没有发现其中一个是批量梯度法的结果,一个是随机梯度法的结果?所以。为什么我们说感知器算法中蕴含了许多非常重要的原理和方法,由此也可见一斑。

参考:
中国大学mooc 人工智能之模式识别 高琪,李位星,冯肖雪, 北京理工大学

THE END.
感谢阅读。


如果你觉得这篇文章有用的话,求
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44378835/article/details/110558558

智能推荐

settext 下划线_Android TextView 添加下划线的几种方式-程序员宅基地

文章浏览阅读748次。总结起来大概有5种做法:将要处理的文字写到一个资源文件,如string.xml(使用html用法格式化)当文字中出现URL、E-mail、电话号码等的时候,可以将TextView的android:autoLink属性设置为相应的的值,如果是所有的类型都出来就是**android:autoLink="all",当然也可以在java代码里 做,textView01.setAutoLinkMask(Li..._qaction::settext 无法添加下划线

TableStore时序数据存储 - 架构篇_tablestore 时间类型处理-程序员宅基地

文章浏览阅读6.3k次,点赞2次,收藏10次。摘要: 背景 随着近几年物联网的发展,时序数据迎来了一个不小的爆发。从DB-Engines上近两年的数据库类型增长趋势来看,时序数据库的增长是非常迅猛的。在去年我花了比较长的时间去了解了一些开源时序数据库,写了一个系列的文章(综述、HBase系、Cassandra系、InfluxDB、Prometheus),感兴趣的可以浏览。背景随着近几年物联网的发展,时序数据迎来了一个不小的爆发。从DB..._tablestore 时间类型处理

Ubuntu20.04下成功运行VINS-mono_uabntu20.04安装vins-mono-程序员宅基地

文章浏览阅读5.7k次,点赞8次,收藏49次。可以编译成功但是运行时段错误查找原因应该是ROS noetic版本中自带的OpenCV4和VINS-mono中需要使用的OpenCV3冲突的问题。为了便于查找问题,我只先编译feature_tracker包。解决思路历程:o想着把OpenCV4相关的库移除掉,但是发现编译feature_tracker的时候仍然会关联到Opencv4的库,查找原因是因为cv_bridge是依赖opencv4的,这样导致同时使用了opencv3和opencv4,因此运行出现段错误。oo进一步想着(1)把vins-mon_uabntu20.04安装vins-mono

TMS320C6748_EMIF时钟配置_tms 6748-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏12次。创龙TL6748开发板中,EMIFA模块使用默认的PLL0_SYSCLK3时钟,使用AISgen for D800K008工具加载C6748配置文件C6748AISgen_456M_config(Configuration files,在TL_TMS6748/images文件夹下),由图可以看到DIV3等于4,注意这里的DIV3就是实际的分频值(x),而不是写入相应PLL寄存器的值(x-1)。_tms 6748

eigen稀疏矩阵拼接(基于块操作的二维拼接)的思考-程序员宅基地

文章浏览阅读5.9k次,点赞4次,收藏13次。转载请说明出处:eigen稀疏矩阵拼接(块操作)eigen稀疏矩阵拼接(块操作)关于稀疏矩阵的块操作:参考官方链接 However, for performance reasons, writing to a sub-sparse-matrix is much more limited, and currently only contiguous sets of columns..._稀疏矩阵拼接

基于Capon和信号子空间的变形算法实现波束形成附matlab代码-程序员宅基地

文章浏览阅读946次,点赞19次,收藏19次。波束形成是天线阵列信号处理中的一项关键技术,它通过对来自不同方向的信号进行加权求和,来增强特定方向的信号并抑制其他方向的干扰。本文介绍了两种基于 Capon 和信号子空间的变形算法,即最小方差无失真响应 (MVDR) 算法和最小范数算法,用于实现波束形成。这些算法通过优化波束形成权重向量,来最小化波束形成输出的方差或范数,从而提高波束形成性能。引言波束形成在雷达、声纳、通信和医学成像等众多应用中至关重要。它可以增强目标信号,抑制干扰和噪声,提高系统性能。

随便推点

Ubuntu好用的软件推荐_ubuntu开发推荐软件-程序员宅基地

文章浏览阅读3.4w次。转自:http://www.linuxidc.com/Linux/2017-07/145335.htm使用Ubuntu开发已经有些时间了。写下这篇文章,希望记录下这一年的小小总结。使用Linux开发有很多坑,同时也有很多有趣的东西,可以编写一些自动化脚本,添加定时器,例如下班定时关机等自动化脚本,同时对于服务器不太了解的朋友,建议也可以拿台Linux来实践下,同时Ubuntu在Androi_ubuntu开发推荐软件

Nginx反向代理获取客户端真实IP_nginx获取到的是交换机的ip-程序员宅基地

文章浏览阅读2.2k次。一,问题 nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递到应用程序中。二,解决 Nginx服务器增加转发配置 proxy_set_header Host $host;_nginx获取到的是交换机的ip

Wireshark TCP数据包跟踪 还原图片 WinHex应用_wireshark抓包还原图片-程序员宅基地

文章浏览阅读1.4k次。Wireshark TCP数据包跟踪 还原图片 WinHex简单应用 _wireshark抓包还原图片

Win8蓝屏(WHEA_UNCORRECTABLE_ERROR)-程序员宅基地

文章浏览阅读1.5k次。Win8下安装VS2012时,蓝屏,报错WHEA_UNCORRECTABLE_ERROR(P.S.新的BSOD挺有创意":("),Google之,发现[via]需要BIOS中禁用Intel C-State,有严重Bug的嫌疑哦原因有空再看看..._win8.1 whea_uncorrectable_error蓝屏代码

案例课1——科大讯飞_科大讯飞培训案例-程序员宅基地

文章浏览阅读919次,点赞21次,收藏22次。科大讯飞是一家专业从事智能语音及语音技术研究、软件及芯片产品开发、语音信息服务的软件企业,语音技术实现了人机语音交互,使人与机器之间沟通变得像人与人沟通一样简单。语音技术主要包括语音合成和语音识别两项关键技术。此外,语音技术还包括语音编码、音色转换、口语评测、语音消噪和增强等技术,有着广阔的应用。_科大讯飞培训案例

perl下载与安装教程【工具使用】-程序员宅基地

文章浏览阅读4.7k次。Perl是一个高阶程式语言,由 Larry Wall和其他许多人所写,融合了许多语言的特性。它主要是由无所不在的 C语言,其次由 sed、awk,UNIX shell 和至少十数种其他的工具和语言所演化而来。Perl对 process、档案,和文字有很强的处理、变换能力,ActivePerl是一个perl脚本解释器。其包含了包括有 Perl for Win32、Perl for ISAPI、PerlScript、Perl。_perl下载

推荐文章

热门文章

相关标签