Hi Everyone!
today we will talk about my favourite machine learning algorithm
the neural network!
neural networks were designed to mimic the process of human thought
we use them to solve problems that traditional computer programs
find extremely difficult,
or almost impossible to solve
foe example: face recognition
object detection and image classification
in all 3 cases - humans are really good at it!
we don't really need to think much to know that this is Mariya
and this is not Mariya
we can also clearly see that there's a keyboard,
a mouse and a monitor on this desk
and we can also say with confidence
that this is a photo of a goat!
but if we are so good at it -
how come computers are not?
aren't they supposed to be smart or something?
when a computer sees an image
it actually sees a collection of pixels
where each pixel stored a numeric value
representing the colour intensity
we already talked about it in previous lessons
and you guys can definitely check it out if you haven't!
so then instead of a goat photo -
our computer sees a very long array of numeric values
and then the tricky part is
even if we take another photo of the exact same goat
on the exact same background
we will most likely get a brand new array of numeric values
and guess what? even if we use the original photo
but slightly boost the brightness
or maybe crop 5 pixels from the width
or even just rotate it 5 degrees clockwise
we still get a brand new array of numeric values
that has nothing to do with the original one
so if it is so difficult -
how can we ever classify an image?
and left alone - recognize a face in it?
we simply expose our neural network
to an enormous amount of images
each image is an example
and the more examples we provide -
the bigger the chance that our neural network recognizes the subject,
in our case, that would be the class or category of "goat"
but that's not all!
our examples also need to be interpreted properly!
that's why, very often, each example
will have something called a "label" or a "target"
that tells our neural network to which category it belongs
we call this process "supervised learning"
and if you guys want to find out more about it
you can check out my previous tutorial
but between the point where we feed an image to our neural network
and the point where we reach the conclusion that it's a goat
a lot of different processes are happening in the background
these are series of statistical calculations
that investigate each of our examples from many different angles
these calculations happen inside something called "hidden layers"
they are located in between our input layer
and our output layer
and they are responsible for evaluating different aspects of our examples
for example: one hidden layer is responsible for edge detection
another hidden layer maps the colours
another one counts the legs
or maybe even detects horns
now on their own - these layers are quite useless!
just because something has horns -
doesn't really make it a goat!
but when we combine all these layers together
we actually have enough information to make a prediction!
so an image is loaded into the input layer along with its label
this is where we begin training our neural network
the image will then pass through each of our hidden layers
one at a time
and once we reach the output layer -
our network will return a class name, which we call a "prediction"
this class name, however,
will not always match the label
and the main reason are those links that connect between the nodes of our layers
we call these links "weights"
and they help us determine how much impact each node has on the input
for example: maybe counting legs,
or detecting horns is much more meaningful
than mapping colours
in that case, the weights that lead to the colour layer
will have lower values than the other two
so just because our first prediction is incorrect -
it doesn't mean that our neural network is bad!
it only means that we need to keep adjusting the weights
until most of our examples are correctly classified or predicted
we call this process "optimization"
it can take a very long time!
and we would usually optimize other parameters as well
not just the weights!
but we'll talk about it in future lessons
but the good news are - once we are done optimizing
we can save the neural network and load it whenever we'd like!
then we can expose it to goat images
it has never seen before
and in most cases - they'll be correctly classified
now because our neural network has already learning
about thousands of goat images,
from different colours, different angles and different ages,
when it comes to goats -
it's an expert!
but when it comes to dolphins and giraffes -
it is absolutely clueless!
that's what we call "narrow AI"
it can only do a one particular task
and it has a very narrow area of expertise
it is up to us developers to keep teaching it further
and making it much much smarter!
cool! so in this video, we mostly focused on images as input
however, we can also classify text
we can classify audio, video
and pretty much anything else that can be represented with numbers
now thank you guys so much for watching!
if you found this tutorial helpful
please share it with the world!
and you can also leave me a "like", you can leave me a comment
you can subscribe to my channel
turn on the notification bell, of course
and I will see you guys very soon in a brand new machine learning codealong!