sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程)

https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share

http://www.hahack.com/reading/ann2/

上一次我们讲了M-P模型,它实际上就是对单个神经元的一种建模,还不足以模拟人脑神经系统的功能。由这些人工神经元构建出来的网络,才能够具有学习、联想、记忆和模式识别的能力。BP网络就是一种简单的人工神经网络。我们的第二话就从BP神经网络开始漫谈吧。

BP的来源

“时势造英雄”,一个伟大的人物的登场总是建立在历史的需求之下,所以我们剖析一个人,得先看看他的出身时代。同样的道理,在讲BP网络的特性和用途之前,我们需要先了解一下它的来源和诞生原因,以便理解它的重要性。

1.1 最简单的神经网络结构——感知器

在1958年,美国心理学家Frank Rosenblatt提出一种具有单层计算单元的神经网络,称为感知器(Perceptron)。它其实就是基于M-P模型的结构。我们可以看看它的拓扑结构图。

这个结构非常简单,如果你还记得前面所讲的M-P神经元的结构的话,这个图其实就是输入输出两层神经元之间的简单连接(如果忘了可以看看第一话的模型示意图)。

由第一话的(2)中我们知道输入层各节点的输入加权和

net′j=∑i=1nωijxinetj′=∑i=1nωijxi

我们一般采用符号函数来当作单层感知器的传递函数,即输出

oj=sgn(net′j−Tj)=sgn(∑i=0nωijxi)=sgn(WTjX)oj=sgn(netj′−Tj)=sgn(∑i=0nωijxi)=sgn(WjTX)

公式(2)可以进一步表达为:

oj={1−1,,WTjX>0WTjX<0oj={1,WjTX>0−1,WjTX<0

1.2 风中之烛——单层感知器的局限性

虽然单层感知器简单而优雅,但它显然不够聪明——它仅对线性问题具有分类能力。什么是线性问题呢?简单来讲,就是用一条直线可分的图形。比如,逻辑“与”和逻辑“或”就是线性问题,我们可以用一条直线来分隔0和1。

1)逻辑“与”的真值表和二维样本图如图2:

2)逻辑“或”的真值表如图3:

为什么感知器就可以解决线性问题呢?这是由它的传递函数决定的。这里以两个输入分量 x1x1 和 x2x2 组成的二维空间为例,此时节点 jj 的输出为

oj={1−1,,   ω1jx1+ω2jx2−Tj>0   ω1jx1+ω2jx2−Tj<0oj={1,   ω1jx1+ω2jx2−Tj>0−1,   ω1jx1+ω2jx2−Tj<0

所以,方程

ω1jx1+ω2jx2−Tj=0ω1jx1+ω2jx2−Tj=0

确定的直线就是二维输入样本空间上的一条分界线。对于三维及更高维数的推导过程可以参考其他的Tutorials。

如果要让它来处理非线性的问题,单层感知器网就无能为力了。例如下面的“异或”,就无法用一条直线来分割开来,因此单层感知器网就没办法实现“异或”的功能。

仅对线性可分问题具有分类能力,这就是单层感知器的局限所在。显然它能够解决的实际问题是很有限的。也正因为这样,单层感知器在解决实际问题时很少被采用。

1.3 心有余而力不足——多层感知器的瓶颈

既然一条直线无法解决分类问题,当然就会有人想到用弯曲的折线来进行样本分类。我们常常听到一句批评人笨的话“你这人脑袋就是不会转弯!”大意就是如此,脑袋会转弯的人才善于解决问题。所以,人们请来了单层感知器他哥——多层感知器来帮忙。所谓多层感知器,就是在输入层和输出层之间加入隐层,,以形成能够将样本正确分类的凸域。多层感知器的拓扑结构如图5所示。

我们可以比较一下单层感知器和多层感知器的分类能力:

由上图可以看出,随着隐层层数的增多,凸域将可以形成任意的形状,因此可以解决任何复杂的分类问题。实际上,Kolmogorov理论指出:双隐层感知器就足以解决任何复杂的分类问题。

多层感知器确实是非常理想的分类器,但问题也随之而来:隐层的权值怎么训练?对于各隐层的节点来说,它们并不存在期望输出,所以也无法通过感知器的学习规则来训练多层感知器。因此,多层感知器心有余而力不足,虽然武功高强,但却无力可施。

1.4 山重水复疑无路——ANN的低潮期

1966年,Minisky和Papert在他们的《感知器》一书中提出了上述的感知器的研究瓶颈,指出理论上还不能证明将感知器模型扩展到多层网络是有意义的。这在人工神经网络的历史上书写了极其灰暗的一章。对ANN的研究,始于1890年开始于美国著名心理学家W.James对于人脑结构与功能的研究,半个世纪后W.S.McCulloch和W.A.Pitts提出了M-P模型,之后的1958年Frank Rosenblatt在这个基础上又提出了感知器,此时对ANN的研究正处在升温阶段,《感知器》这本书的出现就刚好为这刚刚燃起的人工神经网络之火泼了一大盆冷水。一时间人们仿佛感觉对以感知器为基础的ANN的研究突然间走到尽头,看不到出路了。于是,几乎所有为ANN提供的研究基金都枯竭了,很多领域的专家纷纷放弃了这方面课题的研究。

1.5 柳暗花明又一村——ANN研究的复苏和BP神经网络的诞生

所以说真理的果实总是垂青于能够忍受寂寞的科学家。尽管ANN的研究陷入了前所未有的低谷, 但仍有为数不多的学者忍受住寂寞,坚持致力于ANN的研究。在长达10年的低潮时期之间,相 继有一些开创性的研究成果被提出来,但还不足以激起人们对于ANN研究的热情。一直到上世 纪80年代,两个璀璨的成果诞生了:1982年美国加州理工学院的物理学家John J.Hopfield博 士的Hopfield网络和David E.Rumelhart以及James L.McCelland研究小组发表的《并行分布 式处理》。这两个成果重新激起了人们对ANN的研究兴趣,使人们对模仿脑信息处理的智能计 算机的研究重新充满了希望。

前者暂不讨论,后者对具有非线性连续变换函数的多层感知器的误差反向传播(Error Back Propagation)算法进行了详尽的分析,实现了 Minsky 关于多层网络的设想。Error Back Propagation算法的简称就是BP算法,以BP算法实现的多层感知器网络就是BP网络。

所以,BP网络本质上并不是一个新的网络,而是使用BP学习算法的多层感知器网络。

BP算法的基本思想

前面我们说到,多层感知器在如何获取隐层的权值的问题上遇到了瓶颈。既然我们无法直接得到隐层的权值,能否先通过输出层得到输出结果和期望输出的误差来间接调整隐层的权值呢?BP算法就是采用这样的思想设计出来的算法,它的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。

  • 正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播阶段。
  • 反向传播时,将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。

图8就是BP算法的信号流向图。

BP网络特性分析——BP三要素

我们分析一个ANN时,通常都是从它的三要素入手,即1)网络拓扑结构;2)传递函数;3)学习算法。如图9所示。

每一个要素的特性加起来就决定了这个ANN的功能特性。所以,我们也从这三要素入手对BP网络的研究。

3.1 BP网络的拓扑结构

前面已经说了,BP网络实际上就是多层感知器,因此它的拓扑结构和多层感知器的拓扑结构(图5)相同。由于单隐层(三层)感知器已经能够解决简单的非线性问题,因此应用最为普遍。三层感知器的拓扑结构如图10所示。

3.2 BP网络的传递函数

BP网络采用的传递函数是非线性变换函数——Sigmoid函数(又称S函数)。其特点是函数本身及其导数都是连续的,因而在处理上十分方便。为什么要选择这个函数,等下在介绍BP网络的学习算法的时候会进行进一步的介绍。S函数有单极性S型函数和双极性S型函数两种,单极性S型函数定义如下:

f(x)=11+e−xf(x)=11+e−x

其函数曲线如图11所示。

双极性S型函数定义如下:

f(x)=1−e−x1+e−xf(x)=1−e−x1+e−x

其函数曲线如图12所示。

3.3 BP网络的学习算法

BP网络的学习算法就是BP算法,又叫 δδ 算法(在ANN的学习过程中我们会发现不少具有多个名称的术语), 以三层感知器为例,当网络输出与期望输出不等时,存在输出误差 EE ,定义如下

E=12(d−O)2=12∑κ=1ℓ(dk−ok)2E=12(d−O)2=12∑κ=1ℓ(dk−ok)2

将以上误差定义式展开至隐层,有

E=12∑κ=1ℓ[dκ−f(netκ)]2=12∑κ=1ℓ[dκ−f(∑j=0mωjκyj)]2E=12∑κ=1ℓ[dκ−f(netκ)]2=12∑κ=1ℓ[dκ−f(∑j=0mωjκyj)]2

进一步展开至输入层,有

E=12∑κ=1ℓ{dκ−f[∑j=0mωjκf(netj)]}2=12∑κ=1ℓ{dκ−f[∑j=0mωjκf(∑j=0nυijχi)]}2E=12∑κ=1ℓ{dκ−f[∑j=0mωjκf(netj)]}2=12∑κ=1ℓ{dκ−f[∑j=0mωjκf(∑j=0nυijχi)]}2

由上式可以看出,网络输入误差是各层权值ωjκωjκ、υijυij的函数,因此调整权值可改变误差 EE。 显然,调整权值的原则是使误差不断减小,因此应使权值与误差的梯度下降成正比,即

Δωjκ=−η∂E∂ωjκj=0,1,2,…,m;κ=1,2,…,ℓΔωjκ=−η∂E∂ωjκj=0,1,2,…,m;κ=1,2,…,ℓ
Δυij=−η∂E∂υiji=0,1,2,…,n;j=1,2,…,mΔυij=−η∂E∂υiji=0,1,2,…,n;j=1,2,…,m

对于一般多层感知器,设共有 hh 个隐层,按前向顺序各隐层节点数分别记为 m1,m2,…,mhm1,m2,…,mh,各隐层输出分别记为 y1,y2,…,yhy1,y2,…,yh,各层权值矩阵分别记为 W1,W2,…,Wh,Wh+1W1,W2,…,Wh,Wh+1,则各层权值调整公式为

输出层

Δωh+1jκ=ηδh+1κyhj=η(dκ−oκ)oκ(1−oκ)yκjj=0,1,2,…,mh;κ=1,2,…,ℓΔωjκh+1=ηδκh+1yjh=η(dκ−oκ)oκ(1−oκ)yjκj=0,1,2,…,mh;κ=1,2,…,ℓ

第 hh 隐层

Δωhij=ηδhjyhi−1=η(∑lκ=1δoκωh+1jκyκj(1−ykjappa)yhi−1i=0,1,2,…,m(h−1);j=1,2,…,mhΔωijh=ηδjhyih−1=η(∑κ=1lδκoωjκh+1yjκ(1−yjkappa)yih−1i=0,1,2,…,m(h−1);j=1,2,…,mh

按以上规律逐层类推,则第一隐层权值调整公式

Δω1pq=ηδ1qχp=η(∑m2r=1δ2rω2qr)y1q(1−y1q)χpp=0,1,2,…,n;j=1,2,…,m1Δωpq1=ηδq1χp=η(∑r=1m2δr2ωqr2)yq1(1−yq1)χpp=0,1,2,…,n;j=1,2,…,m1

容易看出,BP学习算法中,各层权值调整公式形式上都是一样的,均由3个因素决定,即:

  • 学习率 ηη
  • 本层输出的误差信号 δδ
  • 本层输入信号 YY(或XX)

其中输入层误差信号与网络的期望输出与实际输出之差有关,直接反应了输出误差,而各隐层的误差信号与前面各层的误差信号有关,是从输出层开始逐层反传过来的。

可以看出BP算法属于δδ学习规则类,这类算法常被称为误差的梯度下降算法。δδ学习规则可以看成是Widrow-Hoff(LMS)学习规则的一般化(generalize)情况。LMS学习规则与神经元采用的变换函数无关,因而不需要对变换函数求导,δδ学习规则则没有这个性质,要求变换函数可导。这就是为什么我们前面采用Sigmoid函数的原因。

综上所述,BP三要素如图13所示。

BP网实例

由于BP网络具有出色的非线性映射能力、泛化能力和容错能力,因此BP网络成了至今为止应用最广泛的人工神经网络。图14是Matlab下用BP网络做线性拟合的结果,效果很好。

python信用评分卡建模和风控常识(博客主亲自录制视频教程)

神经网络4_BP神经网络的更多相关文章

  1. 秒懂神经网络---BP神经网络具体应用不能说的秘密.

    秒懂神经网络---BP神经网络具体应用不能说的秘密 一.总结 一句话总结: 还是要上课和自己找书找博客学习相结合,这样学习效果才好,不能单视频,也不能单书 BP神经网络就是反向传播神经网络 1.BP神 ...

  2. [DL学习笔记]从人工神经网络到卷积神经网络_1_神经网络和BP算法

    前言:这只是我的一个学习笔记,里边肯定有不少错误,还希望有大神能帮帮找找,由于是从小白的视角来看问题的,所以对于初学者或多或少会有点帮助吧. 1:人工全连接神经网络和BP算法 <1>:人工 ...

  3. 深度学习原理与框架-Tensorflow卷积神经网络-卷积神经网络mnist分类 1.tf.nn.conv2d(卷积操作) 2.tf.nn.max_pool(最大池化操作) 3.tf.nn.dropout(执行dropout操作) 4.tf.nn.softmax_cross_entropy_with_logits(交叉熵损失) 5.tf.truncated_normal(两个标准差内的正态分布)

    1. tf.nn.conv2d(x, w, strides=[1, 1, 1, 1], padding='SAME')  # 对数据进行卷积操作 参数说明:x表示输入数据,w表示卷积核, stride ...

  4. 洛谷P1038 神经网络==codevs1088 神经网络

    P1038 神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神 ...

  5. 神经网络(4)---神经网络是如何帮助我们学习复杂的nonlinear hypotheses

    神经网络是如何一步步进行计算的,以及对计算过程的向量化 Z1(2),Z2(2),Z3(2) are just weighted linear combination of input value x1 ...

  6. R_Studio(神经网络)BP神经网络算法预测销量的高低

    BP神经网络 百度百科:传送门 BP(back propagation)神经网络:一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络 #设置文件工作区间 setwd('D:\\ ...

  7. 单层感知机_线性神经网络_BP神经网络

    单层感知机 单层感知机基础总结很详细的博客 关于单层感知机的视频 最终y=t,说明经过训练预测值和真实值一致.下面图是sign函数 根据感知机规则实现的上述题目的代码 import numpy as ...

  8. 马里奥AI实现方式探索 ——神经网络+增强学习

    [TOC] 马里奥AI实现方式探索 --神经网络+增强学习 儿时我们都曾有过一个经典游戏的体验,就是马里奥(顶蘑菇^v^),这次里约奥运会闭幕式,日本作为2020年东京奥运会的东道主,安倍最后也已经典 ...

  9. stanford coursera 机器学习编程作业 exercise4--使用BP算法训练神经网络以识别阿拉伯数字(0-9)

    在这篇文章中,会实现一个BP(backpropagation)算法,并将之应用到手写的阿拉伯数字(0-9)的自动识别上. 训练数据集(training set)如下:一共有5000个训练实例(trai ...

随机推荐

  1. GitHub大佬:供计算机学习鉴黄功能的图片数据库

    ps:学无止境 想要构建一套鉴黄系统,必须有大量的真实图片供计算机进行学习,以便于区分开正常图片和黄色图片. 近期有位加拿大程序员在Github上传了图片列表,里面包含了大量图片地址可以供计算机进行学 ...

  2. JavaScript——JS屏蔽F12和右键

    键盘表 来源:http://www.phpweblog.net/kiyone/archive/2007/04/19/1138.html 通过onkeydowm监听键盘按下事件,并修改键盘码 //禁止F ...

  3. [洛谷P1272] 重建道路

    类型:树形背包 传送门:>Here< 题意:给出一棵树,要求断开$k$条边来分离出一棵有$P$个节点的子树.求最小的$k$ 解题思路 和上一题类型相同,但不那么好做了——分离出的一棵子树肯 ...

  4. Codeforces379 F. New Year Tree

    Codeforces题号:#379F 出处: Codeforces 主要算法:LCA+树的直径 难度:4.4 思路分析: 给出q个操作,每次在一个节点上接上两个叶子.每一次询问树的直径. 暴力做法:每 ...

  5. Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) A - D2

    A. Be Positive 链接:http://codeforces.com/contest/1130/problem/A 题意: 给一段序列,这段序列每个数都除一个d(−1e3≤d≤1e3)除完后 ...

  6. tp5命令行基础介绍

    查看指令 生成模块 生成文件 生成类库映射文件 生成路由缓存文件 生成数据表字段缓存文件 指令扩展示例 命令行调试 命令行颜色支持 调用命令 查看指令 命令行工具需要在命令行下面执行,请先确保你的ph ...

  7. genymotion ddms查看data等文件目录

    使用ADB shell 命令: 打开 Cmd  ,输入  ADB shell 命令后,回车(前提是你已经配置好了adb 的环境变量,跟配置Java的环境变量一样); 输入su回车,获取超级管理员权限 ...

  8. luogu3292 幸运数字 (点分治+线性基)

    首先第一眼是一个倍增套线性基,但是$O(Qlog^2Vlog^N)=10^{10}$的复杂度... 即使是st表也只是变成了$O(Nlog^2Vlog^N)$啊 考虑点分治,相对于倍增显著减少了线性基 ...

  9. poj 3414 Pots(bfs+输出路径)

    Description You are given two pots, having the volume of A and B liters respectively. The following ...

  10. MySQL课堂小测

    目录 一.基本知识与操作方法 二.小测具体内容 (一)向数据库表中添加记录 (二)下载并导入world.sql (三)数据库查询与输出 (四)查询数据库并求某字段和 (五)查询数据库并取最大& ...