数学建模 —— 人工神经网络(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 | 学习速率 |

相关推荐
GL_Rain13 分钟前
【OpenCV】Could NOT find TIFF (missing: TIFF_LIBRARY TIFF_INCLUDE_DIR)
人工智能·opencv·计算机视觉
shansjqun18 分钟前
教学内容全覆盖:航拍杂草检测与分类
人工智能·分类·数据挖掘
狸克先生20 分钟前
如何用AI写小说(二):Gradio 超简单的网页前端交互
前端·人工智能·chatgpt·交互
肖永威32 分钟前
CentOS环境上离线安装python3及相关包
linux·运维·机器学习·centos
baiduopenmap35 分钟前
百度世界2024精选公开课:基于地图智能体的导航出行AI应用创新实践
前端·人工智能·百度地图
小任同学Alex38 分钟前
浦语提示词工程实践(LangGPT版,服务器上部署internlm2-chat-1_8b,踩坑很多才完成的详细教程,)
人工智能·自然语言处理·大模型
新加坡内哥谈技术44 分钟前
微软 Ignite 2024 大会
人工智能
江瀚视野1 小时前
Q3净利增长超预期,文心大模型调用量大增,百度未来如何分析?
人工智能
带多刺的玫瑰1 小时前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法
爱敲代码的憨仔1 小时前
《线性代数的本质》
线性代数·算法·决策树