博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
超限学习机(ELM)
阅读量:4094 次
发布时间:2019-05-25

本文共 1441 字,大约阅读时间需要 4 分钟。

今年毕设做的就是和极限学习机有关的东西,当时老师让我看一篇表征转换机(ACM)的英文文章,我在文中看到了一句话说是表征转换机是基于极限学习机的,所以我后来的毕设论文就是直接用极限学习机来实现了。

一、表征转换机原理

赵晓辉等将表征转换机用于图像分割,取得了不错的效果,在本文中我们将表征转换机作为一种神经网络来实现分类。

对任一个被采集目标,令G_{\theta _{i}}\in R^{R\times C}G_{\theta _{j}}\in R^{R\times C}为在\theta _{i}\theta _{j}条件下得到的图像。

两幅图像是对该被采集目标的不同表征,我们定义转换机M_{\theta _{i},\theta _{j}}

在给定采集条件为\theta _{i}的表征时,可相应获得采集条件为\theta _{j}时的表征,即

G_{\theta _{j}}=M_{\theta _{i},\theta _{j}}(G_\theta _{i})(5.1)

对同一目标在不同采集条件下获得的不同表征图像,在没有获得足够信息的情 况下完美地获取另外一种采集条件下的表征图像是非常困难的。如果我们允许一定误差的存在则可近似获取另一采集条件的对应表征图像。可将式(5.1)改写为:

M_{\theta _{i},\theta _{j}}^{min}\left \| G_{\theta _{j}}-M_{\theta _{i},\theta _{j}}(G_{\theta _{i}}) \right \|_{F}^{2}(5.2)

(5.2)可以理解为估计映射函数y=f(x),其中x=G_{\theta _{i}}y=G_{\theta _{j}}f(*)=M_{\theta _{i},\theta _{j}}(*),这是一个回归问题并可以使用极限学习机求解,这样得到的映射函数即为表征学习机。

G_{\theta _{j}}的像素点并不均与G_{\theta _{i}}的某一 个像素点G_{\theta _{i}}(r,c)相关。因此,如果我们要通过表征图像G_{\theta _{i}}获得G_{\theta _{j}}时,只需要提供表征图像G_{\theta _{i}}中与G_{\theta _{j}}有关的像素点。更详细地说,对表征图像G_{\theta _{j}}中的任意像素点,都可以在误差允许的情况下基于表征图像G_{\theta _{i}}中与此像素点相关的一组像素点来求解。至此,ACM中的一个回归问题已经转化为M\times N个回归问题。

M_{\theta _{i},\theta _{j}}= $$ \left[ \begin{matrix} m_{\theta _{i},\theta _{j}}^{1,1} & \cdots & m_{\theta _{i},\theta _{j}}^{1,C} \\ \vdots & m_{\theta _{i},\theta _{j}}^{r,c} & \vdots \\ m_{\theta _{i},\theta _{j}}^{R,1} & \cdots & m_{\theta _{i},\theta _{j}}^{R,C} \end{matrix} \right] $$(5.3)

m_{\theta_{i},\theta_{j}}^{r,c}=_{m_{\theta_{i},\theta_{j}}}^{min}[p_{\theta_{i}(r,c)-_{m_{\theta_{i},\theta_{j}}}^{r,c}}(q_{\theta_{i}}(r,c))]^{2}(5.4)

 

其中,p_{\theta_{j}}(r,c)为表征图像G_{\theta_{j}}(r,c)中需要估计的目标像素点,q_{\theta_{j}}(r,c)为表征图像G_{\theta_{j}}(r,c)中与p_{\theta_{j}}(r,c)相关的一组像素。

二、表征转换机算法的设计

由前一节的介绍,我们知道,表征转换机是一种基于极限学习机(ELM,Extreme Learning  Machine)的分类学习算 法。ELM算法是根据最小二乘优化来训练网络的,我们可以通过样本来拟合出非线性函数fx+x^2+\cdots+x^n作为映射,而误差反向传播算法每次迭代需要更新,所花费的时间远远低于所容忍的时间。经过前面的网络实验我们知道训练一个单隐藏层反馈神经网络需要耗费许多时间。

超限学习机网络模型

ELM是一种新型的快速学习算法,它最早由黄广斌教授提出并对ELM进行了总结。如图所示,ELM可以随机初始化输入权值和阈值并得到相应的隐节点输出,从神经网络的结构来看,超限学习机是一个简单的单层前向神经网络,其包含三层:输入层、隐含层和输出层,隐含层有L个神经元,L远远小于N,输出层输出的向量为m维。

一个有L个隐含层节点的单隐含层神经网络,针对加法型隐含层节点:

\sum_{i=1}^{L}\beta _{i}g(a_{i}\cdot x_{j}+b_{i})=f_L(x_j),j=1,2,3,...,N(5.5)

其中,g(x)为激活函数,a_{i}=(a_{i1},a_{i2},...,a_{in})^{T}是第i个隐层单元的输入权值,\beta _{i}=(\beta _{i1},a\beta _{i2},...,\beta _{im})^{T}是第i个隐层单元的偏置,f_L(x_j)是第i个隐层单元的输出权值。

为了让输出误差最小:

\sum _{j=1}^{L}\left \| f(x_{j}-t_{j})) \right \|=0(5.6)

\exists a_{i}\cdot x_{j}b_{i}使:

\sum _{i=1}^{L}\beta _{i}g(a_{i}\cdot x_{j}+b_{i})=t_{j}(5.7)

可以矩阵表示:

H\cdot \beta =T(5.8)

隐层节点的输出为H,输出权值为\beta,期望输出为T,那么:

H(a_{1},...,a_{L},b_{1},...,b_{L},x_{1},...,x_{N})= $$ \left[ \begin{matrix} g(a_{1}\cdot x_{1}+b_{1}) & \cdots & g(a_{L}\cdot x_{1}+b_{L}) \\ \vdots & \cdots & \vdots \\ g(a_{1}\cdot x_{N}+b_{1}) & \cdots & g(a_{L}\cdot x_{N}+b_{1}) \end{matrix} \right]_{N \times L} $$(5.9)

其中,\beta = $$ \left[ \begin{matrix} \beta _{1}^{T} \\ \vdots \\ \beta _{L}^{T} \end{matrix} \right]_{L \times m} $$T = $$ \left[ \begin{matrix} t _{1}^{T} \\ \vdots \\ t _{N}^{T} \end{matrix} \right]_{N \times m} $$

 

接下来,我们定义代价函数:

J=(H\beta -T)^{T}(H\beta-T)(5.10)

可以通过最小二乘找到最佳权值(最优权值向量),使得损失函数最小。

只要输入权值a_{i}和隐层b_{i}的阈值被确定(随机地),那么隐层的输出矩阵H就能被唯一的确定了。我们将ACM神经网络转化为求解这么一个线性系统:H\cdot \beta=T。然后确定输出来找到这个最佳权值:

\hat{\beta}=arg min\left \| H\beta-T \right \|=H^{\uparrow}

H^{\uparrow}是矩阵H的逆矩阵(广义,Moore−Penrose),范数最小且唯一。

与BP通过梯度下降法反复迭代来更新所有层之间的权值不同的地方在于,ELM并不调整单隐含层神经网络的输入层和隐含层的权值,我们随机设定它的权值(注重于隐含层到输出层的权值选取,采用最小二乘),所以ELM的训练速度远远快于BP神经网络。

ELM算法表示如下:

  1. 假设输入给定的训练的样本集{(x_{i},t_{i})}_{i=1}^{N}\subset R^{n}\times R^{m},隐层输出函数g(a_{i}\cdot x_{j}+b_{i})及隐层的节点个数为L;
  2. 随机的生成隐层节点的参数(a_{i},b_{i}),i=1,...,L
  3. 计算出隐层的输出矩阵H(保证H列满秩);
  4. 输出网络最优权\beta\beta=H^{\uparrow}T

转载地址:http://fsaii.baihongyu.com/

你可能感兴趣的文章
sed编辑器基础之替换命令(二)
查看>>
Java代码中如何交换两个对象
查看>>
Java中的随机数
查看>>
Java虚拟机工具之堆栈跟踪工具jstack定位死循环
查看>>
OpenCV在Microsoft Visual Studio 2010环境中的配置
查看>>
在VS(Visual Studio)中运行带有参数的控制台程序
查看>>
第N个偶斐波那契数
查看>>
字符数目相同的子字符串的数目
查看>>
Java虚拟机工具之堆栈跟踪工具jstack检测死锁
查看>>
Java虚拟机工具之堆栈跟踪工具jstack检测输入等待
查看>>
Java虚拟机工具之堆栈跟踪工具jstack检测对象wait方法
查看>>
Windows下Jconsole无法连接到进程
查看>>
设置tomcat启动参数
查看>>
启动Tomcat提示:指定的服务未安装
查看>>
构建一个n×n的unique矩阵
查看>>
JavaScript代码加Alert后代码有效,不加则无效。
查看>>
Intellj Idea 16添加Maven新建模块
查看>>
Server Tomcat v7.0 was unable to start within 45 seconds
查看>>
动态规划之子集和问题
查看>>
com.sun.mirror的jar包
查看>>