- Machine learning has gotten a big boost
from artificial neural networks.
An artificial neural network is a computer program
that tries to mimic the structure of the human brain.
Think of it this way.
A biological brain is filled with billions of neurons.
These neurons connect to one another
and sends signals as a way to learn and react
to the outside world.
These neurons communicate through synapses.
These synapses allow the neuron to fire signals
to other connected neurons.
The neurons will increase the strength of their connections
based on your experiences.
So, if you want to learn how to juggle,
your brain will create new connections
and strengthen existing signals.
That's why you can often improve your juggling over time.
Your brain is strengthening these paths
to help control your eyes and hands.
The neurons in an artificial neural network
are organized into layers.
These layers are like players in a marching band.
You start with the first players in the input layer
and then hop from player to player
until you get to the final output layer.
All the players in between the input layer
and the output layer are called the hidden layer.
Now, imagine you took this marching band
and wanted to give them the ability to recognize a song.
The band leaders in front wouldn't have any instruments.
Instead, their job is to listen to the music
and pass the individual notes to the rest of the band.
Each player in the hidden layers
would tune their instruments
to see if it sounds like the note.
If it sounded a lot like the note,
they would pass it to the next layer.
They would also create a number
that showed their confidence,
something like I'm 90% certain that this is the same sound.
If it didn't sound anything like the note,
then they might pass it back with just a little confidence,
maybe something like I'm 10% certain
that this is the same sound.
If they were sure it wasn't the sound,
they wouldn't even pass it back to the hidden layer.
The idea behind these artificial neural networks
is that if you pass the song through enough times,
soon you'd have a complete picture of all the sounds.
You'd also have a complete picture
of the notes it takes to play them.
No one in the marching band knows how to read music
and yet they can learn to play the song
through large scale trial and error.
The only challenge with this approach
is that it can be really time consuming.
You have many different instruments
and each one is trying to tune into the sound
and communicate their confidence.
So, experts in artificial neural networks
will often try to tweak the network
to make it more efficient.
Maybe they found that every song they listen to
has at least some notes played by guitar.
If that's the case,
they might decide to give the guitar player
a little bit more weight.
They might encourage the guitar player
to have a little bit more confidence.
That might allow the rest of the band
to learn the song much more quickly.
It's much more common for artificial neural networks
to have a weight between zero and one or zero to 100%.
If one band member gives their note a confidence of one,
it means that they are certain it's the same sound.
Maybe something like a .8 is a little less confident.
The number zero means that the player is certain
it's not the sound.
Also, keep in mind that these marching band players
can adjust their own weights.
In fact, that's a key part
of how these artificial neural networks learn.
If one poor band member were stuck with an oboe,
then they would probably
routinely communicate with confidence
that the note did not come from their instrument.
Over time, you could have a marching band
that perfectly plays the song
that's passed in the input layer.
All the players in the marching band
would have a high confidence level
and know which instrument to play to make each sound.
The same way you strengthen your signals
as you learn to juggle,
the artificial neural network
will strengthen its ability to recognize music.
In the end, this is the real benefit
of an artificial neural network.
It could train itself to understand the input
and then recognize that input
when looking through massive amounts of data.