数据挖掘(6.1)--神经网络

简介: Delta学习规则又称梯度法或最速下降法,其要点是改变单元间的连接权重来减小系统实际输出与期望输出间的误差

目录


神经网络简介


BP算法


Delta学习规则的基本原理


BP神经网络的结构


BP神经网络的算法描述


神经网络训练一般步骤


后向传播算法的主要步骤


优缺点


BP算法简单举例


神经网络简介

神经网络是一种计算模型,它受到人脑处理信息的生物神经网络过程的启发。人工神经网络(ANN)一般也称为神经网络(Neural Network,NN)。  


神经网络是由多个神经元组成的,每个神经元都有一个输入和一个输出,它们之间通过权重进行连接。当输入数据经过多个神经元后,输出结果就是由这些神经元的输出加权求和得到的。


BP算法

BP算法(Back Propagation Algorithm)是一种常用的神经网络训练算法,用于在监督学习中对前向传播算法


神经网络是一种计算模型,它受到人脑处理信息的生物神经网络过程的启发。人工神经网络(ANN)一般也称为神经网络(Neural Network,NN)。  


神经网络是由多个神经元组成的,每个神经元都有一个输入和一个输出,它们之间通过权重进行连接。当输入数据经过多个神经元后,输出结果就是由这些神经元的输出加权求和得到的。


进行优化。BP算法基于误差反向传播原理,通过计算每个神经元对于输出结果的误差,然后将误差从输出层反向传播到输入层,逐层更新每个神经元的权重和偏置值,以最小化预测结果与真实结果之间的误差。


Delta学习规则的基本原理

Delta学习规则又称梯度法或最速下降法,其要点是改变单元间的连接权重来减小系统实际输出与期望输出间的误差


BP神经网络的结构

BP神经网络是具有三层或三层以上的阶层型神经网络,由输入层、隐含层和输出层构成,相邻层之间的神经元全互连,同一层内的神经元无连接


b3bb8681b30a1057de219a81a6717834_d1fc12eb76564fbcba471bce580690f1.png


BP神经网络的算法描述

BP算法的主要思想是从后向前(反向)逐层传播输出层的误差,以间接算出隐层误差。


算法分为两个阶段:


第一阶段(正向传播过程)输入信息从输入层经隐层逐层计算各单元的输出值


第二阶段(反向传播过程)输出误差逐层向前算出隐层各单元的误差,并用此误差修正前层权值


f4b4b8c38d5348c72c26f7d88ea819ea_70aaede75cb84c978cb3fe65f3781ffa.png


具体来说,BP算法包括以下几个步骤:


初始化模型参数(如神经元的权重和偏置值)。


前向传播计算网络的输出结果。


计算网络输出结果与真实结果之间的误差。


根据误差反向传播原理,计算每个神经元对于误差的贡献,并根据梯度下降算法更新每个神经元的权重和偏置值。


重复执行以上步骤,直到达到一定的迭代次数或损失函数收敛。


神经网络训练一般步骤

初始化权重


将输入元组一个一个注入网络


对于每个输入元组,执行如下过程:


①每个单元的经输入计算为这个单元所有输入的线性组合


②使用激活函数计算输出值


③更新权重值和阈值(偏差)


后向传播算法的主要步骤

①用随机值初始化权重


②向前传播输入,对每个隐含层或输出单元,计算其输入和输出,并最终计算出预测结果


单元j的净输入:7fc157a97c3069d6c72ae59c386c8bf9_0184e777d63249c99b8e1ba4b520e5f2.png


假设一个隐藏或输出单元为j,单元j的输人来自上一层的输出,Wij是由上一层单元i到单元j的连接权重,是上一层单元i的输出,是单元j的偏倚。


单元j的净输出:b0fd3a6ca081081a861897095c75a38a_1e33bd95868146ac93d6f33629752811.png


③向后传播误差。更新权重和阈值(从输出层开始)


输出层单元j的误差:be797eba1fbeec2f4a87dbdf968a7b3a_9a1c985670e0415c950f72b487f6caf9.png


隐含层单元j的误差:a5d0ec23ca3a513751f38af64d3545c1_4e751c6ebbb647ec80e02bf477d6bf83.png


其中,是单元j到下一较高层单元k的连接权重,Errk是单元k的误差。

cefd2ceff0d8d731be00f87807df130a_9da2b688ec974d5bab2afa3b977dca03.png


其中是权重的改变;l是学习速率,通常取0.0~1.0之间的常数,一种经验的设置是将学习率设置为1/t ,t是当前训练集迭代的次数。


优缺点

优点


非线性映射能力

自学习和自适应能力

泛化能力

容错能力

缺点


结构选择不一

局部极小化、收敛速度慢

预测能力和训练能力的矛盾问题

样本依赖性问题

BP算法简单举例

import numpy as np
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
# 定义sigmoid函数
def sigmoid(x):
    return 1 / (1 + np.exp(-x))
# 定义BP算法
def backpropagation(X, y, hidden_nodes, output_nodes, learning_rate, epochs):
    # 初始化权重
    input_nodes = X.shape[1]
    hidden_weights = np.random.normal(scale=1 / input_nodes ** 0.5, size=(input_nodes, hidden_nodes))
    output_weights = np.random.normal(scale=1 / hidden_nodes ** 0.5, size=(hidden_nodes, output_nodes))
    # 训练
    for i in range(epochs):
        # 前向传播
        hidden_inputs = np.dot(X, hidden_weights)
        hidden_outputs = sigmoid(hidden_inputs)
        output_inputs = np.dot(hidden_outputs, output_weights)
        output_outputs = sigmoid(output_inputs)
        # 计算误差
        output_error = y - output_outputs
        output_delta = output_error * output_outputs * (1 - output_outputs)
        hidden_error = np.dot(output_delta, output_weights.T)
        hidden_delta = hidden_error * hidden_outputs * (1 - hidden_outputs)
        # 更新权重
        output_weights += learning_rate * np.dot(hidden_outputs.T, output_delta)
        hidden_weights += learning_rate * np.dot(X.T, hidden_delta)
    return output_outputs
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 数据预处理
scaler = StandardScaler()
X = scaler.fit_transform(X)
# 将标签转换为one-hot编码
y_onehot = np.zeros((y.size, y.max()+1))
y_onehot[np.arange(y.size), y] = 1
# 训练模型
output = backpropagation(X, y_onehot, hidden_nodes=5, output_nodes=3, learning_rate=0.1, epochs=10000)
# 预测结果
y_pred = np.argmax(output, axis=1)
# 计算准确率
accuracy = np.mean(y_pred == y)
print('Accuracy:', accuracy)


输出结果:


Accuracy: 0.9933333333333333


目录
相关文章
|
5月前
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】神经网络与感知机基础概念讲解(图文解释 超详细)
【数据挖掘】神经网络与感知机基础概念讲解(图文解释 超详细)
43 0
【数据挖掘】神经网络与感知机基础概念讲解(图文解释 超详细)
|
7月前
|
机器学习/深度学习 数据采集 算法
【数据挖掘和机器学习技术】数据挖掘和机器学习相关的算法和模型,如聚类、分类、回归、神经网络
【数据挖掘和机器学习技术】数据挖掘和机器学习相关的算法和模型,如聚类、分类、回归、神经网络
105 0
|
机器学习/深度学习 数据采集 搜索推荐
【数据挖掘实战】——家用电器用户行为分析及事件识别(BP神经网络)
项目地址:Datamining_project: 数据挖掘实战项目代码
695 0
|
机器学习/深度学习 数据采集 监控
【数据挖掘实战】——基于水色图像的水质评价(LM神经网络和决策树)
项目地址:Datamining_project: 数据挖掘实战项目代码
382 0
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】神经网络简介 ( 有向图本质 | 拓扑结构 | 连接方式 | 学习规则 | 分类 | 深度学习 | 机器学习 )(二)
【数据挖掘】神经网络简介 ( 有向图本质 | 拓扑结构 | 连接方式 | 学习规则 | 分类 | 深度学习 | 机器学习 )(二)
233 0
|
机器学习/深度学习 物联网 数据挖掘
【数据挖掘】神经网络简介 ( 有向图本质 | 拓扑结构 | 连接方式 | 学习规则 | 分类 | 深度学习 | 机器学习 )(一)
【数据挖掘】神经网络简介 ( 有向图本质 | 拓扑结构 | 连接方式 | 学习规则 | 分类 | 深度学习 | 机器学习 )(一)
692 0
|
数据挖掘
《R语言数据挖掘》——1.4 社交网络挖掘
本节书摘来自华章出版社《R语言数据挖掘》一书中的第1章,第1.4节,作者[哈萨克斯坦]贝特·麦克哈贝尔(Bater Makhabel),李洪成 许金炜 段力辉 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1730 0
|
机器学习/深度学习 算法 大数据
大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 神经网络分析算法原理篇)
原文:(原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 神经网络分析算法原理篇) 前言 本篇文章继续我们的微软挖掘系列算法总结,前几篇文章已经将相关的主要算法做了详细的介绍,我为了展示方便,特地的整理了一个目录提纲篇:大数据时代:深入浅出微软数据挖掘算法总结连载,有兴趣...
1082 0

热门文章

最新文章