Neural Networks: Fundamentals and Applications


A practical introduction to neural networks with hands-on experience.  

Delivery: Delivered from 13th June 2017 for 10 weeks. (2-hour Lecture and 1-hour hands-on tutorial per week).

Coordinator and Instructor: Dr. Rohitash Chandra (Research Fellow @CTDS UniSyd).  Research interests in machine learning and neural networks.

Infor: https://www.researchgate.net/profile/Rohitash_Chandra

https://sydney.edu.au/science/people/rohitash.chandra.php

Tutor: Mr. Rafael Possas, Research Engineer, Sydney Informatics Hub (2017)

Guest Speakers: TBA

Duration: This will be a 10 weeks course

Programming Language: The course will use Python as the main language. C++ will be used as an additional programming language.

Assignments: Assignments can be done in any language of choice by the participant.

Location: Rm 538, Centre for Translational Data Science (CDTS),  5th Floor, School of Information TechnologiesBuildingg (J12), The University of Sydney, 1 Cleveland Street, NSW 2006.

Contact: rohitash.chandra (at) sydney.edu.au

Disclaimer: The course is not accredited towards any of the programmes at the University of Sydney. There will be no certificates issued upon completion of the course.

  • Feedforward Neural Networks
  • Backpropagation and Stochastic Gradient Descent (SGD)
  • Bayesian Neural Networks (with MCMC and SGD)
  • Recurrent Neural Networks
  • Long Short-Term Memory (LSTM)
  • Neuroevolution (Coevolution and Direct Neuro-evolution)
  • Deep Learning with Convolutional Neural Networks
  • Multi-task learning and Transfer Learning
  • Ensemble learning and Hybrid Methods
  • Modular Neural Networks

Applications: Pattern Classification, Time Series Prediction, and Computer Vision

  • Implement simple neural network architectures from scratch (without relying on machine learning libraries)
  • Develop rich applications using neural networks that involve real world problems
  • Become ready to work and contribute to challenging problems that arise in training and representation of knowledge in different neural network architectures.

Key Resource – Code

https://github.com/rohitash-chandra/NeuralNetworksCourse_CTDS

Prerequisites

If you are not familiar with Python, please take some time to get to know the basics. We will also use iPython notebook and

https://wiki.python.org/moin/SimplePrograms

https://www.programiz.com/python-programming/examples

As long as you have knowledge of some basic programming, you will be fine.

https://deeplearning4j.org/deeplearningforbeginners.html

https://www.quora.com/What-are-the-prerequisites-to-learn-neural-networks

WEEK 1: Intro

Introduction to neural network fundamentals to the audience with no background in machine learning or data science.

Lecture Notes:

Textbook: Machine Learning, Tom Mitchell, McGraw Hill, 1997.

Neural Networks Chapter 4: http://www.cs.cmu.edu/afs/cs.cmu.edu/project/theo-20/www/mlbook/ch4.pdf

Chapter 2: Concept Learning: http://www.cs.cmu.edu/afs/cs.cmu.edu/project/theo-20/www/mlbook/ch2.pdf  

Other References:

Overview of Artificial Neural Networks https://en.wikipedia.org/wiki/Artificial_neural_network

Backpropagation Algorithm https://en.wikipedia.org/wiki/Backpropagation

Tutorial for Python: http://machinelearningmastery.com/implement-backpropagation-algorithm-scratch-python/

Code: https://github.com/rohitash-chandra/NeuralNetworksCourse_CTDS/tree/master/week1

Neural Networks by Prof. Hinton

Videos

Assignment 1

Choose either Option I or Option II, or tackle both.

Group: 1 – 4 members.

Deadline: Begining of Week 3 of the course.

Option I: Fundamentals

  1. Extend the basic FNN python code (fnn_v1.py, fnn_v2.py or fnn.v3.py)  to include an additional hidden layer and compare the performance with original FNN with a single hidden layer. Carry out 30 experimental runs and report the mean and std or training and test datasets.
  2. Extend your further so that it can be generalized for any number of hidden layers. Run experiences to see the effect from 1 – 5 hidden layers.
  3. Experiment on different combinations of hidden layers and neurons for each hidden layer.
  4. Select 5 other problems from UCI Machine Learning Repository and apply the method.
  5. Apply the strategy used in (2 and 3) for chaotic time series problems that include Sunspot, Lazer, Mackey-Glass and Lorenz problems (Discussed in Week 2).

Option II: Application

  1. Extend the application FNN code in Keras for additional number of hidden layers as given in Option I
  2. Apply FNN in Keras for chaotic time series problems (Discussed in week 2)

Deliverable

  1. Present your results in a Technical Report and discuss your major findings for the different problems ( 10  min presentation per group will be organized).
  2. Submission: email pdf of the technical report to rohitash.chandra@sydney.edu.au
  3. Deadline: 26th June 2017.
  4. Best code will become part of the solution set for the course.

WEEK 2: NNs – Cont.

Notes

Neural Networks Chapter 4: http://www.cs.cmu.edu/afs/cs.cmu.edu/project/theo-20/www/mlbook/ch4.pdf

Background on Differentiation and Chain Rule (Gradient Descent):

  1. Basics Chain Rule: https://www.math.ucdavis.edu/~kouba/CalcOneDIRECTORY/chainruledirectory/ChainRule.html
  2. Basics Chain Rule: http://www.sosmath.com/calculus/diff/der04/der04.html
  3. Sigmoid differentiation: https://math.stackexchange.com/questions/78575/derivative-of-sigmoid-function-sigma-x-frac11e-x

Why Bias?

  1. https://www.quora.com/What-is-bias-in-artificial-neural-network
  2. https://stackoverflow.com/questions/2480650/role-of-bias-in-neural-networks

Videos

https://www.coursera.org/lecture/machine-learning/backpropagation-algorithm-1z9WW

https://www.coursera.org/lecture/machine-learning/backpropagation-intuition-du981

WEEK 3:  Bayesian Neural networks

Code:

https://github.com/rohitash-chandra/NeuralNetworksCourse_CTDS/tree/master/week3

Notes:

MCMC basics

  1. https://en.wikipedia.org/wiki/Markov_chain_Monte_Carlo
  2. http://twiecki.github.io/blog/2015/11/10/mcmc-sampling/

Bayesian Neural Networks

Bayesian Neural Network Libraries:

  1. PyMC3: http://twiecki.github.io/blog/2016/06/01/bayesian-deep-learning/
  2. Edward: http://edwardlib.org/tutorials/bayesian-neural-network

Videos

Assignment 2

Option 1: Fundamentals

  1. Extend FNN Python code and into a Recurrent Neural Network. You can use a reference to C++ Elman RNN code discussed in class. Implement BPTT for Python RNN.
  2. Use time series prediction problems and Tomita Grammer (Chandra, 2011 Neurocomputing paper) problem to test your RNN
  3. Bayesian Recurrent Neural Networks: Use MCMC for training RNNs

Option 2: Applications

  1. Implement a simple (Elman)  RNN from any existing libraries (Keras preferred) for time series prediction.
  2. Use Keras implementation for RNN for any other problem of your choice (Speech, signature, or NLP)

References

  1. http://introcs.cs.princeton.edu/java/51language/
  2. http://www.geeksforgeeks.org/regular-languages-and-finite-automata-gq/
  3. https://stackoverflow.com/questions/21897554/design-dfa-accepting-binary-strings-divisible-by-a-number-n

WEEK 4 RNNs

Notes

  1. Recurrent Neural Networks: Scholarpedia
  2. RNNs (wiki)
  3. RNN tutorial at WildML
  4. Tutorial on Backpropagation Through Time – Towards LSTM
  5. RNN on TensorFLow Tutorial

Resources

  1. Research on RNNs by J. Schmidhuber
  2. Alex Graves PhD thesis

Code: https://github.com/rohitash-chandra/NeuralNetworksCourse_CTDS/tree/master/week4

Videos

RNN for Binary Addition by Hinton

https://www.youtube.com/watch?v=z61VFeALk3o

https://www.youtube.com/watch?v=Pp4oKq4kCYs

Keras RNNs https://www.youtube.com/watch?time_continue=2&v=4rG8IsKdC3U

Assignment 3

Option 1: Fundamentals

  1. Extend FNN Python code and into a Recurrent Neural Network. You can use a reference to C++ Elman RNN code discussed in class. Implement BPTT for Python RNN.
  2. Use time series prediction problems and Tomita Grammer (Chandra, 2011 Neurocomputing paper) problem to test your RNN
  3. Bayesian Recurrent Neural Networks: Use MCMC for training RNNs

Option 2: Applications

  1. Implement a simple (Elman)  RNN from any existing libraries (Keras preferred) for time series prediction.
  2. Use Keras implementation for RNN for any other problem of your choice (Speech, signature, or NLP)

References

  1. http://introcs.cs.princeton.edu/java/51language/
  2. http://www.geeksforgeeks.org/regular-languages-and-finite-automata-gq/
  3. https://stackoverflow.com/questions/21897554/design-dfa-accepting-binary-strings-divisible-by-a-number-n

WEEK 5: LSTMs

Notes

Original LSTM presentation, code, and examples: http://people.idsia.ch/~juergen/lstm/

Tutorials

  1. LSTM tutorial
  2. GRU tutorial at WildML

Lecture notes

  1. Stanford CS224 Lecture
  2. Toronto Lecture by Hinton
  3. Oxford Uni Lecture

Code and Examples

  1. Original LSTM code and tutorial: http://people.idsia.ch/~juergen/lstm/
  2. Code from GRU tutorial: https://github.com/dennybritz/rnn-tutorial-gru-lstm/blob/master/gru_theano.py
  3. Sentiment analysis example: http://deeplearning.net/tutorial/lstm.html
  4. Video tutorial with code: https://pythonprogramming.net/recurrent-neural-network-rnn-lstm-machine-learning-tutorial/

Videos

Basics: https://www.youtube.com/watch?time_continue=1145&v=Ukgii7Yd_cU

LSTM by Hinton https://www.youtube.com/watch?v=lsV5rFbs-K0

LSTM for Time Series https://www.youtube.com/watch?v=2np77NOdnwk

RNN for Language Modelling: https://www.youtube.com/watch?v=Keqep_PKrY8

Week 6:  CNNs

Notes

Lecture notes

  1. http://learning.eng.cam.ac.uk/pub/Public/Turner/Teaching/ml-lecture-3-slides.pdf
  2. http://www.cs.umd.edu/~djacobs/CMSC733/CNN.pdf
  3. http://davidstutz.de/wordpress/wp-content/uploads/2014/07/seminar.pdf

Videos

Assignment 4

  1. Use Keras for LSTM implementation for any selected pattern recognition, time series or classification problems that involve long term-dependencies. Language models could be also considered.
  2. Use Keras for CNN implementation for any selected datasets that involve, face, object and gesture recognition.
  3. Highlight an application when it’s necessary to have a combination of LSTMs and CNN’s and discuss implementation issues.

Week 7: Neuro-evolution

Notes

  1. MIT Lecture on Genetic Alg
  2. Evolutionary Algorithms: Theory and App

Tutorials

  1. NEAT tutorial
  2. NEAT in Python at Github

Videos

Week 8: Ensemble learning

Notes

  1. Ensemble Learning
  2. Ensemble Learning at Cornell
  3. Ensemble at UNSW
  4. Scholarpedia on Ensemble Learning

Videos

https://www.youtube.com/watch?v=ix6IvwbVpw0

https://www.youtube.com/watch?v=ix6IvwbVpw0

Week 9: MTL and Transfer Learning

Notes

  1. Multi-task Learning for CNNs
  2. MT learning at UCL
  3. MT learning lecture
  4. MT learning

Videos

http://videolectures.net/roks2013_pontil_learning/

Week 10: Modular NNs

Notes

Stony Brooks Uni on Modular Networks

http://www.evolvingai.org/modular

Videos

Extra : Deep Belief Nets

Research Project

  1. Choose a topic and develop a proposal
  2. Week 9: present research proposal
  3. Week 10 – week 14: work on Project
  4. Week 15: Demonstration of Results and  Software
  5. Week 16 – 18: Work on research paper

Option1: Neurocomputing methodologies

  1. Langevin Dynamics Bayesian Recurrent Neural Networks for Multi-Step-Ahead Time Series Prediction (ref: https://arxiv.org/pdf/1704.02798.pdf . http://www.sciencedirect.com/science/article/pii/S0925231217303892)
  2. Multi-Task Ensemble Stacking of Bayesian Neural Networks for Cyclone Track and Intensity Prediction
  3. Multi-Task Stacking of CNNs for Unconstrained  Mobile Face Recognition (ref: http://www.sciencedirect.com/science/article/pii/S1568494616306603)
  4. Multi-task modular neural networks for “missing values” in classification problems
  5. Approximate Bayesian computation framework for neuro-evolution

Option 2: Neurocomputing applications

  1. Langevin dynamics via  Bayesian Neural Networks for Cyclone Track Prediction (ref: http://ieeexplore.ieee.org/document/7727839/)
  2. Bayesian multi-task learning for cyclone track and path prediction

Option 3: Others

  • Any idea or application of your choice

Additional Resources

Additional research papers: https://www.dropbox.com/sh/4ol9jtbox30r4tp/AAD1tiQdxniKVTQ4DaWSq1DPa?dl=0

furthermore: https://www.dropbox.com/sh/72cktrpsnug3736/AAC0mTvic8qyjWE12InUL56Fa?dl=0

Other related courses:

CS7792 Counterfactual Machine Learning , T. Joachims, Cornell University http://www.cs.cornell.edu/courses/cs7792/2016fa/

CS 294 Deep Reinforcement Learning, Spring 2017 http://rll.berkeley.edu/deeprlcourse/

CS287 Fall 2015 https://people.eecs.berkeley.edu/~pabbeel/cs287-fa15/

CS 323 – Automated Reasoning https://cs.stanford.edu/~ermon/cs323/index.html

CS 159: Advanced Topics in Machine Learning: Structured Prediction https://taehwanptl.github.io/

CSE 599 D1: Advanced Natural Language Processing http://courses.cs.washington.edu/courses/cse599d1/16sp/syllabus.html

SURVEYS: https://github.com/metrofun/machine-learning-surveys

Leave a comment