3 ms·
I think the next step is spiking / time domain networks and evolutionary training techniques to deal with the inherent non-linearity of spiking activity. Also,
by bob1029 2y ago
I think the next step is spiking / time domain networks and evolutionary training techniques to deal with the inherent non-linearity of spiking activity. Also, maybe mix in some biologically plausible learning rules such as STDP.
I've seen very compelling results in small scale experiments. I've personally achieved basic tool use (reading a prompt buffer and writing to an output buffer) in a SNN simulation. The biggest takeaway for me is that the fitness function is the most important thing followed by selection criteria and simulation parameters. Figuring out how to compact the total measure of fitness into a single float as the simulation progresses is non trivial. I've found that dynamically adapting the fitness function and simulation parameters over time is essential.
To be clear, I don't know if I've achieved learning/generalization by the formal definition yet. I do know I can minimize the loss over a training set by merely mutating the weights of neurons with otherwise fixed delay and connectivity. I'm not even doing things like crossover or elitism yet. My next sprint will attempt varying the delays as well as the weights. I've also got some really strong opinions about the ratio of excitatory to inhibitory neurons now. I think inhibitory neurons are a bandaid for physical limitations. In a simulation, we can simply constrain the total allowed ticks or global activations per candidate. The selection pressure will reject candidates that can't get the job done with the allotted resources.
I think you can do the real deal on one powerful workstation. I've got networks with 10k neurons and I can run through about 4000 generations x 250 candidates on a single threadripper in a day. The main bottleneck being memory bandwidth as networks grow in size. Cloning them each generation starts to take a long time once you get into 6 figures. You really want as many generations per unit time. Being able to watch it evolve at meaningful rates of speed can unlock new understanding about your fitness function.
- thomashop 2y agoYou have trained a conversational model that can use tools with only 10,000 neurons? That is phenomenal. GPT-2 needed around 500,000 neurons and couldn't use tools.
- phyalow 2y ago> Figuring out how to compact the total measure of fitness into a single float as the simulation progresses is non trivial. I've found that dynamically adapting the fitness function and simulation parameters over time is essential. RL style training can let you train against a vector of losses... Custom loss functions are a thing... > I've found that dynamically adapting the fitness function and simulation parameters over time is essential Did you just figure out epsilon greedy? - very well known technique... Spiking / time domain... Non linearities can already be captured by stacking linearly activated layers, or connecting layers. Time domain, CNNs.. RNNs.. ResNet, U-Net as (now almost ancient) examples cover alot of the same ground. 10K neuron networks are tiny. I dont know what your trying to accomplish but I would suggest reading more literature, because it sounds like your stuck in a local optima of old ideas...
- OkayPhysicist 2y ago> I've seen very compelling results in small scale experiments. Small scale experiments are approximately meaningless in ML. A lot of the clever tricks that improve results at smaller scales have their gains BTFO'd by the scaling you give up as you increase the size of the model. The key insight from deep learning was that the gains from doing a smarter thing were dwarfed by doing a dumber thing a lot more. For a smarter trick to be valuable, it needs to not only improve results at the small scale, it needs to not become a bottleneck in your system as you jack up the size.