Wednesday, May 17, 2017

Neural Networks: Teaching Computers to Teach Themselves

Neural Networks: Teaching Computers to Teach Themselves
Computer-generated music and much more!
By Russell Miles

Computers have become increasingly powerful over the past few decades. These devices can store many terabytes of data, solve math problems instantly, and win games of chess against the most skilled grandmasters. However, until recently, humans and computers have been separated by one fundamental trait: the ability to learn. Today, through the use of neural network technology, computers are able to learn through a process of trial and error just like we do.

History of Neural Networks

Model of a neuron (image source).

Believe it or not, the first neural network was actually invented in order to help explain the human brain. In 1943, neuroscientist Warren McCulloch and mathematician Walter Pitts built a simple electrical circuit to demonstrate how human neurons work. Today, McCulloch-Pitts (or MCP) neurons are used in all sorts of computer programs. They take in information from other neurons and send a yes- or no-signal based on this information. When stringed together, MCP neurons can allow computers to make complex decisions. This video explains how they work.

Like a hedge artist trims plants into shapes, the brain trims its neurons as it absorbs information (image source).

For humans and computers, learning takes a lot of practice. Although artificial neurons existed in the early days of computing, they did not catch on until much later. This is because a huge amount of data is needed to "train" a neural network. First, programmers enter a large amount of data for the neural network to read. Next, the computer uses the data to start "guessing" at how to solve a specific problem posed by the programmers. After each guess, the program will slowly improve by editing and trimming its neurons.  

For any skill, practice makes perfect (image source).

If this process sounds familiar, it's because you do it every day. When practicing a skill or solving a problem, you take in your surroundings, try new things, make minor changes, and then try again. This artist started out with very little knowledge of the craft, but they were able to improve by drawing many pictures. Neural networks follow a similar process, starting out with random, poor-quality results and eventually working towards a useful solution. To understand the impact of neural networks, we will have to look at some examples.


Images taken from the following video.

In this video, designers created 3D frameworks for a variety of creatures. Using a neural network, a computer built muscle structures based on a desired walking speed for the creatures. At this point, you can see that the computer's first few designs failed spectacularly. However, after lots of practice and nine-hundred and twenty failed designs, the computer created a design that can walk like a human. Later on, the designers add some more variables and creatures into the mix.

Classical composer Johann Sebastian Bach (image source).

This video shows the training of a neural network using the works of Johann Sebastian Bach. Hundreds of MIDI files of Bach's piano pieces were fed to a network which rearranges the notes into a piano piece. On the first try, the program only plays one note before stopping. After 100 iterations, the network seems to be playing notes at random. After tens of thousands of tries, the compositions finally start to resemble classical music. If someone with no knowledge of music wanted to teach themself to play like Bach, this is what the process might sound like. For more detailed information about this process, as well as several computer-generated piano compositions, check out the full report here.

Images altered using Dreamscope (Original image in top left).

If you don't want to pay an artist to make pop-art paintings of your cat, you can use an online neural network program. Dreamscope is free, and allows you to turn any image into a work of art. This program, and others like it, look for patterns in your image that are similar to patterns within a chosen filter image. After scanning for the first time, the neural network will continue to scan for similar patterns until they are found. This allows the computer to intelligently shade each part of an image. Learn more about pattern recognition in neural networks here.

More Resources

If these examples of neural networks excite you, check out these links for more interesting uses of the technology.

Evolution of aquatic robots -- A video about optimizing aquatic animal designs.

Google's Computers are Making Thousands as Artists -- Fortune article about the sale of computer-generated art.

Inside an Artificial Brain -- Trippy and terrifying visuals created by a neural network using source images of dogs, lizards and other things.

Two Minute Papers -- An interesting YouTube channel focusing on A.I. and computer graphics.

DeepLearning.TV -- An educational video series about neural networks and A.I. in general.

Thank you for reading. Keep following for more informational posts and updates on recent trends in technology.

Works Cited

Marsalli, Michael. "The Mind Project." McCulloch-Pitts Neurons (Overview). National Science
Foundation Grants, n.d. Web. 02 May 2017.

No comments:

Post a Comment