I think you deserve a lot more publicity than you get. Your tutorials are the most understandable to me and not filled with 30 minutes of fluff and explanations that don't even get implemented. Keep up the great work! :)
I am happy to hear that :) I am working on NEAT right now. But that one is really though. I got the basic things but you can prepare yourself for one of the most interesting topics (atleast in my mind) of genetic algorithms. (I might need 2 more weeks or so.)
in this case if I want to save the result what should I do? What I'm doing now is to save the network of the fittest client and then when I load I copy it into some but not all clients (say 10%) to keep some diversity...Is this a good approach or there is some better method?
My birds are not evolving at all, I've checked just about everything, however, I have 2 inputs, and they are each edge top and bottom of the gap of the pipe, 1 if it's above, 0 if it's below. where in my code should I check to fix this? Using a population of 100 birds, it seems to start at 1 bird passing, and then caps at around 8
assuming you dont have bugs in your code, the information might not be sufficient for the network to learn the game. I had 4 inputs because I thought it is important to tell the network how far from the next pipe the bird is. Basically like this: input 1: height of upper pipe input 2: height of lower pipe input 3: x position of bird input 4: x position of pipe. Furthermore, your input should not be the value in pixels but some values around 1.
@@finneggers6612 My inputs are like this: input 1: above lower pipe? 1:0 input 2: below upper pipe? 1:0 usually only 5 birds make it through the first few pipes, so my inputs work, the problem is it's not increasing the number of birds that do pass through
@@mariovelez578 Its not wise to take some input data that can quickly jump from 0 to 1 or sth like that. think about you sitting in your car. you would not want your distance sensor to peep if you just touched the car.
the pipes are random but it doesnt learn when to do what. The input is the distance to the next pipe, the height of that one etc. So it has information about the upcoming pipe (but only about the next one, so basically the same information a human would have). and using that data, it predicts when to jump.
since the pipes spawn in random positions how does the balls learn learn to jump at the right time if the pipes are in different positions in each new game
For some reason I cannot see my answer that I gave to this yesterday so I will write a new one. We are basically optimizing something that takes an input and returns an output. If the input would be the x coordinate of the bird, the bird would fail because it has 0 information about the pipes. We need to give some information about the pipes. I am using 4 inputs: distance to next pipes, birds height, top pipe height, bottom pipe height.
🤔This reminds me of OpenAI's CartPole Gym Thingy 😁 Seems similar, though Flappy Bird is more sexy 😉👍🏼 Gute Arbeit! 😌 Vielleicht muss ich noch mehr aufpassen, aber inwieweit ist das jetzt anders als NEAT?
NEAT ist ein genetischer algorithmus. Aber nicht jeder genetischer Algorithmus ist NEAT. Die 3 Konzepte (selection, mutation, crossover) werden von jedem GA anders implementiert. NEAT ist eine Implementation der 3 Konzepte.
I think you deserve a lot more publicity than you get. Your tutorials are the most understandable to me and not filled with 30 minutes of fluff and explanations that don't even get implemented. Keep up the great work! :)
I am happy to hear that :)
I am working on NEAT right now. But that one is really though. I got the basic things but you can prepare yourself for one of the most interesting topics (atleast in my mind) of genetic algorithms.
(I might need 2 more weeks or so.)
@@finneggers6612 same feeling here, your work is amazing, well done and hopefully you keep on uploading!
in this case if I want to save the result what should I do? What I'm doing now is to save the network of the fittest client and then when I load I copy it into some but not all clients (say 10%) to keep some diversity...Is this a good approach or there is some better method?
My birds are not evolving at all, I've checked just about everything, however, I have 2 inputs, and they are each edge top and bottom of the gap of the pipe, 1 if it's above, 0 if it's below. where in my code should I check to fix this? Using a population of 100 birds, it seems to start at 1 bird passing, and then caps at around 8
assuming you dont have bugs in your code, the information might not be sufficient for the network to learn the game.
I had 4 inputs because I thought it is important to tell the network how far from the next pipe the bird is.
Basically like this:
input 1: height of upper pipe
input 2: height of lower pipe
input 3: x position of bird
input 4: x position of pipe.
Furthermore, your input should not be the value in pixels but some values around 1.
@@finneggers6612 My inputs are like this:
input 1: above lower pipe? 1:0
input 2: below upper pipe? 1:0
usually only 5 birds make it through the first few pipes, so my inputs work, the problem is it's not increasing the number of birds that do pass through
@@mariovelez578 Its not wise to take some input data that can quickly jump from 0 to 1 or sth like that. think about you sitting in your car. you would not want your distance sensor to peep if you just touched the car.
are the pipes coming random cause if so how can the network learn the game cause it has no information about what is coming next?
the pipes are random but it doesnt learn when to do what.
The input is the distance to the next pipe, the height of that one etc.
So it has information about the upcoming pipe (but only about the next one, so basically the same information a human would have).
and using that data, it predicts when to jump.
since the pipes spawn in random positions how does the balls learn learn to jump at the right time if the pipes are in different positions in each new game
For some reason I cannot see my answer that I gave to this yesterday so I will write a new one.
We are basically optimizing something that takes an input and returns an output.
If the input would be the x coordinate of the bird, the bird would fail because it has 0 information about the pipes.
We need to give some information about the pipes. I am using 4 inputs: distance to next pipes, birds height, top pipe height, bottom pipe height.
🤔This reminds me of OpenAI's CartPole Gym Thingy 😁 Seems similar, though Flappy Bird is more sexy
😉👍🏼 Gute Arbeit!
😌 Vielleicht muss ich noch mehr aufpassen, aber inwieweit ist das jetzt anders als NEAT?
NEAT ist ein genetischer algorithmus. Aber nicht jeder genetischer Algorithmus ist NEAT.
Die 3 Konzepte (selection, mutation, crossover) werden von jedem GA anders implementiert. NEAT ist eine Implementation der 3 Konzepte.
Lol already did that exacly with my c++ version
auch schon NEAT programmiert? Da sitz ich momentan dran. Wenn du ne challenge suchst, dann mach NEAT :)
hab ich noch net, aber ich bin schon richtig hyped wenn q-learning kommt XD.
github.com/oj002/OnPointMachineLerning
Great video!
Great :)