Discussing a new NLP dataset for US Congressional bills
A preliminary data exploration of the 117th Congress of the United States
The Kabsch algorithm and its implementation in NumPy, PyTorch, TensorFlow, and JAX.
A simple example of Pt adatom diffusion on Pt(100) surface. Potentially useful as data generation for machine learning.
A LAMMPS simulation of Cu adatom diffusion on a Cu(100) surface. Perhaps useful for machine learning applications?
A set of scripts for generating dynamic trajectories of mini proteins
A Roadmap to Multi-Arm Bandit Algorithms Recently, I’ve been reading Bandit Algorithms by Tor Lattimore and Csaba Szepesvári and discussing it in a reading group. I thought it might be nice to step back for a moment and summarize, at a very high-level some major questions one might ask when thinking about or characterizing a bandit problem! If you aren’t familiar with bandit algorithms yet, no worries! I hope to do a nice write-up on them as my group progresses through the Bandit Algorithm text (it’s really good!
Expanding NeuroEvolution Last week, I wrote an article about NEAT (NeuroEvolution of Augmenting Topologies) and we discussed a lot of the cool things that surrounded the algorithm. We also briefly touched upon how this older algorithm might even impact how we approach network building today, alluding to the fact that neural networks need not be built entirely by hand. Today, we are going to dive into a different approach to neuroevolution, an extension of NEAT called HyperNEAT.
A World of NeuroEvolution Recently, I’ve been doing a lot of reading about something called neuroevolution. At a high-level, the idea is very simple. Instead of relying on a fixed structure for a neural network, why not allow it to evolve through a genetic algorithm? To me, this makes a lot of sense. Typically, when using a neural network, one selects a structure that may work based on empirical evidence. But is it the best structure that can be used?
Machine Learning At a high-level, machine learning is simply the study of teaching a computer program or algorithm how to progressively improve upon a set task that it is given. On the research-side of things, machine learning can be viewed through the lens of theoretical and mathematical modeling of how this process works. However, more practically it is the study of how to build applications that exhibit this iterative improvement. There are many ways to frame this idea, but largely there are three major recognized categories: supervised learning, unsupervised learning, and reinforcement learning.