Post

It's alive! Input layer at the top, output layer at the bottom. Connection colour represents positive (green) or negative (orange) weight, thickness and opacity represents how large that weight is. Really neat to see the training process strengthening specific connections in the network.

2 reposts70 likes

Behind the scenes I’ve ported github.com/karpathy/mic... to TypeScript and made a few modifications to make it easier to hook up to a visualisation. The actual data I’m running through it is just made up BMI data, and it’s training to recognise people in the “normal” BMI category.

I don’t think I’ll use the BMI example in any post, it’s not a great demonstration of the tech because it’s just a formula. But it was easy to fake and it’s a small number of input parameters, so it’s helping me develop and test my code.

I’d love your feedback! I’m fairly sure I’ll be writing the post at this point, I feel like I can pull the pieces I need together. It’s a ways off, though. I don’t yet know what the “story arc” is or what the endpoint would be. I also need to do a bunch of background reading.

Also for anyone who might be thinking I’m selling out and jumping on the AI hype wave, the multilayer perceptron was first described in 1958. Nice try.

It’s rough atm. I need to make it more clear what weights contribute to the output, had some trouble coming up with a nice way to normalise it. In reality it’ll go slower, and much simpler networks will be shown before this one. But ultimately I want readers to train something useful in the post.

Yeah, this feels like one of those areas where you have to bring people along the journey ~slowly~ since it can be so complex. The visualizations are a great tool for that, though