当前位置: 首页 > news >正文

【深度学习基础模型】极限学习机(Extreme Learning Machines, ELM)详细理解并附实现代码。

【深度学习基础模型】极限学习机(Extreme Learning Machines, ELM)详细理解并附实现代码。

【深度学习基础模型】极限学习机(Extreme Learning Machines, ELM)详细理解并附实现代码。


文章目录

  • 【深度学习基础模型】极限学习机(Extreme Learning Machines, ELM)详细理解并附实现代码。
  • 1. 算法提出
  • 2. 概述
  • 3. 发展
  • 4. 应用
  • 5. 优缺点
  • 6. Python代码实现
  • 7. 总结


参考地址:https://www.asimovinstitute.org/neural-network-zoo/
论文地址:https://www.sciencedirect.com/science/article/pii/S0925231206000385
Extreme learning machine: Theory and applications

欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!

1. 算法提出

极限学习机(Extreme Learning Machine, ELM)由Guang-Bin Huang于2006年提出。ELM是一种针对单隐层前馈神经网络(SLFN)的快速学习算法。与传统的前馈神经网络(FFNN)不同,ELM不需要通过反向传播算法(Backpropagation)训练而是通过随机生成的权重和偏置,并在单步计算中通过最小二乘法拟合输出层权重

2. 概述

ELM的核心思想是使用随机初始化的输入层权重和隐藏层神经元的偏置,并通过最小二乘法直接计算出输出层的权重。由于不需要逐步调整权重(如反向传播中的梯度下降),ELM的训练速度非常快,特别适合处理大规模数据

ELM网络结构如下:

  • 输入层:与传统FFNN类似,将输入数据传递给网络。
  • 隐藏层:随机初始化的权重和偏置,通常不进行调优。
  • 输出层:通过最小二乘法计算得到最终权重,用于拟合目标值。

3. 发展

ELM自提出以来,因其计算效率高,逐渐引起了广泛关注。随着深度学习的崛起,ELM的研究方向也发生了变化,主要集中在以下几方面:

  • 改进ELM结构:为了提高泛化能力,一些研究提出了正则化极限学习机(Regularized ELM)和在线极限学习机(Online ELM)。
  • 应用扩展:ELM逐渐在分类、回归、时间序列预测等领域得到应用,并逐步结合到集成学习等现代机器学习方法中。

4. 应用

ELM因其快速训练的特性,在多种场景中具有优势,常见的应用包括:

  • 图像识别:ELM可用于高维特征的快速分类。
  • 回归分析:在数据拟合和预测问题中,ELM通过最小二乘法快速生成回归模型。
  • 实时控制:由于训练速度快,ELM适用于需要实时响应的控制系统。

5. 优缺点

优点:

  • 训练速度快:ELM不依赖梯度下降,而是通过一次性求解输出层权重,速度远超传统的前馈神经网络。
  • 避免局部最优问题:ELM不通过迭代优化算法,因此避免了反向传播中常见的局部最优问题。

缺点:

  • 随机性较高:ELM的输入层和隐藏层权重是随机生成的,这可能导致模型的表现不稳定。
  • 表达能力有限:由于缺少反向传播和递归连接,ELM的表达能力不如深层神经网络。

6. Python代码实现

以下是一个简单的ELM分类实现示例:

import numpy as np
from sklearn.datasets import make_classification
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 定义极限学习机类
class ExtremeLearningMachine:def __init__(self, input_size, hidden_size, activation='sigmoid'):self.input_size = input_sizeself.hidden_size = hidden_sizeself.activation = self._get_activation_function(activation)# 随机初始化输入层权重和偏置self.input_weights = np.random.randn(self.input_size, self.hidden_size)self.biases = np.random.randn(self.hidden_size)def _get_activation_function(self, activation):if activation == 'sigmoid':return lambda x: 1 / (1 + np.exp(-x))elif activation == 'tanh':return np.tanhelse:raise ValueError("Unsupported activation function.")def fit(self, X, y):# 隐藏层输入H = self.activation(np.dot(X, self.input_weights) + self.biases)# 输出层权重通过最小二乘法计算self.output_weights = np.dot(np.linalg.pinv(H), y)def predict(self, X):H = self.activation(np.dot(X, self.input_weights) + self.biases)return np.dot(H, self.output_weights)# 生成模拟数据集
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)
y = y.reshape(-1, 1)  # 转换为列向量# 数据预处理
scaler = StandardScaler()
X = scaler.fit_transform(X)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 初始化ELM
elm = ExtremeLearningMachine(input_size=X_train.shape[1], hidden_size=50, activation='sigmoid')# 训练ELM
elm.fit(X_train, y_train)# 预测并评估
y_pred = elm.predict(X_test)
y_pred = np.where(y_pred > 0.5, 1, 0)  # 二分类阈值为0.5accuracy = accuracy_score(y_test, y_pred)
print(f"ELM分类准确率: {accuracy * 100:.2f}%")

代码解释:

  • ExtremeLearningMachine类:这是ELM的实现类,包含了输入层权重和隐藏层偏置的随机初始化。激活函数可以选择sigmoidtanh
  • fit方法:利用最小二乘法计算输出层权重。np.linalg.pinv用于计算伪逆矩阵,以求解输出层的最佳权重。
  • predict方法:根据输入数据和已训练的输出层权重,计算预测值。
  • 数据集生成:使用make_classification生成一个简单的二分类数据集,并使用StandardScaler进行标准化。
  • 训练和评估:在训练集上训练ELM模型,并在测试集上进行预测,通过accuracy_score评估模型准确率。

7. 总结

极限学习机(ELM)以其快速训练的特点,在大规模数据和实时系统中表现出色。虽然ELM在表达能力上不如深层神经网络,但其通过随机权重和最小二乘法求解输出层权重,大幅提升了计算速度,特别适合对速度要求高的应用场景

相关文章:

【深度学习基础模型】极限学习机(Extreme Learning Machines, ELM)详细理解并附实现代码。

【深度学习基础模型】极限学习机(Extreme Learning Machines, ELM)详细理解并附实现代码。 【深度学习基础模型】极限学习机(Extreme Learning Machines, ELM)详细理解并附实现代码。 文章目录 【深度学习基础模型】极限学习机&a…...

把交换机的两个接口连接起来会怎么样?

当把交换机的两个接口连接起来时,可能会产生网络风暴,具体情况如下: 一、形成环路的过程 如果将交换机的两个端口直接连接,就会在网络中形成一个物理环路。例如,假设交换机有端口 A 和端口 B,用一根网线将…...

无人机陆空双模式。

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…...

14. 文档对象模型

打开网页时,浏览器会检索网页的 HTML 文本并对其进行解析,就像第 12 章中的解析器解析程序一样。浏览器会建立一个文档结构模型,并使用该模型在屏幕上绘制页面。这种文档表示法是 JavaScript 程序在沙盒中的玩具之一。它是一种可以读取或修改…...

【计网】【计网】从零开始学习http协议 ---理解http重定向和请求方法

去光荣地受伤, 去勇敢地痊愈自己。 --- 简嫃 《水问》--- 从零开始学习http协议 1 知识回顾2 认识网络重定向3 http请求方法3.1 http常见请求方法3.2 postman工具进行请求3.3 处理GET和POST参数 1 知识回顾 前面两篇文章中我们学习并实现了http协议下的请求与应…...

yolov8/9/10/11模型在中医舌苔分类识别中的应用【代码+数据集+python环境+GUI系统】

yolov8、9、10、11模型在中医舌苔分类识别中的应用【代码数据集python环境GUI系统】 背景意义 目前随着人们生活水平的不断提高,对于中医主张的理念越来越认可,对中医的需求也越来越多。 传统中医的舌诊主要依赖于医生的肉眼观察,仅仅通过这…...

k8s部署安装

k8s部署安装 一 K8s集群环境搭建1.1 k8s中容器的管理方式1.2 k8s集群部署1.2.1 k8s环境部署说明1.2.2 k8s集群环境初始化1.2.2.1 所有节点禁用swap和本地解析1.2.2.2 所有节点安装docker1.2.2.3.所有节点设定docker的资源管理模式为systemd1.2.2.4.所有阶段复制harbor仓库中的证…...

gpt为什么可以依据上下文来回答问题,依据的是什么原理

GPT 可以依据上下文回答问题,主要依据以下几个原理: Transformer 架构: 并行计算与长距离依赖处理:Transformer 架构摒弃了传统的递归神经网络和长短时记忆网络的序列依赖处理方式,具有并行计算的能力。它可以同时处理…...

2023 CCPC哈尔滨 报告

比赛链接:Dashboard - 10.6组队训练赛-2023CCPC哈尔滨站 - Codeforceshttps://codeforces.com/group/w6iGs8kreW/contest/552949 做题数:3 题 三题都是队友写的。所以来补一下 B L J。 B题: B. Memory Little G used to be a participant …...

基于深度学习的手术中的增强现实导航

基于深度学习的手术中的增强现实(AR)导航技术是一种结合了先进的计算机视觉算法、深度学习模型与增强现实技术的创新应用。其主要目的是为外科手术提供实时的、精确的手术指导,帮助医生在复杂的手术过程中更好地理解患者的解剖结构&#xff0…...

输电线路缺陷图像检测数据集,导线散股,塔材锈蚀两类,分别为581张和1407张,标注为xml和txt格式 1988张

输电线路缺陷图像检测数据集,分为导线散股,塔材锈蚀两类,分别为581张和1407张,标注为xml和txt格式 数据集名称 输电线路缺陷图像检测数据集 (Transmission Line Defect Detection Dataset) 数据集概述 该数据集是一个专门用于训…...

百度飞桨(paddlepaddle)安装

百度飞桨(paddlepaddle)安装 Anaconda升级 打开 Anaconda Prompt (或者 Mac 下的终端),键入: conda upgrade --all pip 安装 python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/s…...

≌图概念凸显有长度不同的射线

黄小宁 【摘要】自有射线概念后的2300年里一直无人能知有长度不同的射线、无人能知有互不≌的射线,从而使数学一直有几何“常识”:任何射线都没有长度差别。保距变换和≌图概念使人能一下子看到有长度不同的射线。 变量x所取各数也均由x代表&#xff0c…...

解决Nginx出现“Too many open files”的问题

解决Nginx出现“Too many open files”的问题 在那个不经意的瞬间,我感到一阵莫名的恍惚。同事突然提出要看我的手机,她的目光落在了我那泛黄的手机壳上。出乎意料地,她开始细心地擦拭,从内到外,动作轻柔而专注。那一刻…...

webGL进阶(一)多重纹理效果

效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&q…...

flink-jdbc-driver

Flink JDBC 驱动程序是一个 Java 库&#xff0c;使客户端能够通过 SQL 网关将 Flink SQL 发送到 Flink 集群。 首先启动&#xff1a;1.flink集群&#xff0c;随意任何集群。 2.启动flink-sql-gateway&#xff1a; sql-gateway.sh start -Dsql-gateway.endpoint.rest.addresslo…...

快速的配置Prettier,让代码更整洁

快速的配置Prettier&#xff0c;让代码更整洁 一个人一个代码风格&#xff0c;先抛开语法的使用不谈&#xff0c;加不加空格、加不加分号也是萝卜白菜各有所爱&#xff0c;那怎么统一我们的代码格式呢 prettier 就是为我们解决这个问题的 1. 如何制定我们的代码风格 我们可以在…...

JavaEE: HTTPS的魅力与优势揭秘

文章目录 HTTPSHTTPS 是什么HTTPS 基本工作过程Fiddle 等抓包工具,为啥能解析 HTTPS 的数据? HTTPS HTTPS 是什么 HTTPS 是一个应用层协议,是在 HTTP 协议的基础上引入了一个加密层. 几个核心概念: 明文: 要传输的原始数据.密文: 把明文进行加密之后得到一个让别人不能理解…...

软件设计师——系统基础开发

&#x1f4d4;个人主页&#x1f4da;&#xff1a;秋邱-CSDN博客☀️专属专栏✨&#xff1a;软考——软件设计师&#x1f3c5;往期回顾&#x1f3c6;&#xff1a;软件设计师——信息安全&#x1f31f;其他专栏&#x1f31f;&#xff1a;C语言_秋邱 ​ 一、软件工程概述 1.1、考…...

架构设计笔记-7-系统架构设计基础知识

目录 知识要点 单选 案例分析 1.质量属性 / 管道过滤器 / 数据仓库风格 2.面向对象风格 / 控制环路风格 3.软件架构风格 / 架构风格选择 4.体系结构方案对比 5.面向对象风格 / 基于规则风格 6.解释器风格 / 管道过滤器风格 7.面向对象风格 / 解释器风格 8.软件架构复…...

前端工程化18:前端单元测试Jest实战,保障项目代码稳定性

前端工程化18:前端单元测试Jest实战,保障项目代码稳定性 文章目录 前端工程化18:前端单元测试Jest实战,保障项目代码稳定性 前言 一、单元测试核心概念 1. 什么是单元测试 2. 单元测试优势 3. 适用测试场景 二、Jest环境快速搭建 1. 安装依赖 2. 新增测试运行脚本 3. 目录规…...

DDR3 颗粒信号定义解析

本文围绕 DDR3 标准信号定义、核心信号工作原理、PCB Layout 等长设计规则及行业常见误区展开&#xff0c;全程聚焦工程实践与底层原理。一、DDR3 标准信号完整清单&#xff08;x16 位宽基准&#xff0c;x32 位宽对应翻倍&#xff09;1. 数据信号&#xff08;Data&#xff09;表…...

1A,60VIN,1MHz,XZ4116,降压恒流LED驱动芯片 输入电压:5V-60V

产品概述这是一款外围电路简单的连续电流模式的降压型 LED 恒流驱动芯片。在输入电压高于LED电压时可以有效地用于驱动一颗或者多颗串联LED。其输出电流可调&#xff0c;最大可达 1A。适用于 5-60V 电压范围的非隔离式恒流 LED 驱动领域。芯片 内置功率开关管和一个高压电流检测…...

别再只称重了!用HX711和STM32做个简易气压计,成本不到50块

从称重到测压&#xff1a;HX711传感器的跨界应用实战指南 1. 重新认识HX711&#xff1a;不只是称重那么简单 在嵌入式开发领域&#xff0c;HX711常被视为称重传感器的标配芯片。但鲜为人知的是&#xff0c;这颗24位高精度ADC芯片的潜力远不止于此。通过简单的硬件改造和巧妙的系…...

10分钟掌握Dism++:Windows系统优化终极完整指南

10分钟掌握Dism&#xff1a;Windows系统优化终极完整指南 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language 还在为Windows系统越来越慢而烦恼吗&#xff1f;磁盘空…...

别再只下载不固化!紫光同创FPGA/CPLD烧录到Flash的保姆级避坑指南

紫光同创FPGA/CPLD烧录实战&#xff1a;从临时下载到永久固化的全流程精解 第一次成功将程序下载到紫光同创FPGA开发板时的兴奋&#xff0c;很快被一个残酷现实浇灭——断电重启后&#xff0c;所有心血归零。这个场景对许多初学者来说再熟悉不过。JTAG下载只是起点&#xff0c;…...

【人工智能】某公司AI落地实践总结

某公司AI落地实践总结 一、AI落地的整体路径框架 某公司的AI落地遵循"认知 → 工具使用 → 流程自动化 → 高阶能力构建 → 场景化落地 → 持续迭代 → 激励驱动"的闭环路径,具体分为四个阶段: 初阶入门(认知筑基):AI基础概念与常用工具,零基础扫盲,掌握提示…...

GD32C103RBT6 I2C 驱动全解析

一、I2C 通信基础概述 1. I2C 硬件接口 GD32C10x 提供 I2C0、I2C1 两组硬件 I2C: SCL:串行时钟线(由主机产生) SDA:串行数据线 需外接 上拉电阻(4.7kΩ 经典值) 支持 多主机、多从机 2. 通信模式 主机模式:MCU 主动发起通信(最常用) 从机模式:MCU 被其他主机访问 …...

DWC_ether_qos驱动软复位实战:解决网络丢包与DMA死锁

1. 项目概述&#xff1a;从一次诡异的网络丢包说起最近在调试一块基于某款主流SoC的工控板卡时&#xff0c;遇到了一个让人头疼的问题&#xff1a;设备在长时间高负载运行后&#xff0c;网络会间歇性地出现严重丢包&#xff0c;甚至完全断连。重启网络服务能暂时恢复&#xff0…...

Synopsys ICC 2016环境变量配置详解:从.bashrc编辑到license启动的保姆级步骤

Synopsys ICC 2016环境变量配置全流程实战指南 当你第一次打开Synopsys ICC 2016却遭遇"Command not found"时&#xff0c;90%的问题都源于环境变量配置不当。作为芯片设计领域的工业级工具链&#xff0c;正确的环境配置不仅是运行的先决条件&#xff0c;更是后续所有…...