西瓜书笔记5:神经网络

2023-05-16

目录

5.1 神经元模型

5.2感知机与多层网络

感知机

感知机模型

感知机学习策略

感知机学习算法

多层网络

5.3 误差逆传播算法

标准BP(误差逆传播)算法

变量符号

公式推导

工作流程

累积BP算法

5.4全局最小与局部极小

跳出局部极小的技术

5.5 其他常见神经网络

5.5.1 RBF网络

5.5.2 ART网络

5.5.3 SOM网络

5.5.4 级联相关网络

5.5.5 Elman网络

5.5.6 Boltzmann机

5.6 深度学习


5.1 神经元模型

神经网络定义: 由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应.

最基本成分(简单单元): 神经元(neuron)模型. (此时的bias被称作阈值θ, 权重在连接处赋予. )

M-P 神经元模型:

其中f为激活函数, 理想中一般对应阶跃函数, 实际常用Sigmoid函数:

一个神经网络模型, 由多个函数相互嵌套代入得.

5.2感知机与多层网络

感知机

感知机 (Perceptron): 由两层神经元组成, 输入层接收外界输入信号后传递给输出层, 输出层M-P 神经元,亦称"阈值逻辑单元" (threshold logic unit).

感知机实现逻辑与、或、非运算(输入x_i只有0-1), 其中激活函数为阶跃函数:

(1)“与”(y=x1∧x2)令w1=w2=1, θ=2

$$ x_1 $$

$$ x_2 $$

$$ h=1\cdot x_1+1\cdot x_2-2 $$

$$ y=f(h) $$

0

0

-2

0

0

1

-1

0

1

0

-1

0

1

1

0

1

(2)“或”(y=x1∨x2)令w1=w2=1, θ=0.5

$$ x_1 $$

$$ x_2 $$

$$ h=1\cdot x_1+1\cdot x_2-0.5 $$

$$ y=f(h) $$

0

0

-0.5

0

0

1

0.5

1

1

0

0.5

1

1

1

1.5

1

(3)“非”(y=¬x1,即与x2无关)令w1=-0.6, w2=0, θ=-0.5

$$ x_1 $$

$$ x_2 $$

$$ h=-0.6\cdot x_1+0\cdot x_2+0.5 $$

$$ y=f(h) $$

0

0

0.5

1

0

1

0.5

1

1

0

-0.1

0

1

1

-0.1

0

实际当中的参数w, θ一般通过训练集学习得到.

感知机模型

感知机由两层神经元组成,感知机模型的公式:

$$ y=f(\sum\limits_{i=1}^{n}w_ix_i-\theta)=f(\boldsymbol{w}^{\mathrm{T}}\boldsymbol{x}-\theta) $$

其中f通常设为符号函数sign.

n维空间中的超平面方程:

$$ w_1x_1+w_2x_2+\cdots+w_nx_n+b \\=\boldsymbol{w}^{\mathrm{T}}\boldsymbol{x} +b=0 $$

感知机模型公式中的w^T*x−θ可以看作n维空间中的超平面,它将n维空间划分为w^T*x-θ≥0和w^T*x-θ<0两个子空间,以此实现分类功能.

感知机学习策略

所求目标-对线性可分数据集T中的正负样本完全正确划分的超平面

$$ \boldsymbol{w}^{\mathrm{T}}\boldsymbol{x}-\theta=0 $$

误分类样本集合M⊆T,对任意一个误分类样本(x,y)∈M,当w^T x-θ≥0模型输出值为y hat=1 ,样本真实标记为y=0;反之,w^T x-θ<0模型输出值为y hat=0 ,样本真实标记为y=1. 两个因子始终同号, 单个样本损失>0恒成立:

$$ (\hat{y}-y)(\boldsymbol{w}^\mathrm{T}\boldsymbol{x}-\theta)\geq0 $$

损失函数(总损失):

$$ L(\boldsymbol{w},\theta)=\sum_{\boldsymbol{x}\in M}(\hat{y}-y)(\boldsymbol{w}^\mathrm{T}\boldsymbol{x}-\theta) $$

误分类点越少,误分类点离超平面越近,损失函数值就越小, 最小为0。L是关于w, θ的连续可导函数。

关于连续可导, 注意到损失函数中的y为间断函数, w^T x-θ为连续可导函数, y的分段点处w^T x-θ=0, 所以依然连续可导.

感知机学习算法

即求解损失函数最优化问题, 数据集:

$$ T=\{(\boldsymbol{x}_1,y_1),(\boldsymbol{x}_2,y_2),\dots,(\boldsymbol{x}_N,y_N)\}\\ 其中\boldsymbol{x}_i \in \mathbb{R}^n,y_i \in \{0,1\} $$

求参数w, θ,为极小化损失函数的解( M⊆T为误分类样本集合 ):

$$ \min\limits_{\boldsymbol{w},\theta}L(\boldsymbol{w},\theta)=\min\limits_{\boldsymbol{w},\theta}\sum_{\boldsymbol{x_i}\in M}(\hat{y}_i-y_i)(\boldsymbol{w}^\mathrm{T}\boldsymbol{x}_i-\theta) $$

将阈值θ看作固定输入为-1的“哑节点”:

$$ -\theta=-1\cdot w_{n+1}=x_{n+1}\cdot w_{n+1} $$

将θ吸收入w:

$$ \begin{aligned} \boldsymbol{w}^\mathrm{T}\boldsymbol{x_i}+(-1)\cdot \theta&=\sum \limits_{j=1}^n w_jx_j+x_{n+1}\cdot w_{n+1}\\ &=\sum \limits_{j=1}^{n+1}w_jx_j\\ &=\boldsymbol{w}^{\mathrm{T}}\boldsymbol{x_i} \end{aligned} $$

代入损失函数:

$$ \min\limits_{\boldsymbol{w}}L(\boldsymbol{w})=\min\limits_{\boldsymbol{w}}\sum_{\boldsymbol{x_i}\in M}(\hat{y}_i-y_i)\boldsymbol{w}^\mathrm{T}\boldsymbol{x_i} $$

损失函数梯度∇ L

$$ \nabla_{\boldsymbol{w}}L(\boldsymbol{w})=\sum_{\boldsymbol{x_i}\in M}(\hat{y}_i-y_i)\boldsymbol{x_i} $$

其中用到矩微分公式:

$$ \cfrac{\partial\boldsymbol{a}^{\mathrm{T}}\boldsymbol{x}}{\partial\boldsymbol{x}}=\cfrac{\partial\boldsymbol{x}^{\mathrm{T}}\boldsymbol{a}}{\partial\boldsymbol{x}}=\boldsymbol{a} $$

随机梯度下降法权重w更新公式:

$$ \boldsymbol w \leftarrow \boldsymbol w+\Delta \boldsymbol w\\ \Delta \boldsymbol w=-\eta(\hat{y}_i-y_i)\boldsymbol x_i=\eta(y_i-\hat{y}_i)\boldsymbol x_i $$

其中y hat为感知机的输出, η为学习率(learning rate).

相关知识:使用单个样本与整个训练集的算法区分

随机梯度下降SGD stochastic gradient descent

极小化过程中不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。

标准 BP 算法

每一轮迭代中每次仅依次针对一个训练样例更新连接权和阈值,读取训练集一遍称为进行了一轮(one round, one epoch)学习。参数更新得非常频繁,而且对不同样例进行更新的效果可能"抵消".

累积 BP算法

首先在范围内随机初始化网络中所有连接权v_ih和w_hj,以及阈值γ_h和θ_j,采用梯度下降直接针对累积误差最小化,读取整个训练集一遍后才对参数进行更新,其参数更新的频率低得多.但在很多任务中,累积误差下降到一定程度之后,进一步下降会非常缓慢.

标准梯度下降

一次使M中所有误分类点的梯度下降

多层网络

感知机只有一层功能神经元(functional neuron), 即输出层神经元, 进行激活函数处理. 与、或、非问题都是线性可分(linearly separable) 问题. 若两类模式是线性可分的,即存在一个线性超平面能将它们分开,感知机的学习w过程一定会收敛(converge), 否则学习过程震荡(fluctuation). 感知机不能解决非线性可分问题(如异或x1⊕x2):

非线性可分问题考虑多层功能神经元. 输出层与输入层之间的一层神经元,称为隐层或隐含层(hidden layer),隐含层\输出层神经元都是拥有激活函数的功能神经元.

两层感知机能解决异或问题.

实现“异或”计算的过程:

$$ x_1 $$

$$ x_2 $$

$$ h_1=1\cdot x_1+1\cdot x_2-0.5 $$

$$ h_2=(-1)\cdot x_1+(-1)\cdot x_2+1.5 $$

$$ y=f(h_1+h_2-1.5) $$

0

0

0

1

0

0

1

1

1

1

1

0

1

1

1

1

1

1

0

0

常见的神经网络为多层前馈神经网络 (multi-layer feedforward neural networks). 是层级结构,每层神经元与下层神经元全互连, 神经元之间不存在同层连接, 也不存在跨层连接. 其中, "前馈"指网络拓扑结构不存在环或回路.

其中输入层神经元仅是接受输入,不进行函数处理,隐层与输出层包含功能神经元. "两层网络"="单隐层网络". 神经网络"学"到的东西,蕴涵在连接权(connection weight)与阈值中,

5.3 误差逆传播算法

简单感知机学习规则(w<-w+Δw)不够. 训练多层网络,需要算法如BP(误差逆传播error BackPropagation) 算法进行训练. "BP 算法"可用于许多类型的神经网络, 但"BP 网络"指BP算法训练的多层前馈神经网络.

标准BP(误差逆传播)算法

单隐层为例

变量符号

输入层神经元个数

$$ d $$

输入层第i个神经元输入

$$ x_i $$

输入层第i个神经元 到 隐层第h个神经元的连接权

$$ v_{ih} $$

隐层神经元个数

$$ q $$

隐层第h个神经元输入

$$ \alpha_h=\sum^d_{i=1}v_{ih}x_i $$

隐层第h个神经元输出

$$ b_h=f(\alpha_h-\gamma_h), \gamma_h为阈值 $$

隐层第h个神经元 到 输出层第j个神经元的连接权

$$ w_{hj} $$

输出层神经元个数

$$ l $$

输出层第j个神经元输入

$$ \beta_j=\sum^q_{h=1}w_{hj}b_h $$

输出层第j个神经元输出

$$ \hat y_j=f(\beta_j-\theta_j), \theta_j为阈值 $$

训练集

$$ D=\{(\boldsymbol x_1,\boldsymbol y_1),(\boldsymbol x_2,\boldsymbol y_2),\cdots ,(\boldsymbol x_m,\boldsymbol y_m)\} $$

训练集中第k个样本

$$ (\boldsymbol x_k,\boldsymbol y_k)\\ 其中\boldsymbol x_k=(x^k_1,x^k_2,\cdots,x^k_d)\in \mathbb{R}^d,\boldsymbol y_k=(y^k_1,y^k_2,\cdots,y^k_d)\in \mathbb{R}^l $$

参数:

1. 输入层到隐层的d*q个权值v_ih

2. 隐层到输出层的q*l个权值w_hj

3. 隐层的q个神经元的阈值γ_h

4. 输出层的l个神经元的阈值θ_j

共(d+l+1)*q+l个参数需确定

超参数:

隐层的神经元个数q

训练轮数epoch

设隐层和输出层神经元f使用Sigmoid函数(即对率函数).

网络在样本(x_k, y_k)上的均方误差:

$$ E_k=\cfrac{1}{2} \sum\limits_{j=1}^{l}\left(\hat{y}_{j}^{k}-y_{j}^{k}\right)^{2} $$

任意参数v的更新估计式(同感知机):

$$ v\leftarrow v+\Delta v $$

参数的更新公式

$$\begin{aligned} \Delta w_{hj} &= -\eta \cfrac{\partial E_k}{\partial w_{hj}}\\ &=-\eta(-g_j  \cdot b_h)\\ &=\eta g_j b_h  \end{aligned}\\ \begin{aligned} \Delta \theta_j &= -\eta \cfrac{\partial E_k}{\partial \theta_j}=-\eta g_j\\ \Delta v_{ih} &=-\eta \cfrac{\partial E_k}{\partial v_{ih}} =\eta e_h x_i\\ \Delta \gamma_h&=-\eta\cfrac{\partial E_k}{\partial \gamma_h} = -\eta e_h\\ \end{aligned} $$

注意4个参数中v和γ的公式对j求和, θ和ω不用求和. 下标有j, 代表只与第j个输出神经元有关, 不影响每个输出神经元.

公式推导

基于梯度下降, 以目标的负梯度方向对(4种待定)参数调整(给定误差E_k, 学习率η):

$$ \Delta w_{hj} = -\eta \cfrac{\partial E_k}{\partial w_{hj}}\\ \Delta \theta_j = -\eta \cfrac{\partial E_k}{\partial \theta_j}\\ \Delta v_{ih} = -\eta \cfrac{\partial E_k}{\partial v_{ih}}\\ \Delta \gamma_h = -\eta \cfrac{\partial E_k}{\partial \gamma_h} $$

E对w求偏导的方法

根据函数关系: w_hj先影响到第j个输出层神经元的输入值β_j,再影响到其输出值hat y_j,然后影响到 E.

$$ E_k=\cfrac{1}{2} \sum\limits_{j=1}^{l}\left(\hat{y}_{j}^{k}-y_{j}^{k}\right)^{2}\\ \hat y_j=f(\beta_j-\theta_j)\\ \beta_j=\sum^q_{h=1}w_{hj}b_h\\  $$

完整依赖关系:

$$ \begin{array}{1} E_k\leftarrow \hat y_j&\leftarrow&\beta_j&\leftarrow &w_{hj}\\ &\nwarrow&&\nwarrow\\ & &\theta_j & &b_h&\leftarrow &\alpha_h\leftarrow v_{ih}\\ & & & & &\nwarrow \\ & & & & & &\gamma_h \end{array}  $$

考虑链式法则:

$$ \cfrac{\partial E_k}{\partial w_{hj}} =  \cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot \cfrac{\partial \hat{y}_j^k}{\partial \beta_j} \cdot \cfrac{\partial \beta_j}{\partial w_{hj}}  $$

其中β求导(只有第h项包含w_hj):

$$ \cfrac{\partial \beta_j}{\partial w_{hj}}=\cfrac{\sum^q_{h=1}w_{hj}b_h}{\partial w_{hj}}=b_h $$

Sigmoid 函数求导性质:

$$ \begin{aligned} f(x)&=\frac 1{1+e^{-x}}\\ f'(x)&=\frac {e^{-x}}{(1+e^{-x})^2}=\frac 1{1+e^{-x}}\frac {e^{-x}}{1+e^{-x}}=\frac 1{1+e^{-x}}\left(1-\frac 1{1+e^{-x}}\right)\\ &=f(x)(1-f(x)) \end{aligned} $$

神经网络有两层功能神经元,定义两个变量e_h, g_j. (若有多个隐层,需定义更多的变量,这些变量体现“误差逆传播”的含义,即误差E从后往前依次对各层功能神经元的输入求导. 其中g为E对输出层的输入β求导, e为E对隐层的输入α求导)

E对输出层的输入β求导,一个β只影响一个输出y:

 $$ \begin{aligned} g_j&=-\frac{\partial {E_k}}{\partial{\beta_j}}\\ &=-\frac{\partial {E_k}}{\partial{\hat{y}_j^k}} \cdot \frac{\partial{\hat{y}_j^k}}{\partial{\beta_j}} \\  &=\hat{y}_j^k(1-\hat{y}_j^k)(y_j^k-\hat{y}_j^k)   \end{aligned} $$

E对隐层的输入α求导, 每个α影响一个隐藏层输出b, 一个b影响多个输出层的输入β(所以此处有对β的求和)

​​​​​​​

 $$ \begin{aligned} e_h&=-\frac{\partial {E_k}}{\partial{b_h}}\cdot \frac{\partial{b_h}}{\partial{\alpha_h}} \\&=-\sum_{j=1}^l \frac{\partial {E_k}}{\partial{\beta_j}}\cdot \frac{\partial{\beta_j}}{\partial{b_h}}f^{\prime}(\alpha_h-\gamma_h) \\&=\sum_{j=1}^l w_{hj}g_j f^{\prime}(\alpha_h-\gamma_h) \\&=b_h(1-b_h)\sum_{j=1}^l w_{hj}g_j \end{aligned}  $$

将变量g与∂β/∂w代入∂E/∂w中:

$$ \begin{aligned}  \cfrac{\partial E_k}{\partial w_{hj}} &=  \cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot \cfrac{\partial \hat{y}_j^k}{\partial \beta_j} \cdot \cfrac{\partial \beta_j}{\partial w_{hj}} \\ &=\cfrac{\partial\left[ \cfrac{1}{2} \sum\limits_{j=1}^{l}\left(\hat{y}_{j}^{k}-y_{j}^{k}\right)^{2}\right]}{\partial \hat{y}_{j}^{k}} \cdot \cfrac{\partial [f(\beta_j-\theta_j)]}{\partial \beta_j}\cdot b_h\\  &=\cfrac{1}{2} 2(\hat{y}_j^k-y_j^k) \cdot f\left(\beta_{j}-\theta_{j}\right)\left[1-f\left(\beta_{j}-\theta_{j}\right)\right] \cdot b_h \\  &=-(y_j^k-\hat{y}_j^k) \cdot \hat{y}_j^k\left(1-\hat{y}_j^k\right) \cdot b_h \\  &=-g_j  \cdot b_h \end{aligned} $$

将∂E/∂w代入Δw得参数更新公式:

$$ \begin{aligned} \Delta w_{hj} &= -\eta \cfrac{\partial E_k}{\partial w_{hj}}\\ &=-\eta(-g_j  \cdot b_h)\\ &=\eta g_j b_h  \end{aligned} $$

同理, 其他参数的更新公式:

$$ \begin{aligned} \Delta \theta_j &= -\eta \cfrac{\partial E_k}{\partial \theta_j}=-\eta g_j\\ \Delta v_{ih} &=-\eta \cfrac{\partial E_k}{\partial v_{ih}} =\eta e_h x_i\\ \Delta \gamma_h&=-\eta\cfrac{\partial E_k}{\partial \gamma_h} = -\eta e_h\\ \end{aligned} $$

其中定义变量部分推导:

$$ \begin{aligned} \cfrac{\partial E_k}{\partial \theta_j} &= \cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot\cfrac{\partial \hat{y}_j^k}{\partial \theta_j} \\ &= \cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot\cfrac{\partial [f(\beta_j-\theta_j)]}{\partial \theta_j} \\ &=\cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot f^{\prime}(\beta_j-\theta_j) \times (-1) \\ &=\cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot f\left(\beta_{j}-\theta_{j}\right)\times\left[1-f\left(\beta_{j}-\theta_{j}\right)\right] \times (-1) \\ &=\cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot \hat{y}_j^k\left(1-\hat{y}_j^k\right) \times (-1) \\ &=\cfrac{\partial\left[ \cfrac{1}{2} \sum\limits_{j=1}^{l}\left(\hat{y}_{j}^{k}-y_{j}^{k}\right)^{2}\right]}{\partial \hat{y}_{j}^{k}} \cdot \hat{y}_j^k\left(1-\hat{y}_j^k\right) \times (-1) \\ &=\cfrac{1}{2}\times 2(\hat{y}_j^k-y_j^k)\times 1 \cdot\hat{y}_j^k\left(1-\hat{y}_j^k\right) \times (-1) \\ &=(y_j^k-\hat{y}_j^k)\hat{y}_j^k\left(1-\hat{y}_j^k\right) \\ &= g_j \\ \cfrac{\partial E_k}{\partial v_{ih}} &= \sum_{j=1}^{l} \cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot \cfrac{\partial \hat{y}_j^k}{\partial \beta_j} \cdot \cfrac{\partial \beta_j}{\partial b_h} \cdot \cfrac{\partial b_h}{\partial \alpha_h} \cdot \cfrac{\partial \alpha_h}{\partial v_{ih}} \\ &= \sum_{j=1}^{l} \cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot \cfrac{\partial \hat{y}_j^k}{\partial \beta_j} \cdot \cfrac{\partial \beta_j}{\partial b_h} \cdot \cfrac{\partial b_h}{\partial \alpha_h} \cdot x_i \\ &= \sum_{j=1}^{l} \cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot \cfrac{\partial \hat{y}_j^k}{\partial \beta_j} \cdot \cfrac{\partial \beta_j}{\partial b_h} \cdot f^{\prime}(\alpha_h-\gamma_h) \cdot x_i \\ &= \sum_{j=1}^{l} \cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot \cfrac{\partial \hat{y}_j^k}{\partial \beta_j} \cdot w_{hj} \cdot f^{\prime}(\alpha_h-\gamma_h) \cdot x_i \\ &= \sum_{j=1}^{l} (-g_j) \cdot w_{hj} \cdot f^{\prime}(\alpha_h-\gamma_h) \cdot x_i \\ &= -f^{\prime}(\alpha_h-\gamma_h) \cdot \sum_{j=1}^{l} g_j \cdot w_{hj} \cdot x_i\\ &= -b_h(1-b_h) \cdot \sum_{j=1}^{l} g_j \cdot w_{hj} \cdot x_i \\ &= -e_h \cdot x_i\\ \cfrac{\partial E_k}{\partial \gamma_h} &= \sum_{j=1}^{l} \cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot \cfrac{\partial \hat{y}_j^k}{\partial \beta_j} \cdot \cfrac{\partial \beta_j}{\partial b_h} \cdot \cfrac{\partial b_h}{\partial \gamma_h} \\ &= \sum_{j=1}^{l} \cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot \cfrac{\partial \hat{y}_j^k}{\partial \beta_j} \cdot \cfrac{\partial \beta_j}{\partial b_h} \cdot f^{\prime}(\alpha_h-\gamma_h) \cdot (-1) \\ &= -\sum_{j=1}^{l} \cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot \cfrac{\partial \hat{y}_j^k}{\partial \beta_j} \cdot w_{hj} \cdot f^{\prime}(\alpha_h-\gamma_h)\\ &= -\sum_{j=1}^{l} \cfrac{\partial E_k}{\partial \hat{y}_j^k} \cdot \cfrac{\partial \hat{y}_j^k}{\partial \beta_j} \cdot w_{hj} \cdot b_h(1-b_h)\\ &= \sum_{j=1}^{l}g_j\cdot w_{hj} \cdot b_h(1-b_h)\\ &=e_h  \end{aligned} $$

工作流程

学习率η∈(0, 1)(常设η=0.1)控制算法每一轮迭代中的更新步长,太大振荡,太小收敛慢. 不同参数可设不同学习率

每个训练样例, BP 算法迭代执行: 先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果; 然后计算输出层的误差(第4-5行) ,再将误差逆向传播至隐层神经元(第6行) ,

最后根据隐层神经元的误差调整连接权和阈值(第7行).

输入:训练集 D={( x_k, y_k)}^m_{k=1};

       学习率 η.

过程:

1: (0, 1)范围内随机初始化网络中所有连接权和阈值

2: repeat

3:    for all (x_k , y_k)∈D do

4:           根据当前参数计算当前样本的输出y hat

5:           计算输出层神经元的梯度项g;

6:           计算隐层神经元的梯度项e;

7:           更新连接权w, v与阈值θ, γ

8:    end for

9: until 达到停止条件(如误差达很小值)

输出:连接权与阈值确定的多层前馈神经网络

累积BP算法

累积BP 算法目标: 最小化训练集D上的累积误差

$$ E=\frac{1}{m}\sum^m_{k=1} E_k $$

累积误差逆传播(accumulated error backpropagation)算法: 用类似标准BP的方法推导出基于累积误差最小化的更新规则.

实际使用: 累积 BP 算法读取整个训练集一遍(one round/epoch)后更新,参数更新频率低. 但累积误差下降到一定程度进一步下降缓慢,这时标准BP更快获得较好解,尤其训练集D大时.

隐层神经元个数设置: 实际应用常靠"试错法" (trial-by-error).

BP神经网络常过拟合, 缓解策略:

1. "早停" (early stopping): 若训练集误差降低, 但验证集误差升高, 则停止训练.

2. 正则化(regularization)(类似SVM): 误差目标函数中增加连接权, 阈值(描述网络复杂度, 使输出更光滑). 则误差目标函数:

$$ E=\lambda\frac{1}{m}\sum^m_{k=1} E_k+(1-\lambda)\sum_i w_i^2 $$

5.4全局最小与局部极小

神经网络的训练过程可看作,寻找一组最优参数使得误差E最小.

"局部极小" (local minimum): 其邻域点的误差函数值均不小于该点的函数值. 即梯度为零,误差函数值小于邻点.

"全局最小" (global minimum): 参数空间中所有点的误差函数值均不小于该点的误差函数值.

参数寻优方法: 从初始解出发, 迭代寻找. 每次迭代中,计算误差函数在当前点的梯度,梯度下降法沿着负梯度方向(函数值下降最快)搜索最优解. 若梯度为零,达到局部极小,更新量为零,参数迭代更新停止.

跳出局部极小的技术

1. 以多组不同参数值初始化多个神经网络, 取误差最小的解作为最终参数.

2. "模拟退火" (simulated annealing).每一步都以一定的概率接受更差结果. 接受"次优解"的概率逐渐降低, 从而保证算法稳定. (也会跳出全局最小)

3. 随机梯度下降法. 计算梯度时加入随机因素. 局部极小点梯度仍可能不为零.

4. 遗传算法(genetic algorithms)

5.5 其他常见神经网络

5.5.1 RBF网络

RBF(Radial Basis Function径向基函数)网络: 单隐层前馈神经网络

隐层神经元激活函数: 径向基函数

输出层: 隐层神经元输出的线性组合.

RBF网络表示(输入向量x为d维, 输出实值):

$$ \varphi (x)=\sum^q_{i=1}w_i\rho(\boldsymbol x,\boldsymbol c_i) $$

其中q为隐层神经元个数,c_i, w_i分别是第i个隐层神经元所对应的中心和权重,ρ是径向基函数,常定义为样本到数据中心c_i欧氏距离.

常用的高斯径向基函数(也可用别的径向基函数):

$$ \rho(\boldsymbol x,\boldsymbol c_i)=e^{-\beta_i\Vert\boldsymbol x-\boldsymbol c_i\Vert^2} $$

训练步骤:

1. (特征转换)随机采样、聚类等确定神经元中心c_i

2. (线性回归)BP等算法确定参数w, β

5.5.2 ART网络

属于竞争型学习网络, 结构自适应网络.

ART(Adaptive Resonance Theory,自适应谐振理论)网络: 由比较层、识别层、识别阈值和重置模块构成.

比较层负责接收输入样本, 传递给识别层神经元.

识别层每个神经元对应1个模式类(子类),训练过程中动态增长神经元数目(模式类). 识别层神经元之间相互竞争以产生获胜神经元.

竞争型学习 (competitive learning) : 无监督学习策略. 输出神经元相互竞争,每一时刻仅有一个获胜神经元被激活,其他神经元的状态被抑制. 即"胜者通吃" (winner-take-all) 原则.

竞争: 计算输入向量与每个识别层神经元所对应的模式类的代表向量之间的距离,距离最小者胜. 获胜神经元将向其他识别层神经元发送信号,抑制其激活. 相似度大于识别阔值,则样本将被归为该代表向量所属类别,更新连接权,使相似度更大. 若相似度不大于识别阈值,则重置模块在识别层增设一个新的神经元,其代表向量为当前输入向量.

识别阈值影响: 识别阈值较高, 模式类多、比较精细; 识别阈值较低, 模式类少、比较粗略.

APT优点: 具有可塑性(学习新知识的能力), 稳定性(保持对旧知识的记忆). 可进行增量学习 (incremental learning) 或在线学习 (online learning) .

5.5.3 SOM网络

SOM(Self-Organizing Map自组织映射)网络, 竞争学习型的无监督神经网络.

作用: 将高维输入数据映射到低维(2维)空间,同时保持数据拓扑结构,即高维空间中相似的样本点映射到网络输出层中的邻近神经元.

训练过程: 每个输出层神经元计算某样本与自身权向量距离,距离最近的神经元称为最佳匹配单元(best matching unit). 调整最佳匹配单元及其邻近神经元的权向量,缩小与当前输入样本的距离. 迭代该过程至收敛.

5.5.4 级联相关网络

级联相关(Cascade-Correlation)为结构自适应(constructive)网络: 网络结构也为学习目标.

训练过程: 新的隐结点加入时,红色连接权通过最大化新结点的输出与网络误差之间的相关性来进行训练.

级联: 建立层次连接的层级结构.

相关: (红色连接权) 最大化新结点的输出与网络误差之间的相关性(correlation)来训练参数.

级联相关网络无需设置网络层数、隐层神经元数目,且训练速度较快,但其在数据较小时易 过拟合.

5.5.5 Elman网络

"递归神经网络" RNN(recurrent neural networks) 允许网络中出现环形结构,神经元的输出反馈回来作为输入信号.

Elman隐层神经元的输出被反馈回来, 与下一时刻输入层神经元提供的信号一起,作为隐层神经元在下一时刻的输入.

网络在t时刻的输出状态不仅与t时刻的输入有关, 还与t-1时刻的网络状态有关,能处理与时间有关的动态变化.

RNN 进一步演进就是长短时间记忆(Long Short-Term Memory, LSTM)网络。此类网络结构善长于处理时序信号,比如语音.

5.5.6 Boltzmann机

更多深入内容可参考: https://zhuanlan.zhihu.com/p/22794772

属于递归神经网络, 基于能量的模型 (energy-based model), 能量函数最小化代表网络状态最好.

神经元分为两层: 显层与隐层. 显层用于数据的输入与输出,隐层为数据的内在表达. Boltzmann 机中的神经元都是布尔型, 状态1表示激活, 状态0表示抑制.

标准的Boltzmann机是一个全连接图,现实中常用受限的Boltzmann(Restricted Boltzmann Machine)即RBM仅保留显层与隐层之间的连接.

相关知识: 二部图. 图中每条边依附的两个顶点都分属于这两个互不相交的子集

令向量s表示n个神经元的状态,w_ij表示神经元i, j之间连接权,θ_i表示神经元i阈值,则状态向量s所对应的能量定义:

$$ E(\boldsymbol{s})=-\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}w_{ij}s_is_j-\sum_{i=1}^n\theta_is_i $$

本质上是一个引入了隐变量的无向图模型,无向图的能量:

$$ E_{graph}=E_{edges}+E_{nodes}\\ E_{edges}=\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}E_{{edge}_{ij}}=-\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}w_{ij}s_is_j\\ E_{nodes}=\sum_{i=1}^nE_{{node}_i}=-\sum_{i=1}^n\theta_is_i $$

Boltzmann 分布,状态向量s出现的概率(这个t不知道哪来的):

$$ P(\boldsymbol{s})=\frac{e^{-E(\boldsymbol{s})}}{\sum_te^{-E(\boldsymbol{t})}} $$

其中规范化因子, 即配分函数(Partition Function):

$$ Z=\sum_te^{-E(\boldsymbol{t})}\\ P(\boldsymbol{s})=\frac{e^{-E(\boldsymbol{s})}}{Z} $$

训练过程将每个训练样本视为一个状态向量,使其出现的概率尽可能大. RBM训练使用算法: 对比散度CD (Contrastive Divergence):

设显层神经元d个, 隐层神经元q个,显层状态向量v, 隐层状态向量h,同层内无连接, 即v与h相关, 但v_1…v_d相互独立. 根据概率论独立事件公式, v_1…v_d同时发生等于两个事件发生概率的乘积.

$$ P(\boldsymbol{v}|\boldsymbol{h})=\prod_{i=1}^dP(v_i\, | \, \boldsymbol{h})\\ P(\boldsymbol{h}|\boldsymbol{v})=\prod_{j=1}^qP(h_i\, | \, \boldsymbol{v}) $$

CD算法对每个训练样本v,计算隐层神经元状态的概率分布P(h|v),根据P(h|v)概率分布采样得h; 然后根据P(v|h)从h产生v', 从v'产生h'.

根据能量公式E(s)代入v, h:

$$ E(\boldsymbol{v},\boldsymbol{h})=-\sum_{i=1}^d\sum_{j=1}^qw_{ij}v_ih_j-\sum_{i=1}^d\alpha_iv_i-\sum_{j=1}^q\beta_jh_j $$

代入W可化为向量形式:

$$ \mathbf{W}=\begin{bmatrix} \boldsymbol{w}_1\\ \boldsymbol{w}_2\\ \vdots\\ \boldsymbol{w}_q \end{bmatrix}\in \mathbb{R}^{q*d}\\ E(\boldsymbol{v},\boldsymbol{h})=-\boldsymbol{h}^{\mathrm{T}}\mathbf{W}\boldsymbol{v}-\boldsymbol{\alpha}^{\mathrm{T}}\boldsymbol{v}-\boldsymbol{\beta}^{\mathrm{T}}\boldsymbol{h} $$

类似地, 联合概率分布公式P(s)代入v, h:

$$ P(\boldsymbol{v},\boldsymbol{h})=\frac{1}{Z}e^{-E(\boldsymbol{v},\boldsymbol{h})} $$

对于数据集V, 记参数为θ:

$$ \boldsymbol{\theta}=\{\mathbf{W},\boldsymbol{\alpha},\boldsymbol{\beta}\} $$

目的是求最优θ, 使对数似然函数L最大化

首先对L整理:

$$ \begin{aligned} L(\boldsymbol{\theta})&=\ln\left(\prod_{k=1}^{m}P(\boldsymbol{v}_k)\right) \\ &=\sum_{k=1}^m\ln P(\boldsymbol{v}_k) \\ &= \sum_{k=1}^m L_k(\boldsymbol{\theta})\\ L_k(\boldsymbol{\theta})&=\ln P(\boldsymbol{v}_k) \\&=\ln\left(\sum_{\boldsymbol{h}}P(\boldsymbol{v}_k,\boldsymbol{h})\right) \\&=\ln\left(\sum_{\boldsymbol{h}}\frac{1}{Z}e^{-E(\boldsymbol{v}_k,\boldsymbol{h})}\right) \\&=\ln\left(\sum_{\boldsymbol{h}}e^{-E(\boldsymbol{v}_k,\boldsymbol{h})}\right)-\ln Z \\&=\ln\left(\sum_{\boldsymbol{h}}e^{-E(\boldsymbol{v}_k,\boldsymbol{h})}\right)-\ln\left(\sum_{\boldsymbol{v},\boldsymbol{h}}e^{-E({\boldsymbol{v},\boldsymbol{h})}}\right) \end{aligned} $$

最大化用的是梯度上升法, 求L梯度:

梯度计算可以参考这个视频(能不能看懂全看造化):

https://www.bilibili.com/video/BV1kJ41127aD?p=2

根据复合函数求导公式

$$ \begin{aligned} \frac{\partial{L_k(\boldsymbol{\theta})}}{\partial{\boldsymbol{\theta}}}&=\frac{\partial}{\partial{\boldsymbol{\theta}}}\left[\ln\sum_{\boldsymbol{h}}e^{-E(\boldsymbol{v}_k,\boldsymbol{h})}\right]-\frac{\partial}{\partial{\boldsymbol{\theta}}}\left[\ln\sum_{\boldsymbol{v},\boldsymbol{h}}e^{-E({\boldsymbol{v},\boldsymbol{h})}}\right] \\&=-\frac{\sum_{\boldsymbol{h}}e^{-E(\boldsymbol{v}_k,\boldsymbol{h})}\frac{\partial{E({\boldsymbol{v}_k,\boldsymbol{h})}}}{\partial{\boldsymbol{\theta}}}}{\sum_{\boldsymbol{h}}e^{-E(\boldsymbol{v}_k,\boldsymbol{h})}}+\frac{\sum_{\boldsymbol{v},\boldsymbol{h}}e^{-E(\boldsymbol{v},\boldsymbol{h})}\frac{\partial{E({\boldsymbol{v},\boldsymbol{h})}}}{\partial{\boldsymbol{\theta}}}}{\sum_{\boldsymbol{v},\boldsymbol{h}}e^{-E(\boldsymbol{v},\boldsymbol{h})}} \\&=-\sum_{\boldsymbol{h}}\frac{e^{-E(\boldsymbol{v}_k,\boldsymbol{h})}\frac{\partial{E({\boldsymbol{v}_k,\boldsymbol{h})}}}{\partial{\boldsymbol{\theta}}}}{\sum_{\boldsymbol{h}}e^{-E(\boldsymbol{v}_k,\boldsymbol{h})}}+\sum_{\boldsymbol{v},\boldsymbol{h}}\frac{e^{-E(\boldsymbol{v},\boldsymbol{h})}\frac{\partial{E({\boldsymbol{v},\boldsymbol{h})}}}{\partial{\boldsymbol{\theta}}}}{\sum_{\boldsymbol{v},\boldsymbol{h}}e^{-E(\boldsymbol{v},\boldsymbol{h})}} \end{aligned} $$

代入概率公式P即为:

$$ \frac{e^{-E({\boldsymbol{v}_k,\boldsymbol{h})}}}{\sum_{\boldsymbol{h}}e^{-E({\boldsymbol{v}_k,\boldsymbol{h})}}}=\frac{\frac{e^{-E({\boldsymbol{v}_k,\boldsymbol{h})}}}{Z}}{\frac{\sum_{\boldsymbol{h}}e^{-E({\boldsymbol{v}_k,\boldsymbol{h})}}}{Z}}=\frac{\frac{e^{-E({\boldsymbol{v}_k,\boldsymbol{h})}}}{Z}}{\sum_{\boldsymbol{h}}\frac{e^{-E({\boldsymbol{v}_k,\boldsymbol{h})}}}{Z}}=\frac{P(\boldsymbol{v}_k,\boldsymbol{h})}{\sum_{\boldsymbol{h}}P(\boldsymbol{v}_k,\boldsymbol{h})}=P(\boldsymbol{h}|\boldsymbol{v}_k)\\ \frac{e^{-E({\boldsymbol{v},\boldsymbol{h})}}}{\sum_{\boldsymbol{v},\boldsymbol{h}}e^{-E({\boldsymbol{v},\boldsymbol{h})}}}=\frac{\frac{e^{-E({\boldsymbol{v},\boldsymbol{h})}}}{Z}}{\frac{\sum_{\boldsymbol{v},\boldsymbol{h}}e^{-E({\boldsymbol{v},\boldsymbol{h})}}}{Z}}=\frac{\frac{e^{-E({\boldsymbol{v},\boldsymbol{h})}}}{Z}}{\sum_{\boldsymbol{v},\boldsymbol{h}}\frac{e^{-E({\boldsymbol{v},\boldsymbol{h})}}}{Z}}=\frac{P(\boldsymbol{v},\boldsymbol{h})}{\sum_{\boldsymbol{v},\boldsymbol{h}}P(\boldsymbol{v},\boldsymbol{h})}=P(\boldsymbol{v},\boldsymbol{h})\\ \begin{aligned} \frac{\partial{L_k(\boldsymbol{\theta})}}{\partial{\boldsymbol{\theta}}}&=-\sum_{\boldsymbol{h}}P(\boldsymbol{h}|\boldsymbol{v}_k)\frac{\partial{E({\boldsymbol{v}_k,\boldsymbol{h})}}}{\partial{\boldsymbol{\theta}}}+\sum_{\boldsymbol{v},\boldsymbol{h}}P(\boldsymbol{v},\boldsymbol{h})\frac{\partial{E({\boldsymbol{v},\boldsymbol{h})}}}{\partial{\boldsymbol{\theta}}} \\&=-\sum_{\boldsymbol{h}}P(\boldsymbol{h}|\boldsymbol{v}_k)\frac{\partial{E({\boldsymbol{v}_k,\boldsymbol{h})}}}{\partial{\boldsymbol{\theta}}}+\sum_{\boldsymbol{v}}\sum_{\boldsymbol{h}}P(\boldsymbol{v})P(\boldsymbol{h}|\boldsymbol{v})\frac{\partial{E({\boldsymbol{v},\boldsymbol{h})}}}{\partial{\boldsymbol{\theta}}} \\&=-\sum_{\boldsymbol{h}}P(\boldsymbol{h}|\boldsymbol{v}_k)\frac{\partial{E({\boldsymbol{v}_k,\boldsymbol{h})}}}{\partial{\boldsymbol{\theta}}}+\sum_{\boldsymbol{v}}P(\boldsymbol{v})\sum_{\boldsymbol{h}}P(\boldsymbol{h}|\boldsymbol{v})\frac{\partial{E({\boldsymbol{v},\boldsymbol{h})}}}{\partial{\boldsymbol{\theta}}} \end{aligned} $$

θ中参数众多, 以w_ij为例对L求偏导(其中ΣP看作常数):

$$ \begin{aligned} &\sum_{\boldsymbol{h}}P(\boldsymbol{h}|\boldsymbol{v})\frac{\partial{E({\boldsymbol{v},\boldsymbol{h})}}}{\partial{w_{ij}}}\\ =&-\sum_{\boldsymbol{h}}P(\boldsymbol{h}|\boldsymbol{v})h_iv_j\\ =&-\sum_{\boldsymbol{h}}\prod_{l=1}^{q}P(h_l|\boldsymbol{v})h_iv_j\\ =&-\sum_{\boldsymbol{h}}P(h_i|\boldsymbol{v})\prod_{l=1,l\neq i}^{q}P(h_l|\boldsymbol{v})h_iv_j\\ =&-\sum_{\boldsymbol{h}}P(h_i|\boldsymbol{v})P(h_1,...,h_{i-1},h_{i+1},...,h_q|\boldsymbol{v})h_iv_j\\ =&-\sum_{h_i}P(h_i|\boldsymbol{v})h_iv_j\sum_{h_1,...,h_{i-1},h_{i+1},...,h_q}P(h_1,...,h_{i-1},h_{i+1},...,h_q|\boldsymbol{v}) \end{aligned} $$

注意此处因为hi已经取定了,求和遍历所有的h1,h2,...h_{i-1},h_{i+1},...hq,相当于求所有条件概率的和, 提出来为1:

$$ \begin{aligned} &\sum_{\boldsymbol{h}}P(\boldsymbol{h}|\boldsymbol{v})\frac{\partial{E({\boldsymbol{v},\boldsymbol{h})}}}{\partial{w_{ij}}}\\ =&-\sum_{h_i}P(h_i|\boldsymbol{v})h_iv_j\cdot 1\\ =&-\left[P(h_i=0|\boldsymbol{v})\cdot0\cdot v_j+P(h_i=1|\boldsymbol{v})\cdot 1\cdot v_j\right]\\ =&-P(h_i=1|\boldsymbol{v})v_j \end{aligned} $$

代回∂L/ ∂w得:

$$ \Delta w_{ij}=\frac{\partial{L_k(\boldsymbol{\theta})}}{\partial{w_{ij}}}=P(h_i=1|\boldsymbol{v}_k){v_{j}^k}-\sum_{\boldsymbol{v}}P(\boldsymbol{v})P(h_i=1|\boldsymbol{v})v_j $$

连接权的更新公式:

$$ \Delta w=\eta(\boldsymbol{v}\boldsymbol{h}^\mathrm{T}-\boldsymbol{v}’\boldsymbol{h}’^{\mathrm{T}}) $$

5.6 深度学习

参数越多的模型复杂度越高、 "容量" (capacity) 越大. 计算能力提高缓解训练低效性,训练数据增加降低过拟合风险,

增加模型复杂度,增加隐层的数目比增加隐层神经元的数目更有效. 因为增加隐层数不仅增加拥有功能神经元数目, 还增加激活函数嵌套的层数.

多隐层神经网络难以直接用经典算法, 因误差在多隐层内逆传播时, 往往会"发散" (diverge).

解决手段:

1. 无监督逐层训练(unsupervised layer-wise training). "预训练" (pre-training)每次训练一层隐结点, 再对整个网络进行"微调" (fine tuning)训练. 即局部较优的结果联合起来远行全局寻优. 如深度信念网DBN(deep belief network).

2. "权共享" (weight sharing),即让一组神经元使用相同的连接权. 如卷积神经网络CNN (Convolutional Neural Network).

多隐层神经网络逐层求导(连乘)过程中易导致梯度爆炸和梯度消失. 一般将Sigmoid 函数替换为修正线性函数ReLU. Sigmoid函数由于其值域处于(0,-1), 故梯度消失问题比较严重.

深度学习可理解为进行特征学习(feature learning) 表示学习(representation learning). 实现端到端(end-to-end)的学习, 输入就是原始的图片像素值,输出就是分类结果.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

西瓜书笔记5:神经网络 的相关文章

  • 解析图腾柱无桥PFC的状态控制(基于DSP C2000)

    解析图腾柱无桥PFC的状态控制 xff08 基于DSP C2000 xff09 插播一条 xff1a 自己在今年整理一套单片机单片机相关论文800余篇 论文制作思维导图 原理图 43 源代码 43 开题报告 43 正文 43 外文资料 想要
  • 手把手教您怎么编写第一个单片机程序

    手把手教您怎么编写第一个单片机程序 插播一条 xff1a 文章末尾有惊喜哟 51单片机的开发环境是Keil软件 Keil软件虽然是一个收费软件 xff0c 但从uVision2到目前的uVison4版本都有破解版 xff0c 在网上都能够找
  • 硬件工程师的真实前途我说出来可能你们不信

    自己做了5年硬件工程师 xff0c 对于行业如何不多做评价 xff0c 不同人不同经历 xff0c 就有不同的看法 我仅对自己的职业发展进行一下回顾和反思 xff0c 算是给过去的自己做个小总结 xff0c 写下来也方便后续再翻回来看看自己
  • 大一C语言入门到底怎么学

    大一C语言入门到底怎么学 大一C语言入门按照下面路线来 xff0c 以及把下面的100道C语言编程案例学会就入门啦 xff5e 入门篇 1 什么是计算机语言 2 C语言的程序的结构 3 运行C语言的步骤与方法 4 了解简单的算法 5 怎么表
  • BW性能监控利器——ST13总结

    题记 xff1a BW 的小工具 xff0c ST13 xff0c 近来每每使用 xff0c 都颇有感慨 xff0c 故总结如下 xff0c 以备后用 1 Process Chain xff1a ST13 gt BW TOOLS gt Pr
  • 你见过的最差的程序员是怎样的?

    你见过的最差的程序员是怎样的 xff1f 公司来了个应届生 xff0c 让我来带 得 我成了保姆 xff0c 百度一下就能找到答案的事 xff0c 非得让我手把手的教 终于有一天 xff0c 我忍不住了 xff0c 说了他一顿 xff0c
  • 大龄程序员都去哪了?

    大龄程序员都去哪了 xff1f 大龄程序员依然在各个大中小公司正常工作 外资 国企不说了 xff0c 30 40岁的员工很多很多 xff0c 不仅仅是程序员 xff0c 产品啊 xff0c 测试 xff0c 运维 不仅仅喝计算机有关系的 x
  • 学习Java——枚举

    目录 枚举的用法 定义 特点 应用场景 总结 用法 常量 switch 向枚举中添加新方法 覆盖枚举的方法 实现接口 使用接口组织枚举 每日寄语 枚举的用法 在 span style background color d7d8d9 java
  • Docker镜像、容器操作

    文章目录 一 Docker镜像操作1 搜索镜像2 获取镜像3 查看镜像查看下载到本地的所有镜像查看下载的镜像文件信息查看镜像详细信息 4 为本地的镜像添加新的标签5 镜像导出导入到本地导出镜像 xff0c 将镜像保存为本地文件导入镜像 xf
  • Windows系统中gvim永久配置行号和背景颜色

    1 gvim永久配置 1 永久配置行号 点击编辑 启动设定 如下图所示 在下图画框位置输入set number保存即可 2 xff09 永久设置背景颜色 首先应该知道都有什么颜色 xff0c 可以设置的颜色按照下图查看 比如现在我要设置背景
  • UKF无迹卡尔曼滤波

    UKF无迹卡尔曼滤波是在卡尔曼滤波和变换的基础上发展而来的 xff0c 它是利用无损变换使线性假设下的卡尔曼滤波应用于非线性系统 之前提到的EKF算法简单易操作 xff0c 在工业中有广泛的应用 但是它也存在很多缺点 xff1a 需要计算非
  • 在失望中重找希望——我的2013年工作总结

    时间过的真的是快 来广州已整整工作了一年啦 从2012年长沙工作离职后 为了我的女朋友 我毅然踏上了南下广州的征途 来到羊城后 很快 xff0c 一个礼拜就找到了现在工作的这家公司 现在回想一下 真觉得当初没有好好斟酌一下 2013年里 x
  • 使用eclipse 4.3 经常出现卡死、无响应情况的解决方法

    最近在使用 eclipse 4 3 开发的时候 xff0c 经常出现卡死 无响应 情况 在网上搜索了一下之后发现 xff0c 发现网上还是有解决方法的 于是以记之 xff01 一 首先 xff0c 我们修改下eclipse的内存配置文件 l
  • Android学习之 移动应用<App>微信支付集成小结

    微信支付现在主要集成在 xff1a 1 移动应用开发 2 网站应用开发 3 公众账号开发 本篇主要针对移动应用App集成微信支付 xff0c 实际项目坑点分享 xff01 一 既予之 与共之 xff1a 平台资源 1 微信开放平台 xff1
  • Android学习之 主项目合并Library子项目中的Manifest

    一 项目背景 xff1a 项目XX是一个按模块化规则来进行开发的 xff0c 包含主模块A 子模块B 子模块C 子模块D xff0c 其中子模块B C D都是Library项目 xff0c 并且都包含有自己的Actity等资源文件 Andr
  • 我的2011——周年纪

    今天距我开博的日期 xff0c 有将近一年半的时间 xff0c 博客的确是一个会让我们有所期待的东西 xff0c 学习 积累 沉淀 再学习 2011年 xff0c 经历了血雨腥风的SAP市场开始主推云存储和内存运算 xff0c HANA在不
  • Android学习之 Manifest中meta-data扩展元素数据的配置与获取

    在AndroidManifest xml清单文件中 我们有时会看到如下类似的 lt meta data gt 元素开始的配置内容 xff1a lt meta data android name 61 34 com google androi
  • 工具使用之 adbWireless无线调试Android应用

    今天巧遇这个工具 xff1a adbwireless apk xff0c 于是乎 试爽了一把 xff0c 果然觉得是个不错的工具 可谓是相见恨晚 可以帮助Android开发的同事们实现手机无线调试应用程序 对 xff01 你没有听错 如果你
  • Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒

    在Android手机上 xff0c 如QQ 微信当有未读消息的时候 我们可以看到在应用的启动图标的右上角会有一个红色圈圈 且圈圈里会动态显示未读消息的数目 xff0c 如下图显示 xff1a 那么该功能是怎么实现的呢 xff1f 在万能的互
  • 工具使用之Android Studio快捷键-mac版

    最近给自己添置了一台mac 也算是完成了多年前的一个小愿望 做为Android开发者的我于是搭载了Android Studio 1 1正式版做为了我的安卓开发工具 在window上eclipse我可以畅快的玩耍 xff0c idea和as也

随机推荐

  • Android学习之 Scroller的介绍与使用

    类概述 Android里Scroller类是为了实现View平滑滚动的一个Helper类 通常在自定义的View时使用 xff0c 在View中定义一个私有成员mScroller 61 new Scroller context 设置mScr
  • Android 从外部网页拉起跳转到App

    业务场景 当需要从外部第三方网页中通过点击某个链接或按钮启动App应用程序 实现 新建demo工程 xff0c 并实现一个Activity xff0c 用来接收从外部跳转传入的信息 代码如下 xff1a span class hljs ke
  • Android 使用ColorMatrix改变图片颜色

    ColorMatrix的颜色矩阵介绍 颜色矩阵M是一个5 4的矩阵 xff0c 在Android中 xff0c 颜色矩阵M是以一维数组m 61 a b c d e f g h i j k l m n o p q r s t 的方式进行存储的
  • 中断处理handler不能sleep

    1 进入中断处理程序 gt 2 保存关键上下文 gt 3 开中断 xff08 sti指令 xff09 gt 4 进入中断处理程序的handler gt 5 关中 里面很多说法不是很同意 个人认为中断处理handler不能sleep原因应该不
  • opencv移动物体追踪

    本次试验用的WINFORM 要先绘制窗体 xff0c 自己测试的时候注意对象名就可以了 public Form1 InitializeComponent static Mat mat1 61 new Mat 64 34 timg jpg 3
  • 2021-10-5 每天几个LCEDA小知识——放置探测点

    立创EDA专业版之放置探测点 放置探测点 放置探测点 在PCBA验证环节中 探测点是很重要的存在 试想一下 一个产品在生产测试的时候 没有预留探测点 用于产品的调试 那么作业人员只能用探头去勾元器件 何其难受 因此在设计PCB的过程中 预留
  • KairosDB 1.13安装手记

    PS xff1a 为了处理监控数据 xff0c 我们需要一个时间序列数据库 xff0c OpenTSDB是前驱 xff0c 但是是基于Hbase实现的 xff0c 后来有了一个基于Cassandra的实现 xff0c 就是KairosDB
  • FreeRTOS(V8.0.1)系统之vTaskDelete()

    lt pre name 61 34 code 34 class 61 34 objc 34 gt void vTaskDelete TaskHandle t xTaskToDelete TCB t pxTCB taskENTER CRITI
  • PX4 pixhawk 和APM2.X 的USB驱动都是不能够在 windows 7 、windows 8的ghost系统下自动安装(已解决)

    PX4 pixhawk 和APM2 X 的USB驱动都是不能够在 windows 7 windows 8的ghost系统下自动安装的 xff0c 因为这ghost系统精简了一些不该精简的东西 解决方法有两个 xff1a 一 重新装完整版的操
  • Mybatis-Plus

    一 Mybatis Plus简介 1 简介 MyBatis Plus opens new window xff08 简称 MP xff09 是一个 MyBatis opens new window 的增强工具 xff0c 在 MyBatis
  • Offboard Control

    1 将RC开关映射到场外模式激活 在QGroundControl中加载参数并查找RC MAP OFFB SW参数 xff0c 您可以为其分配要用于激活板外模式的RC通道2 2 启用配套计算机界面 设置默认的随播计算机消息流TELEM 2 x
  • 用java实现歌曲大串烧

    原理 xff1a 我们使用SequenceInputStream将FileInputStream对 象进行集体整合 xff0c 实现一个大的新文件 代码如下 xff1a span style font size 16px package c
  • slam小单元——位姿矩阵

    目录 位姿矩阵测试代码 这个系列是对slam中的一些小概念做理解和简单的测试 位姿矩阵 这个反应的是坐标系和坐标系之间的关系 xff0c 作用 xff1a 移动向量将一个坐标系下的向量 xff08 坐标 xff09 表达在另一个坐标系下 如
  • 裸模张筱雨出位真艺术(1)

    网页内容已不存在
  • 张筱雨本是害羞女孩有为何如此大胆?

    网页内容已不存在
  • 张筱雨:清纯妩媚の身体对话钢筋水泥建筑

    网页内容已不存在
  • 传统行业的IT如何转向DEVOPS,运维如何转向SRE

    题记 xff1a 在菊厂这几年 xff0c 亲历了传统行业的IT部门如何在数字化转型的滚滚洪流中 xff0c 被裹挟着四处寻找光明 从15年至今 xff0c 参加了各式各样的培训 xff0c 最早是CI CD xff0c 后来推DEVOPS
  • 张筱雨是摄影界最高境界神形兼备

    网页内容已不存在
  • 张筱雨的个人简历

    生平介绍 xff1a 2000年张筱雨9月 2003年7月吉林市实验中学2003年9月 人体艺术2007年7月华北大学 ent大胆er 张筱雨 凡本网注明 来源 xff1a 华龙网 的作品 xff0c 系由本网自行采人体艺术编 xff0c
  • 西瓜书笔记5:神经网络

    目录 5 1 神经元模型 5 2感知机与多层网络 感知机 感知机模型 感知机学习策略 感知机学习算法 多层网络 5 3 误差逆传播算法 标准BP 误差逆传播 算法 变量符号 公式推导 工作流程 累积BP算法 5 4全局最小与局部极小 跳出局