回声状态网络基础知识_肝血管瘤内回声成网络样

回声状态网络基础知识_肝血管瘤内回声成网络样http://jlearning.cn/2017/05/29/ESN-basic-tutorial/最近在看回声状态网络(EchoStateNetwork)的内容,注意到中文搜索引擎搜不到关于有关EchoStateNetwork通俗的讲解,打算写一下关于ESN的一个基本教程。本文先用一小段简单介绍ESN是什么,然后用公式来表示这种网络,并说明他的优缺点,最后用一个可执行的简单例子来演示…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

http://jlearning.cn/2017/05/29/ESN-basic-tutorial/

最近在看回声状态网络(Echo State Network)的内容,注意到中文搜索引擎搜不到关于有关Echo State Network通俗的讲解,打算写一下关于ESN的一个基本教程。本文先用一小段简单介绍ESN是什么,然后用公式来表示这种网络,并说明他的优缺点,最后用一个可执行的简单例子来演示一下ESN的效果。

由于本人能力有限,如在阅读过程中有任何疑问或者发现错误请在评论中指出。

ESN是RNN的一种,也是由输入层,隐藏层,输出层组成,并且在隐藏层到隐藏层之间有一个连接,用来保留前面时刻留下的信息。不同于RNN,ESN的输入层到隐藏层、隐藏层到隐藏层的连接权值是随机初始化,并且固定不变。在训练的过程中,我们只需要去训练隐藏层到输出层的连接权值。这就变成了一个线性回归问题,所以ESN训练起来非常快。

微信截图_20170529161715

ESN的神经网络如图所示,储备池就是常规神经网络中的隐藏层。输入层到储备池的连接为Win,储备池到下一个时刻储备池状态的连接为W,储备池到输出层的连接为Wout。另外还有一个前一时刻的输出层到下一个时刻的储备池的连接Wback,这个连接不是必须的(图中用虚线表示),由于这是一个入门级的基础教程,所以在后面的公式和例子代码中都不会涉及这一个连接。

图中所示,tt时刻的输入为u(t)u(t),一共K个节点,储备池状态为x(t)x(t),N个节点,输出为y(t)y(t),L个节点。

每一个时刻输入u(t)u(t),储备池都会更新状态,储备池的状态更新方式为:

 

x(t+1)=f(Winu(t+1)+Wx(t))x(t+1)=f(Winu(t+1)+Wx(t))

 

这个式子里,WinWin和WW都是在最初建立网络的时候随机初始化的,并且固定不变。u(t+1)u(t+1)是这个时刻的输入,x(t)x(t)是上一个时刻的储备池状态,在t=0时刻可以用0初始化。ff是一个激活函数,通常使用tanhtanh。

在建模的时候,和一般的神经网络一样,会在连接矩阵上加上一个偏置量,所以输入的uu是一个长度为1+K的向量,WinWin是一个[1+k,N]的矩阵,xx是一个长度为N的向量,WW是一个[N,N]的矩阵。

回声状态网络的输出方式为:

 

y(t)=Wout[1;u(t);x(t)]y(t)=Wout[1;u(t);x(t)]

 

有了储备池状态,再确定了ESN的输出方式之后,就可以根据目标输出ytargetytarget来确定WoutWout来让y(t)y(t)和ytarget(t)ytarget(t)的差距尽可能的小。这是一个简单的线性回归问题,计算的方法有很多种,不再赘述。

微信截图_20170529170125

到这里,我们就完成了ESN的训练工作。整个网络只需要训练WoutWout,所以它的训练过程非常快,这是ESN的优点之一。另外,对于一维时序数列的处理和预测,ESN有很好的优势。但对于高维的时序数列,比如说视频帧处理,ESN就不太能胜任了。

为了让这个网络能够正常的运转,还有一些地方是需要注意的:

  1. 之所以叫回声状态网络,是因为前面时刻输入的信息会通过WW回回荡在储备池中,就像回声一样。为了避免储备池状态爆炸,WW的特征值必须要小于等于1。这也就引入了ESN中谱半径的概念:WW的最大特征值。
  2. 由于网络中只有WoutWout是可变的,为了尽可能多的表示不同的数据规律,WW必须要设置的非常大,才能从中找出各种不同的特征进行输出。另一方面,WW的稀疏性也很重要,Hinton在多伦多大学的公开课里解释是:

建立一个松散的连接,这样某一信息可以在网络中的一小部分回荡,而不会迅速的传播到其他部分。

我不是特别的理解。希望有人解释一下。

最后引用一个例子来彻底理解最基本的ESN。

在页面中下载python源码和数据集,在python2.7环境中运行。

数据就是一维的,代码中每次输入长度为1,预测数据中后一位的值,当然长度也是1。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179507.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何使用Powershell脚本监控Exchange2010(前言)

    如何使用Powershell脚本监控Exchange2010(前言)

    2021年8月15日
    57
  • 电脑如何进行截图识别

    电脑如何进行截图识别使用电脑的时候,我们经常会用到很多快捷键,就比如说截图,当我们把需要的文字内容截图之后,如何才能顺手把截图中的文字转换成word文字呢,下面小编分享一个简单的方法,在把文字内容截图之后直接可以转换成文字的方法。使用工具:迅捷OCR文字识别软件;操作方法:第一步:大家可以通过浏览器搜索关键词“OCR文字识别软件”找到该文字识别软件;第二步:在电脑上运行文字识别软件,点击左边功能栏中的“截图识别”功…

    2022年6月5日
    73
  • java中jvm面试题_mysql基础面试题及答案

    java中jvm面试题_mysql基础面试题及答案Jvm面试题及答案(Jvm面试题大全带答案)发现网上很多Jvm面试题及答案整理都没有答案,所以花了很长时间搜集,本套Jvm面试题大全,有大量经典的Jvm面试题以及答案,包含Jvm语言常见面试题、面试经验技巧等,应届生,实习生,企业工作过的,都可参考学习!如果不背Jvm面试题的答案,肯定面试会挂!这套Jvm面试题大全,希望对大家有帮助哈~博主已将以下这些面试题整理成了一个面试手册,是PDF版的1、ZGC了解吗?JDK11中加入的具有实验性质的低延迟垃圾收集器,目标是尽可能在不影响吞吐

    2022年8月28日
    1
  • python教程:用简单的Python编写Web应用程序

    python教程:用简单的Python编写Web应用程序python现在已经成为很多程序员关注的编程语言之一,很多程序员也都开始弄python编程,并且很多时候都会用自己的操作来选择,而现在不管是程序员还是少儿编程,都会有python这门课,今天就和大家分

    2022年7月6日
    21
  • Python读取文件时出现UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position xx: 解决方案[通俗易懂]

    Python读取文件时出现UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position xx: 解决方案[通俗易懂]Python在读取文件时withopen(‘article.txt’)asf:#打开新的文本text_new=f.read()#读取文本数据出现错误:UnicodeDecodeError:’gbk’codeccan’tdecodebyte0x80inposition145:illegalmultibytesequence此…

    2022年9月13日
    0
  • 程序员法则 – 第二章[通俗易懂]

    程序员法则 – 第二章[通俗易懂]程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。  /*  */  燥热的8月即将过去,而我也坐上了重庆开往西安的列车。抱上我心爱的笔记本,载着梦想,7小时后,我就能到达那个我要呆上我整整四年的城市了。  我放好行李,把笔记本放在身边,挥手和来给我送别的母亲道别。我微微闭上眼睛,小睡7小时吧,我想着。我是属于那种带点自闭的性格,别人不找我说话,我绝对不会主动搭讪,但

    2022年10月6日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号