【深度学习基础模型】极限学习机(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的实现类,包含了输入层权重和隐藏层偏置的随机初始化。激活函数可以选择sigmoid或tanh。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)导航技术是一种结合了先进的计算机视觉算法、深度学习模型与增强现实技术的创新应用。其主要目的是为外科手术提供实时的、精确的手术指导,帮助医生在复杂的手术过程中更好地理解患者的解剖结构࿰…...
输电线路缺陷图像检测数据集,导线散股,塔材锈蚀两类,分别为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代表,…...
解决Nginx出现“Too many open files”的问题
解决Nginx出现“Too many open files”的问题 在那个不经意的瞬间,我感到一阵莫名的恍惚。同事突然提出要看我的手机,她的目光落在了我那泛黄的手机壳上。出乎意料地,她开始细心地擦拭,从内到外,动作轻柔而专注。那一刻…...
webGL进阶(一)多重纹理效果
效果: 代码: <!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 库,使客户端能够通过 SQL 网关将 Flink SQL 发送到 Flink 集群。 首先启动:1.flink集群,随意任何集群。 2.启动flink-sql-gateway: sql-gateway.sh start -Dsql-gateway.endpoint.rest.addresslo…...
快速的配置Prettier,让代码更整洁
快速的配置Prettier,让代码更整洁 一个人一个代码风格,先抛开语法的使用不谈,加不加空格、加不加分号也是萝卜白菜各有所爱,那怎么统一我们的代码格式呢 prettier 就是为我们解决这个问题的 1. 如何制定我们的代码风格 我们可以在…...
JavaEE: HTTPS的魅力与优势揭秘
文章目录 HTTPSHTTPS 是什么HTTPS 基本工作过程Fiddle 等抓包工具,为啥能解析 HTTPS 的数据? HTTPS HTTPS 是什么 HTTPS 是一个应用层协议,是在 HTTP 协议的基础上引入了一个加密层. 几个核心概念: 明文: 要传输的原始数据.密文: 把明文进行加密之后得到一个让别人不能理解…...
软件设计师——系统基础开发
📔个人主页📚:秋邱-CSDN博客☀️专属专栏✨:软考——软件设计师🏅往期回顾🏆:软件设计师——信息安全🌟其他专栏🌟:C语言_秋邱 一、软件工程概述 1.1、考…...
架构设计笔记-7-系统架构设计基础知识
目录 知识要点 单选 案例分析 1.质量属性 / 管道过滤器 / 数据仓库风格 2.面向对象风格 / 控制环路风格 3.软件架构风格 / 架构风格选择 4.体系结构方案对比 5.面向对象风格 / 基于规则风格 6.解释器风格 / 管道过滤器风格 7.面向对象风格 / 解释器风格 8.软件架构复…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
