神经元模型

+神经网络定义:具有适应性的简单单元组成的广泛并行互联网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。是机器学习与神经网络这两个学科的交叉部分。
+神经元模型:一种简单单元,M-P神经模型如下图:

+具体描述:神经元接收到来自n个其他的神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”处理以产生神经元的输出。
\quad理想的激活函数为阶跃函数,‘1’对应于神经元的兴奋,‘0’对应于神经元的抑制,通常用Sigmoid函数作为激活函数。

将许多这样的神经元按照一定的层次连接起来即为神经网络。

感知机与多层神经网络

+感知机:由两层神经元组成,输入层接受外界输入信号以后传递给输出层,输出层是M-P神经元。可以很容易的实现逻辑“或与非”,结构如下图:

一般情况下,权重wi和阈值θw_i和阈值\theta可以通过学习得到。阈值\theta看做一个哑结点,对应权重\w_{i+1},这样,权重和阈值的学习就可统一为权重的学习。
调整策略:

wi=wi+Δwi;Δwi=η(y−y^)xi,η∈(0,1)为学习率

w_i =w_i+\Delta w_i;\Delta w_i =\eta(y-\hat y)x_i,\eta \in(0,1)为学习率
若感知机对训练样例(x,y)预测正确,即 y^=y\hat y =y,则感知机不发生变化,否则调整相应的参数。
+学习过程收敛
感知机的与或非问题都是线性可分问题,可以用一个超平面将他们分开
两层感知机解决异或问题:

f函数为 sigmoid函数
y1=f(x1+x2−0.5);y2=f(−x1−x2+1.5);y=y1+y2y_1 =f(x_1+x_2 -0.5);y_2 =f(-x_1-x_2+1.5);y=y_1+y_2

x1x_1 x2x_2 y1y_1 y2y_2 yy
0 0 0 1 0
1 0 1 1 1
0 1 1 1 1
1 1 1 0 0

满足x1⊕x2x_1 \oplus x_2 问题

多层前馈网络:

前馈:网络拓扑结构不存在环或回路。
多层网络:一定包含隐层
神经网络的学习过程:根据训练数据来调整神经元之间的“连接权”以及每个功能的阈值。

误差逆传播算法(反向传播算法,BP算法)

给定训练集:D=(x1,y1),(x2,y2),...,(xm,ym)D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)}
定义如下变量:
d:输入神经元个数
l:输出实值向量个数
q:隐层神经元个数
θj\theta_j:输出层第j个神经元阈值
υh\upsilon_h:隐层第h个神经元
vihv_{ih}:输入层第i个神经元与隐层第h个神经元之间的连接权
whjw_{hj}:隐层第h个神经元与输出层第j个神经元与之间的连接权
图示:

对训练集(xk,yk)(x_k,y_k),假定神经元的输出为y^k=(y^k1,y^k2,...,y^kl)\hat y_k =(\hat y_1^k, \hat y_2^k,...,\hat y_l^k),即:y^kj=f(βj−θj)⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅1\hat y_j^k =f(\beta_j -\theta_j)··········1
则网络在(xk,yk)(x_k,y_k)上的均方误差为:

Ek=12∑j=1l(y^kj−ykj)2.⋅⋅⋅⋅⋅⋅⋅⋅⋅2

E_k=\frac {1}{2} \sum_{j=1}^{l} (\hat y_j^k-y_j^k)^2.·········2

需要确定的参数
+输入层到隐层的权值q*d个
+隐层到输出层的权值q*l个
+隐层的阈值q个
+输出层的阈值l个

更新公式:对任一参数v:v←v+Δvv \gets v+\Delta v·············3
BP算法求解策略:梯度下降法
(http://blog.csdn.net/loveitlovelife/article/details/78991472)

:对隐层到输出层的权值调整:Δwhj=−η∂Ek∂whj\Delta w_{hj} =-\eta \frac {\partial E_k}{\partial w_hj}···········4

其中,η为学习率,Ek为误差;whj\eta为学习率,E_k为误差;w_{hj}为隐层第h个神经元到输出层第j个神经元的权值。
则:

∂Ek∂whj=∂Ek∂y^kj⋅∂y^kj∂βj∂βj∂whj⋅⋅⋅⋅⋅⋅⋅5

\frac {\partial E_k}{\partial w_hj}=\frac {\partial E_k}{\partial \hat y_j^k}·\frac {\partial \hat y_j^k}{\partial \beta_j}\frac {\partial \beta_j}{\partial w_hj}·······5
其中:
++由2式: ∂Ek∂y^kj=y^kj−ykj\frac {\partial E_k}{\partial \hat y_j^k}=\hat y_j^k-y_j^k;
++ ∂βj∂whj=bh\frac {\partial \beta_j}{\partial w_hj}=b_h;其中 bhb_h为第h个隐层神经元输出;

++由于1式为sigmoid函数,且函数有如下性质f’(x)=f(x)(1-f(x)),

则:

∂y^kj∂βj=y^kj⋅(1−y^kj)

\frac {\partial \hat y_j^k}{\partial \beta_j}=\hat y_j^k·(1-\hat y_j^k)
令: gj=−∂Ek∂y^kj⋅∂y^kj∂βj,⋅⋅⋅⋅⋅⋅⋅⋅6g_j =-\frac {\partial E_k}{\partial \hat y_j^k}·\frac {\partial \hat y_j^k}{\partial \beta_j},········6得到:

Δwhj=ηgjbh⋅⋅⋅⋅⋅⋅⋅⋅⋅7

\Delta w_{hj} =\eta g_jb_h·········7
类似可得:

Δθj=−ηgj;Δvih=ηehxi;Δυh=−ηeh⋅⋅⋅⋅⋅⋅⋅8

\Delta \theta_j =-\eta g_j;\Delta v_{ih}=\eta e_hx_i; \Delta \upsilon_h =-\eta e_h·······8推导过程:
http://blog.csdn.net/loveitlovelife/article/details/79075076
其中:

eh=−∂Ek∂bh⋅∂bh∂αh=−∑j=1l∂Ek∂βj⋅∂βj∂bh⋅f′(αh−υh)=∑j=1lwhjgjf′(αh−υh)=bh(1−bh)∑j=1lwhjgj⋅⋅⋅⋅⋅⋅9

e_h=-\frac {\partial E_k}{\partial b_h}·\frac {\partial b_h}{\partial \alpha_h}\\=-\sum_{j=1}^{l}\frac {\partial E_k}{\partial \beta_j}·\frac {\partial \beta_j}{\partial b_h}·f'(\alpha_h-\upsilon_h)\\=\sum_{j=1}^{l} w_{hj}g_jf'(\alpha_h-\upsilon_h)\\=b_h(1-b_h)\sum_{j=1}^{l}w_{hj}g_j······9

η\eta太大容易震荡,太小收敛过慢,一般情况下η=0.1\eta=0.1

BP算法执行以下操作:
\qquad将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层结果;然后计算输出层误差,再将误差逆向传播至隐层神经元,最后根据隐层神经元的误差来对连接权和阈值进行调整,该迭代过程循环进行,直到达到停止条件为止。
\qquad算法伪代码:
过程:
1. 在(0,1)范围内随机初始化网络中所有连接权和阈值
2. repeat
3. \quadfor all(xk,yk)∈D(x_k,y_k) \in D do
4. \qquad 根据当前参数和1式计算当前样本的输出y^k\hat y_k;
5. \qquad 根据6式计算输出层神经元的梯度项gjg_j;
6. \qquad 根据9式计算隐层神经元的梯度项ehe_h;
7. \qquad 根据7、8式更新连接权whj,vihw_{hj},v{ih}与阈值θj,υh\theta_j,\upsilon_h
8. \quadend for
9. until 达到停止条件
输出:连接权与阈值确定的多层前馈神经网络

累积误差:E=1m∑mk=1EkE =\frac{1}{m}\sum_{k=1}^{m}E_k
若基于累积误差最小化的更新规则,则得到累积BP算法,与标准的BP算计法相比:
\quad 标准BP算法:更新针对单个样例,更新频繁;累积BP算法:读取整个训练集D后才对参数进行更新,更新频率低;累积误差下降到一定程度以后进一步下降非常缓慢,此时标准BP会获得比较好的解,训练集非常大时更明显。

未解决的问题:设置隐层神经元的个数,实际应用中常用“试错法”调整。

过拟合解决办法:BP神经网络场遭遇过拟合,因此有以下两种方法解决过拟合:1.“早停(early stopping)”:当训练集误差变小,测试集误差上升时,停止训练,返回连接权和阈值;2.“正则化(regularization)”:在误差目标函数中增加用于描述网络复杂度的部分,例如连接权与权值的平方和(L2范数),此时误差目标函数为:E=λ1m∑mk=1Ek+(1−λ)∑iw2iE =\lambda \frac{1}{m}\sum{m}{k=1} E_k+(1-\lambda)\sum_i w_i^2

全局最小和局部最小

+概念
全局最小:所有点误差函数不小于该点函数值。
局部最小:邻域误差函数值不小于该点的函数值。

+寻优过程希望找到全局最小点
在BP算法寻找最小值过程中,若误差函数的梯度在当前点为0,则达到局部极小,未达到全局最小。

+达到全局最小的策略方法(启发式,无理论保障)
1.\quad 从多个不同的初始点开始搜索,可以获得接近全局最小的结果
2.\quad使用模拟退火技术,每一步以一定的概率接受比当前解更差的结果
3.\quad使用随机梯度下降
4.\quad遗传算法

神经元模型和BP网络相关推荐

  1. PyTorch 1.0 中文官方教程:序列模型和LSTM网络

    译者:ETCartman 之前我们已经学过了许多的前馈网络. 所谓前馈网络, 就是网络中不会保存状态. 然而有时 这并不是我们想要的效果. 在自然语言处理 (NLP, Natural Language ...

  2. 基于0-1择优规划模型和BP神经网络模型的对生产企业原材料的订购与运输的预测与分析

    目录 摘要.... 1 问题重述.... 1 1.1 问题背景.... 1 1.2 问题的提出.... 1 二.问题分析.... 1 2.1 问题一分析和基本思路.... 1 2.2 问题二分析和基本 ...

  3. bp神经网络隐含层神经元个数_CNN,残差网络,BP网络

    (以下实验均在MNIST中实现) 一.CNN与CNN改进的对比 众所周知,对于CNN卷积神经网络而言,随着卷积层数的增加,其模型的准确度也会增加.那模型层数和准确度是无限地成正比例关系吗?显然不是的, ...

  4. 从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了

    来源 | 网络工程师笔记 前言 今天和大家一起谈谈"网络",之前写的文章可能不太通俗易懂,有人就问我可不可以写些比较容易理解的文章,我想了想那就从头说起吧! 那么什么是网络呢? 百 ...

  5. 使用分层网络模型的两个优点是什么_从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了...

    从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了​mp.weixin.qq.com 前言 今天和大家一起谈谈"网络",之前写的文章可能不太通俗易懂,有人就 ...

  6. 第一章 OSI网络模型和TCP/ IP协议栈

    第一章 OSI网络模型和TCP/ IP协议栈 1.1 计算机网络的定义 计算机网络是指将若干台地理位置不同,且具有独立功能的计算机,通过通信设备和传输线路相互连接起来,按照一定的通讯规则进行通信,以实 ...

  7. 计算机网络之网络概述:6、TCP/IP模型和5层参考模型

    概述:6.TCP/IP模型和5层参考模型 TCP/IP模型: OSI参考模型与TCP/IP参考模型的相同点: OSI参考模型与TCP/IP参考模型的不同点: 5层参考模型: 总结: TCP/IP模型: ...

  8. java深度学习框架Deeplearning4j实战(一)BP网络分类器

    1.Deeplearning4j 深度学习,人工智能今天已经成了IT界最流行的词,而tensorflow,phython又是研究深度学习神经网络的热门工具.tensorflow是google的出品,而 ...

  9. 神经网络家族为何 BP 网络一枝独秀?谁能谈谈神经网络家族的兴衰史?

    来源:https://www.zhihu.com/question/364755843 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 从两个方面来问这个问题. 从网络结构上说,神经网络有五种典 ...

  10. matlab中sine wave出来的波形在示波器中是直线,已知仿真模型和Sine Wave模块的参数设置如下,则示波器的输出波形是...

    已知仿真模型和Sine Wave模块的参数设置如下,则示波器的输出波形是 答:A <UCP500>规定的交单期为"单据必须在提单日后15天内提交" ( ) 答:对 在环 ...

最新文章

  1. python3中的int类型占64位_在windows 10 64位计算机中,默认情况下,numpy数组数据类型将以int32形式出现...
  2. System.Windows.Forms命名空间的MessageBox.show()用法大全
  3. 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。
  4. go语言switch中判断多个值
  5. hibernate mysql annotation_Hibernate基于注解annotation的配置
  6. gradle下bug修正后问题仍存在解决思路
  7. golang之网络开发
  8. C++安全方向(三):3.8 openssl单项散列章节总结
  9. JSLint报错翻译
  10. oracle宣传片,会声会影X8震撼的宣传片效果该怎么制作?
  11. 软件界面布局调整推荐
  12. delay() 方法
  13. python转义字符表
  14. 抖音快手短视频去水印小程序解析接口API开发文档
  15. Zabbix错误:zbx_mem_malloc(): out of memory的解决方法
  16. 计算机网络维护服务承诺书,网络信息技术中心服务承诺书
  17. python爬取上市公司年报信息_爬取巨潮资讯制造业公司年报数据
  18. 【Linux】好玩的Linux命令(二)
  19. python字符映射表和字符替换
  20. 莱布尼兹是微积分奠基人吗?

热门文章

  1. Java NIO 详解
  2. MyBatis连接池的实现原理分析
  3. arcgis 经纬度转大地坐标_ArcGIS的地理坐标系与大地坐标系
  4. 时间管理表 - 《周计划表》
  5. request.getParameterValues()
  6. 计算机操作技能节,第十届知识技能节 网线制作竞赛方案
  7. 网站服务器 发包,如何实现CentOS不停向外发包_网站服务器运行维护,CentOS
  8. python arduino小车,搭建ROS小车底盘-第六篇ros_arduino_bridge功能包的使用
  9. 计算机综述(computer overview)
  10. jsp+ssm+mysql实现的校园二手市场交易平台视频教程