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 条评论
登录 后参与评论

相关文章

来自专栏磐创AI技术团队的专栏

深度学习中的正则化技术概述(附Python+keras实现代码)

821
来自专栏人工智能LeadAI

R-CNN目标检测第三弹(Faster R-CNN)

今天,重看了 R-CNN 的终极改进版本 Faster R-CNN(NIPS 版)-本文提到的paper,若为特别指明,说的就是此版本。 先说一个学术趣事吧,...

3908
来自专栏量子位

一文看懂迁移学习:怎样用预训练模型搞定深度学习?

瀚宸 编译自 Analytics Vidhya 量子位 出品 | 公众号 QbitAI 引言 跟传统的监督式机器学习算法相比,深度神经网络目前最大的劣势是什么?...

4565
来自专栏专知

【深度学习进阶模型详解】概率图模型/深度生成模型/深度强化学习,复旦邱锡鹏老师《神经网络与深度学习》教程分享05(附pdf下载)

【导读】复旦大学副教授、博士生导师、开源自然语言处理工具FudanNLP的主要开发者邱锡鹏(http://nlp.fudan.edu.cn/xpqiu/)老师撰...

5636
来自专栏人工智能LeadAI

BAT机器学习面试1000题系列(第76~149题)

76、看你是搞视觉的,熟悉哪些CV框架,顺带聊聊CV最近五年的发展史如何?深度学习 DL应用 难 原英文:adeshpande3.github.io 作者:Ad...

5918
来自专栏用户2442861的专栏

深层学习为何要“Deep”(上)

http://blog.csdn.net/u010751535/article/details/52739803

1031
来自专栏大数据挖掘DT机器学习

机器学习算法基础知识

在我们了解了需要解决的机器学习问题的类型之后,我们可以开始考虑搜集来的数据的类型以及我们可以尝试的机器学习算法。在本文中,小编会介绍一遍最流行的机器学习算法。...

3027
来自专栏数据科学与人工智能

【机器学习】实例详解机器学习如何解决问题

前言 随着大数据时代的到来,机器学习成为解决问题的一种重要且关键的工具。不管是工业界还是学术界,机器学习都是一个炙手可热的方向,但是学术界和工业界对机器学习的...

2136
来自专栏数据科学与人工智能

【数据挖掘】解码数据降维:主成分分析(PCA)和奇异值分解(SVD)

译者按:当拥有非常高纬度的数据集时,给数据降低纬度对于分析来说是非常重要的。降维要求分析人员在最大程度降低数据纬度的同时,尽可能多的保留原数据中包含的信息。主成...

37310
来自专栏机器之心

学界 | CMU、NYU与FAIR共同提出GLoMo:迁移学习新范式

深度学习的最新进展很大程度上依赖于诸如卷积网络(CNN)[ 18 ] 和循环网络(RNN)[ 14 ] 之类的架构及注意力机制 [ 1 ]。这些架构虽然具有较高...

1080

扫码关注云+社区