最后修改时间:2016-04-28 11:49:49

0. 前言

  本文为超限学习机反向传播算法的测试结果和相关描述。

1. 算法概述 (Introduction of Algorithm)

  多层神经网络在深度学习方法中扮演着重要的地位。然而在深度学习研究中,更快而效率更高的学习方法依然任重而道远。
  如果神经网络的权重能够在最小二乘法的基础上通过反向传播计算出来或者随机设定,那么学习速度将会得到显著的提升。但是,如何快速设置权重同时又避免过度拟合依然是一个公认的难题。
  本算法以黄广斌的ELM( Extreme Learning Machine, 超限学习机 )研究为基础,能够很好地决策对于三层神经网络的第一层权重,何时随机设定,何时通过最小二乘法计算得出。
  通过对自编码算法的探索,我们证明了使自编码算法满足拓扑等价的充分条件,同样也是避免过度拟合的充分条件。基于这一定理,过度拟合的判定和解决方法被运用到这一算法中,提升了测试数据的准确率。

算法框架如下图所示:

算法结构图

2. 测试环境 (Testing Enviroment)

系统: OS X EI Capitan ( 10.11.4 )
处理器: 3.1 GHz Intel Core i7
内存: 16 GB 1867 MHz DDR3
显卡: Intel Iris Graphics 6100 1536 MB
测试工具: MATLAB

3. 测试流程示意图

算法测试流程图

4. 实验 (Expirements)

4.1 合成数据(Synthetic Data)

4.1.1 二维高斯分布分类数据 (2d Gaussian Problem)
数据来源 (Data Source)

通过R的 mlbench 库生成二维数据,数据分布如下图所示:
二维高斯圆形分类数据分布图

R mlbench 库中方法mlbench.2dnormals()的描述:

2-dimensional Gaussian Problem

Description
Each of the cl classes consists of a 2-dimensional Gaussian. The centers are equally spaced on a circle around the origin with radius r.

Usage
mlbench.2dnormals(n, cl=2, r=sqrt(cl), sd=1)

Arguments

Argument Description
n number of patterns to create
cl number of classes
r radius at which the centers of the classes are located
sd standard deviation of the Gaussians

原始数据集生成代码:

temp <- mlbench.2dnormals(500, 2);
data_2d <- data.frame(class=as.interger(temp[[2]]), temp[[1]])

5. 源码