Git Product home page Git Product logo

lambdann's Introduction

Lambda Neural Networks

This is an implementation of echo state neural networks based on the report The "echo state" approach to analyzing and training recurrent neural networks by Herbert Jaeger. The purpose of this library is to provide a framework to create, train and run echo state neural networks with time series. This implementation allows networks of various dimensions to be created. It allows the networks to be trained and run with or without noise. The networks can be trained and run by teacher forcing an output signal if desired.

This library is being implemented as part of the work for my bachelor's thesis titled "Classification of Human Motion using Echo State Neural Networks". The paper Training Echo State Networks with Short Segments of Motion Capture Data contains detailed information about the work done.

Examples

The Henon Attractor

The examples folder contains a file for learning the Henon time series. By default the file uses a neural network with the following parameters:

  • 100 internal nodes
  • Spectral radius of the internal weights matrix: 1.15
  • Connectivity of the internal weights matrix: 0.3
  • No input weights
  • Range of the output feedback weights: (-2,2)
  • Connectivity of the output feedback weights matrix: 0.8
  • Tradeoff parameter for the Ridge Regression: 2.4

Following are the generated plots of one of such examples:

Henon output vs network output (2d) Henon output vs network output Internal states during testing Trained output weights

Motion Capture

An Echo State Network was trained to learn human movements. The script used to learn this movement can be found at https://github.com/netogallo/Scripts/blob/master/LambdaNN/motionCapture.hs. The network parameters used are the following:

  • Network size: 100 Nodes
  • Network output size: 28 outputs
  • Internal Matrix Connectivity: 0.3
  • Internal Matrix Spectral Radius: 1.15
  • No input weights
  • Range of Output Feedback Weights: (-1/4,1/4)
  • Regularization Parameter for the Ridge Regression: 0.15
  • Leaky Integrator of 1/5

Walking is a periodic movement well suited for this type of networks. Normally, a network of 100 units would not be capable of learning to simulate walking since the period is too big for such a network. To address this problem, a leaky integrator was used. The leaky integrator has the property of slowing the network down so it can learn periodic motions with bigger periods without needing additional units.

Internal network sates during walk (first 500)

We can observe that the network state evolves in a nice and periodic way. Also it is stable so the walk can continue without transforming into chaos. A video of the autonomous run produced by the network can be fond here: http://youtu.be/CFBA8D2t0sM.

lambdann's People

Contributors

netogallo avatar

Stargazers

 avatar Carlos López avatar

Watchers

James Cloos avatar  avatar  avatar

lambdann's Issues

Optimize the internal weight matrix

According to Jaeger, when using tanh ESNs, the spectral radius of the internal weight matrix should be smaller than 1 and the as well as the largest singular value. The spectral radius should be close to 1 since Jaeger proposes that value as a good starting value for later tuning. So the proposal is to modify the ESN generator function so the spectral radius and singular values can be specified and the network is generated to have those values as close as possible to the given parameters.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.