zoukankan      html  css  js  c++  java
  • ESN简介

    0. 前言

    通常神经网络的问题:

    • 参数如何选择
    • 何时停止训练
    • 局部最优解

    1. 回声网络ESN

    具有以下特点:

    • 大且稀疏生物连接,RNN被当做一个动态水库
    • 动态水库可以由输入或/和输出的反馈激活
    • 水库的连接权值不会被训练改变?
    • 只有水库的输出单元的权值随训练改变,因此训练是一个线性回归任务

    假设有ESN是一个可调谐的sin波生成器:

    • 黑色箭头是指固定的输入和反馈连接
    • 红色箭头指可训练的输出连接
    • 灰色表示循环内连接的动态水库

    典型RNN存在的问题:

    • 没有明确的终止条件
    • 通常这些算法收敛速度慢和/或导致次优解
    • ESN使用大循环水库(50-1000),而RNN通常只用到5-30个神经元

    为什么需要循环神经网络:

    • 如果人们想要模拟、预测、过滤、分类或控制非线性动力系统,就需要一个可执行的系统模型
    • 通常获得分析模型是不可行的,因此必须使用黑箱建模技术
    • 对于线性系统,可以使用有效的黑箱建模方法
    • RNNs可用于非线性动力系统的建模

    为什么使用ESN:

    • 统计信号处理的典型方法是建立在三个基本假设:线性、稳定和高斯分布。为了便于数学计算而引入的假设。

    • 大多数的实际物理信号是由动态过程产生,这些过程是非线性的、非稳定的和非高斯的

    • ESNs和一般RNNs在非线性领域推广了简单的自适应线性滤波器,可用于任何非线性动力系统的建模

    输入到水库是全连接,水库到输出是全连接,水库内部不是全连接

    ESN描述:

    • 水库有N个内部网络单元
    • 在时刻(n geq 1),输入是(u(n)),输出是(y(n))
    • 内部单元的激活是一个(N*1)向量:(x(n)=(x_1(n), ...,x_N(n)))
    • 水库内部连接表示为一个(N*N)的矩阵(W),表示内部的拓扑结构以及连接的权值
    • 输入权值表示为(N*1)的向量(w^{in})
    • 输出权值表示为((N+1)*1)的向量(w^{out})
      • 因为有水库输出权值连接(N),以及输入到输出的连接(1),所以为((N+1))长度的向量

    非线性系统描述:

    • (x(n+1)=f(Wx(n)+w^{in}u(n+1)+v(n+1)))

      • 每个神经元都和输入、部分神经元连接,
    • (y(n+1)=f^{out}(w^{out}(u(n+1),x(n+1))))

    内部状态(x(n))指的是什么?

    在确定条件下网络状态逐渐独立于初始状态,并只依赖于输入历史,体现网络的记忆能力:

    • (W)有谱半径(|lambda_{max}|>1),谱半径是矩阵的最大特征值,此时就会丢失回声特性,需要对其做归一化处理,(W_{new}=W/|lambda_{max}|)

      • 为了保证系统稳定能够收敛,需要将(Wx=y)的输出(y)小于输入(x)(W_{new}=W/|lambda_{max}|)
      • 特征值的概念就是方阵在特征向量上的投影,特征向量相当于是空间中的一组基,所以特征值相当于是方阵在一组基上的半径。谱半径是这种半径的最大值,也就是最大特征值。除以(lambda_{max})相当于归一化。
    • (W)最好是稀疏矩阵

    • 通常(W)是由([-1,1])的均匀分布随机生成,然后使用(|lambda_{max}|)做归一化处理使谱半径(alpha)小于1,(alpha)是ESN成功的重要参数,小的(alpha)对应快的信号,大的(alpha)对应慢信号和更长的短时记忆。

    在训练时我们计算输出权值,误差描述为:

    (e_{train}(n) = (f^{out})^{-1}y_{teach}(n)-w^{out}(u_{teach}(n),x(n)))

    离线训练算法过程:

    • 初始化(W),保证其谱半径(alpha<1),用输入的教师信号运行ESN
    • 从初始瞬态中消除数据,并将剩余的输入和网络状态((u_{teach}(n);x_{teach}(n)))按行收集到矩阵(M)
    • 收集训练信号((f^{out})^{-1}y_{teach}(n))到向量(r)
    • (w^{out}=(M^{-1}r)^T)
      • 实质上是求解(y(n+1)=f^{out}(w^{out}(u(n+1),x(n+1))))
      • 假设(y(n)=w^{out}(u(n), x(n))),并且(U(t) = (u(t), x(t))),则有(w^{out}=y(n)U^T(t)(U(t)U^T(t)-lambda I)^{-1})

    由此,就得到了输出权值

    ESN将非线性问题转换为线性回归问题,只需要训练输出系数(w^{out})

    4个决定性能的参数:

    • 池谱半径,(lambda_{max}<1)是网络稳定的必要条件
    • 池规模(节点数),池规模越大对动态系统的描述越接近,但是会带来过拟合
    • 池输入单元尺度(w_{in}),需要处理的对象的非线性越强该值越大
    • 池稀疏程度,表示池中神经元之间的连接情况,池中不是所有的神经元都存在连接。稀疏程度指的是池中相互连接的神经元占总的神经元的百分比,其值越大非线性能力越强

    参考资料:
    [1] ESN介绍

  • 相关阅读:
    PHP实现无限极分类
    html2canvas生成并下载图片
    一次线上问题引发的过程回顾和思考,以更换两台服务器结束
    Intellij IDEA启动项目报Command line is too long. Shorten command line for XXXApplication or also for
    mq 消费消息 与发送消息传参问题
    idea 创建不了 java 文件
    Java switch 中如何使用枚举?
    Collections排序
    在idea 设置 git 的用户名
    mongodb添加字段和创建自增主键
  • 原文地址:https://www.cnblogs.com/oneflyleader/p/13284142.html
Copyright © 2011-2022 走看看