Playing with Neural Nets

At my very first job, an incredibly long time ago, one role I had was to work with one of our research teams on a Neural Networks (NN) project.   My company specialized in strategic signal processing systems, and NNs were one of the ways we worked to separate the signals from the noise (literally).

Initially we struggled to get meaningful results out of one of the first test we ran.  We experimented with configurations and parameters for days.  Eventually I learned a lesson that has served me well in following years:  How you prepare your data ahead of time has a significant impact on how well you can analyse it.   AKA: garbage in, garbage out.

Recently I have rekindled my interest in NNs and related technologies.  Unless you have been hiding under a rock, you are likely aware that much progress has been made!   Of particular interest to me, the tools are far more powerful and accessible.  It is now possible to put together real systems that can solve interesting problems using off the shelf components and moderate amounts of Python.  Of course it is still GIGO…

In recent talks with colleagues on this topic I have described a fun, informative demo I discovered and have promised to share: The TensorFlow Playground.  TensorFlow is Google’s system for building and training NNs.   As always, Wikipedia has a good overview of TensorFlow.  The more programmatically inclined readers will want to check out Google’s docs on using the technology.

But for fun all geeky nerds can enjoy, check out the TensorFlow Playground itself, a web based NN implementation that allows you to tune and train a NN to recognize a series of simple images/datasets.  You can start by hitting the big play button in the upper left.   The network will soon do a pretty good job of identifying the target dataset.

Now the real fun begins–you can start tweaking all of the parameters to see how fast (or slow) your NN can learn the patterns.   You can even change fundamental properties such as the number of hidden layers.   The website builders promise you can’t break it!  (Although some of the great QA folks I have worked with can probably find a way.)

You can get an interesting high level perspective of how a network can perform simple tasks just by playing with this a bit.   If you are interested in gaining a deeper understanding of technology, this assists you by providing a simple way to experiment with real NN options and parameters, developing a more visceral feel for their meaning.

Don’t take my word for it.   Check out this great blog on the playground, and try some of the examples for yourself.  Just before each of the screenshots he shows, note the link provided to the configuration used to illustrate the particular NN under discussion.   Start off with the settings he provides, but scroll down on the playground to see the parameters you can tweak.  If you check a box and reload the page, you will be able to configure the parameter you selected, and can rerun the example to examine the impact.

Get it while it’s hot!  This is the sort of technology that will change rapidly.  The links I’ve provided may not work in six months.   Have fun in the playground!