图像处理与计算机视觉--神经网络--手动计算

news2024/11/17 13:32:55

文章目录

    • 1.简单感知器分类模型
      • 1.1.简单感知器分类模型介绍
      • 1.2.简单感知器分类模型实现
    • 2线性神经元分类模型
      • 2.1.线性神经元分类模型介绍
      • 2.2.线性神经元分类模型实现
    • 3.基于遍历学习的神经网络计算模型
      • 3.1.基于遍历学习的神经网络计算模型介绍
      • 3.2.基于遍历学习的神经网络计算模型实现
    • 4.基于批量学习的神经网络计算模型}
      • 4.1.基于批量学习的神经网络计算模型介绍
      • 4.2基于批量学习的神经网络计算模型实现
    • 5.BP神经网络回归模型}
      • 5.1.BP神经网络回归模型介绍
        • 5.1.1.BP神经网络的特点
        • 5.1.2.BP神经网络的链式求导法则
      • 5.2.BP神经网络回归模型实现

1.简单感知器分类模型

1.1.简单感知器分类模型介绍

  假设 n n n 维输入连接描述 n n n 个输入变量 x 1 x_1 x1, x 2 x_2 x2,…, x n x_n xn。输人向量 x x x { x 1 \{x_1 {x1, x 2 , ⋯   , x n } x_2,\cdots,x_n\} x2,,xn},相应的权值向量w 是 { w 1 , \{w_1, {w1, w 2 , . . . , w n } w_2,...,w_n\} w2,...,wn}。对一个输入向量 x x x 相应的网络输入 u u u为:
u = w 1 x 1 + w 2 x 2 + ⋯ + w n x n u=w_{1}x_{1}+w_{2}x_{2}+\cdots+w_{n}x_{n} u=w1x1+w2x2++wnxn
  起始设置阈值函数sgn产生一个y值的输出如下所示:
y = s g n ( u ) = { 0 u < 0 1 u ≥ 0 \left.y=sgn(u)=\left\{\begin{matrix}0&u<0\\1&u\ge0\end{matrix}\right.\right. y=sgn(u)={01u<0u0

  如果这个分类是正确的,这个感知器就已经分类正确率,如果分类是错误的,那么就还需要进行对应的调整其他的权值使其分类正确,基于Hebbian学习的改进形式的误差公式如下所示:
E r r o r = E = t − y \mathrm{Error}=E=t-y Error=E=ty

  其中t表示标签值,y表示阈值函数的分类值,基于此方法进行权值的更新如下所示:
w n e w = w o l d + β x E \begin{array}{rcl}w_\mathrm{new}&=&w_\mathrm{old}+\beta xE\\\end{array} wnew=wold+βxE

  基于上述公式进行化简得到:
w n e w = { w o l d E = 0 ( 即 t = y ) w o l d + β x E = 1 ( 即 t = 1 , y = 0 ) ( 规则 1 ) w o l d − β x E = − 1 ( 即 t = 0 , y = 1 ) ( 规则 2 ) w_{_{new}}=\begin{cases}w_{_{old}}&E=0(\text{即}t=y)\\w_{_{old}}+\beta x&E=1(\text{即}t=1,y=0)(\text{规则}1)\\w_{_{old}}-\beta x&E=-1(\text{即}t=0,y=1)(\text{规则}2)\end{cases} wnew= woldwold+βxwoldβxE=0(t=y)E=1(t=1,y=0)(规则1)E=1(t=0,y=1)(规则2)

  其中, w o l d w_{old} wold是老权重, w n e w w_{new} wnew是新权重, β \beta β是学习率。

1.2.简单感知器分类模型实现

  如图所示,我们利用这样的一个感知器去进行简单的分类任务.
在这里插入图片描述
  我们设定 β = 0.5 \beta=0.5 β=0.5,我们设置最初的权值: w 1 0 = 0.8 , w 2 0 = − 0.5 w_{1}^{0}= 0.8,w_{2}^{0}= -0.5 w10=0.8,w20=0.5,接下来我们进行简单感知器的分类计算:

  第一个点的计算:1-A1: x 1 = 0.3 , x 2 = 0.7 , t = 1 , w 1 0 = 0.8 , w 2 0 = − 0.5. x_{1}=0.3,x_{2}=0.7,t=1,w_{1}^{0}= 0.8,w_{2}^{0}= -0.5. x1=0.3,x2=0.7,t=1,w10=0.8,w20=0.5.
u = ( 0.8 ) ( 0.3 ) + ( − 0.5 ) ( 0.7 ) = − 0.11 u < 0 ⇒ y = 0 \begin{array}{rl}u=(0.8)(0.3)+(-0.5)(0.7)=-0.11\\u<0\Rightarrow y=0\end{array} u=(0.8)(0.3)+(0.5)(0.7)=0.11u<0y=0

  此时分类错误,所以我们需要进行权重的调整,由于此时E=t-y=1-0=1,那么权值更新如下所示:
Δ w 1 1 = β x 1 = ( 0.5 ) ( 0.3 ) = 0.15 Δ w 2 1 = β x 2 = ( 0.5 ) ( 0.7 ) = 0.35 \begin{array}{rcl}{\Delta w_{1}^{1}=\beta x_{1}=(0.5)(0.3)=0.15}\\{\Delta w_{2}^{1}=\beta x_{2}=(0.5)(0.7)=0.35}\end{array} Δw11=βx1=(0.5)(0.3)=0.15Δw21=βx2=(0.5)(0.7)=0.35

  再进行更新即对应的权值如下所示:
w 1 1 = w 1 0 + Δ w 1 1 = 0.8 + 0.15 = 0.95 w 2 1 = w 2 0 + Δ w 2 1 = − 0.5 + 0.35 = − 0.15 \begin{array}{rcl}{w_{1}^{1}=w_{1}^{0}+\Delta w_{1}^{1}=0.8+0.15=0.95}\\{w_{2}^{1}=w_{2}^{0}+\Delta w_{2}^{1}=-0.5+0.35=-0.15}\end{array} w11=w10+Δw11=0.8+0.15=0.95w21=w20+Δw21=0.5+0.35=0.15

  所以更新之后的权值为: w 1 0 = 0.95 , w 2 0 = − 0.15 , w = [ 0.95 , − 0.15 ] . w_{1}^{0}= 0.95,w_{2}^{0}= -0.15,w=[0.95,-0.15]. w10=0.95,w20=0.15,w=[0.95,0.15].

  再次代入计算,如下所示:
u = ( 0.3 ) ( 0.95 ) + ( 0.7 ) ( − 0.15 ) = 0.18 > 0 ⇒ y = 1 ⇒ 分类正确。 \begin{aligned}u&=\left(0.3\right)\left(0.95\right)+\left(0.7\right)\left(-0.15\right)=0.18>0\\&\Rightarrow y=1\Rightarrow\text{分类正确。}\end{aligned} u=(0.3)(0.95)+(0.7)(0.15)=0.18>0y=1分类正确。

  接下来我们用这个权值进行下一个的计算:

  第二个点的计算:2-B1: x 1 = − 0.6 , x 2 = 0.3 , t = 0 , w 1 0 = 0.95 , w 2 0 = − 0.15. x_{1}=-0.6,x_{2}=0.3,t=0,w_{1}^{0}= 0.95,w_{2}^{0}= -0.15. x1=0.6,x2=0.3,t=0,w10=0.95,w20=0.15.
u = ( − 0.6 ) ( 0.95 ) + ( 0.3 ) ( − 0.15 ) = − 0.615 u < 0 ⇒ y = 0 \begin{array}{rl}u=(-0.6)(0.95)+(0.3)(-0.15)=-0.615\\u<0\Rightarrow y=0\end{array} u=(0.6)(0.95)+(0.3)(0.15)=0.615u<0y=0

  此时分类正确,不需要再进行权值修正。

  第三个点的计算:2-B2: x 1 = − 0.1 , x 2 = − 0.8 , t = 0 , w 1 0 = 0.95 , w 2 0 = − 0.15. x_{1}=-0.1,x_{2}=-0.8,t=0,w_{1}^{0}= 0.95,w_{2}^{0}= -0.15. x1=0.1,x2=0.8,t=0,w10=0.95,w20=0.15.
u = ( − 0.1 ) ( 0.95 ) + ( − 0.8 ) ( − 0.15 ) = 0.025 u > 0 ⇒ y = 1 \begin{array}{rl}u=(-0.1)(0.95)+(-0.8)(-0.15)=0.025\\u>0\Rightarrow y=1\end{array} u=(0.1)(0.95)+(0.8)(0.15)=0.025u>0y=1

  此时分类不正确,需要再进行权值修正。那么权值更新如下所示:
Δ w 1 2 = − β x 1 = − ( 0.5 ) ( − 0.1 ) = 0.05 Δ w 2 2 = − β x 2 = − ( 0.5 ) ( − 0.8 ) = 0.4 \begin{array}{rcl}{\Delta w_{1}^{2}=-\beta x_{1}=-(0.5)(-0.1)=0.05}\\{\Delta w_{2}^{2}=-\beta x_{2}=-(0.5)(-0.8)=0.4}\end{array} Δw12=βx1=(0.5)(0.1)=0.05Δw22=βx2=(0.5)(0.8)=0.4

  再进行更新即对应的权值如下所示:
w 1 2 = w 1 1 + Δ w 1 2 = 0.95 + 0.05 = 1.0 w 2 2 = w 2 1 + Δ w 2 2 = − 0.15 + 0.4 = 0.25 \begin{array}{rcl}{w_{1}^{2}=w_{1}^{1}+\Delta w_{1}^{2}=0.95+0.05=1.0}\\{w_{2}^{2}=w_{2}^{1}+\Delta w_{2}^{2}=-0.15+0.4=0.25}\end{array} w12=w11+Δw12=0.95+0.05=1.0w22=w21+Δw22=0.15+0.4=0.25

  所以更新之后的权值为: w 1 0 = 1.0 , w 2 0 = 0.25 , w = [ 1.0 , 0.25 ] . w_{1}^{0}= 1.0,w_{2}^{0}= 0.25,w=[1.0,0.25]. w10=1.0,w20=0.25,w=[1.0,0.25].

  代入计算,结果表示分类正确。

  第四个点的计算:1-A2: x 1 = 0.1 , x 2 = − 0.45 , t = 1 , w 1 2 = 1.0 , w 2 2 = 0.25. x_{1}=0.1,x_{2}=-0.45,t=1,w_{1}^{2}= 1.0,w_{2}^{2}= 0.25. x1=0.1,x2=0.45,t=1,w12=1.0,w22=0.25.
u = ( 0.1 ) ( 1.0 ) + ( − 0.45 ) ( 0.25 ) = − 0.0125 u < 0 ⇒ y = 0 \begin{array}{rl}u=(0.1)(1.0)+(-0.45)(0.25)=-0.0125\\u<0\Rightarrow y=0\end{array} u=(0.1)(1.0)+(0.45)(0.25)=0.0125u<0y=0

  此时分类不正确,需要再进行权值修正。那么权值更新如下所示:
Δ w 1 3 = − β x 1 = ( 0.5 ) ( 0.1 ) = 0.05 Δ w 2 3 = − β x 2 = − ( 0.5 ) ( − 0.45 ) = − 0.225 \begin{array}{rcl}{\Delta w_{1}^{3}=-\beta x_{1}=(0.5)(0.1)=0.05}\\{\Delta w_{2}^{3}=-\beta x_{2}=-(0.5)(-0.45)=-0.225}\end{array} Δw13=βx1=(0.5)(0.1)=0.05Δw23=βx2=(0.5)(0.45)=0.225

  再进行更新即对应的权值如下所示:
w 1 3 = w 1 2 + Δ w 1 3 = 1.0 + 0.05 = 1.05 w 2 3 = w 2 2 + Δ w 2 3 = 0.25 − 0.025 = 0.025 \begin{array}{rcl}{w_{1}^{3}=w_{1}^{2}+\Delta w_{1}^{3}=1.0+0.05=1.05}\\{w_{2}^{3}=w_{2}^{2}+\Delta w_{2}^{3}=0.25-0.025=0.025}\end{array} w13=w12+Δw13=1.0+0.05=1.05w23=w22+Δw23=0.250.025=0.025

  所以更新之后的权值为: w 1 3 = 1.05 , w 2 0 = 0.025 , w = [ 1.05 , 0.025 ] . w_{1}^{3}= 1.05,w_{2}^{0}= 0.025,w=[1.05,0.025]. w13=1.05,w20=0.025,w=[1.05,0.025].

  所以最终的权重向量为: w = [ 1.05 , 0.025 ] w=[1.05,0.025] w=[1.05,0.025]

  我们给出最后的分界线为:
u = w 1 x 1 + w 2 x 2 = 0 x 2 = − ( w 1 w 2 ) x 1 \begin{aligned}u&=w_1x_1+w_2x_2=0\\x_2&=-\left(\frac{w_1}{w_2}\right)x_1\end{aligned} ux2=w1x1+w2x2=0=(w2w1)x1
  最终的方程表示为:
x 2 = − 42 x 1 x_{2}=-42x_{1} x2=42x1

2线性神经元分类模型

2.1.线性神经元分类模型介绍

  线性分类器是基于delta规则的学习,假设神经元的输入描述,首先计算网络输出u和输出y,为:
u = w 1 x y = u = w 1 x \begin{aligned}u&=w_1x\\y&=u=w_1x\end{aligned} uy=w1x=u=w1x

  对应的误差E表示为:
E = t − y = t − w 1 x E=t-y=t-w_{1}x E=ty=tw1x

  利用 ϵ \epsilon ϵ来衡量对应的评分误差,计算如下所示:
ε = 1 2 E 2 = 1 2 ( t − w 1 x ) 2 \varepsilon=\frac{1}{2}E^{2}=\frac{1}{2}(t-w_{1}x)^{2} ε=21E2=21(tw1x)2

  对于权重的更新如下所示:
d ε d w 1 = 2 2 ( t − y ) ( − x ) = − E x \frac{\mathrm{d}\boldsymbol{\varepsilon}}{\mathrm{d}\boldsymbol{w}_{1}}=\frac{2}{2}(t-y)(-x)=-Ex dw1dε=22(ty)(x)=Ex
增加学习率的因素,权值变化量就变为了:
Δ w 1 = β E x \Delta w_{1}=\beta Ex Δw1=βEx

  将这种思想引入到神经网络后,进行迭代更新之后的新权值如下所示:
w 0 i + 1 = w 0 i w j i + 1 = w j i + β x j E \begin{array}{rcl}w_{0}^{i+1}&=&w_{0}^{i}\\w_{j}^{i+1}&=&w_{j}^{i}+\beta x_{j}E\end{array} w0i+1wji+1==w0iwji+βxjE

  对于整个模型的误差衡量,用MSE来进行计算,如下所示:
M S E = 1 2 n ∑ i = 1 n E i 2 \mathbf{MSE}=\frac{1}{2n}\sum_{i=1}^{n}E_{i}^{2} MSE=2n1i=1nEi2

2.2.线性神经元分类模型实现

  题目如同第一题所示,我们来对比线性神经网络和简单感知器的计算速度和方式区别,对应的题目图和网络图如下所示:
在这里插入图片描述

  其中权重更新的计算过程与公式如下所示:
u = w 1 x 1 + w 2 x 2 y = u E = t − y Δ w = β E x w new  = w old  + Δ w \begin{array}{l} u=w_{1} x_{1}+w_{2} x_{2} \\ y=u \\ E=t-y \\ \Delta w=\beta E x \\ w_{\text {new }}=w_{\text {old }}+\Delta w \end{array} u=w1x1+w2x2y=uE=tyΔw=βExwnew =wold +Δw

∙ \bullet 第一个点的计算:1-A1: x 1 = 0.3 , x 2 = 0.7 , t = 1 , w 1 0 = 0.8 , w 2 0 = − 0.5. x_{1}=0.3,x_{2}=0.7,t=1,w_{1}^{0}= 0.8,w_{2}^{0}= -0.5. x1=0.3,x2=0.7,t=1,w10=0.8,w20=0.5.
u = ( 0.8 ) ( 0.3 ) + ( − 0.5 ) ( 0.7 ) = − 0.11 u < 0 ⇒ y = u = − 0.11 < 0 \begin{array}{rl}u=(0.8)(0.3)+(-0.5)(0.7)=-0.11\\u<0\Rightarrow y=u=-0.11<0\end{array} u=(0.8)(0.3)+(0.5)(0.7)=0.11u<0y=u=0.11<0
E = t − y = 1 − ( − 0.11 ) = 1.11 E=t-y=1-(-0.11)=1.11 E=ty=1(0.11)=1.11

  所以分类错误,需要进行权重更新,如下所示:

  权重值增量:
Δ w 1 1 = ( 0.5 ) ( 1.11 ) ( 0.3 ) = 0.1665 Δ w 2 1 = ( 0.5 ) ( 1.11 ) ( 0.7 ) = 0.3885 \begin{aligned}\Delta w_{1}^{1}&=\left(0.5\right)\left(1.11\right)\left(0.3\right)=0.1665\\\Delta w_{2}^{1}&=\left(0.5\right)\left(1.11\right)\left(0.7\right)=0.3885\end{aligned} Δw11Δw21=(0.5)(1.11)(0.3)=0.1665=(0.5)(1.11)(0.7)=0.3885

  第一次更新之后的权重值:
w 1 1 = 0.8 + 0.1665 = 0.9665 w 2 1 = − 0.5 + 0.3885 = − 0.1115 \begin{aligned}w_{1}^{1}&=0.8+0.1665=0.9665\\w_{2}^{1}&=-0.5+0.3885=-0.1115\end{aligned} w11w21=0.8+0.1665=0.9665=0.5+0.3885=0.1115

  对应的权重向量为:
w 1 = [ 0.9965 , − 0.1115 ] . w^{1}=[0.9965,-0.1115]. w1=[0.9965,0.1115].

∙ \bullet 第二个点的计算:2-B1:

x 1 = − 0.6 , x 2 = 0.3 , t = 0 , w 1 0 = 0.9665 , w 2 0 = − 0.1115. x_{1}=-0.6,x_{2}=0.3,t=0,w_{1}^{0}= 0.9665,w_{2}^{0}= -0.1115. x1=0.6,x2=0.3,t=0,w10=0.9665,w20=0.1115.
u = ( − 0.6 ) ( 0.9665 ) + ( − 0.8 ) ( − 0.1115 ) = − 0.61335 = ˘ − 0.61335 ⇒ y = u = − 0.61335 < 0 \begin{array}{rl}u=(-0.6)(0.9665)+(-0.8)(-0.1115)=-0.61335\u=-0.61335 \Rightarrow y=u=-0.61335<0\end{array} u=(0.6)(0.9665)+(0.8)(0.1115)=0.61335=˘0.61335y=u=0.61335<0

  第二个点是分类是正确的,不需要再进行权重更新。

∙ \bullet 第三个点的计算:2-B2: x 1 = − 0.1 , x 2 = − 0.8 , t = 0 , w 1 0 = 0.9665 , w 2 0 = − 0.1115. x_{1}=-0.1,x_{2}=-0.8,t=0,w_{1}^{0}= 0.9665,w_{2}^{0}= -0.1115. x1=0.1,x2=0.8,t=0,w10=0.9665,w20=0.1115.
u = ( − 0.1 ) ( 0.9665 ) + ( − 0.8 ) ( − 0.1115 ) = − 0.00745 = ˘ − 0.00745 ⇒ y = u = − 0.00745 < 0 \begin{array}{rl}u=(-0.1)(0.9665)+(-0.8)(-0.1115)=-0.00745\u=-0.00745\Rightarrow y=u=-0.00745<0\end{array} u=(0.1)(0.9665)+(0.8)(0.1115)=0.00745=˘0.00745y=u=0.00745<0

  第三个点是分类是正确的,不需要再进行权重更新。

∙ \bullet 第四个点的计算:1-A2: x 1 = 0.1 , x 2 = − 0.45 , t = 1 , w 1 0 = 0.9665 , w 2 0 = − 0.1115. x_{1}=0.1,x_{2}=-0.45,t=1,w_{1}^{0}= 0.9665,w_{2}^{0}= -0.1115. x1=0.1,x2=0.45,t=1,w10=0.9665,w20=0.1115.
u = ( 0.1 ) ( 0.9665 ) + ( − 0.45 ) ( − 0.1115 ) = 0.1468 = ˘ 0.1468 ⇒ y = u = 0.1468 > 0 \begin{array}{rl}u=(0.1)(0.9665)+(-0.45)(-0.1115)=0.1468\u=0.1468\Rightarrow y=u=0.1468>0\end{array} u=(0.1)(0.9665)+(0.45)(0.1115)=0.1468=˘0.1468y=u=0.1468>0

  第四个点是分类也是正确的,不需要再进行权重更新。

  线性神经元将所有四个模式进行了正确地分类。结果说明对于这个简单的分类任务,使用delta 规则训练的线性神经元,可以比感知器更快地找到最好的权值。这是因为误差的计算是基于线性神经元的输出y而不是基于值函数sgn(x)的输出y。

  令y=0且y=u,所以对应的决策面方程如下所示:
y = u = w 1 x 1 + w 2 x 2 = 0 x 2 = − ( w 1 x 1 ) / w 2 \begin{array}{rcl}{y=u=w_{1}x_{1}+w_{2}x_{2}=0}\\{x_{2}=-(w_{1}x_{1})/w_{2}}\end{array} y=u=w1x1+w2x2=0x2=(w1x1)/w2

  代入计算如下所示:
x 2 = − ( 0.9665 x 1 ) / ( − 0.1115 ) x 2 = 8.67 x 1 \begin{aligned}x_2&=-(0.9665x_1)/(-0.1115)\\x_2&=8.67x_1\end{aligned} x2x2=(0.9665x1)/(0.1115)=8.67x1

3.基于遍历学习的神经网络计算模型

3.1.基于遍历学习的神经网络计算模型介绍

  遍历学习就是在每一次输入模式表达之后就进行权重的更新的调整方式叫做遍历学习即权重在每次计算之后就能够得到更新。

  遍历学习的权重计算公式如下所示:
u = w 1 x 1 + w 2 x 2 y = u E = t − y Δ w = β E x w new  = w old  + Δ w \begin{array}{l} u=w_{1} x_{1}+w_{2} x_{2} \\ y=u \\ E=t-y \\ \Delta w=\beta E x \\ w_{\text {new }}=w_{\text {old }}+\Delta w \end{array} u=w1x1+w2x2y=uE=tyΔw=βExwnew =wold +Δw

3.2.基于遍历学习的神经网络计算模型实现

  如下所示,给出对应的数据点,请你给出利用线性神经网络进行逼近的线性方程.
在这里插入图片描述

  由于第1个点(0,0)就已经确定了y=kx+b中的b为0,所以b对于整体学习没有什么影响,所以之后我们从x=1进行计算求解,我们依然设 w 0 = 0.5 , β = 0.1 w_{0}=0.5,\beta=0.1 w0=0.5,β=0.1

∙ \bullet 对于第一个点: x = 1 x=1 x=1, y = 0.75 y=0.75 y=0.75

进行遍历学习如下所示:
E = t − y = 0.75 − 0.5 = 0.25 w 1 = w + β x E = 0.5 + 0.1 × 0.25 × 1 = 0.5 + 0.025 = 0.525 \begin{aligned} E&=t-y=0.75-0.5=0.25\\ w^1&=w+\beta xE=0.5+0.1\times0.25\times1=0.5+0.025=0.525 \end{aligned} Ew1=ty=0.750.5=0.25=w+βxE=0.5+0.1×0.25×1=0.5+0.025=0.525

∙ \bullet 对于第二个点: x = 2 x=2 x=2, y = w 1 x = 0.525 ∗ 2 = 1.05 y=w^{1}x=0.525*2=1.05 y=w1x=0.5252=1.05

进行遍历学习如下所示:
E = t − y = 1.53 − 1.05 = 0.48 w 2 = w 1 + β x E = 0.5 + 0.1 × 0.48 × 2 = 0.525 + 0.096 = 0.621 \begin{aligned} E&=t-y=1.53-1.05=0.48\\ w^2&=w^1+\beta xE=0.5+0.1\times0.48\times2=0.525+0.096=0.621 \end{aligned} Ew2=ty=1.531.05=0.48=w1+βxE=0.5+0.1×0.48×2=0.525+0.096=0.621

∙ \bullet 对于第三个点: x = 3 x=3 x=3, y = w 2 x = 0.621 ∗ 3 = 1.863 y=w^{2}x=0.621*3=1.863 y=w2x=0.6213=1.863

进行遍历学习如下所示:
y = 0.621 × 3 = 1.863 E = 2.34 − 1.863 = 0.477 w 3 = 0.621 + 0.1 × 0.477 × 3 = 0.621 + 0.1431 = 0.7641 \begin{aligned}y&=0.621\times3=1.863\\E&=2.34-1.863=0.477\\w^3&=0.621+0.1\times0.477\times3=0.621+0.1431=0.7641\end{aligned} yEw3=0.621×3=1.863=2.341.863=0.477=0.621+0.1×0.477×3=0.621+0.1431=0.7641

∙ \bullet 对于第四个点: x = 3 x=3 x=3, y = w 3 x = 0.7641 ∗ 4 = 3.0564 y=w^{3}x=0.7641*4=3.0564 y=w3x=0.76414=3.0564

进行遍历学习如下所示:
y = 0.7641 × 4 = 3.0564 E = 3.2 − 3.0564 = 0.1436 w 4 = 0.7641 + 0.1 × 0.1436 × 4 = 0.7641 + 0.05744 = 0.8215 \begin{gathered} y=0.7641\times4=3.0564 \\ E=3.2-3.0564=0.1436 \\ w^{4}=0.7641+0.1\times0.1436\times4=0.7641+0.05744=0.8215 \end{gathered} y=0.7641×4=3.0564E=3.23.0564=0.1436w4=0.7641+0.1×0.1436×4=0.7641+0.05744=0.8215

   w 4 = 0.8215 w^{4}=0.8215 w4=0.8215已经很接近参考值0.8了,所以我们认为遍历学习的方法整体是比较不错的。

4.基于批量学习的神经网络计算模型}

4.1.基于批量学习的神经网络计算模型介绍

   批量学习就是当所有的输入模式都处理完之后,再进行一个平均意义上的权重调整,这个就是批量学习,目标就是需要去减少整个模式的平均误差。

  批量学习的权重更新计算公式如下所示:
u = w 1 x 1 + w 2 x 2 y = u E = t − y Δ w = β ( 1 n ∑ i = 1 n E i x i ) w n e w = w o l d + Δ w \begin{aligned} &u=w_1x_1+w_2x_2 \\ &\boldsymbol{y}=\boldsymbol{u} \\ &E=t-y \\ &\Delta w=\beta\Big(\frac1n\sum_{i=1}^{n}E_ix_i\Big) \\ &w_{\mathtt{new}}=w_{\mathtt{old}}+\Delta w \end{aligned} u=w1x1+w2x2y=uE=tyΔw=β(n1i=1nEixi)wnew=wold+Δw

  批量学习与遍历学习的算法计算上唯一不同的就是对于 Δ w \Delta w Δw的更新方式不同。

4.2基于批量学习的神经网络计算模型实现

  题目与第三题的题目相同,用对比两个算法的差异。

  由于第1个点(0,0)就已经确定了y=kx+b中的b为0,所以b对于整体学习没有什么影响,所以之后我们从x=1进行计算求解,我们依然设 w 0 = 0.5 , β = 0.1 w_{0}=0.5,\beta=0.1 w0=0.5,β=0.1

  我们分别将整体更新一次记作一个周期,每次周期中分别计算当时权重下的y和E值,最后进行均值的计算。

第一周期: 1 ◯ x 1 = 1 , y 1 = 0.5 × 1 = 0.5 , E 1 = t − y 1 = 0.25 2 ◯ x 2 = 2 , y 2 = 0.5 × 2 = 1 , E 2 = t − y 2 = 0.53 3 ◯ x 3 = 3 , y 3 = 0.5 × 3 = 1.5 , z 3 = t − y 3 = 0.84 4 ◯ x 4 = 4 , y 4 = 0.5 × 4 = 2 , E 4 = t − y 4 = 1.2 Δ w 1 = β ( 1 n ∑ i = 1 n E i X i ) = 0.1 × 1 4 ( 0.25 × 1 + 0.53 × 2 + 0.84 × 3 + 1.2 × 4 ) = 0.2158 w 1 = w + Δ w 1 = 0.5 + 0.2158 = 0.7158 \begin{aligned}\text{第一周期:}&\quad\\ \textcircled{1}&\quad x_1=1,\quad y_1=0.5\times1=0.5,E_1=t-y_1=0.25\\ \textcircled{2}&\quad x_2=2,\quad y_2=0.5\times2=1,E_2=t-y_2=0.53\\ \textcircled{3}&\quad x_3=3,\quad y_3=0.5\times3=1.5,z_3=t-y_3=0.84\\ \textcircled{4}&\quad x_4=4,\quad y_4=0.5\times4=2,E_4=t-y_4=1.2\\&\quad\Delta w^{1}=\beta\left(\frac1n\sum_{i=1}^nE_{i}X_{i}\right)\\&\quad=0.1\times\frac14\left(0.25\times1+0.53\times2+0.84\times3+1.2\times4\right)\\&\quad=0.2158\\ &w^{1}=w+\Delta w^1=0.5+0.2158=0.7158\end{aligned} 第一周期:1234x1=1,y1=0.5×1=0.5,E1=ty1=0.25x2=2,y2=0.5×2=1,E2=ty2=0.53x3=3,y3=0.5×3=1.5,z3=ty3=0.84x4=4,y4=0.5×4=2,E4=ty4=1.2Δw1=β(n1i=1nEiXi)=0.1×41(0.25×1+0.53×2+0.84×3+1.2×4)=0.2158w1=w+Δw1=0.5+0.2158=0.7158
第二周期: 1 ◯ x 1 = 1 , y 1 = 0.7158 , E 1 = 0.342 2 ◯ x 2 = 2 , y 2 = 1.4316 , E 2 = 0.0984 3 ◯ x 3 = 3 , y 3 = 2.1474 , E 3 = 0.1926 4 ◯ x 4 = 4 , y 4 = 2.8632 , E 4 = 0.3368 Δ w 2 = 0.0539 w 2 = w 1 + Δ w 2 = 0.7697 \begin{aligned} \text{第二周期:} \\ \textcircled{1}&\quad x_1=1,\quad y_1=0.7158,\quad E_1=0.342 \\ \textcircled{2}&\quad x_2=2,\quad y_2=1.4316,\quad E_2=0.0984 \\ \textcircled{3}&\quad x_3=3,\quad y_3=2.1474,\quad E_3=0.1926 \\ \textcircled{4}&\quad x_4=4,\quad y_4=2.8632,\quad E4=0.3368 \\ &\Delta w^2=0.0539 \\ &w^2=w^{1}+\Delta w^2=0.7697 \end{aligned} 第二周期:1234x1=1,y1=0.7158,E1=0.342x2=2,y2=1.4316,E2=0.0984x3=3,y3=2.1474,E3=0.1926x4=4,y4=2.8632,E4=0.3368Δw2=0.0539w2=w1+Δw2=0.7697

第三周期: 1 ◯ x 1 = 1 , y 1 = 0.7697 , E 1 = − 0.0197 2 ◯ x 2 = 2 , y 2 = 1.5394 , E 2 = − 0.0094 3 ◯ x 3 = 3 , y 3 = 2.3091 , E 3 = 0.0309 4 ◯ x 4 = 4 , y 4 = 3.0788 , E 4 = 0.1212 Δ w 3 = 0.013475 w 3 = w 2 + Δ w 3 = 0.783175 \begin{aligned} \text{第三周期:}\\ \textcircled{1}&\quad x_1=1,\quad y_1=0.7697,\quad E_1=-0.0197\\ \textcircled{2}&\quad x_2=2,\quad y_2=1.5394,\quad E_2=-0.0094\\ \textcircled{3}&\quad x_3=3,\quad y_3=2.3091,\quad E_3=0.0309\\ \textcircled{4}&\quad x_4=4,\quad y_4=3.0788,\quad E4=0.1212 \\ &\Delta w^3=0.013475 \\ &w^3=w^{2}+\Delta w^3=0.783175 \end{aligned} 第三周期:1234x1=1,y1=0.7697,E1=0.0197x2=2,y2=1.5394,E2=0.0094x3=3,y3=2.3091,E3=0.0309x4=4,y4=3.0788,E4=0.1212Δw3=0.013475w3=w2+Δw3=0.783175

  遍历学习算法在经过四次计算到达了相对的优值0.8215,而批量学习算法在3次计算就到达了比较接近的0.7831,值得一提的是遍历学习第一次的计算就已经达到了0.7158的结果,但是在后面的计算中以一个比较慢的速度进行更新与调整。

5.BP神经网络回归模型}

5.1.BP神经网络回归模型介绍

5.1.1.BP神经网络的特点

  BP神经网络的改动就是考虑到误差导数或关于权值的误差表面的斜率对权值的调整,在网络训练期间如图4.3所示,所有的输出神经元和隐含神经元权值必须同时调整。因此,有必要找到关于所有权值的误差导数。用 ∂ E ∂ b \frac{\partial E}{\partial b} bE 表示相对输出节点权值的导数,用 ∂ E ∂ a \frac{\partial E}{\partial a} aE表示相对隐含节点权值的导数。因为E不是直接与b和a相关联的,当误差E与权值的连接不是直接一个接一个相连时,可以使用链式规则的概念来找到导数,然后再去获得 ∂ E ∂ b \frac{\partial E}{\partial b} bE。然后通过连接输人与输入-隐含神经元的权值au也与y(隐含节点输出)相关联。因此跟踪从E,z,v,y到输人的相关链就可获得 ∂ E ∂ a \frac{\partial E}{\partial a} aE,这个概念叫做BP学习,这也是BP网络有别于其他网络的一个重要特点。
在这里插入图片描述

5.1.2.BP神经网络的链式求导法则

  我们以最简单的结构来进行链式法则的推导,如下所示,链式求导是基于BP(BackPropagation)原则,所以是从后往前传递求导的过程,所以我们将先决定求b的导数再求a的导数。
在这里插入图片描述

  首先对于任意隐含层b(权值)的导数,如下推导关系:
∂ E ∂ b = ∂ E ∂ z ⋅ ∂ z ∂ v ⋅ ∂ v ∂ b \frac{\partial E}{\partial b}=\frac{\partial E}{\partial z}\cdot\frac{\partial z}{\partial v}\cdot\frac{\partial v}{\partial b} bE=zEvzbv

对于 ∂ E ∂ b \frac{\partial E}{\partial b} bE,有三个计算的部分,第一部分是 ∂ E ∂ z \frac{\partial E}{\partial z} zE这是误差表面的对于输出的斜率, ∂ z ∂ v \frac{\partial z}{\partial v} vz是变量对于激活函数的求导,第三个输入加权和对v对输出神经元权值变化的灵敏度。

  对于三个求导值,如下所示:
∂ E ∂ z = z − t \frac{\partial E}{\partial z}=z-t zE=zt
∂ z ∂ v = ( 1 − z ) / z 1 / z 2 = z ( 1 − z ) \frac{\partial z}{\partial v}=\frac{(1-z)/z}{1/z^{2}}=z(1-z) vz=1/z2(1z)/z=z(1z)
v = b 0 + b 1 y ∂ v ∂ b 1 = y ∂ v ∂ b 0 = 1 \begin{aligned}v&=b_0+b_1y\\\frac{\partial v}{\partial b_1}&=y\\\frac{\partial v}{\partial b_0}&=1\end{aligned} vb1vb0v=b0+b1y=y=1

  计算所得关于两个权重的误差导数就表示为:
∂ E ∂ b 0 = ( z − t ) z ( 1 − z ) = p ∂ E ∂ b 1 = ( z − t ) z ( 1 − z ) y = p y \begin{aligned}\frac{\partial E}{\partial b_0}&=(z-t)z(1-z)=p\\\\\frac{\partial E}{\partial b_1}&=(z-t)z(1-z)y=py\end{aligned} b0Eb1E=(zt)z(1z)=p=(zt)z(1z)y=py

  我们还需要求解关于a的隐含神经元的误差梯度,同样使用链式法则,如下所示:
∂ E ∂ a = ( ∂ E ∂ z ⋅ ∂ z ∂ v ⋅ ∂ v ∂ y ) ⋅ ∂ y ∂ u ⋅ ∂ u ∂ a \frac{\partial E}{\partial a}=\left(\frac{\partial E}{\partial z}\cdot\frac{\partial z}{\partial v}\cdot\frac{\partial v}{\partial y}\right)\cdot\frac{\partial y}{\partial u}\cdot\frac{\partial u}{\partial a} aE=(zEvzyv)uyau

  又已知 ∂ v ∂ y = b 1 \frac{\partial v}{\partial y}=b_1 yv=b1
所以前三项代入得到:
∂ E ∂ y = ∂ E ∂ z ⋅ ∂ z ∂ v ⋅ ∂ v ∂ y = p b 1 \frac{\partial E}{\partial y}=\frac{\partial E}{\partial z}\cdot\frac{\partial z}{\partial v}\cdot\frac{\partial v}{\partial y}=pb_{1} yE=zEvzyv=pb1

  公式的第四项内容还是表示为这一层的u对于激活函数进行求导,如下所示:
∂ E ∂ y = y ( 1 − y ) \frac{\partial E}{\partial y}=y(1-y) yE=y(1y)

  对于最后一项,由于 u = a 0 + a 1 u=a_{0}+a_{1} u=a0+a1,所以对其进行求导如下所示:
∂ u ∂ a 1 = x ∂ u ∂ a 0 = 1 \begin{aligned}\frac{\partial u}{\partial a_1}&=x\\\frac{\partial u}{\partial a_0}&=1\end{aligned} a1ua0u=x=1

  所以将所有成分都组合在一起得到关于a的权值更新计算公式如下所示:
∂ E ∂ a 1 = p b 1 y ( 1 − y ) x = q x ∂ E ∂ a 0 = p b 1 y ( 1 − y ) = q q = p b 1 y ( 1 − y ) \begin{aligned}\frac{\partial E}{\partial a_1}&=pb_1y(1-y)x=qx\\\frac{\partial E}{\partial a_0}&=pb_1y(1-y)=q\\ &q=pb_1y(1-y)\end{aligned} a1Ea0E=pb1y(1y)x=qx=pb1y(1y)=qq=pb1y(1y)

  以上我们就实现了图中神经元结构的权重更新。

5.2.BP神经网络回归模型实现

  如图所示,我们现在利用神经网络来进行更新和回归的求解,如下所示,表中是一些神经元权重的值和更新的点数据:
在这里插入图片描述

  首先计算前向网络结果,如下所示:

对于x=0.7853,t=0.707,确定神经网路的前向传递的网络输出:
u = a 0 + a 1 x = 0.3 + 0.2 ( 0.7853 ) = 0.457 y = 1 1 + e − u = 1 1 + e − ( 0.457 ) = 0.612 v = b 0 + b 1 y = − 0.1 + 0.4 ( 0.612 ) = 0.143 z = 1 1 + e − v = 1 1 + e − ( 0.143 ) = 0.536 \begin{array}{l}u=a_{0}+a_{1} x=0.3+0.2(0.7853)=0.457 \\y=\frac{1}{1+\mathrm{e}^{-u}}=\frac{1}{1+\mathrm{e}^{-(0.457)}}=0.612 \\v=b_{0}+b_{1} y=-0.1+0.4(0.612)=0.143 \\z=\frac{1}{1+\mathrm{e}^{-v}}=\frac{1}{1+\mathrm{e}^{-(0.143)}}=0.536\end{array} u=a0+a1x=0.3+0.2(0.7853)=0.457y=1+eu1=1+e(0.457)1=0.612v=b0+b1y=0.1+0.4(0.612)=0.143z=1+ev1=1+e(0.143)1=0.536

  所以对于这个点的平均误差如下所示:
E = 1 2 ( 0.536 − 0.707 ) 2 = 0.0146 E=\frac{1}{2}(0.536-0.707)^{2}=0.0146 E=21(0.5360.707)2=0.0146

  接下来我们进行b权重的更新,z=0.536,t=0.707,如下所示:
∂ E ∂ b 0 = ( z − t ) z ( 1 − z ) = p = ( 0.536 − 0.707 ) ( 0.536 ) ( 1 − 0.536 ) = − 0.042 ∂ E ∂ b 1 = p y = ( − 0.042 ) ( 0.6120 ) = − 0.026 \begin{aligned}\frac{\partial E}{\partial b_0}&=(z-t)z(1-z)=p=(0.536-0.707)(0.536)(1-0.536)=-0.042\\\frac{\partial E}{\partial b_1}&=py=(-0.042)(0.6120)=-0.026\end{aligned} b0Eb1E=(zt)z(1z)=p=(0.5360.707)(0.536)(10.536)=0.042=py=(0.042)(0.6120)=0.026

  接下来我们进行a权重的更新,如下所示:(p=-0.042, b 1 = 0.4 b_{1}=0.4 b1=0.4,y=0.612,x=0.7853)
∂ E ∂ a 0 = p b 1 y ( 1 − y ) = q = ( − 0.042 ) ( 0.4 ) ( 0.612 ) ( 1 − 0.612 ) = − 0.004 ∂ E ∂ a 1 = p b 1 y ( 1 − y ) x = q x = ( − 0.004 ) ( 0.7853 ) = − 0.00314 \begin{array}{c}\frac{\partial E}{\partial a_{0}}=p b_{1} y(1-y)=q=(-0.042)(0.4)(0.612)(1-0.612)=-0.004 \\\frac{\partial E}{\partial a_{1}}=p b_{1} y(1-y) x=q x=(-0.004)(0.7853)=-0.00314\end{array} a0E=pb1y(1y)=q=(0.042)(0.4)(0.612)(10.612)=0.004a1E=pb1y(1y)x=qx=(0.004)(0.7853)=0.00314

  另外一个点的[1.571,1.00]通过同样的计算,得出对应的梯度值如下所示:
∂ E ∂ a 0 = − 0.0104 ∂ E ∂ a 1 = − 0.0163 ∂ E ∂ b 0 = − 0.1143 ∂ E ∂ b 1 = − 0.0742 \begin{aligned}\frac{\partial E}{\partial a_0}&=-0.0104\\ \frac{\partial E}{\partial a_1}&=-0.0163\\ \frac{\partial E}{\partial b_0}&=-0.1143\\ \frac{\partial E}{\partial b_{1}}&=-0.0742\\ \end{aligned} a0Ea1Eb0Eb1E=0.0104=0.0163=0.1143=0.0742

  计算得出的平均误差如下所示:
z = 0.5398 E = 0.1059 M S E = E 1 + E 2 2 = ( 0.0146 + 0.1059 ) 2 = 0.0602 \begin{aligned}z&=0.5398\\ E&=0.1059\\ MSE=\frac{E_1+E_2}{2}&=\frac{(0.0146+0.1059)}{2}=0.0602\\ \end{aligned} zEMSE=2E1+E2=0.5398=0.1059=2(0.0146+0.1059)=0.0602

  现在我们利用梯度下降法返回更新,进行权重值的调整,求解梯度和如下所示:
d 1 a 0 = ∑ ∂ E ∂ a 0 = − 0.004 − 0.0104 = − 0.0144 - d 1 a 1 = ∑ ∂ E ∂ a 1 = − 0.00314 − 0.0163 = − 0.01944 d 1 b 0 = ∑ ∂ E ∂ b 0 = − 0.042 − 0.1143 = − 0.1563 d 1 b 1 = ∑ ∂ E ∂ b 1 = − 0.026 − 0.0742 = − 0.1002 \begin{gathered} d_{1}^{a_{0}}=\sum\frac{\partial E}{\partial a_{0}}=-0.004-0.0104=-0.0144 \\ \text{-} d_{1}^{a_{1}}=\sum{\frac{\partial E}{\partial a_{1}}}=-0.00314-0.0163=-0.01944 \\ d_{1}^{b_{0}}=\sum\frac{\partial E}{\partial b_{0}}=-0.042-0.1143=-0.1563 \\ d_{1}^{b_{1}}=\sum{\frac{\partial E}{\partial b_{1}}}=-0.026-0.0742=-0.1002 \end{gathered} d1a0=a0E=0.0040.0104=0.0144-d1a1=a1E=0.003140.0163=0.01944d1b0=b0E=0.0420.1143=0.1563d1b1=b1E=0.0260.0742=0.1002

  所以第二次进行训练时权值更新如下所示:
a 0 2 = a 0 + Δ a 0 = 0.3 + 0.00144 = 0.30144 a 1 2 = a 1 + Δ a 1 = a 1 − ε d 1 a 1 = 0.2 − ( 0.1 ) ( − 0.01944 ) = 0.2019 b 0 2 = b 0 + Δ b 0 = b 0 − ε d 1 b 0 = − 0.1 − ( 0.1 ) ( − 0.1563 ) = − 0.0844 b 1 2 = b 1 + Δ b 1 = b 1 − ε d 1 b 1 = 0.4 − ( 0.1 ) ( − 0.1002 ) = 0.410 \begin{aligned}a_{0}^{2}&=a_{0}+\Delta a_{0}=0.3+0.00144=0.30144\\ a_1^2&=a_1+\Delta a_1=a_1-\varepsilon d_1^{a_1}=0.2-(0.1)(-0.01944)=0.2019\\b_0^2&=b_0+\Delta b_0=b_0-\varepsilon d_1^{b_0}=-0.1-(0.1)(-0.1563)=-0.0844\\b_1^2&=b_1+\Delta b_1=b_1-\varepsilon d_1^{b_1}=0.4-(0.1)(-0.1002)=0.410\end{aligned} a02a12b02b12=a0+Δa0=0.3+0.00144=0.30144=a1+Δa1=a1εd1a1=0.2(0.1)(0.01944)=0.2019=b0+Δb0=b0εd1b0=0.1(0.1)(0.1563)=0.0844=b1+Δb1=b1εd1b1=0.4(0.1)(0.1002)=0.410

  再次代入计算MSE如下所示:
M S E = ( 0.01367 + 0.1033 ) / 2 ⇒ 0.0585 \mathrm{MSE}=(0.01367+0.1033)/2\Rightarrow0.0585 MSE=(0.01367+0.1033)/20.0585

  同理再次进行更新训练所得权值如下所示:
d 2 a 0 = ∑ ∂ E ∂ a 0 = − 0.00399 − 0.0105 = − 0.01449 d 2 a 1 ∑ ∂ E ∂ a 1 = − 0.00312 − 0.0165 = − 0.0196 d 2 b 0 = ∑ ∂ E ∂ b 0 = − 0.04106 − 0.1127 = − 0.1538 d 2 b 1 = ∑ ∂ E ∂ b 1 = − 0.0251 − 0.0732 = − 0.0983 \begin{aligned}d_{2}^{a_{0}}&=\sum\frac{\partial E}{\partial a_{0}}=-0.00399-0.0105=-0.01449\\ d_2^{a_1}&\sum\frac{\partial E}{\partial a_1}=-0.00312-0.0165=-0.0196\\d_2^{b_0}&=\sum\frac{\partial E}{\partial b_0}=-0.04106-0.1127=-0.1538\\d_2^{b_1}&=\sum\frac{\partial E}{\partial b_1}=-0.0251-0.0732=-0.0983\end{aligned} d2a0d2a1d2b0d2b1=a0E=0.003990.0105=0.01449a1E=0.003120.0165=0.0196=b0E=0.041060.1127=0.1538=b1E=0.02510.0732=0.0983

  结合梯度差和学习率进行计算的新权值如下所示:
Δ a 0 2 = 0.00145 a 0 3 = 0.3029 Δ a 1 2 = 0.00196 a 1 3 = 0.2039 Δ b 0 2 = 0.01538 b 0 3 = − 0.069 Δ b 1 2 = 0.00983 b 1 3 = 0.4198 \begin{aligned}\Delta a_0^2&=0.00145\quad a_0^3=0.3029\\\Delta a_1^2&=0.00196\quad a_1^3=0.2039\\\Delta b_0^2&=0.01538\quad b_0^3=-0.069\\\Delta b_1^2&=0.00983\quad b_1^3=0.4198\end{aligned} Δa02Δa12Δb02Δb12=0.00145a03=0.3029=0.00196a13=0.2039=0.01538b03=0.069=0.00983b13=0.4198

  针对两个点进行的MSE求解结果如下所示:
M S E = ( 0.0128 + 0.10085 ) / 2 = 0.0568 \mathrm{MSE}=(0.0128+0.10085)/2=0.0568 MSE=(0.0128+0.10085)/2=0.0568

  所以通过不断训练,MSE不断变小,效果越来越好。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows原生蓝牙编程 第二章 选取设备输入配对码并配对【C++】

蓝牙系列文章目录 第一章 获取本地蓝牙并扫描周围蓝牙信息并输出 第二章 选取设备输入配对码并配对 文章目录 前言头文件一、选择想要配对的设备并设置配对码1.1 设置配对码1.2 选择设备并配对 二、全部代码三、测试结果总结 前言 接着第一章&#xff0c;我们已经把扫描到的蓝…

Composition API的引入

目录 全局API的移除和替代 插件的改进 TypeScript支持的增强 优势 劣势 总结 Vue.js 3.x版本引入了Composition API&#xff0c;这是一个全新的API风格&#xff0c;旨在提高代码的可读性和重用性。Composition API使我们可以根据逻辑相关性组织代码&#xff0c;而不是按照…

3.3每日一题(变量可分离方程)

1、判断类型选方法&#xff1a;等式中分别提一个x、y出来&#xff0c;形成了x与y相乘的等式&#xff1b;为变量可分离类型 2、不一定非得把y解出来&#xff0c;化成上述的等式即可&#xff08;为隐函数的方程解&#xff09; 注&#xff1a;等式不定积分后记得&#xff0b;一个…

Oracle Exadata X7-2掉电宕机导致集群无法启动处理过程

文章目录 前言一、当前的状态是什么&#xff1f;二、集群启动异常怀疑对象1.排查心跳网络异常ping自己私有IP延迟高ping其它主机私有IP不通 2.是否发生过重启 三、日志信息收集ocssd.trc集群crs日志cell的griddisk状态及报错 四、IB交换机的问题排查处理五、紧急恢复业务在IB完…

订水商城H5实战教程-05权限控制

目录 1 判断用户是否登录2 创建事件流3 获取不到Userid的问题4 权限控制整体效果 我们上一篇讲解了用户注册的功能&#xff0c;当用户注册完毕的时候再次打开小程序的时候就需要验证权限。权限分为两类&#xff0c;第一类是判断用户是否注册&#xff0c;第二类是当前用户具备什…

什么是鉴权?一篇文章带你了解postman的多种方式

一、什么是鉴权&#xff1f; 鉴权也就是身份认证&#xff0c;就是验证您是否有权限从服务器访问或操作相关数据。发送请求时&#xff0c;通常必须包含相应的检验参数以确保请求具有访问权限并返回所需数据。通俗的讲就是一个门禁&#xff0c;您想要进入室内&#xff0c;必须通…

windows应用软件扫描报告 不告谱 要钱

chatGPT开路&#xff0c;帮找。 当你想要查找Windows软件的漏洞而不涉及查看源代码时&#xff0c;你可以使用一些专门设计用于扫描漏洞的工具。这些工具通常会检查已安装的软件和操作系统的漏洞&#xff0c;并提供建议或修补程序。以下是一些可以用于查找Windows软件漏洞的工具…

数据结构之顺序表详解

hello&#xff0c;大家好&#xff0c;今天的内容是关于顺序表的&#xff0c;其实之前也发过文章&#xff0c;但是那个时候水平还是差了一点&#xff0c;有些地方不是很详细&#xff0c;这次会把每个点都讲清楚&#xff0c;也当给自己在复习一遍。 顺序表在本质上就是数组&#…

【智能座舱系列】- 深度解密小米Hyper OS,华为HarmonyOS区别

上一篇文章《小米的澎湃OS到底牛不牛?与鸿蒙系统之间差距有多大》,从多个方面比较了小米Hyper OS 与 华为HarmonyOS的区别,本篇文章继续从架构层面深度解读两者本质的区别。 小米澎湃OS是“以人为中心,打造人车家全生态操作系统”,该系统基于深度进化的Android以及自研的V…

SpringMVC Day 07 : 表单验证

前言 表单验证在Web开发中是非常常见和重要的一部分&#xff0c;它用于确保用户提交的数据符合预期的规则和限制。 通过表单验证&#xff0c;我们可以有效地捕获并处理用户输入中的错误或不正确的数据&#xff0c;从而提高应用程序的数据质量和用户体验。在本教程中&#xff…

Gerrit 事件监听实现

环境 Centos 7.9 Gerrit 2.15 Gerrit 2.15容器搭建 docker-compose.yml version: 3 services:gerrit:image: gerritcodereview/gerrit:2.15ports:- 8080:8080- 29418:29418volumes:- ./review_site:/var/gerrit/review_siteenvironment:- CANONICAL_WEB_URLhttp://localhos…

.jnlp

首先配置电脑的java环境。 百度搜索jre下载&#xff0c;会有很多结果&#xff0c;一般选择官网进行下载。 下载正确的jre版本。 我的电脑是windows 64位&#xff0c;根据你自己电脑的情况选择版本进行下载。不懂自己电脑是多少位的可以看下一步。 查看电脑是64位还是32…

并行和并发有什么区别?

并行和并发 并行和并发最早其实描述的是 Java 并发编程里面的概念。他们强调的是 CPU 处理任务的能力。简单来说&#xff1a; 并发&#xff0c;就是同一个时刻&#xff0c;CPU 能够处理的任务数量&#xff0c;并且对于应用程序来说&#xff0c;不会出现卡顿现象。并行&#x…

如何改善设备综合效率(OEE)并提高工厂的生产力

在现代制造业中&#xff0c;提高设备综合效率&#xff08;Overall Equipment Efficiency&#xff0c;OEE&#xff09;是企业追求高效生产和优化生产能力的重要目标之一。OEE是一个关键的绩效指标&#xff0c;可以帮助企业评估设备的利用效率、生产效率和质量水平。本文将从三个…

ERROR: There can be only one Game target per project.

UATHelper: Packaging (Windows (64-bit)): ERROR: There can be only one Game target per project. D:\dock\Intermediate\Source 把旧的文件删去 一般会出现在更改项目名称后 感谢 There can be only one Game target per project - Development Discussion / Content C…

YOLOv8修改特征金字塔(替换SPPF模块)

1.引言 1.1 引言 修改特征金字塔模块&#xff0c;即SPPF模块是YOLOv8改进中非常常见的一个改进点。 以下将介绍如何在yolov8中修改SPPF模型。 2.2 常见特征金字塔模块 常见特征金字塔可以看此贴&#xff1a;常见特征金字塔模块代码实现 1.3 本文示例 本文使用SimSPPF模块…

JAVA 学习笔记——抽象类

概念&#xff1a; 当定义一个类时&#xff0c;常常需要定义一些成员方法来描述类的行为特征&#xff0c;但有时这些方法的实现方式是无法确定的。 例如&#xff0c;前面在定义 Animal 类时&#xff0c;walk()方法用于描述动物的行走行为&#xff0c;但是针对不同的动物&#…

用友 GRP-U8 存在sql注入漏洞复现

0x01 漏洞介绍 用友 GRP-U8 license_check.jsp 存在sql注入&#xff0c;攻击者可利用该漏洞执行任意SQL语句&#xff0c;如查询数据、下载数据、写入webshell、执行系统命令以及绕过登录限制等。 fofa&#xff1a;app”用友-GRP-U8” 0x02 POC: /u8qx/license_check.jsp?kj…

Leetcode—2562.找出数组的串联值【简单】

2023每日刷题&#xff08;十四&#xff09; Leetcode—2562.找出数组的串联值 实现代码 long long findTheArrayConcVal(int* nums, int numsSize){int left 0;int right numsSize - 1;long long sum 0;while(left < right) {if(left right) {sum nums[left];break;}…

Linux启动之uboot分析

Linux启动之uboot分析 uboot是什么&#xff1f;一、补充存储器概念1.存储器种类1.norflash - 是非易失性存储器&#xff08;也就是掉电保存&#xff09;2.nandflash - 是非易失性存储器&#xff08;也就是掉电保存&#xff09;3.SRAM - 静态随机访问存储器 - Static Random Acc…