Dmitri Volkov is a rising junior at Ridgefield High School, CT who has been interested in programming from a young age. Dmitri is familiar with a number of programming languages, including (but not limited to) Python, Java, Racket, and Jelly (and now, of course, the Wolfram Language). Computation concepts that interest Dmitri include functional programming, logic programming, domain-specific languages, cryptography, and artificial intelligence. Dmitri co-leads two extracurricular programing groups: one that teaches basic programming to middle-schoolers, and another that facilitates collaboration between high-schoolers on programming projects. He also code-golfs (hence the Jelly). Dmitri uses an Arch-based Linux distribution as his primary operating system. Besides computer science, Dmitri is also interested in music, particularly contemporary styles (including free jazz and contemporary classical). He was a national runner-up in the National Federation of Music Clubs' composition competition. Besides composition, Dmitri also can fluently play the violin, trombone, and mandolin (and can play other instruments decently as well). When not being productive, Dmitri enjoys being consumptive via the reading of books, or the occasional playing of a tabletop or video game.
Project: Implementing a Tsetlin Machine Framework
A Tsetlin machine is a kind of machine learning based on combining Tsetlin automata. A Tsetlin automaton is a simple machine-learning system based on reward and punishment that learns which of two options is better. Research from 2018 (https://arxiv.org/abs/1804.01508) makes it possible to combine Tsetlin automata in such a way that each individual automaton is oriented toward a common goal. This greatly reduces noise when compared to previous attempts at a Tsetlin machine. My project is to implement a modular framework for creating and training Tsetlin machines. Although the initial goal is to simply implement the framework for the simplest Tsetlin machine, there are variations on Tsetlin machines (convolution, continuous, regressional) that can be added to the framework.
Summary of Results
I created and built up a framework or initializing, training and running Tsetlin machines. It is capable of learning two-input XOR. Some features include a method for testing Tsetlin machines, a full-featured Tsetlin automaton implementation, a way to customize output functions, a way to customize which kind of feedback is provided and when, two different included output functions and two different corresponding feedback deciders (one is from the paper, the other I invented). The framework was designed in such a way that extending it should be easy. There is also a function that displays the propositional formula for a given output of a Tsetlin machine, which is useful for mathematical analysis.
There are several extensions to the Tsetlin machine that I did not have time to implement: the regression Tsetlin machine, the multiclass Tsetlin machine, the fully connected deep Tsetlin machine and the recurrent Tsetlin machine. Although the Wolfram Language is a very powerful language, future work can also include the reimplementation of the machine in a lower-level language to optimize speed.