THIS IS SPARTA
Welcome to another video of Universo Programado
And this time the AI will play FlappyBird
And if you like this kind of content don't forget to subscribe to receive new videos when they're out!
For those who don't know FlappyBird was a mobile game that became really popular  in 2014
You played as a bird jumping through obstacles
To do that you could only jump
The objective is to get as far as possible
In FlappyBird I used the same algorithm of the Dinosaur's video
So if you'd like to know how this algorithm works
Check that video out, I've explained everything there
I've used the same algorithm because it's really efficient for this situation
where the agent has to dodge obstacles.
When making FlappyBird I already knew that the AI would play with ease.
For the AI it's easier than the Google's Dinosaur
Because the speed remains the same
It has only one action which is jump
and need less information to play
but I didn't know that it would be so easy
Because they didn't even need to train: The first random individuals were able to play the game indefinitely
And now we will see how this is possible.
FlappyBird is a prime example for us to visualize
how a neural network works
since the game is so simple and a small neural network is already able to play the game
and because it's so small we can visualize it graphically
and understand what's happening inside (of their brain)
The first step is to decide which informations
that the AI needs to play
If you're in doubt of which informations it needs
Just think of human player playing
All information that the human player needs to play the AI will need it too.
The AI will work much better if you hand them distances
because distances does not depend of the position
It doesn't matter if the pipe is too low or too high.
What really matters is the distance of the bird to the center of the pipes
When making the charts
the horizontal distance will be X axis
the vertical distance will be Y axis
and the final result determining if the bird will or wont jump will be the Z axis
So we will be able to visualize the neural network graphically
Using a 3 dimensional graph
Now we have to discover what is
the biggest value that the horizontal distance can get
In this case, 1100
in a situation like this:
and also we have to find out the lowest value.
That would be a situation like this:
-75
Then we do the same thing for the vertical distance
so now we have our graph.
Each point in this rectangle  is a different situation that the AI can be
Now what we need to know is which of this points
are bigger than zero so the bird jumps
and which of this points are equal to 0 so the bird won't jump
Each bird of the population will be one of this functions
that were randomly created.
But the game is so simple and the neural network is so small
it happens that one of the bird is already "BOIRNE"  prepared to play the game
It's already *BOIRNE* with the right behaviour
to where to jump and where not to jump
In which situation it jumps and in the ones that it won't
And to facilitate the visualization of the graph I will paint
all the points that are bigger than 0 in blue
And leave all the points equal to 0 in green
we will see the graph from above.
Now we can really see the neural network for what really is:  A function
This graph on the right contains all the possible situations that the AI may encounter
the red dot being its current situation
The green dots are situations that it shouldn't jump
the blue dots are situations that it should jump
Check that as it approaches the pipe the horizontal distance lowers
So the red dot which is its current situation
goes toward the point zero which is this black dot
When it goes through the pipe it starts receiving the informations of the next pipe
This is why the red dot appears to be teleporting
It's already in another situation
Gravity is always pulling them down to the situations in blue
but when they are in a blue situation it jumps and goes back to the green situation
Its objective is to keep to the green situation
But in this channel the AI can't simply win so easily
What do we have to do? You've guessed it: Make them miserable
In order to do that I made the canes move  and also made a special obstacle that they can only pass using the parachute.
This cane is too narrow so you can't just jump through it
The only way the AI could pass through it is using the parachute
and saving the parachute for this obstacle
Just like in the Google's Dinosaur video
the parachute recharges every 4000 pixels of distance
and the special cane appears every 5000 pixels
So now I will make my thang and let it train when the AI is good I will return
DO IT!
JUST DO IT!
Don't let your dreams be dreams!
 
After a few generations
they got this score and they won't die
The AI already learned how to react to all obstacles in all speeds
Sadly they won this time.
I tried to make as hard as I could
Even then it learned and there's infinity...
It learned how to play.
That's all folks!
If you're still here don't forget to leave your like and share with your friends because it helps the channel to grow
It's amazing to know that you're interested in programming and AI
Thank you for your attention and until the next one!
