Hi everybody! so lately I've been noticing
many many comments saying: "Hey Mariya,
You've been promising us (an) Artificial Intelligence
and Machine Learning series
and you never filmed it!"
and you guys are a 100% right!
I did promise it and it's about time we start talking about AI!
that's why I decided to film this quick introduction
just to test the ground and see how you guys enjoy the subject
so today we will talk about 3 different approaches to Artificial Intelligence
and to be more specific - we will talk about training approaches
which is the stage where your model learns things about the world
or the data the developer presents
now the first approach is called "Supervised Learning"
and it's the real life equivalent of a parent and a child relationship
where the parent teaches his kid everything about the world
so let's say the parent wants to teach his child about animals
for the very first time
he would of course take his kid into a farm
he's gonna point at a goat, for example
and he's gonna tell his kid: "this is a goat!"
and then the parent will point at a chicken
and tell his kid: "this is a chicken!"
the more examples of goats and chicken his child is exposed to
the better the chance he'll remember the difference between them
now, this learning process may take a few visits to the farm
but eventually, the parent will be able to point at any type of animal
and ask his kid: "what animal is this?"
and if the parent did a good job with training -
his kid will give him the correct answer
and if the kid doesn't get it right
it either means that more visits to the farm are required
or it means that the parent doesn't really teach him well
and this example of a parent trying to teach his child something new
is very similar to a relationship between a developer and a neural network
that needs to learn something new as well
so whenever we take this real life example into the realm of computers
we are basically providing out neural network with a labeled dataset
this entire dataset is organized into pairs of features and targets
also known as input and output
the features, in the particular case of our goat versus chicken neural network
would be images of either goats or chickens
the targets would them correspond to either a string saying "goat"
or saying "chicken" - all depends on the input image
so with our features we are pointing at an animal
and with our target
we are explaining the name of the animal to our neural network
that's why Supervised Learning is providing us a 100% control
of the information that we are exposing our neural network to
and we are also controlling the conclusions about that information
which would be the labels
and then whenever we would like this network to make a prediction
we will expose it to a picture of either a goat or a chicken
that it has never seen before
it is a brand new picture that I just took with my own phone
and I will show it to the network!
then, just like our kid -
our network will be able to predict whether it's a chicken or a goat
if it gets it right - good job!
our network is very accurate!
if it gets it wrong - it means that it might need a few more epochs
a few more visits to the farm
or it means that the developer, the parent
still need to put a little bit of work into his code
he may have missed something, and as a result -
his neural network is not training well on the data
and because us, developers, have so much control over these neural networks -
that's the type of networks I will teach you how to build on my channel
and if you want to see a good example of such a network
check out my Github where I have my "What The Flower" project
which is a neural network that classifies between different kinds of flowers
I actually created a GUI for it so you guys can definitely test it
with your own pictures from your own computer
another training approach is called "Unsupervised Learning"
or "Self Supervised Learning"
and it corresponds to taking your kid to the same farm
pointing at the same goat
but saying nothing
and then he would point at a chicken
and also say nothing
eventually, your kid will realize that there's something wrong with you
and he needs to take things into his own hands
he will then realize that this animal has 4 legs
while the other animal has 2 legs and 2 wings
he wouldn't know that the 4 legged animal is called "goat"
and he wouldn't know that the 2 legged animal is called "chicken"
however, he'll be able to differentiate between them without any problem
now, if we take this into the world of computers
that means we are providing an unlabeled dataset to our neural network
so in the case of Unsupervised Learning
we are either passing a dataset that only contains features
or we're passing a dataset where the features and the targets
are the exact same value
and even though it may seem that us, developers
are loosing a bit of grip with these type of models
we are actually still a 100% in charge of the features
so whether if our model chooses to call goat 0
and chicken 1 - it doesn't matter!
it still categorized, classifies, our animals perfectly
so I don't see any issues with these models either
if you guys wanna learn about them on my channel
we will also cover them!
now, the third approach is called "Reinforcement Learning"
and it's actually quite scary
because it corresponds to a parent giving birth to his child
and then telling him: "hey, man"
"this is the kitchen - you can cook your meals in here"
"this is the washroom - you can do whatever you need in there"
"these are the car keys - you can go and drive"
"I'm out - Bye Bye!"
so your kid is left alone in the middle of the living room
without any basic survival skills
without any knowledge about things
he only knows that "this is where the kitchen is"
he can cook his meals! "this is where the washroom is"
and "this is where the car keys are" - that's it!
now, with a human kid it will obviously never work
but with a computer - it actually works! and it works quite well!
so what they would do is - they would usually start some kind of a game
and they would give the computer a few basic commands
he can either go right, he can either go left
he can jump, he can maybe shoot
but nobody really explains why he needs to jump
nobody explains the rules of the game
and the developer doesn't share any other information
about the world or the game - on purpose!
now, it's a bit more complicated than that
because Reinforcement Learning| has a system of rewards
so it gives the neural network an objective
it's not just running on it's own
and just... you know, shooting in the dark
but the main important thing to remember
is that eventually, the neural network will be able to play the game
without any issues! it will be able to go to the next level
and the next level - and it will learn everything on it's own
and just like in real life - whenever we study something on our own
we usually understand it better than if somebody else is trying to teach us
so if you have working experience - that's usually much better than theory
now, this doesn't scare me up until the point
that we connect such network to the internet
we gave our neural network the ability to press on some keys
and to evaluate what happens after it presses these keys
so yes, if we only let it control the "up" and "down" arrows
it won't be able to do much on Google
but if we let it control the entire keyboard
then we gonna get in real real trouble!
now I am a 100% sure that many very very smart and genius people
will disagree with me - because Reinforcement Learning
is part of the 3 main Machine Learning Paradigms
and yet! I am still worried about reinforcement learning
and please let me know in the comments below
if you guys agree with me or if you think I'm just being plain paranoid
I really wanna hear what you guys think about it
now, thank you so much for watching this brief Introduction to AI
I'm actually gonna go ahead and start planning some proper lessons
and we will begin with the perceptron
so definitely stay tuned! we'll see you soon!