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

相关文章

来自专栏机器学习、深度学习

人群场景分析--Slicing Convolutional Neural Network for Crowd Video Understanding

Slicing Convolutional Neural Network for Crowd Video Understanding CVPR2016 h...

1907
来自专栏机器学习、深度学习

人脸对齐--Face Alignment In-the-Wild: A Survey

Face Alignment In-the-Wild: A Survey Computer Vision and Image Understanding ...

2986
来自专栏机器学习算法全栈工程师

机器学习(一)集成学习

1. 关于集成学习的概念   集成学习是机器学习中一个非常重要且热门的分支,是用多个弱分类器构成一个强分类器,其哲学思想是“三个臭皮匠赛过诸葛亮”。一般的弱分类...

3258
来自专栏机器学习、深度学习

人群计数--Cross-scene Crowd Counting via Deep Convolutional Neural Networks

Cross-scene Crowd Counting via Deep Convolutional Neural Networks CVPR2015 本文主...

2366
来自专栏社区的朋友们

机器学习概念总结笔记(三)

C4.5 算法有如下优点:产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。此外,C4....

5441
来自专栏云时之间

《统计学习方法》笔记

1:统计学习方法概论 1.1:统计学习特点,统计学习是关于计算机基于数据构建概率统计模型并运用模型进行数据分析和预测的一门学科。统计学习也称为统计机器学习 西...

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

【干货】词向量之DNN模型

1 词向量 在NLP里,最细的粒度是词语,由词语再组成句子,段落,文章。所以处理NLP问题时,怎么合理的表示词语就成了NLP领域中最先需要解决的问题。 因为语...

3814
来自专栏TonyZhou的专栏

CTR 预估模型的进化之路

笔者对各大厂商 CTR 预估模型的优缺点进行对比,并结合自身的使用和理解,梳理出一条 CTR 预估模型的发展脉络,希望帮助到有需要的同学。

9K4
来自专栏AlgorithmDog的专栏

超快的 fastText

Word2Vec 作者、脸书科学家 Mikolov 文本分类新作 fastText:方法简单,号称并不需要深度学习那样几小时或者几天的训练时间,在普...

24210
来自专栏WesleyJiang的专栏

《 NEXT 技术快报》:计算机视觉篇(下)

图像生成是计算机视觉中非常重要的一类问题,也有着很长的研究历史。同时这一类问题也和动画制作有着紧密的关联。广义的说来,凡是生成新的图像内容的相关问题都可以归为图...

2050

扫码关注云+社区