神经元模型和BP网络
神经元模型
+神经网络定义:具有适应性的简单单元组成的广泛并行互联网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。是机器学习与神经网络这两个学科的交叉部分。
+神经元模型:一种简单单元,M-P神经模型如下图:
+具体描述:神经元接收到来自n个其他的神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”处理以产生神经元的输出。
\quad理想的激活函数为阶跃函数,‘1’对应于神经元的兴奋,‘0’对应于神经元的抑制,通常用Sigmoid函数作为激活函数。
将许多这样的神经元按照一定的层次连接起来即为神经网络。
感知机与多层神经网络
+感知机:由两层神经元组成,输入层接受外界输入信号以后传递给输出层,输出层是M-P神经元。可以很容易的实现逻辑“或与非”,结构如下图:
一般情况下,权重wi和阈值θw_i和阈值\theta可以通过学习得到。阈值\theta看做一个哑结点,对应权重\w_{i+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)上的均方误差为:
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个神经元的权值。
则:
\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)),
则:
\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得到:
\Delta w_{hj} =\eta g_jb_h·········7
类似可得:
\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
其中:
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网络相关推荐
- PyTorch 1.0 中文官方教程:序列模型和LSTM网络
译者:ETCartman 之前我们已经学过了许多的前馈网络. 所谓前馈网络, 就是网络中不会保存状态. 然而有时 这并不是我们想要的效果. 在自然语言处理 (NLP, Natural Language ...
- 基于0-1择优规划模型和BP神经网络模型的对生产企业原材料的订购与运输的预测与分析
目录 摘要.... 1 问题重述.... 1 1.1 问题背景.... 1 1.2 问题的提出.... 1 二.问题分析.... 1 2.1 问题一分析和基本思路.... 1 2.2 问题二分析和基本 ...
- bp神经网络隐含层神经元个数_CNN,残差网络,BP网络
(以下实验均在MNIST中实现) 一.CNN与CNN改进的对比 众所周知,对于CNN卷积神经网络而言,随着卷积层数的增加,其模型的准确度也会增加.那模型层数和准确度是无限地成正比例关系吗?显然不是的, ...
- 从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了
来源 | 网络工程师笔记 前言 今天和大家一起谈谈"网络",之前写的文章可能不太通俗易懂,有人就问我可不可以写些比较容易理解的文章,我想了想那就从头说起吧! 那么什么是网络呢? 百 ...
- 使用分层网络模型的两个优点是什么_从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了...
从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了mp.weixin.qq.com 前言 今天和大家一起谈谈"网络",之前写的文章可能不太通俗易懂,有人就 ...
- 第一章 OSI网络模型和TCP/ IP协议栈
第一章 OSI网络模型和TCP/ IP协议栈 1.1 计算机网络的定义 计算机网络是指将若干台地理位置不同,且具有独立功能的计算机,通过通信设备和传输线路相互连接起来,按照一定的通讯规则进行通信,以实 ...
- 计算机网络之网络概述:6、TCP/IP模型和5层参考模型
概述:6.TCP/IP模型和5层参考模型 TCP/IP模型: OSI参考模型与TCP/IP参考模型的相同点: OSI参考模型与TCP/IP参考模型的不同点: 5层参考模型: 总结: TCP/IP模型: ...
- java深度学习框架Deeplearning4j实战(一)BP网络分类器
1.Deeplearning4j 深度学习,人工智能今天已经成了IT界最流行的词,而tensorflow,phython又是研究深度学习神经网络的热门工具.tensorflow是google的出品,而 ...
- 神经网络家族为何 BP 网络一枝独秀?谁能谈谈神经网络家族的兴衰史?
来源:https://www.zhihu.com/question/364755843 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 从两个方面来问这个问题. 从网络结构上说,神经网络有五种典 ...
- matlab中sine wave出来的波形在示波器中是直线,已知仿真模型和Sine Wave模块的参数设置如下,则示波器的输出波形是...
已知仿真模型和Sine Wave模块的参数设置如下,则示波器的输出波形是 答:A <UCP500>规定的交单期为"单据必须在提单日后15天内提交" ( ) 答:对 在环 ...
最新文章
- python3中的int类型占64位_在windows 10 64位计算机中,默认情况下,numpy数组数据类型将以int32形式出现...
- System.Windows.Forms命名空间的MessageBox.show()用法大全
- 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。
- go语言switch中判断多个值
- hibernate mysql annotation_Hibernate基于注解annotation的配置
- gradle下bug修正后问题仍存在解决思路
- golang之网络开发
- C++安全方向(三):3.8 openssl单项散列章节总结
- JSLint报错翻译
- oracle宣传片,会声会影X8震撼的宣传片效果该怎么制作?
- 软件界面布局调整推荐
- delay() 方法
- python转义字符表
- 抖音快手短视频去水印小程序解析接口API开发文档
- Zabbix错误:zbx_mem_malloc(): out of memory的解决方法
- 计算机网络维护服务承诺书,网络信息技术中心服务承诺书
- python爬取上市公司年报信息_爬取巨潮资讯制造业公司年报数据
- 【Linux】好玩的Linux命令(二)
- python字符映射表和字符替换
- 莱布尼兹是微积分奠基人吗?
热门文章
- Java NIO 详解
- MyBatis连接池的实现原理分析
- arcgis 经纬度转大地坐标_ArcGIS的地理坐标系与大地坐标系
- 时间管理表 - 《周计划表》
- request.getParameterValues()
- 计算机操作技能节,第十届知识技能节 网线制作竞赛方案
- 网站服务器 发包,如何实现CentOS不停向外发包_网站服务器运行维护,CentOS
- python arduino小车,搭建ROS小车底盘-第六篇ros_arduino_bridge功能包的使用
- 计算机综述(computer overview)
- jsp+ssm+mysql实现的校园二手市场交易平台视频教程