专栏首页caoqi95的记录日志Extreme Learning Machines 极限学习机

Extreme Learning Machines 极限学习机

最近在看教授很久之前的一篇 Paper ,里面有提到极限学习机(ELM),所以查找资料了解了一下。在查找的过程中,发现很多人抨击 ELM,说其是夸大了贡献,连 Yann LeCun 也公开怼过。也有很多人说 ELM 的训练速度很快且泛化能力好。褒贬不一,不管怎么样,了解学习一下,总是没有错的。

极限学习机(英文:Extreme Learning Machines,缩写ELM),又名超限学习机,为人工智能机器学习领域中的一种人工神经网络模型,是一种求解单隐层前馈神经网络的学习算法。-- 摘自维基百科

算法由来

极限学习机是新加坡南洋理工大学黄广斌教授建立的一个模型,即一个单隐藏的前馈神经网络。但是与传统的前馈神经网络不同,ELM 的主要思想是:(机器或生物)学习可以不需要调整隐层节点,也就是说 ELM 网络隐藏层节点的权重随机生成或者人工定义,学习过程仅需计算输出权重。

ELM 结构 - 摘自黄教授的 PPT

算法原理

在一个 ELM 的单隐层结构中,会有如下一些定义:

  • i 个隐藏节点的输出方程为:

其中 aibi 是第 i 个隐藏节点的参数,ai 是输入权重。hi(x) 为激活函数。 所以,整个隐藏层的输出映射为:

  • 给定 N 个训练样本,ELM 的隐藏层输出矩阵 H 给出为:
  • 具有 L 个隐藏节点的 ELM 结构的输出为:

其中 βi 是第 i 个隐藏节点的输出权重。 所以,整个隐藏层的输出为:

  • 目标矩阵 T 为:
  • 目标函数为:

其中 C 为正则化系数(regularization coefficient)。 奇异值分解(single value decomposition, SVD)可用于求解权重系数:

其中 uiHHT 的特征向量,diH 的特征值。

对于给定 N 组训练数据,使用 ELM 对包含 L 个隐含层和 M 个输出层的单隐层网络结构有如下步骤:

  1. 随机分配节点参数;
  2. 计算隐含层的输出矩阵。输出矩阵本质上即是将 N 个输入数据映射至 L 个节点所得的结果。
  3. 求解输出权重。ELM 算法的核心即是求解输出权重使得误差函数最小。

Python 代码实现

import numpy as np
import matplotlib.pyplot as plt
 
def sigmoid(a, b, x):
   '''
   定义Sigmoid函数: g(z) = 1/(1+e^-(ax+b))
   '''
   return 1.0/(1+np.exp(-1.0*(x.dot(a)+b)))
    
def ELM_prototype(X, T, C, n, L):
   '''
   回归问题的ELM标准算法
   变量:X - 输入数据;样本数x特征数(N*n)
          :H - 输出矩阵;样本数x隐含层节点数(N*L)
          :T - 学习目标;样本数x输出层节点数(N*M)
          :C - 正则化系数
   '''
   # 随机初始化
   a = np.random.normal(0, 1, (n, L))
   b = np.random.normal(0, 1)
   # 使用特征映射求解输出矩阵
   H = sigmoid(a, b, X)
   # 计算输出权重和输出函数
   HH = H.T.dot(H); HT = H.T.dot(T)
   beta = np.linalg.pinv(HH+np.identity(L)/C).dot(HT)
   Fl = H.dot(beta)
   # 返回计算结果
   return beta, Fl
# 测试:构造输入值和训练目标(输入变量n=2; 输出变量m=1)
x1 = np.linspace(1, 20, 150)
x2 = np.linspace(-5, 5, 150)
X = np.vstack([x1, x2]).T
T = np.sin(x1*x2/(2*np.pi))+np.random.normal(0, 0.2, 150)
# 使用ELM算法进行学习(隐含层节点数L=100; 正则化参数C=1e5)
beta, Fl = ELM_prototype(X, T, C=1e5, n=2, L=100)
# 绘制学习结果
plt.plot(x1, T, lw=1.5, label='Training goal')
plt.plot(x1, Fl, lw=3, label='ELM output')
plt.legend()

参考

[1]. 极限学习机 - 维基百科 [2]. 极限学习机 - 百度百科 [3]. 黄广斌教授 2016 年中国软件大会演讲 PPT [4]. 知乎 - Extreme learning machine (ELM) 到底怎么样,有没有做的前途? [5]. What's so great about "Extreme Learning Machines"? - Yann LeCun

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 实现 Canny 边缘检测算法

    Canny 边缘检测算法由计算机科学家 John F. Canny 于 1986 年提出的。其不仅提供了算法,还带来了一套边缘检测的理论,分阶段的解释如何实现边...

    caoqi95
  • Keras的基本使用(1)--创建,编译,训练模型

    Keras 是一个用 Python 编写的,高级的神经网络 API,使用 TensorFlow,Theano 等作为后端。快速,好用,易验证是它的优点。 官方...

    caoqi95
  • 论文记录 - ECG Heartbeat Classification: A Deep Transferable Representation

    这篇论文发自 2018 年,出自洛杉矶大学的一个团队,主要对 5 种不同心率进行预测分类及预测 MI(心肌梗死)。论文地址:https://arxiv.org/...

    caoqi95
  • 前端每日实战:46# 视频演示如何用纯 CSS 创作一个在容器中反弹的小球

    https://codepen.io/comehope/pen/jKVbyE点击预览

    :::::::
  • 别再用PS了,我用五行Python代码就实现了批量抠图

    对于会PhotoShop的人来说,抠图是非常简单的操作了,有时候几秒钟就能扣好一张图。不过对于一些比较复杂的图,有时候还是需要花点时间的,今天就给大家带了一个非...

    用户1386409
  • Angularjs1.x ES6接入Chart图表

    github:https://github.com/jtblin/angular-chart.js 官方网站:http://jtblin.github.io/...

    治电小白菜
  • iOS 强制关闭暗黑模式

    一看好多界面都是这样,奇怪也没有改过啥代码,想了半天可能暗黑模式, 暗黑模式设置的自动,到点了就自动变成暗黑模式了。

    赵哥窟
  • 伪装在系统PAM配置文件中的同形异义字后门

    0x00. 前言 受到FreeBuf早前相关同形异体字攻击文章的启发,故有此文。 目前主流的Linux发行版本都支持Unicode,这也给了利用同形异义字迷惑系...

    FB客服
  • 聊聊图数据库和图数据库的小知识 Vol.02

    2000 年前后热门的是 信息检索 和 分析 ,主要是 Google 的带动,以及 Amazon 的 e-commerce 所用的协同过滤推荐,当时 colla...

    NebulaGraph
  • BOSS直聘招聘信息获取之爬虫程序分析

    今天我们要正式使用程序来爬取BOSS的招聘数据了,我会从最基础的一步一步去完善程序,帮助大家来理解爬虫程序,其中还是有许多问题我没能解决,也希望有大佬可以留言帮...

    不太灵光的程序员

扫码关注云+社区

领取腾讯云代金券