做网站网页的人是不是思维,免费的黄冈网站有哪些平台可以聊天呢,怎么做可以使网站跳转,网站建设的快乐【深度学习基础模型】极限学习机#xff08;Extreme Learning Machines, ELM#xff09;详细理解并附实现代码。
【深度学习基础模型】极限学习机#xff08;Extreme Learning Machines, ELM#xff09;详细理解并附实现代码。 文章目录 【深度学习基础模型】极限学习机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, activationsigmoid):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_samples1000, n_features20, n_classes2, random_state42)
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_size0.3, random_state42)# 初始化ELM
elm ExtremeLearningMachine(input_sizeX_train.shape[1], hidden_size50, activationsigmoid)# 训练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(fELM分类准确率: {accuracy * 100:.2f}%)代码解释
ExtremeLearningMachine类这是ELM的实现类包含了输入层权重和隐藏层偏置的随机初始化。激活函数可以选择sigmoid或tanh。fit方法利用最小二乘法计算输出层权重。np.linalg.pinv用于计算伪逆矩阵以求解输出层的最佳权重。predict方法根据输入数据和已训练的输出层权重计算预测值。数据集生成使用make_classification生成一个简单的二分类数据集并使用StandardScaler进行标准化。训练和评估在训练集上训练ELM模型并在测试集上进行预测通过accuracy_score评估模型准确率。
7. 总结
极限学习机ELM以其快速训练的特点在大规模数据和实时系统中表现出色。虽然ELM在表达能力上不如深层神经网络但其通过随机权重和最小二乘法求解输出层权重大幅提升了计算速度特别适合对速度要求高的应用场景。