Artificial Intelligence (AI) is a hot topic these days and ironically I've been been applying AI - specifically Neural Networks - for many years to different applications with success. I'd like to pass on my experience and at the same time interact with people that are as passionate about this technology as I am. It takes a lot of work in the evenings and weekends (just my AI stock price predictor algorithms alone took many many months - again, evenings, holidays, and weekends - to develop and test and I'm still upgrading and modifying the software) - that's why I decided to try Patreon - to have a portal to teach others fascinating AI projects while getting paid for some of my time in these endeavors.
The first lesson is public (free) - this way you can "try before you buy". Subsequent lessons will be available to patrons only.
I hope that my patrons will enjoy learning how to apply Neural Networks successfully to these applications and go on to do great things in the world of AI.
What are Neural Networks?
They are a type of artificial intelligence that is constructed in a form that is somewhat similar to the human brain with “artificial” neurons interconnected with other neurons. The overall connection mapping between neurons contains the “memory” and “understanding” of how to work a particular application.
Neural Networks are used in “Deep Learning” algorithms which consist of Neural Networks that contain many layers of neurons. However, for these tutorials, we will strictly be working with simple Neural Networks that are at most a few layers in size with just a few neurons in each layer. You would be amazed at what they can accomplish.
For example, this unmanned helicopter was under full autonomous Neural Network guidance and control - https://www.youtube.com/watch?v=B5xKLtrTI_k. I designed / coded / tested the entire flight control system software for this aircraft. In this case the Neural Control System was not designed to handle sling loads, a very nonlinear dynamic disturbance to the helicopter, or gusting / turbulent winds. However, the Neural Control System adapted far beyond its training envelope and stabilized the helicopter while it carried sling loads and endured gusting winds as seen in the video.
Throughout my career I've seen Neural Networks do amazing things that I never anticipated when initially designing them for a particular application. And that's why they have intrigued me and fueled my passion for all of their potential.
Why would I be interested in this topic?
If you are interested in the field of Artificial Intelligence (specifically Feed-Forward Neural Networks) and the applications – and fall into one of two categories:
- You are a software developer that wants to get his / her hands dirty and make an application work – and learn the tricks of the trade.
- You are a casual observer and would like to observe applications in action and see how they come together via the video tutorials.
Note that this approach does not use “Deep Learning” methods and algorithms. Instead it uses techniques of applying basic Feed-Forward Neural Networks to the data set. You create and analyze the data set, scale the data, train the Neural Network and test the results.
What's in it for me?
If you become a patron, you will have access to monthly tutorials on applying Neural Networks to various interesting technical applications. Each tutorial will consist of a video, the software source code, and any PowerPoint presentations that are part of the video tutorial.
The tutorials will help you learn how to apply Feed-Forward Neural Networks to various technical applications, and will allow you to do some amazing things.
The first five Neural Network applications are the following:
1. Neural Network learns the nonlinear quadratic function Y = X^2
- This lesson teaches the basics of training a Neural Network to learn a nonlinear function.
- Steps include creating the function, scaling the data appropriately, training the Neural Network, and testing the results.
- The software is coded in Matlab.
- Release date – this is being released early (same day that this Patreon account was launched) as the original target date was February 1.
2. Neural Network acts as a controller for a payload deployment system (1 degree of freedom)
- This lesson will teach the basics of developing a Neural Network closed-loop controller for a payload deployment system (1-degree of freedom) with friction effects modeled.
- The software is coded in Matlab - the model and Proportional-Integral-Derivative (PID) controller have already been developed / coded / tested – what remains is the Neural Network controller.
- Release date – March 1.
3. Neural Network acts as a controller for a cart / pendulum system (2 degrees of freedom)
- This lesson will teach the basics of developing a Neural Network closed-loop controller for a cart / inverted pendulum system (2-degree of freedom system).
- The software is coded in Java with Swing graphics (the entire software has already been coded and tested minus the Swing graphics).
- Release date – April 1.
4. Same Project as Number 3, with the extremely powerful technique of "Performance Shaping" introduced and demonstrated.
- The software is coded in Java with Swing graphics (the entire software has already been coded and tested minus the Swing graphics and Performance Shaping aspect).
- Release date – May 1.
5. Neural Networks acts as a guidance module for a spacecraft entering Earth’s atmosphere and exiting into a fixed orbit
- This lesson will teach the basics of developing a Neural Network closed-loop guidance module for steering an aerobraking spacecraft through the Earth’s atmosphere such that it exits into a target orbit about the Earth.
- The software development will be in Java using Swing graphics and NASA's World Wind model libraries.
- Release date – June 1.
6. Neural Network performs obstacle avoidance in a 2-dimensional plane
- This lesson will teach the basics of developing a Neural Network closed-loop path-planner for maneuvering around obstacles.
- The software will be developed in Java with Swing graphics.
- Release date – July 1.
Subsequent to the release of these projects, there will continue to be others – one each month. For now the ideas for those projects are in the “gestation” phase. If you’d like to suggest ideas for future projects, please feel free to comment or email me directly. The decision process includes my ability to complete the project in a timely manner. Thus if it will take several months then it could be scheduled as a future release several months down the road.
Software Developer Considerations
These projects are (or will be) coded either in an old version of Matlab (similar to C) or Java (the latest JDK using NetBeans 8.2). The Neural Network learning / training algorithm is the Matlab-implemented version of the Levenberg-Marquardt optimization algorithm. So if you don’t have Matlab, you can:
- Get a copy of Matlab and the Neural Network toolbox (about $3,000). If you are a student (or know one - like maybe one of your kids) then you can obtain copies at a very low cost (less than $200).
- Convert the Matlab source code to your language of preference. The functions are written in a procedural manner (not object-oriented) – thus conversion would be easy (especially in C). For training the Neural Network you can use other software libraries that contain the Levenberg-Marquardt optimization algorithm – such as Python’s “neupy” – available at https://pypi.python.org/pypi/neupy/0.1.0.
Those projects that are coded in Java still use the Matlab Neural Network training algorithm (running as an independent task).
What is your technical background?
I’m an Aerospace Engineer / Software Developer with 32 years of experience. The languages that I've developed in include FORTRAN, Pascal, Perl, C, C++, Matlab, and Java.
Links to a few examples of the projects that I’ve worked on include:
Network based company stock price predictor (I developed all of the algorithms
and built the website). The 2nd newsletter generated an ROI of 90+% in approximately 9 months - http://www.nwtai.com/img/Newsletter_2_Performance....
You can follow the company via the any of the following links:
Java GitHub repository - https://github.com/mikesjavacode
- These are just a few of my personal Java projects from the past few years.
Powered Parafoil Neural-Network autonomous flight control – flight test in Northern Virginia via Google
“Fly-Through” - http://www.youtube.com/watch?v=bhBnOthL9Mw
- Designed the entire real-time Neural Network flight control system in C running on Linux.
- This effort took place in the 2011 / 2012 time frame.
for autonomous flight control with Neural Networks - https://www.google.com/patents/US6751529
- Granted in 2004.
- Unmanned Helicopter Neural-Network autonomous flight control – wargames at Fort Benning - http://www.youtube.com/watch?v=QkAyVUqGpVk
- Designed the entire real-time Neural Network flight control system in C running on Dos.
- This flight demonstration took place in the 2006. However, the UAV company was in business from 2002 until 2009.
- Tactical missile for attacking tanks (resolved a flight control issue)–
- Wargame simulation –
Extended Air Defense Testbed - https://aegistg.com/Technical_Papers/EADTB-SIW-021.pdf
- Resolved a major ballistic missile guidance issue and implemented new ballistic missile targeting options.
- Worked this effort in 1997.
- Various Neural Network applications while working at Boeing over
a period of 6 years.
- Worked these efforts from 1989 through 1996.
- Part of orbit-raising team for Space Systems Loral INSAT-1C (similar to INSAT-1D) communications
- Was a flight control analyst as part of a 12-man team.
- Worked this launch in 1988.