第8弹 BP人工神经网络

前言

人工智能”,这几年很火,但个人觉得目前还是起步阶段,还很“人工”。人工神经网络作为人工智能里面的一支,目前应用还是很广泛的如数据建模、预测、模式识别和函数优化等方向。由于具有一定的门槛,如果能在数学建模比赛中运用,绝对是一个亮点和加分项,但在此先提醒各位千万不要“走火入魔”,动不动就是人工智能。

本文主要介绍神经网络,使用的是自带的神经网络工具箱。和前面一样,抱着一颗“实用主义”的心,主要介绍相关函数的使用和程序的编写,至于其中的数学原理会提到,如果有对相关方面感兴趣的同学,可以去阅读相关资料。

基本原理

程序设计

基本原理

结构

BP神经网络()是一种典型的多层前向型神经网络,其基本结构主要有一个输入层,数个隐含层(可以是一层,也可以是多层)和一个输出层。层与层之间采用全连接的方式,同一层的神经元之间不存在相互连接。在理论上已经证实,一个具有一层隐含层的三层网络可以逼近任意非线性函数。

隐含层中的神经元主要采用型传递函数,输出层的神经元多采用线性传递函数。看如下一个例子。

在上图所展示的是一个典型的,该网络具有一个隐含层,输入层神经元函数数目为,隐含层神经元数目为,输出层神经元数目为,隐含层采用S型传递函数,输出层传递函数为。

学习算法

先说一说神经网络的基本思想,对一定数量的样本对(输入和期望输出)进行学习,即将样本的输入送至网络输入层的各个神经元,经过隐含层和输出层计算后,输出层各个神经元输出对应的预测值,如果预测值与期望输出之间的误差不满足精度要求时,则从输出层反向传递该误差,从而进行权值与阈值的调整,使得网络的输出和期望输出间额误差逐渐减少,直至满足精度要求。

通过上面一段话,我们要得出网络的“精髓”——将网络的输出与期望输出间的误差归结为权值和阈值的“过错”,通过反向传播把误差“分摊”给各个神经元的权值和阈值。网络学习算法的指导思想就是权值与阈值的调整要沿着误差函数下降最快的方向——负梯度方向

下面通过一个简单的例子来说明一下这个过程。

假如有一个两个输入一个输出的三层网络,其中隐含层有两层,结构如下:

其中的关系如下:

隐含层第一层进行学习:

隐含层第二层进行学习:

输出层

计算输出与期望输出之间的误差

误差反向传播到隐含层第二层

误差反向传播到隐含层第一层

修改权值

修改权值

修改权值

如此往复,即达到相关效果。

程序设计

先介绍几个重要函数。

归一化函数,将矩阵通过最大值最小值映射到上。

调用方式:

创建一个神经网络,调用格式为:

训练函数,调用格式为:

仿真函数,调用格式为:

以上只是简单的介绍了下,更为详细的用法可以查找帮助文档。

问题:辛烷值是衡量汽油品质的一个重要指标。本次共采集到组汽油样品,通过红外扫描每组都采集到了个波长点。样品的近红外光谱曲线如下。同时,利用传统实验室检测方法测定其辛烷值含量。请利用神经网络建立汽油样品近红外光谱及其辛烷值间的数学模型。

代码如下:

结果如下:

效果还不错。

编辑不易,欢迎推广

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180905G09RXH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券