前馈神经网络的缺陷 
单隐含层前馈神经网络(single-hidden layer feedforward neural network, SLFN)以其良好的学习能力在许多领域广泛应用。然而传统的前馈神经网络大多采用梯度下降方法,该该方法具有一些固有的缺点:  
 
因此,需要探索一种训练速度快、获得全局最优解,且具有良好的泛化性能的训练算法提升前馈神经网络的性能  
极限学习机 
针对传统前馈神经网的缺陷,学者提出了极限学习机(extreme learning machine, ELM),该算法随机产生输入层与隐含层间的连接权值及隐含层神经元的阈值,且在训练过程中无需调整,只需要设置隐含层神经元的个数,便可以获得唯一的最优解。  
ELM既可以分类,也可以进行回归拟合  
-  
ELM的基本思想  典型的单隐含层前馈神经网络结构如下图:     该网络由输入层、隐含层和输出层组成,输入层与隐含层、隐含层与输出层神经元全连接。输入层有
      
       
        
         
          n
         
        
        
         n
        
       
      n个神经元,对应
      
       
        
         
          n
         
        
        
         n
        
       
      n个输入变量;隐含层有
      
       
        
         
          l
         
        
        
         l
        
       
      l个神经元;输出层有
      
       
        
         
          m
         
        
        
         m
        
       
      m个神经元,对应
      
       
        
         
          m
         
        
        
         m
        
       
      m输出变量。  设输入层与隐含层间的连接权值矩阵
      
       
        
         
          w
         
        
        
         \textbf{w}
        
       
      w,
      
       
        
         
          
           w
          
          
           
            j
           
           
            i
           
          
         
        
        
         w_{ji}
        
       
      wji?表示输入层第
      
       
        
         
          i
         
        
        
         i
        
       
      i个神经元与隐藏层第
      
       
        
         
          j
         
        
        
         j
        
       
      j个神经元间的连接权值;  设隐含层与输出层间的连接权值矩阵
      
       
        
         
          β
         
        
        
         \bm\beta
        
       
      β,
      
       
        
         
          
           β
          
          
           
            j
           
           
            k
           
          
         
        
        
         \beta_{jk}
        
       
      βjk?表示隐含层第
      
       
        
         
          j
         
        
        
         j
        
       
      j个神经元与输出层第
      
       
        
         
          k
         
        
        
         k
        
       
      k个神经元间的连接权值;  设隐含层神经元的阈值为
      
       
        
         
          b
         
        
        
         \bm b
        
       
      b     设具有
      
       
        
         
          Q
         
        
        
         Q
        
       
      Q个样本的训练集输入矩阵
      
       
        
         
          X
         
        
        
         \bm X
        
       
      X和输出矩阵
      
       
        
         
          Y
         
        
        
         \bm Y
        
       
      Y分别为     设隐含层神经元的激活函数为
      
       
        
         
          g
         
         
          (
         
         
          x
         
         
          )
         
        
        
         g(x)
        
       
      g(x),网络的输出
      
       
        
         
          T
         
        
        
         \bm T
        
       
      T为     其中,
      
       
        
         
          
           w
          
          
           i
          
         
         
          =
         
         
          [
         
         
          
           w
          
          
           
            i
           
           
            1
           
          
         
         
          ,
         
         
          
           w
          
          
           
            i
           
           
            2
           
          
         
         
          ,
         
         
          …
         
         
          ,
         
         
          
           w
          
          
           
            i
           
           
            n
           
          
         
         
          ]
         
        
        
         \bm w_i=[w_{i1}, w_{i2},\dots,w_{in}]
        
       
      wi?=[wi1?,wi2?,…,win?]; 
      
       
        
         
          
           x
          
          
           j
          
         
         
          =
         
         
          [
         
         
          
           x
          
          
           
            1
           
           
            j
           
          
         
         
          ,
         
         
          
           x
          
          
           
            2
           
           
            j
           
          
         
         
          ,
         
         
          …
         
         
          ,
         
         
          
           x
          
          
           
            n
           
           
            j
           
          
         
         
          
           ]
          
          
           T
          
         
        
        
         \bm x_j=[x_{1j},x_{2j},\dots,x_{nj}]^T
        
       
      xj?=[x1j?,x2j?,…,xnj?]T  上式可表示为:
      
       
        
         
          H
         
         
          β
         
         
          =
         
         
          
           T
          
          
           ′
          
         
        
        
         \bm H\bm \beta=\bm T'
        
       
      Hβ=T′,  
      
       
        
         
          
           T
          
          
           ′
          
         
        
        
         \bm T'
        
       
      T′为矩阵
      
       
        
         
          T
         
        
        
         \bm T
        
       
      T的转置;
      
       
        
         
          H
         
        
        
         \bm H
        
       
      H称为神经网络的隐含层输出矩阵,具体形式为      -  
ELM的学习算法  根据理论分析,ELM在训练之前可以随机产生
      
       
        
         
          w
         
        
        
         \textbf{w}
        
       
      w和
      
       
        
         
          b
         
        
        
         \bm b
        
       
      b,只需要确定隐含层神经元个数个数及隐含层神经元的激活函数(无限可微),即可计算出
      
       
        
         
          β
         
        
        
         \bm \beta
        
       
      β。  ELM的学习算法主要有以下步骤:  
  - 确定隐含层神经元个数,随机设定输入层与隐含层间的连接权值
       
        
         
          
           w
          
         
         
          \textbf{w}
         
        
       w和隐含层神经元的偏置
       
        
         
          
           b
          
         
         
          \bm b
         
        
       b
 - 选择一个无限可微的函数作为隐含层神经元的激活函数,进而计算隐含层输出矩阵
       
        
         
          
           H
          
         
         
          \bm H
         
        
       H
 - 计算输出层权值
       
        
         
          
           
            β
           
           
            ?
           
          
          
           :
          
          
           β
          
          
           =
          
          
           
            H
           
           
            +
           
          
          
           
            T
           
           
            ′
           
          
         
         
          \bm \beta^*: \bm \beta=\bm H^+\bm T'
         
        
       β?:β=H+T′,其中,
       
        
         
          
           
            H
           
           
            +
           
          
         
         
          \bm H^+
         
        
       H+为隐含层输出矩阵
       
        
         
          
           H
          
         
         
          \bm H
         
        
       H的Moore - Penrose广义逆
     
                
                
                
        
    
 
 |