Week 4: Neural Networks Are Like Onions
May 3, 2024
Hey guys! I went to visit Northwestern this week for an admitted students day and also talk to Prof. Abrams. We didn’t meet for too long, but he introduced me to a pretty interesting approach to data science that he took with Prof. Strogatz for a model. Basically, he took the idea of chemical-mixture equilibrium dynamics and applied it to language-speaking populations, specifically Quechua/Spanish speakers in Peru. This specific concept isn’t directly related to my project of collecting Pokémon data. But it got me thinking about ways to be more creative in my understanding of data mining.
Neural Networks
I spent some time thinking about existing models that I could extend to Pokémon battle replays. Prof. Abrams mentioned Eigenvectors as a potential avenue, but outside of quantifying discrete data (turning things like word strings into high-dimensional vectors), I couldn’t figure out how they would actually be able to help without a lot of research. Something to do with quantification though, that was a huge lead.
While browsing lessons on YouTube about general Mathematica usage, I stumbled across a video by 3Blue1Brown detailing the actual process behind GPT’s. In short, they employ a series of layers which accept vector inputs and transform them somehow into new vectors, then repeat for as many layers as there are until a final numerical result is reached. This numerical result is typically a softmax layer, which turns the final results into pure probabilities, which are then used to give a “most likely” final result. I did some more research into this process, and turns out, Mathematica has a plethora of built-in layering functions for this exact purpose.
Game Plan
Now that I have a concrete method to process my data, there’s really only two major steps to the project. 1. Create a database of simple input-output pairs from battle replays. 2. Customize a classifier function (the entire body for the layers) to train the data on. But interestingly, the difficulties flip here — now my major concern is splitting up the replays into the chunks. This part would likely be much easier with Python, but it’s too late at this point to try to learn the language.
In a way, this process is meta-reflective of the idea of Pokémon as a whole. A novice trainer (the empty classifier function) is training itself on battle data. It analyzes battle after battle to instill a working idea of how to optimally play the game. I like thinking in this way; it humanizes the process and motivates me to carry it to a passable condition. Hopefully this will also inspire me to finally get a tangible start on the project!
Hoping for some good news next week!
Alex R.
Leave a Reply
You must be logged in to post a comment.