极限学习机

极限学习机（英文：Extreme Learning Machines，缩写ELM），又名超限学习机，为人工智能机器学习领域中的一种人工神经网络模型，是一种求解单隐层前馈神经网路的学习算法。极限学习机是用于分类、回归、聚类、稀疏逼近、压缩和特征学习的前馈神经网络，具有单层或多层隐层节点，其中隐层节点的参数（不仅仅是将输入连接到隐层节点的权重）不需要被调整。这些隐层节点可以随机分配并且不必再更新（即它们是随机投影但具有非线性变换），或者可以从其祖先继承下来而不被更改。在大多数情况下，隐层节点的输出权重通常是一步学习的，这本质上相当于学习一个线性模型。“超限学习机”（ELM）的名称是由其主要发明者黄广斌教授及其他学者共同商议后赋予此类模型的。

据其发明者称，这些模型能够产生良好的泛化性能，并且比使用反向传播训练的网络快数千倍。研究表明这些模型在分类和回归应用中一般都可以胜过Support Vector Machines (SVM, 支持向量机)。

## 历史

2001-2010年，ELM研究主要集中在“广义”单隐层前馈神经网路（Single-Hidden-Layer Feedforward Networks, SLFNs）的统一学习框架，包括但不限于Sigmoid网路、Radial Basis Function (RBF)网路、阈值网路、三角网路、模糊推理系统、傅里叶级数、拉普拉斯变换、小波网路等。这些年取得的主要成果之一是在理论上成功地证明了 ELM 的通用逼近和分类能力

从 2010 年到 2015 年，ELM 研究扩展到统一的学习框架，统一了核学习（Kernel Learning）的、SVM 和一些典型的特征学习方法，如主成分分析 (Principal Component Analysis, PCA) 和非负矩阵分解 (Non-Matrix Factorization, NMF)。研究表明，与 ELM 相比，SVM 实际上提供了次优解决方案。ELM可以提供白盒（White-Box）内核映射，这是通过 ELM 随机特征映射实现的，而不是 SVM 中使用的黑盒（Black-Box）内核。PCA 和 NMF 可以被视为ELM的隐层使用线性节点的特殊情况。

从 2015 年到 2017 年，越来越多的ELM研究开始聚焦于多层实现。此外，自 2011 年以来，ELM理论得到越来越多的生物学研究发现的验证。

从2017年开始，为了克服训练LU分解过程中的低收敛问题，基于Hessenberg分解和QR分解的正则化方法开始受到关注

2017年，Google Scholar在其“经典论文：过去10年时间考验的文章”，有两篇 ELM 论文被列入“2006 年人工智能前 10 名”，分别排名第 2 和第 7 位。

## 特点

传统的前馈神经网络（如BP神经网络）需要人为设置大量的网络训练参数，此算法却只需要设定网络的结构，而不需设置其他参数，因此具有简单易用的特点。其输入层到隐藏层的权值是一次随机确定的，算法执行过程中不需要再调整，而隐藏层到输出层的权值只需解一个线性方程组来确定，因此可以提升计算速度。

## 开发

极限学习机的名称来自新加坡南洋理工大学黄广斌教授所建立的模型。黄教授指出，此算法的泛化性能良好，且其学习速度比运用反向传播算法训练的速度要快上1000倍。

## 算法

给定一个单隐层的ELM，假设第$i$个隐层节点的输出函数是：$h_i(\mathbf{x})=G(\mathbf{a}_i,b_i,\mathbf{x})$, 其中$\mathbf{a}_i$和 $b_i$是第$i$个隐层节点的参数。有$L$个隐层节点的单隐层ELM的输出函数是:

$f_L({\bf x})=\sum_{i=1}^L{\boldsymbol \beta}_ih_i({\bf x})$, 其中 ${\boldsymbol \beta}_i$是第$i$个隐层节点的输出权值。

$\mathbf{h}(\mathbf{x})=[h_i(\mathbf{x}),...,h_L(\mathbf{x})]$是ELM的隐层输出映射向量。给定$N$个训练样本，ELM的隐层输出映射矩阵$\mathbf{H}$是： ${\bf H}=\left[\begin{matrix} {\bf h}({\bf x}_1)\\ \vdots\\ {\bf h}({\bf x}_N) \end{matrix}\right]=\left[\begin{matrix} G({\bf a}_1, b_1, {\bf x}_1) &\cdots & G({\bf a}_L, b_L, {\bf x}_1)\\ \vdots &\vdots&\vdots\\ G({\bf a}_1, b_1, {\bf x}_N) &\cdots & G({\bf a}_L, b_L, {\bf x}_N) \end{matrix}\right]$

期望的训练数据目标矩阵$\mathbf{T}$是: ${\bf T}=\left[\begin{matrix} {\bf t}_1\\ \vdots\\ {\bf t}_N \end{matrix}\right]$

一般而言，ELM是一种正则化神经网络，但其具有未调整的隐层映射（由随机隐层节点、内核或其它实现形成），其目标函数为：

$$\text{Minimize: } \|{\boldsymbol \beta}\|_p^{\sigma_1}+C\|{\bf H}{\boldsymbol \beta}-{\bf T}\|_q^{\sigma_2}$$

其中 $\sigma_1>0, \sigma_2>0, p,q=0, \frac{1}{2}, 1, 2, \cdots, +\infty$.

在ELM中，可以使用 $\sigma_1$、$\sigma_2$、$p$ 和 $q$ 的不同组合，并由此产生对应于回归、分类、稀疏编码、压缩、特征学习和聚类等的不同学习算法。

作为一个特例，最简单的ELM训练算法学习模型可以简化为（对于单隐层 Sigmoid 神经网络）：

$$\mathbf{\hat{T}} = \mathbf{W}_2 \sigma(\mathbf{W}_1 x)$$

其中 W1是输入层到隐层的权值（包括隐层节点的参数），$\sigma$是隐层节点的输出函数（或者常称为激励函数，或基函数），W2是隐层到输出层的权值（隐层的输出权值）。ELM算法可以表达为：

- 随机产生W1（比如高斯噪声）。
- $$\mathbf{W}_2 = \sigma(\mathbf{W}_1 \mathbf{X})^+ \mathbf{T}$$

## 结构

在大多数情况下，ELM 用于单隐层前馈网络 (SLFN)，包括但不限于Sigmoid网络、RBF网络、阈值网络、模糊推理网络、复杂神经网络、小波网络、傅里叶变换、拉普拉斯变换等。由于ELM可以有对应于回归、分类、稀疏编码、压缩、特征学习和聚类的不同算法实现，多个 ELM组合可以用于形成多隐层网络、分层网络或深度学习。

和传统神经网络不一样的是ELM 中的隐节点是一个计算元素（computing element），不需要将其视为经典神经网络中的神经元。ELM 中的隐节点可以是经典的人工神经元、数学和信号系统中的基函数，也可以是一些隐节点形成的子网络。

## 理论

发表研究证明了 ELM 的通用逼近和分类能力。特别是，黄广斌和他的团队使用了将近七年时间（2001-2008）对ELM的通用逼近能力理论的严格证明

### 通用逼近能力

理论上，任何非常量分段连续函数都可以用作 ELM 隐层节点的激活函数，这样的激活函数不必是可微分的。如果调整隐层节点的参数可以使单隐层前馈网络逼近任何目标函数$f(\mathbf{x})$，那么隐层节点参数可以根据任何连续分布概率随机生成，并且有适当的输出权重 $\boldsymbol\beta$使得$\ lim_{L\rightarrow \infty}\left\|\sum_{i=1}^L{\boldsymbol \beta}_ih_i({\bf x})-f({\bf x})\right\|=0$成立的概率为 1。

### 通用分类能力

给定任何非常量分段连续函数作为 SLFNs 中的激活函数，如果调整隐层节点的参数可以使 SLFNs 逼近任何目标函数 $f(\mathbf{x})$，那么具有随机隐层映射的 SLFNs $\mathbf{h}(\mathbf{x})$ 可以分开任意形状的任意不相交区域。

## 神经元（基函数）

ELM隐层节点可以使用广泛的非常量分段连续函数$G(\mathbf{a}, b, \mathbf{x})$做为输出函数（从数值分析上讲，基函数）：

### 实数域

Sigmoid function: $G(\mathbf{a}, b, \mathbf{x})=\frac{1}{1+\exp(-(\mathbf{a}\cdot\mathbf{x}+b))}$

Fourier function: $G(\mathbf{a}, b, \mathbf{x})=\sin(\mathbf{a}\cdot\mathbf{x}+b)$

Hardlimit function: $G(\mathbf{a}, b, \mathbf{x})= \begin{cases} 1, &\text{if }{\bf a}\cdot{\bf x}-b\geq 0\\ 0, &\text{otherwise} \end{cases}$

Gaussian function: $G(\mathbf{a}, b, \mathbf{x})=\exp(-b\|\mathbf{x}-\mathbf{a}\|^2)$

Multiquadrics function: $G(\mathbf{a}, b, \mathbf{x})=(\|\mathbf{x}-\mathbf{a}\|^2+b^2)^{1/2}$

Wavelet: $G(\mathbf{a}, b, \mathbf{x})=\|a\|^{-1/2}\Psi\left(\frac{\mathbf{x}-\mathbf{a}}{b}\right)$，其中$\Psi$是单母小波函数.

### 复数域

Circular functions:

$$\tan(z)= \frac{e^{iz}-e^{-iz}}{i(e^{iz}+e^{-iz})}$$

$$\sin(z)= \frac{e^{iz}-e^{-iz}}{2i}$$

Inverse circular functions:

$$\arctan(z)= \int_0^z\frac{dt}{1+t^2}$$

$$\arccos(z)= \int_0^z\frac{dt}{(1-t^2)^{1/2}}$$

Hyperbolic functions:

$$\tanh(z)= \frac{e^z-e^{-z}}{e^z+e^{-z}}$$

$$\sinh(z)= \frac{e^z-e^{-z}}{2}$$

Inverse hyperbolic functions:

$$\text{arctanh}(z)=\int_0^z\frac{dt}{1-t^2}$$

$$\text{arcsinh}(z)=\int_0^z\frac{dt}{(1+t^2)^{1/2}}$$

## 外部链接

- ELM入口网站附源代码、未决难题、ELM会议、教程、参考资料等
- ELM的R程序包
- holandajunior/ExtremeLearningMachine
- AntixK/Extreme-Learning-Machine
- wentaozhu/constrained-extreme-learning-machine