BP神经网络-ANN发展

Dear junqiang:

Hello

今天是“一天一文”的第18天。继续关于AI里面最重要的神经网络的知识分享。

昨天的文章说了关于ANN的基础 —— 单层感知器 ,以及它的进化版 —— 线性神经网络。也知道了“权重、激活函数、偏置X0、学习信号r、代价函数E”等最基本的知识。同时也学习了“sign()激活函数 和 purelin()线性激活函数”。

昨天,也留下了一个疑问:单层感知器和线性神经网络无法解决“异或问题”,也就是通过计算,无法区分下面这个图:

那么,如何解决呢?单层感知器发展就有了后来的多层“BP神经网络”。

———— BP神经网络 ————

BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络。

BP神经网络与前面说到的单层感知器和线性神经网络最大的不同有两点:

(1) 激活函数;

(2)层数增加;

BP神经网络有三种激活函数,分别为Sigmoid函数、Tanh函数、Softsign函数。

Sigmoid激活函数(早期BP使用):

Tanh函数:

Softsign函数:

下面说一下BP网络的网络模型,这也是其与单层感知器最大的不同。因为用户看不见这些层,所以见做隐藏层。

对于输出层:Ok = f(netk)

netk = ∑WjkYj (从第j个到第k个)

对于隐层: Yj = f(netj)

netk = ∑WijXj (从第i个输入点到第j个隐层结点)

以上就是BP神经网络的基本输出向量。在神经网络中最重要的也就是激活函数了,BP网络的激活函数最常用的是Sigmoid函数,由于其是单极性,同时其导数也是单极性的,故用于BP网络。

我们直接看百度百科的解释:

sigmoid的这种特性很好地适合于“人工神经网络中激活函数的阀值激活特点”。

———— BP学习算法 ————

下面以三层感知器为例描述BP学习算法。

首先,计算代价函数。这是神经网络得以迭代逼近期望值的最根本原因和方式,重要性不言而喻。

输出层:如同前面的线性神经网络,BP网络也有代价函数E。

E(向量) = 1/2*[ d(向量) - o(向量) ] ^2 = 1/2 * ∑(dk - ok)^2

隐层:这是最终的E向量的式子,把其展开成为中间隐层的式:

E = 1/2 * ∑[ dk - f(netk) ]^2

= 1/2*∑[ dk - f( ∑WjkYj ) ]^2

输入层:将这个式子进一步展开到输入层:

E = 1/2*∑ ( dk - f[ ∑Wjk · f( netj ) ] )^2

= 1/2*∑( dk - f[ ∑Wjk · f[ ∑Wjk · f( ∑Wij Xi ) ] ] )^2

看不懂?没事,我们不是AI工程师,不必要了解全部的推导过程,只需要知道这个结果怎么用就好,上述的过程以及中间加入部分的偏导,最后计算权值:

w jk = η * δk-o * Yj =η*(dk - ok)*(1-ok)*yj

v ij =η * δj-y * Xi =η *( ∑δk-o *wjk)*yj*(1-yj)*xi

这个就是基本的权值调整公式,W是最后隐层连接输出层的那个连接组的权值向量。V是输入串连接隐层的那个连接组的权值向量。

按照这个公式进行W和V的迭代,最终使得激活函数输出的值之和能逼近期望值。

当然,这样能拟合(逼近的高大上叫法)到最终期望值,但也存在这过度你和的问题。

———— 拟合与过拟合 ————

拟合就是用f()函数去近似匹配和逼近期望值,拟合也就是把一连串的点用一条光滑的曲线连接起来的过程。

BP神经网络会存在过拟合的情况。为了防止过拟合,需要用一些手段来解决。

过拟合简单来说就是所有的点都被连入了这条光滑曲线,即使有些点是无用且干扰的点。

如何解决这个问题,就需要:(1)增大数据集;(2)正则化方法来处理代价函数。

现在的大数据也是通过庞大的数据量来使得复杂的“点集合”能被拟合出来,来适合各种场景。

———— 玩耍时间 ————

以下是用google的playgroud.tensorflow来模拟:

学习率:开始为0.3(加快拟合速度),后期为0.003(精确拟合)

激活函数:Sigmoid函数

正则化:无正则化

我们会发现,每一层的每一个单元(神经元)存储记录着的是一种分类形式,我们把它形象地比做“这个单元认识这种分类”(如果你是在识别人脸,你可以说这个单元能认出你的鼻子)

X1单元:

X2单元:

中间第一隐层第三个单元:

中间第二隐层单元:

这样每一个单元记录着这个“拟合函数”的一部分(就如同某一单元记录这你脸上的某一部分),最终一起合作,拟合出了改函数(合作识别出来了你的脸)。

神奇~

明天我会来说一下Hopfield神经网络,该网络与BP网络一样,都为单层感知器的下一阶段的发展。该Hopfield网络能“知道如何自行压缩信息”。

over.

Sincerely

俊强

2017年12月9日

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SIGAI学习与实践平台

关于感受野的总结

感受野是卷积神经网络里面最重要的概念之一,为了更好地理解卷积神经网络结构,甚至自己设计卷积神经网络,对于感受野的理解是必备的。

6492
来自专栏鸿的学习笔记

精确控制模型预测误差(上)

当评估模型的质量时,能够准确测量其预测误差至关重要。然而,测量误差的技术常常会给出严重误导的结果。因为可能导致会过拟合,就是模型可以非常好地拟合训练数据,但是对...

761
来自专栏专知

\b【AAAI2018】通过动态融合方式学习多模态词表示,中科院自动化所宗成庆老师团队最新工作

【导读】基于文本来学习词的语义表示, 特别是基于共现的工作, 如Word2Vec能够很好的处理大多数任务, 然而, 这些语义表示和人的语义表示系统有很大出入. ...

3496
来自专栏机器之心

前沿 | CNN取代RNN?当序列建模不再需要循环网络

在这篇博文中,我们来探讨循环网络模型和前馈模型之间的取舍。前馈模型可以提高训练稳定性和速度,而循环模型表达能力更胜一筹。有趣的是,额外的表现力似乎并没有提高循环...

1171
来自专栏计算机视觉战队

哇~这么Deep且又轻量的Network,实时目标检测

最近挺对不住关注“计算机视觉战队”平台的小伙伴,有段时间没有给大家分享比较硬比较充实的“干货”了,在此向大家表示抱歉,今天抽空之余,想和大家说说目标的实时检测。

3183
来自专栏机器之心

ECCV 2018 | 美图云联合中科院提出基于交互感知注意力机制神经网络的行为分类技术

深度卷积神经网络中,特征图里相邻空间位置的局部通道特征,往往由于它们的感受野重叠而具有很高的相关性。自注意机制模型通常利用每个局部特征内部元素的加权和(或其他函...

1563
来自专栏机器之心

从浅层模型到深度模型:概览机器学习优化算法

选自arxiv 机器之心编译 参与:乾树、蒋思源 学习算法一直以来是机器学习能根据数据学到知识的核心技术。而好的优化算法可以大大提高学习速度,加快算法的收敛速度...

3757
来自专栏AI派

BAT机器学习/深度学习面试300题

机器学习这么火,BAT等一线互联网大厂当然是最大的需求方,想要成为 BAT 的机器学习工程师吗,快来看看这些面试题吧。

5659
来自专栏量子位

视觉目标检测和识别之过去,现在及可能

作者:李习华 知乎专栏:碧空的cv之旅 量子位 已获授权编辑发布 计算机视觉中目标检测、跟踪、识别是最基本的几个task,尤其又以检测最为重要和基础。同时基本上...

3777
来自专栏奇点大数据

机器学习算法在自动驾驶汽车中扮演怎样的角色

随着电子控制单元传感器数据处理这项技术的继续发展,人们也越来越期待运用更优化的机器学习,来完成更多新挑战。未来的潜在应用场景包括:通过内外部传感器(包括激光雷达...

1151

扫码关注云+社区