神经网络连载(三)

大家好,南海一号又回来了。

上期为大家构建了一个简单的神经网络模型。就是输入层神经元的输入,经过各种处理,最后到达输出层,然后输出最后的结果。但是大家也看到了,最后网络输出的结果和真实结果之间存在很大的差距。道理也很简单,我们没有进行任何训练。网络输出与实际输出之间还没有任何的联系。接下来,我们就要介绍网络输出与实际输出如何构建联系。

一:BP神经网络

要构建输入神经元与结果(标签)的联系。需要用到一个数学上的概念:梯度下降以及反向传播。下面我们举一个例子

以上神经网络中,x1,x2,x3,x4为输入神经元。每一组输入都对应着一个标签(结果)。神经网络的核心是神经元的权重和阈值。作用是决定每个输入在结果中的重要程度。中间层(隐藏层)越多。拟合的效果越好。但是较少的训练样本对应特别高的拟合程度,会造成比较严重的后果:过拟合,所以不要用过多的隐藏层神经元。

一:反向传播与梯度下降

这是神经网络的核心内容。

首先,记住这样一句话:梯度方向是下降速度最快的方向,别问为什么,记住就行了。各位也不要留言问我这个问题,太复杂了,实在不想写。

所以,神经网络根据误差调整权值的时候是按照梯度下降的方向调整的。

其次:反向传播实质是误差信息的反向传播。因为只有将误差信息反向传播,才能让前面的神经元知道如何调整自己的权值和阈值。才能优化网络。反向传播也要按照权值来分配误差信息,权值大的神经元调整幅度也大,权值小的神经元调整幅度小,毕竟权值大的应该负主要责任嘛

二:误差

误差就是你要优化的对象,神经网络的设定是让误差最小。我举一个例子:比如给你一堆自变量x1,x2,x3,x4。一个因变量y1。在训练集中。有一组数据是[2,4,6,7]与12。神经网络输出是11.那么误差就是11-12=-1.误差就是"实际输出-网络输出"。目标函数要让误差最小。才能达到精确预测的目的。

三:链式求导法则

为了让大家更简单的理解神经网络,链式求导的数学原理就不写了。大家也没必要搞得很明白。只需要记住,误差反向传播的过程中,会经过好几层神经元。最后第一层的误差经过权值分配后是倒数第二层的误差。倒数第二层的误差经过下一层权值的分配成为倒数第三层的误差........。依次类推。最后传播到第一层,误差的车轮碾过所有的神经元。改变了所有的权值和阈值,一次训练完成.......。

经过很多次训练以后,权值和阈值都优化到了非常好的地步,就可以进行预测了。

本文作者:南海一号

原文发布于微信公众号 - matlab爱好者(matlabaihaozhe)

原文发表时间:2019-04-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券