The final installment in the Neat XOR series which details how weights, nodes and connections are added when the genomes mutate Music : www.bensound.com/
I’ma come back to this channel one day finding that he has 100s of thousands of subs knowing I was one of the first
@typicalhog
2 жыл бұрын
This a gem
@billyj9292
2 жыл бұрын
Let’s hope so
@user-bm9jk6ku2j
2 жыл бұрын
Implementing NEAT is really hard and annoying because specific details are not provided even in the original paper… contents like this would be truly helpful!!! Thank you very much
@typicalhog
2 жыл бұрын
So true, lol!
@nastrimarcello
2 жыл бұрын
Commenting for the algorithm. You need and deserve more visibility.
@neatai6702
2 жыл бұрын
Thanks for that ! Its currently growing at 100 % per month in views, subscribers and hours watched.. So long as the content is useful to people I'll keep producing it..
@floydsequeira7601
2 жыл бұрын
@@neatai6702 Hey ! After watching your videos, I have been inspired to start working with NEAT ! I had a suggestion to a future project, where yu build a NEAT AI based trader, using multiple indicators, live data and inputs and design either a long term, short term or a scalper based trader. A generic based fittest trader! I hope yu get time to work on something like this ! It would be awesome 😊
@magneticchaos1483
2 жыл бұрын
This is going to hit the algorithm. Just have a feeling it will
@neatai6702
2 жыл бұрын
fingers crossed... !
@Kraus-
2 жыл бұрын
I think it did. Got the video recommended today.
@user-nb6zu3rk4f
2 жыл бұрын
It did. Glad to see your channel before that
@mythic1722
8 ай бұрын
Hey, how did you do the algorithm for finding which layer the node is in? Any code, examples or help would be appreciated!
@DimitarDimitrov-cc9qy
2 жыл бұрын
Can you create a video of some implementation details on the topology itself, the calculation (runNetwork method), etc.. It's also interesting how you change the LayerNumber of each node in the mutation process, when u add a new node. Just recalculating each node's layer as a path to the input seems slow..
@nastrimarcello
2 жыл бұрын
Any good sources for a beginner in machine learning?
@thiagohenrique9200
Жыл бұрын
Your videos are very informative! There is just one thing that I did not understood, how do you add a new id for the new node? I know that the connections I need to asign a new innovation number and the ids of the new nodes, but If I just add a new node for one individual, it's possible that another individual that already have another node assigned, could create a different id for the neuron in the same spot, right?
@typicalhog
2 жыл бұрын
Would it make sense to also have mutations that just disable the connection (without adding a node), as well as disabling nodes? Ofc also mutation to enable nodes. Also mutations that fully remove nodes and connections. (I guess could help prune useless stuff)
@neatai6702
2 жыл бұрын
Yes, and its a great way to avoid bloat without penalizing species which don't improve within some arbitrary number of generations.. I haven't implemented it but google DasolEmilyPaper.pdf to see how its done..
@typicalhog
2 жыл бұрын
@@neatai6702 Ohh, thanks! That looks juicy!
@GearsGod
2 жыл бұрын
@@neatai6702 wouldnt this just make it a growing brain then? its doing what the human brain dose but many less nodes and alot faster testing time XD
@typicalhog
2 жыл бұрын
For some reason, my NEAT XOR always decides to use the gaussian (std::exp(-(x * x))) activation function (like 9/10 times). The optimal net has 2 input nodes and 1 output node, both nodes connected to the output one. (No hidden nodes cause each node has its own bias (so it can solve it with just 3 nodes and 2 connections), I know it may be better to use a dedicated bias node and let the nodes make connections from it but this seems simpler and semantically more similar to the natural NNs). This makes me think it actually is beneficial to let nodes mutate their activation function. (I can't remember if you said you are already doing that or not).
@typicalhog
2 жыл бұрын
There are a lot of useful act functions here: neat-python . readthedocs . io /en/latest/_modules/activations.html?highlight=function
@neatai6702
2 жыл бұрын
I just stuck with the original method and used a bias node on the input layer to reduce complexity on startup.. But theres no one right answer.. I like your approach of mutating activation functions at the node level and already have a few videos in the pipeline which use this approach in a different project.. they are due out mid next month ..
@neatai6702
2 жыл бұрын
thanks, I'll check them out..
@typicalhog
2 жыл бұрын
@@neatai6702 Seems like YT removed the link I posted. Hope this works, lol. This is the solution for XOR I described above. ipfs . io / ipfs / QmZUnyhYwB9dshTsdZiSE7EZcdovFw6iENfHMBTTAQHRdC ? filename=liteNEAT_XOR . png
@stephenlavender8781
Жыл бұрын
I get a probelme for when I add lots of connectiosn that there is not a path back to the input layer, any reason why this would be?
@typicalhog
2 жыл бұрын
When adding a new node - you said the weight of the first connection is set to the weight of the disabled one and the 2nd one is set to a random value. I believe Ken sets the 2nd one to 1 in his paper (to make node addition less impactful). Do you think it's better to do it your way? Or were you not aware of the other way? Maybe it's irrelevant, too.
@typicalhog
2 жыл бұрын
Setting it to 1 doesn't make sense anyway since activation func will deform the output anyway, I guess.
@neatai6702
2 жыл бұрын
In my experience it doesn't matter.. Its going to get mutated anyways and within 5 generations will be a completely different value..
@typicalhog
2 жыл бұрын
Does it even make sense to re-enable a connection if there has been a node placed onto it already? Wouldn't it just "bypass" the non-linearity caused by adding a node?
@neatai6702
2 жыл бұрын
I think it adds a nice bit of complexity to be able to reenable connections through the mutation step.. When a new node is added it gets 2 new connections which are added to the connection array; which are all independent of the disabled connection.. So reenabling it won't affect the new node..
@typicalhog
2 жыл бұрын
@@neatai6702 I wasn't concerned about it being a problem, just wasn't sure if it's actually beneficial for the performance of the network or not.
@GearsGod
2 жыл бұрын
@@typicalhog i think if you stated a base richness value, where the data back is more rich and diverse, and throwing away old ways that produce the same result, a sort of is_better_way() type of thing, a NN shouldnt only stop at good static data, this may be fine for proccesser like task but for NN the goal really is to "learn" and one way is to avoid stale/duplacated results, I.E bordem.
Пікірлер: 34