The Real Jon Zia (on Github)

Logo

Run, Debug, Repeat

View My GitHub Profile

About Me

I’m an aspiring physician-engineer based in Atlanta, GA, USA. My coding hobbies involve creating A.I.-powered bots for multiplayer games and occasionally publishing various machine learning templates I create in the course of my research. You can check out all my projects on my (admittedly sparsely-updated) GitHub Profile – or simply scroll down for project descriptions, documentation, and videos. Feel free to contact me directly for comments and questions!

I hope you find one or more of these repositories helpful!


Machine Learning Templates

Various template scripts for performing machine learning tasks.

Neural Net Studio (Matlab ~ Documentation, Demo, Paper)

This (really old!) program trains and analyzes recurrent neural networks (RNNs) as well as non-recurrent feedforward networks. It works for both recurrent and non-recurrent networks, and any number of different neural network architectures can be tested at once. The program is automatically formatted for parallel processing across computer cores. This code was used to create the attached research paper, an early example of using machine learning to predict freezing of gait in Parkinson’s patients.

LSTM Network (Tensorflow ~ Documentation, Demo)

This (really old!) program is an LSTM network written in Python for Tensorflow.

Recurrent Autoencoder (Tensorflow ~ Documentation, Paper)

This program implements a recurrent autoencoder for time-series analysis. Useful as a buidling block for higher-level nonlinear dynamical systems modeling. An example implementation based on a more complex version of this program is shown in the attached research paper, which models the cardiovascular system as a nonlinear dynamical system to interpret cardiomechanical signals.

Probabilistic Graphical Modeling (Matlab ~ Documentation)

Framework for designing, solving, and implementing probabilistic graphical models for statistical modeling. Includes features such as message passing, variable elimination, recursive solving of factor graphs, and solving hidden Markov models (HMMs) via the Viterbi algorithm.

Genetic Algorithms (Matlab ~ Documentation)

This program implements a genetic algorithm with the use-case of sorting a shuffled dataset. Useful as a building-block for higher-level genetic algorithms, with some advanced features such as multithreading with genetic migration between separate populations built in.

Gaussian Mixture Modeling (Matlab ~ Documentation, Paper)

This program implements unsupervised clustering via Gaussian mixture modeling (GMM). This code was used to create the attached research paper, which uses a statistical approach to identify consistent time-domain features in dynamic, stochastic signals.

Manifold Mapping (Matlab ~ Documentation, Paper)

This program implements the ISOMAP algorithm for mapping a low-dimensional manifold of datapoints. This code was used to create the attached research paper, which analyzes the underlying low-dimensional dynamics of cardiomechanical signals.


Games!

Sometimes I design programs for games that I have a hard time winning.

Settlers of Catan (Matlab ~ Documentation)

This program learns to play Settlers of Catan via reinforcement learning. The quality function is learned by training a neural network to map board states generated from Monte Carlo simulations to the ultimate number of victory points achieved by the player. The program follows an epsilon-greedy function based on the most current quality function approxmation.

Chess (Tensorflow ~ Documentation, Demo)

This program learns to play chess via reinforcement learning. The action-value functions are learned by training a neural network on the total return of randomly-initialized board states, determined by Monte Carlo simulations. The program follows an epsilon-greedy policy based on the most current action-value function approximations.

Codenames (Matlab ~ Documentation, Demo)

This program generates clues based on either 8 or 9 words entered by the user. The words must be taken from the 400-word set of the Codenames board game. The clues are generated based on an analysis of the Priceton Wordnet database, which seeds a dependency graph that may later be tuned via reinforcement learning (not yet implemented). You can check out a demo of the program on YouTube!

Monopoly (Matlab ~ Documentation)

This Matlab package contains the necessary objects, functions, and scripts for training autonomous agents to play the board game Monopoly via reinforcement learning. This includes functionality for running Monte Carlo simulations of Monopoly games using either a random policy or an epsilon-greedy policy on a specified value function. The trained models may then be used with the provided interface.mlx script for implementation in player v. computer matches.

Scrabble (Matlab ~ Documentation)

(In Progress) This program learns to play Scrabble via reinforcement learning.


Other Projects

Random other projects related to my work and hobbies.

Swarm Robotics + RL (Matlab ~ Documentation + Demos)

A simple project which uses reinforcement learning to teach networked agents to perform herding tasks. This software was designed for simulation in Matlab and implementation in the Robotarium laboratory at Georgia Tech.

Drone Flight Controller (Arduino)

(In Progress) This program utilizes reinforcement learning as the basis for a flight controller.

Wordnet Data Capture (Java ~ Documentation)

The purpose of this program is to scan the Princeton Wordnet database and store the hyponym and meronym data as well as full hypernym trees such that this data may be analyzed by another program. This program uses the JWI API from MIT to read and translate the Wordnet 3.0 database into workable .txt files for use in applications such as MATLAB. This program was used to build the dataset for the Codenames AI also available on GitHub.