统计学习方法 感知机

文章目录

  • 统计学习方法 感知机
    • 模型定义
    • 学习策略
    • 学习算法
      • 原始算法
      • 对偶算法
    • 学习算法的收敛性

统计学习方法 感知机

读李航的《统计学习方法》时,关于感知机的笔记。

感知机(perceptron)是一种二元分类的线性分类模型,属于判别模型,是 NN 和 SVM 的基础。

模型定义

感知机:输入空间 X ⊆ R n \mathcal{X}\subseteq \R^n XRn ,输出空间是 Y = { 1 , − 1 } \mathcal{Y}=\set{1,\,-1} Y={1,1} ;输入 x ∈ X x\in \mathcal{X} xX 表示实例的特征向量,输出 y ∈ Y y\in\mathcal{Y} yY 表示实例的类别。由输入空间到输出空间的如下函数:
f ( x ) = sign ( w ⋅ x + b ) f(x)=\text{sign}(w \cdot x+b) f(x)=sign(wx+b)
称为感知机。其中 w ∈ R n w \in \R^n wRn 称为权重, b ∈ R b\in\R bR 称为偏置。

线性方程 w ⋅ x + b w \cdot x+b wx+b 对应特征空间 R n \R^n Rn 中的一个超平面 S S S ,位于两边的点(特征向量)则被分为正、负两类:

请添加图片描述

学习策略

当训练数据是完全线性可分的,我们则可以找到一个超平面将正负类的数据完全分开。但数据不完全线性可分时,我们则要定义损失函数,找到一个感知机使得损失函数极小化。(但其实即使完全线性可分,也要定义损失函数,不然怎么学习 [乐.jpg])

很容易想到用分类错误的点的总数作为损失函数,但是这样对 w w w b b b 就不是连续可导的了,不好优化。所以我们选择所有误分类点到超平面 S S S 的总距离作为损失函数。

空间中任意一点 x 0 ∈ R n x_0\in \R^n x0Rn 到超平面 S S S 的距离为:
dis ( x 0 , S ) = 1 ∣ ∣ w ∣ ∣ ∣ w ⋅ x 0 + b ∣ \text{dis}(x_0,S)=\frac{1}{||w||}|w\cdot x_0+b| dis(x0,S)=∣∣w∣∣1wx0+b

  • ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣ w w w L 2 L_2 L2 范数;

其次,对于误分类的数据 ( x i , y i ) (x_i,y_i) (xi,yi) 来说, y i y_i yi f ( x ) f(x) f(x) 符号相反,因此:
− y i ( w ⋅ x i + b ) > 0 -y_i(w\cdot x_i+b)\gt 0 yi(wxi+b)>0
我们利用这个大于零的性质,可以将误分类点到超平面的距离表示为(因为 y i y_i yi 只有可能是正负 1,所以乘上去也不会改变距离的大小):
dis ( x 0 , S ) = − 1 ∣ ∣ w ∣ ∣ y i ( w ⋅ x i + b ) \text{dis}(x_0,S)=-\frac{1}{||w||}y_i(w\cdot x_i+b) dis(x0,S)=∣∣w∣∣1yi(wxi+b)
因此,所有误分类点到超平面 S S S 的距离之和:
− 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M y i ( w ⋅ x i + b ) -\frac{1}{||w||}\sum_{x_i\in M} y_i(w\cdot x_i+b) ∣∣w∣∣1xiMyi(wxi+b)

  • M M M 为被误分类点的集合;

这里不考虑 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1 ,即得到感知机的损失函数:
L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) L(w,\,b)=-\sum_{x_i\in M} y_i(w\cdot x_i+b) L(w,b)=xiMyi(wxi+b)
去掉 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1 对损失函数的优化至关重要, y i ( w ⋅ x i + b ) y_i(w\cdot x_i+b) yi(wxi+b) 被称为样本点的函数间隔,在 SVM 中会涉及到。

学习算法

感知机学习算法的原始形式和对偶形式与第7支待向量机学习法的原始形式和偶形式相对应。

原始算法

给定一个训练数据集:
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } T=\{(x_1,\,y_1),\,(x_2,\,y_2),\,\cdots,\,(x_N,\,y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)}
其中 x i ∈ X = R n x_i\in\mathcal{X}=\bold{R}^n xiX=Rn y i ∈ Y = { − 1 , 1 } y_i\in\mathcal{Y}=\{-1,\,1\} yiY={1,1} i = 1 , 2 , ⋯ , N i=1,\,2,\,\cdots,\,N i=1,2,,N ,求参数 w w w b b b ,使得以下损失函数极小化:
min ⁡ w , b L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) \min_{w,\,b}L(w,\,b)=-\sum_{x_i\in M}y_i(w\cdot x_i +b) w,bminL(w,b)=xiMyi(wxi+b)
我们采用随机梯度下降法来学习参数 w w w b b b ,梯度为:
∇ w L ( w , b ) = − ∑ x i ∈ M y i x i ∇ b L ( w , b ) = − ∑ x i ∈ M y i \begin{align} \nabla_wL(w,\,b)=&\,-\sum\limits_{x_i\in M}y_ix_i \\ \nabla_bL(w,\,b)=&\,-\sum\limits_{x_i\in M}y_i \\ \end{align} wL(w,b)=bL(w,b)=xiMyixixiMyi
但学习的时候并不是一次使 M M M 中所有的误分类点都梯度下降,而是一次随机选取一个误分类点使其梯度下降。

算法:感知机学习算法的原始形式

输入:训练数据集 T T T ,学习率 η \eta η 0 < η ≤ 1 0 \lt\eta\leq 1 0<η1);

输出 w w w b b b ,感知机模型 f ( x ) = sign ( w ⋅ x + b ) f(x)=\text{sign}(w\cdot x+b) f(x)=sign(wx+b)

  1. 选取初值 w 0 w_0 w0 b 0 b_0 b0
  2. 在训练集中选取数据 ( x i , y i ) (x_i,\,y_i) (xi,yi)
  3. y i ( w ⋅ x i + b ) ≤ 0 y_i(w\cdot x_i+b) \leq 0 yi(wxi+b)0

w ← w + η y i x i b ← b + η y i \begin{align} w \leftarrow&\, w+\eta y_ix_i \\ b \leftarrow&\, b+\eta y_i \end{align} wbw+ηyixib+ηyi

  1. 若当前训练集中仍有误分类点,则跳转至 2. ,否则结束;

对偶算法

我们前面对误分类点修改参数时的形式为:
w ← w + η y i x i b ← b + η y i \begin{align} w \leftarrow&\, w+\eta y_ix_i \\ b \leftarrow&\, b+\eta y_i \end{align} wbw+ηyixib+ηyi
因此,我们可以认为模型参数是训练样本值的线性组合,即最后学习到的 w w w b b b 可以表示为:
w = ∑ i = 1 N α i y i x i b = ∑ i = 1 N α i y i \begin{array}{c} w=\sum\limits_{i=1}^N \alpha_iy_ix_i \\ b=\sum\limits_{i=1}^{N}\alpha_iy_i \end{array} w=i=1Nαiyixib=i=1Nαiyi
这里 α i ≥ 0 \alpha_i \geq 0 αi0 i = 1 , 2 , ⋯ , N i=1,2,\cdots,N i=1,2,,N)。

算法:感知机学习算法的对偶形式

输入:训练数据集 T T T ,学习率 η \eta η 0 < η ≤ 1 0 \lt\eta\leq 1 0<η1);

输出 α \alpha α b b b ,感知机模型 f ( x ) = sign ( ∑ j = 1 N α j y j x j ⋅ x + b ) f(x)=\text{sign}(\sum\limits_{j=1}^N \alpha_jy_jx_j\cdot x+b) f(x)=sign(j=1Nαjyjxjx+b)

  1. 初始化: α ← 0 \alpha \leftarrow 0 α0 b ← 0 b \leftarrow 0 b0
  2. 在训练集中选取数据 ( x i , y i ) (x_i,\,y_i) (xi,yi)
  3. y i ( ∑ j = 1 N α j y j x j ⋅ x + b ) ≤ 0 y_i(\sum\limits_{j=1}^N \alpha_jy_jx_j\cdot x+b) \leq 0 yi(j=1Nαjyjxjx+b)0

α i ← α i + η b ← b + η y i \begin{align} \alpha_i \leftarrow&\, \alpha_i+\eta \\ b \leftarrow&\, b+\eta y_i \end{align} αibαi+ηb+ηyi

  1. 若当前训练集中仍有误分类点,则跳转至 2. ,否则结束;

为了方便,可以预先将训练集中的实例间的内积计算出来并以矩阵的形式存储,即 Gram 矩阵:
G = [ x i ⋅ x j ] N × N \bold{G}=[x_i \cdot x_j]_{N\times N} G=[xixj]N×N

学习算法的收敛性

当数据集不可分时,显然上述算法会震荡。现在证明,对于线性可分数据集,感知机学习算法原始形式收敛,即经过有限次迭代就可以得到一个将数据集完全正确划分的分离超平面及感知机模型。

为了数学推导方面,我们将偏置 b b b 放入权重向量 w w w ,记作 w ^ = [ w t , b ] T \hat{w}=[w^t,\,b]^T w^=[wt,b]T 。同样将输入向量进行增广,得到 x ^ = [ x T , 1 ] T \hat{x}=[x^T,\,1]^T x^=[xT,1]T ,显然:
w ^ ⋅ x ^ = w ⋅ x + b \hat{w}\cdot\hat{x}=w\cdot x+b w^x^=wx+b
Th 2.1(Novikoff) 设训练数据集 T T T 是线性可分的,则:

  1. 存在满足条件 ∣ ∣ w ^ o p t ∣ ∣ = 1 ||\hat{w}_{opt}||=1 ∣∣w^opt∣∣=1 的超平面 w ^ o p t ⋅ x ^ = 0 \hat{w}_{opt}\cdot \hat{x}=0 w^optx^=0 将训练数据集完全正确分开,且存在 γ > 0 \gamma >0 γ>0 ,对所有 i = 1 , 2 , ⋯ , N i=1,\,2,\,\cdots,\,N i=1,2,,N ,都有:

y i ( w ^ o p t ⋅ x ^ i ) = y i ( w o p t ⋅ x i + b o p t ) ≥ γ y_i(\hat{w}_{opt}\cdot \hat{x}_{i})=y_i(w_{opt}\cdot x_{i}+b_{opt})\geq \gamma yi(w^optx^i)=yi(woptxi+bopt)γ

  1. R = max ⁡ 1 ≤ i ≤ N ∣ ∣ x ^ i ∣ ∣ R=\max\limits_{1\leq i\leq N}||\hat{x}_{i}|| R=1iNmax∣∣x^i∣∣ ,则感知机算法在训练数据集上的误分类次数 k k k 满足:

k ≤ ( R γ ) 2 k\leq \left(\frac{R}{\gamma}\right)^2 k(γR)2

证明:第一点较为简单。因为训练数据集线性可分,因此存在超平面 ( w o p t , b o p t ) (w_{opt},\,b_{opt}) (wopt,bopt) 可将数据集完全正确分开。只要令:
γ = min ⁡ i { y i ( w o p t ⋅ x i + b o p t ) } \gamma=\min_{i}\{ y_i(w_{opt}\cdot x_i+b_{opt}) \} γ=imin{yi(woptxi+bopt)}
就有:
y i ( w ^ o p t ⋅ x ^ i ) = y i ( w o p t ⋅ x i + b o p t ) ≥ γ y_i(\hat{w}_{opt}\cdot \hat{x}_{i})=y_i(w_{opt}\cdot x_{i}+b_{opt})\geq \gamma yi(w^optx^i)=yi(woptxi+bopt)γ
现在来看第二点,看起来还蛮神奇的。感知机算法从 w ^ 0 = 0 \hat{w}_0=0 w^0=0 开始,记每一次迭代得到的参数为 w ^ k \hat{w}_k w^k 。第 k k k 个参数下,记 ( x i , y i ) (x_i,\,y_i) (xi,yi) 是被误分类的实例,则条件是:
y i ( w ^ k − 1 ⋅ x ^ i ) = y i ( w k − 1 ⋅ x i + b k − 1 ) ≤ 0 y_i(\hat{w}_{k-1}\cdot \hat{x}_i)=y_i(w_{k-1}\cdot x_i + b_{k-1})\leq 0 yi(w^k1x^i)=yi(wk1xi+bk1)0
w w w b b b 的更新是:
w k ← w k − 1 + η y i x i b k ← b k − 1 + η y i \begin{align} w_k \leftarrow&\, w_{k-1}+\eta y_ix_i \\ b_k \leftarrow&\, b_{k-1}+\eta y_i \end{align} wkbkwk1+ηyixibk1+ηyi
即:
w ^ k = w ^ k − 1 + η y i x ^ i \hat{w}_k=\hat{w}_{k-1}+\eta y_i\hat{x}_i w^k=w^k1+ηyix^i
下面证明两个不等式:

① 由于我们是从 w ^ 0 = 0 \hat{w}_0=0 w^0=0 开始的,因此迭代过程中的参数应当从小到大越来越接近 w ^ o p t \hat{w}_{opt} w^opt ,即 w k w_{k} wk w o p t w_{opt} wopt 的内积越来越大:
w ^ k ⋅ w ^ o p t = w ^ k − 1 ⋅ w ^ o p t + η y i w ^ o p t ⋅ x ^ i ≥ w ^ k − 1 ⋅ w ^ o p t + η γ ≥ w ^ k − 2 ⋅ w ^ o p t + 2 η γ ≥ ⋯ ≥ k η γ \begin{align} \hat{w}_k\cdot \hat{w}_{opt} =&\, \hat{w}_{k-1}\cdot \hat{w}_{opt}+\eta y_i\hat{w}_{opt}\cdot\hat{x}_i \\ \geq &\, \hat{w}_{k-1}\cdot \hat{w}_{opt}+\eta \gamma \\ \geq &\, \hat{w}_{k-2}\cdot \hat{w}_{opt}+2\eta \gamma \\ \geq &\, \cdots \\ \geq &\, k\eta \gamma \end{align} w^kw^opt=w^k1w^opt+ηyiw^optx^iw^k1w^opt+ηγw^k2w^opt+2ηγkηγ

  • 第二个大于等于是因为,我们已经假设了 γ \gamma γ 是最小的 y i w ^ o p t x ^ i y_i\hat{w}_{opt}\hat{x}_i yiw^optx^i ,因此任意 i i i 都有 y i w ^ o p t x ^ i ≥ γ y_i\hat{w}_{opt}\hat{x}_i\geq \gamma yiw^optx^iγ

即:
w ^ k ⋅ w ^ o p t ≥ k η γ \hat{w}_k\cdot \hat{w}_{opt}\geq k\eta \gamma w^kw^optkηγ
② 由于我们是从 w ^ 0 = 0 \hat{w}_0=0 w^0=0 开始的,因此迭代过程中的参数更新过大时,就会被后续的迭代给“拉”回来:
∣ ∣ w ^ k ∣ ∣ 2 = ∣ ∣ w ^ k − 1 ∣ ∣ 2 + 2 η y i w ^ k − 1 ⋅ x ^ i + η 2 ∣ ∣ x ^ i ∣ ∣ 2 ≤ ∣ ∣ w ^ k − 1 ∣ ∣ 2 + η ∣ ∣ x ^ i ∣ ∣ 2 ≤ ∣ ∣ w ^ k − 1 ∣ ∣ 2 + η R 2 ≤ ∣ ∣ w ^ k − 2 ∣ ∣ 2 + 2 η R 2 ≤ ⋯ ≤ k η 2 R 2 \begin{align} ||\hat{w}_k||^2=&\,||\hat{w}_{k-1}||^2+2\eta y_i\hat{w}_{k-1}\cdot \hat{x}_i+\eta^2||\hat{x}_i||^2 \\ \leq &\, ||\hat{w}_{k-1}||^2+\eta||\hat{x}_i||^2 \\ \leq &\, ||\hat{w}_{k-1}||^2+\eta R^2 \\ \leq &\, ||\hat{w}_{k-2}||^2+2\eta R^2 \\ \leq &\, \cdots \\ \leq &\, k\eta^2R^2 \end{align} ∣∣w^k2=∣∣w^k12+2ηyiw^k1x^i+η2∣∣x^i2∣∣w^k12+η∣∣x^i2∣∣w^k12+ηR2∣∣w^k22+2ηR2kη2R2

  • 第一个等号是因为:

∣ ∣ w ^ k ∣ ∣ 2 = w ^ k T w ^ k = ( w ^ k − 1 + η y i x ^ i ) T ( w ^ k − 1 + η y i x ^ i ) = ( w ^ k − 1 T + η y i x ^ i T ) ( w ^ k − 1 + η y i x ^ i ) = w ^ k − 1 T w ^ k − 1 + η y i ( w ^ k − 1 T x ^ i + x ^ i T w ^ k − 1 ) + η 2 y i 2 x ^ i T x ^ i = ∣ ∣ w ^ k − 1 ∣ ∣ 2 + 2 η y i w ^ k − 1 ⋅ x ^ i + η 2 ∣ ∣ x ^ i ∣ ∣ 2 (有 y i 2 = 1 ) \begin{align} ||\hat{w}_k||^2=&\,\hat{w}_k^T\hat{w}_k \\ =&\,(\hat{w}_{k-1}+\eta y_i\hat{x}_i)^T(\hat{w}_{k-1}+\eta y_i\hat{x}_i) \\ =&\,(\hat{w}_{k-1}^T+\eta y_i\hat{x}_i^T)(\hat{w}_{k-1}+\eta y_i\hat{x}_i) \\ =&\,\hat{w}_{k-1}^T\hat{w}_{k-1}+\eta y_i(\hat{w}_{k-1}^T\hat{x}_i+\hat{x}_i^T\hat{w}_{k-1})+\eta^2y_i^2\hat{x}_i^T\hat{x}_i \\ =&\,||\hat{w}_{k-1}||^2+2\eta y_i\hat{w}_{k-1}\cdot \hat{x}_i+\eta^2||\hat{x}_i||^2 \quad\text{(有$\,y_i^2=1$)} \end{align} ∣∣w^k2=====w^kTw^k(w^k1+ηyix^i)T(w^k1+ηyix^i)(w^k1T+ηyix^iT)(w^k1+ηyix^i)w^k1Tw^k1+ηyi(w^k1Tx^i+x^iTw^k1)+η2yi2x^iTx^i∣∣w^k12+2ηyiw^k1x^i+η2∣∣x^i2(yi2=1)

  • 第二个小于等于是因为我们假设 ( x i , y i ) (x_i,\,y_i) (xi,yi) 是被误分类的实例,因此 y i w ^ k − 1 ⋅ x ^ i < 0 y_i\hat{w}_{k-1}\cdot \hat{x}_i<0 yiw^k1x^i<0
  • 第三个小于等于是因为我们假设 R R R 是最大的特征向量的模,因此对于任意 i i i 都有 R ≥ ∣ ∣ x ^ i ∣ ∣ R \geq ||\hat{x}_i|| R∣∣x^i∣∣

即:
∣ ∣ w ^ k ∣ ∣ 2 ≤ k η 2 R 2 ||\hat{w}_k||^2\leq k\eta^2R^2 ∣∣w^k2kη2R2
综合不等式 ① 和 ② 得:
k η γ ≤ w ^ k ⋅ w ^ o p t ≤ ∣ ∣ w ^ k ∣ ∣ ∣ ∣ w ^ o p t ∣ ∣ ≤ k η R ⇒ k 2 γ 2 ≤ k R 2 \begin{array}{c} k\eta \gamma \leq \hat{w}_k\cdot \hat{w}_{opt} \leq ||\hat{w}_{k}||\,||\hat{w}_{opt}|| \leq \sqrt{k}\eta R \\ \Rightarrow k^2\gamma^2 \leq kR^2 \end{array} kηγw^kw^opt∣∣w^k∣∣∣∣w^opt∣∣k ηRk2γ2kR2

  • 第二个小于等于是柯西不等式, x ⋅ y = ∣ ∣ x ∣ ∣ ∣ ∣ y ∣ ∣ cos ⁡ θ ≤ ∣ ∣ x ∣ ∣ ∣ ∣ y ∣ ∣ x\cdot y=||x||\,||y||\,\cos\theta\leq ||x||\,||y|| xy=∣∣x∣∣∣∣y∣∣cosθ∣∣x∣∣∣∣y∣∣ ,其中 θ \theta θ 是两个向量的夹角。

于是:
k ≤ ( R γ ) 2 k\leq \left(\frac{R}{\gamma}\right)^2 k(γR)2
该定理表明,误分类次数 k k k 是有上界的,即训练集线性可分时,感知机学习算法原始形式迭代是收敛的。

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

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

相关文章

大模型,重构自动驾驶

文&#xff5c;刘俊宏 编&#xff5c;王一粟 大模型如何重构自动驾驶&#xff1f;答案已经逐渐露出水面。 “在大数据、大模型为特征&#xff0c;以数据驱动为开发模式的自动驾驶3.0时代&#xff0c;自动驾驶大模型将在车端、云端上实现一个统一的端到端的平台管理。”毫末智…

uni-app:实现时钟自走(动态时钟效果)

效果 核心代码 使用钩子函数 mounted()&#xff0c;设置定时器&#xff0c;是指每秒都要去执行时间的获取&#xff0c;以至于实现时间自走的效果 mounted() { this.updateTime(); // 初始化时间 setInterval(this.updateTime, 1000); // 每秒更新时间 }, 自定义方法…

NodeMCU ESP8266 读取按键外部输入信号详解(图文并茂)

NodeMCU ESP8266 读取按键外部输入信号教程&#xff08;图文并茂&#xff09; 文章目录 NodeMCU ESP8266 读取按键外部输入信号教程&#xff08;图文并茂&#xff09;前言按键输入常用接口pinModedigitalRead 示例代码结论 前言 ESP8266如何检测外部信号的输入&#xff0c;通常…

Java封装:面向对象的三大特性之一

&#x1f451;专栏内容&#xff1a;Java⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、封装的概念二、访问修饰限定符三、包1、包的概念2、导入包中的类3、常见的包 嗨&#xff01;前面我们简单的认识了一下什么…

常用的设计模式以及操作Redis、MySQL数据库、各种MQ、数据类型转换的方法

文章目录 &#x1f31f; 如何优雅地写出高质量的Java代码&#x1f34a; 设计模式&#x1f389; 单例模式&#x1f389; 工厂模式&#x1f389; 观察者模式 &#x1f34a; 操作Redis&#x1f389; 连接Redis&#x1f389; 存储数据&#x1f389; 获取数据&#x1f389; 删除数据…

Java注解处理器APT

注解处理器介绍 什么是APT&#xff1f; 在JDK6的时候引入了JSR269的标准&#xff0c;即APT&#xff08;Annotation Processing Tool&#xff09;&#xff0c;用于在编译时处理源代码中的注解&#xff0c;从而生成额外的代码、配置文件或其他资源。与传统的运行时反射相比&…

深入探索Sharding JDBC:分库分表的利器

随着互联网应用的不断发展和用户量的不断增加&#xff0c;传统的数据库在应对高并发和大数据量的场景下面临着巨大的挑战。为了解决这一问题&#xff0c;分库分表成为了一个非常流行的方案。分库分表主流的技术包括MyCat和Sharding JDBC。我们来通过一张图来了解这两者有什么区…

C语言——二周目——程序的翻译与执行环境

一、程序环境 对于一个C语言程序的实现&#xff0c;整个过程一般存在两个不同的环境&#xff0c;分别是翻译环境与执行环境。在翻译环境中&#xff0c;我们所写的源代码经过一系列处理被转换成为可执行的机器指令&#xff1b;在执行环境中&#xff0c;会实际执行代码。 整个程序…

Open3D(C++) 最小二乘拟合平面(拉格朗日乘子法)

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。 一、算法原理 设拟合出的平面方程为: a x + b y + c

手写redux的connect方法, 使用了subscribe获取最新数据

一. 公共方法文件 1. connect文件 import React, { useState } from "react"; import MyContext from "./MyContext"; import _ from "lodash";// 模拟react-redux的 connect高阶函数 const connect (mapStateToProps, mapDispatchToProps) &…

数学建模——最优连接(基于最小支撑树)

一、概念 1、图的生成树 由图G(V,E)的生成子图G1(V,E1)(E1是E的子集&#xff09;是一棵树&#xff0c;则称该树为图G的生成树&#xff08;支撑树&#xff09;&#xff0c;简称G的树。图G有支撑树的充分必要条件为图G连通。 2、最小生成树问题 连通图G(V,E)&#xff0c;每条边…

STM32串口

前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 目前已经学习了GPIO的输入输出&#xff0c;但是没有完整的显示信息&#xff0c;最便宜的显示就是串口。 000 -111 AVR单片机 已经学会过了&#xff0c; 提示&#xff1a;以下是本篇文章正文内容&#x…

Servlet的生命周期

2023.10.18 WEB容器创建的Servlet对象&#xff0c;这些Servlet对象都会被放到一个集合当中&#xff08;HashMap&#xff09;&#xff0c;这个集合当中存储了Servlet对象和请求路径之间的关系 。只有放到这个HashMap集合中的Servlet才能够被WEB容器管理&#xff0c;自己new的Ser…

《视觉 SLAM 十四讲》V2 第 10 讲 后端优化2 简化BA 【位姿图】

文章目录 第10讲 后端210.1 滑动窗口滤波 和 优化10.1.2 滑动窗口法 10.2 位姿图10.3 实践&#xff1a; 位姿图优化本讲 CMakeLists.txt 10.3.1 g2o 原生位姿图 【Code】10.3.2 李代数上的位姿优化 【Code】 习题10题1 【没推完】 LaTex 第10讲 后端2 滑动窗口优化 位姿图优化…

最新!两步 永久禁止谷歌浏览器 Google Chrome 自动更新

先放效果图&#xff1a; CSDN这个问题最火的大哥的用了没用 像他这样连浏览器都打不开 为什么要禁止chrome自动更新 看到很多搞笑的大哥&#xff0c;说为啥要禁止&#xff1b; 我觉得最大的原因就是chromedriver跟不上chrome的自动更新&#xff0c;导致我们做selenium爬虫的…

CentOS 7 安装 MySQL 8

一、卸载MariaDB MariaDB是MySQL 的一个分支&#xff0c;完全兼容MySQL&#xff0c;包括API和命令行&#xff0c;使之能轻松成为MySQL的代替品。 1、查看版本&#xff08;如果有就卸载&#xff09; rpm -qa|grep mariadbrpm -e --nodeps 文件名 二、下载mysql 1、进入 /usr/…

中枢听觉处理障碍的行为干预方法

作者&#xff1a;听觉健康 在数十年前&#xff0c;中枢听觉处理障碍(CAPD)的研究已经引起了多学科的关注。1937年&#xff0c;Samuel Orton提出某些儿童的学习障碍与不能有效利用听觉有关。Myklebust是提出“中枢性听力障碍”引起儿童语言学习障碍的先驱者之一。二十世纪五十年…

C# Winform编程(7)文件处理技术

文件处理技术 System.IO命名空间System.IO命名空间常用的类System.IO命名空间常用的枚举 File类的常用方法FileInfo类的常用方法File类和FileInfo类的区别文件夹类Directory的常用方法 System.IO命名空间 System.IO命名空间常用的类 类说明File提供用于创建&#xff0c;复制&…

【数之道 08】走进“卷积神经网络“,了解图像识别背后的原理

卷积神经网络 CNN模型的架构Cnn 的流程第一步 提取图片特征提取特征的计算规则 第二步 最大池化第三步 扁平化处理第四步 数据条录入全连接隐藏层 b站视频 CNN模型的架构 图片由像素点组成&#xff0c;最终成像效果由背后像素的颜色数值所决定的 有这样的一个66的区域&#x…

YOLOv5改进实战 | 更换主干网络Backbone(三)之轻量化模型Shufflenetv2

前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操作,并将它们分别作用于输入的不…