matlab bp神经网络_2019首发推文——BP神经网络原理

2019首发推文

BP神经网络原理

2019年到来,让我们满怀信心和期待.....

不说了,先看篇推文先。

这次给大家介绍的是一种比较传统而又重要的神经网络,即BP(back propagation)神经网络,也就是我们平时说的反向传播神经网络,包含前向传播反向传播两个过程。

先来谈个轻松的话题

假如你在学习做红烧肉,第一次做时可能很咸,或者火太大烧焦了,没法吃;

第二次时,你有了经验,会少放一点盐,把火调小点,无奈还是有点焦,有点咸,很难吃;

第三次时,你根据以往两次经验,会把盐再放少点,火再小点,炒出来勉强能吃了。

当你做了几年的红烧肉,在一次次不断重复的过程中,你的经验会越来越丰富,经过不断调节,成为一名资深的红烧肉吃货。

0b35b96c3e9027a8a3322010aa227562.png

其实,上面的过程,就类似于一个BP神经网络的运作过程。“做红烧肉”是前向传播;“做出来难吃”是输出结果;在下一次改进”是反向传播;而“盐太多、火太大”是误差。你在做红烧肉的循环中,根据结果,会不断收集“盐太多”、“火太大”这些误差信息,返回到下一次做红烧肉,通过这些误差来调整,学习出最优做红烧肉的方法,从而做一手美味的红烧肉。

所以,反向传播传回来的是什么呢?其实就是误差

下图为BP神经网络的模型

782e7af4df47bb686c08f1a2d5ed10c7.png

圆圈代表神经元,箭头表示传播的方向,相邻层的神经元之间互相连接,每根线可以给不同的权重。说白了就是三大件:输入层隐含层输出层

首先讲下激活函数,即activation function,我们一般用sigmoid函数:960595e1116544ddc4a8abc5699ccda8.png

我们可以用matlab把sigmoid图像画出来,z表示的是输入

syms z

z=-10:10

f=1./(1+exp(-z))

plot(net,f);

ebd49ce19fe189029e10760eb1b667cd.png

可以看到,它的形状很像“S”,我们又称之为“S”型函数,它能把函数值的值域限制在[0,1]。

下面讲述BP神经网络的运作原理,我们的目标很清晰——做最美味的红烧肉,学习出最优模型。

一、前向传播

(1)我们先定义一些参数和符号

我们假设输入层有n个神经元,隐含层有p个神经元,输出层有q个神经元

dfe605467eb9fc5d03300ac8a3896eab.png

输入层与中间层、隐含层与输出层的连接权值分别为469d09307c9c2f36d210afa7808a4088.png4c8beb16d6ba32b08c48809fc02b1dfa.png

隐含层、输出层各神经元的偏置分别为07fe94087c6c5f714c2f1096eddeeded.pngf2b0be07d49cfca77bd433711e97d0f3.png

首先,初始化权重。各连接的权重要初始化,一般用正态分布(-1,1)的随机数,若在MATLAB上直接用rand()函数即可

(2)计算出实际的输入和输出

a9132a2dd991b9159e6cae10a843d79b.png

二、反向传播

(1)引入误差函数,求偏导

这个时候,我们已经求出了实际的输出,这个时候我们要引用一种较常用的一种误差函数——均方误差:b876a0f3773304c9f02e509cad240342.png,通过真实值和实际输出值的数据,算出误差。前面我们提到了,反向传播传的是误差,那么,我们如何通过计算出的这个误差,去调整参数呢?

这个时候就要用到求偏导的知识了。

例如函数8f1187408efc3f799b2aba67ea8396ca.png。对x求偏导时,把y看作常数,所以结果是2x;同理,对y求偏导时,结果为2y。

在这里再说明一下各符号的含义:e是误差函数,940aa063f69999bc010c6c6c1d04366a.png是隐含层的权重,bc92a0ff9c880a8376eb218029fecf49.png是输出层的输出,e4d974dfdeec397c55f161bba54e4998.png是隐含层的输出,b是偏置,eac57838e8c2c98132970604d44fdf78.png是真实值

1e7cef7b3f757b26188e61e49132a2c3.png 2ef8a15fd90faf04d76a6d5b0f3da733.png 442f0a358ecf462b02e8af42a07697bb.png

(2)根据算出的c2750bd894133b259d86ee637818ddbe.png12e02b9d6754169d126eb4257cbed857.png,修正隐含层、输入层连接的权重

d3c4d8b975497473322170a92233449f.png 90d5c9ba18a2d3bac14815a119169c12.png

(3)计算全局误差

4d65f51bf6f5bdfbf6ccbe11f4fad86a.png

全局误差最大值我们可以提前设定好,在没有达到设定条件之前或者最大迭代学习次数之前,继续循环,得出最优模型。

这里,你可以当做是有评委品尝你的红烧肉,循环到直到评委对你做的红烧肉满意(假设评委对满意有个清晰的数值);当你学习最大次数达到,还是做不出评委满意的红烧肉,这时候是你的技术上限了,也会得出相对于你最好的做红烧肉模型。

看到这里,相信你对BP神经网络有一定的理解了,小编最近考试繁忙,可能有些地方写的不是很好,敬请指出,我们下次再见。

供稿:叶昌鑫   排版:大靖

cfebf99bb8955246d26b864091b70647.png

关于图灵

我们是图灵智能创新团队,同时也是广东海洋大学第一个人工智能创新团队,我们的方向有:计算机视觉、自然语言处理、前端&后台。本公众号主要面向对人工智能感兴趣的读者,如果想了解更多,欢迎关注我们

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值