数学建模 —— 人工神经网络(6)

目录

一、人工神经网络

[1.1 人工神经网络结构](#1.1 人工神经网络结构)

[1.2 神经元/感知器](#1.2 神经元/感知器)

[1.3 激活函数](#1.3 激活函数)

[1.3.1 sign函数](#1.3.1 sign函数)

[1.3.2 sigmoid函数(Logistic函数)](#1.3.2 sigmoid函数(Logistic函数))

[1.3.3 tanh双曲正切函数](#1.3.3 tanh双曲正切函数)

[1.3.4 ReLU函数](#1.3.4 ReLU函数)

[1.4 分类](#1.4 分类)

二、BP人工神经网络

[2.1 概述](#2.1 概述)

[2.2 处理过程](#2.2 处理过程)

[2.3 例题](#2.3 例题)

[2.4 Matlab实现](#2.4 Matlab实现)

[2.4.1 一个简单程序](#2.4.1 一个简单程序)

[2.4.2 newff------BP神经网络参数设置函数](#2.4.2 newff——BP神经网络参数设置函数)

[2.4.3 train------BP神经网络训练函数](#2.4.3 train——BP神经网络训练函数)


一、人工神经网络

1.1 人工神经网络结构

1.2 神经元/感知器

1.3 激活函数

1.3.1 sign函数

1.3.2 sigmoid函数(Logistic函数)


1.输出映射在 ( 0 , 1 ) 之间,输出 范围 有限
2.单调连续,易于求导
3.优化 效果 稳定
4.适合用于输出层感知器的激活函数 。

1.因为 sigmoid 函数具有的饱和 性,容易 产生梯度 消失,导致 训练 失效
2.输出 并不是以 0 为 中心

可以看出,sigmoid函数的导数只有在x=0附近的时候有比较好的激活性,在正负饱和区的梯度都接近于0,造成梯度弥散,无法完成深层网络的训练。

1.3.3 tanh双曲正切函数


1.取值 范围为 [- 1 , 1]
2.在 特征相差明显时的应用效果 较好,在循环 训练过程中会不断扩大特征 效果
3.是 0 均值 的
4.应用中比 sigmoid 函数有更强的 应用性
5.同样 具有饱和 性,也 会造成梯度 消失

1.3.4 ReLU函数


1.用于 某些算法(如随机梯度下降) 时,收敛速度较快
2.当 x <0 时, ReLU 硬 饱和;当 x > 0 时,则 不存在饱和 问题
3.在 x > 0 时保持梯度不 衰减,从而 缓解梯度消失 问题。但随着训练推进,部分 输入会落入硬饱和 区,导致 对应权重无法 更新,导致神经元死亡
4.输出 均值也大于 0
5.偏移 现象和神经元死亡会共同影响网络的收敛性。

1.4 分类

(1)拓扑结构划分

两层、三层、多层神经网络

(2)结点间的连接方式划分

层间连接、层内连接

(3)结点间的连接方向划分

前馈式神经网络BP(Back Propagation)、反馈式神经网络(Feedback)

二、BP人工神经网络

2.1 概述

BP人工神经网络是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一

BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程

2.2 处理过程

(1)初始化网络权值和处理单元的阈值

最简单的办法就是随机初始化,分别为w**ijw**jk,...,w**klb**ijb**jk,...,b**kl赋随机值。

(2)信号的前向传播,计算各处理单元的输出

按照网络连接以及组合函数和激活函数关系公式,逐层计算隐藏层处理单元和输出层处理单元的输入和输出。

(3)误差后向传播

对于训练数据x**i,输出应为y**l,与人工神经网络实际输出O**l存在差异。

定义系统的总输出误差为系统输出层各处理单元输出误差的平均值

(即各输出O**l与训练数据y**l的差异),

是输出与其期望值的均方差:

需要根据差异的情况对系统内各连接的权值进行调整,使二者相等或逼近 y**l

(4)模型评估

(5)模型应用

2.3 例题

2.4 Matlab实现

2.4.1 一个简单程序

复制代码
P=[0 1 2 3 4 5 6 7 8 9 10];          %输入
T=[0 1 2 3 4 3 2 1 2 3 4];           %期望输出
ff=newff(P,T,20);                    %建立一个BP网络,包含20个节点的隐含层
ff.trainParam.epochs=50;             %最大训练次数
ff=train(ff,P,T);                    %训练
Y1=sim(ff,P);                        %仿真
plot(P,T,'o-');

2.4.2 newff------BP神经网络参数设置函数

功能:构建一个BP神经网络

(1) net=newff(P, T, S)

P: R*Q1矩阵,表示创建的神经网络中,输入层有R个神经元。每行对应一

个神经元输入数据的典型值,实际应用中常取其最大最小值。

T: SN*Q2矩阵,表示创建的网络有SN个输出层节点,每行是输出值的典型

值。

S: 标量或向量,用于指定隐藏层神经元个数,若隐藏层多于一层,则写成

行向量的形式。

(2)net=newff(P, T, S, TF, BTF, BLF, PF, IPF, OPF, DDF)

TFi: 第i层节点的传递函数,包括线性传递函数purelin, 正切S型传递函数

tansig,对数S型传递函数logsig,默认为"tansig";

BTF: 训练函数,用于网络权值和阈值的调整,默认为基于莱文贝格-马夸

特共轭梯度法的训练函数trainlm,其他参数见下表所示;

一般在使用过程中设置这2个参数,后面5个参数采用系统默认参数。

BP****神经网络训练函数

|-------------------|----------------------|
| 训练函数的意义 | MATLAB****中相应的函数 |
| 梯度下降法 | traingd |
| 动量反传的梯度下降法 | traingdm |
| 动态自适应学习率的梯度下降法 | traingda |
| 带动量动态自适应学习率的梯度下降法 | traingdx |
| 弹性梯度下降法 | trainrp |
| 量化共轭梯度法 | traincg |
| 莱文贝格-马夸特共轭梯度法 | trainlm |
| 弗莱彻-里夫斯共轭梯度法 | traingf |
| 波拉克-里比埃共轭梯度法 | traingp |
| 鲍威尔-比尔共轭梯度法 | traingb |

2.4.3 train------BP神经网络训练函数

功能:用训练函数训练BP神经网络

[net, tr]=train(NET, P, T)

NET: 待训练网络;

P: 输入数据矩阵;

T: 期望输出数据矩阵;

net: 训练好的网络;

tr: 训练过程记录。

BP****神经网络训练函数

|------------------------------|-----------------------|
| 训练参数名称及默认值 | 属性 |
| net.trainParam.epochs=100 | 最大训练次数 |
| net.trainParam.goal=0 | 训练目标 |
| net.trainParam.show=25 | 两次显示之间的训练次数(无显示时取NAN) |
| net.trainParam.time=inf | 最大训练时间(秒) |
| net.trainParam.max_fail=5 | 确认失败的最大次数 |
| net.trainParam.min_grad=1e-6 | 最小性能梯度 |
| net.trainParam.lr=0.2 | 学习速率 |

相关推荐
暮冬-  Gentle°19 小时前
C++中的命令模式实战
开发语言·c++·算法
勾股导航19 小时前
大模型Skill
人工智能·python·机器学习
卷福同学21 小时前
【养虾日记】Openclaw操作浏览器自动化发文
人工智能·后端·算法
春日见1 天前
如何入门端到端自动驾驶?
linux·人工智能·算法·机器学习·自动驾驶
光锥智能1 天前
从自动驾驶到 AI 能力体系,元戎启行 GTC 发布基座模型新进展
人工智能
luoganttcc1 天前
自动驾驶 世界模型 有哪些
人工智能·机器学习·自动驾驶
潘高1 天前
10分钟教你手撸一个小龙虾(OpenClaw)
人工智能
禁默1 天前
光学与机器视觉:解锁“机器之眼”的核心密码-《第五届光学与机器视觉国际学术会议(ICOMV 2026)》
人工智能·计算机视觉·光学
2401_876907521 天前
Python机器学习实践指南
开发语言·python·机器学习
深小乐1 天前
不是DeepSeek V4!这两个神秘的 Hunter 模型竟然来自小米
人工智能