Software engineer specialized in machine learning (especially deep learning and reinforcement learning).
Also have significant experience in embedded systems, high performance computing, hardware/software interfacing, graphics, computer vision, and electronics design.
High proficiency in C++11/14.
Professional Experiences
Google DeepMind
January 2016 - Present
Research Engineer
Engineering for machine learning research
Interaction Networks for Learning about Objects, Relations and Physics
AlphaGo Project
AlphaZero Project
Avigilon
July 2013 - August 2014
Firmware Developer
Embedded C++ development with a talented team that puts a lot of emphasis on doing things right (low technical debt)
Developed firmware for HD IP surveillance cameras with ARM Cortex-A9 CPU on a specialized SoC
Wrote, maintained, and debugged highly parallel code with complex synchronization requirements and a Linux kernel driver for controlling lenses with electronic focus
NVIDIA
January 2012 - July 2012
Hardware Engineer Intern
Post-silicon bringup of Kepler generation graphics processor units (GPU)
Binning and characterization of GPUs (performance spread at different voltages and temperatures)
Performed high frequency signal integrity, power sequencing, and PLL tests
Analyzed and "hacked" PCB designs to change the order power rails come up, etc
UBC Robotics and Control Lab
May 2011 - September 2011
Research Assistant
Designed and implemented a self-adjusting head restraint that senses the occupant's head position and adjust the head restraint to maintain optimal distance in real time to minimize whiplash in case of collision
Completed the entire electrical system from system design, component spec-ing, schematics/PCB design, assembly, firmware programming (thousands of lines of code including a custom multi-tasking system), to testing, on a very tight schedule
Designed multiple 2 layer PCBs with analog electromagnetic sensing circuitry, ARM Cortex-M3 (STM32) MCU, brushless motors commutation and control, and USB interfacing
Delivered a reliable system that successfully met all requirements and provided thorough formal documentation
Capcom Game Studio Vancouver
May 2010 - December 2010
Software Engineer Intern
Implemented a major feature in a cross-platform C++ game, "Dead Rising 2: Case West", that involved scene analysis, heuristics, front-end, audio, rendering, and animation support
Collaborated with game designers closely to deliver the feature exactly as envisioned, on a very tight schedule, with constantly evolving requirements
Developed C# tools to improve QA, artists, and programmers efficiency
Technical Projects
Deep Learning for Chess (MSc Thesis)
April 2015 - September 2015
Used multiple deep neural networks with temporal-difference reinforcement learning to play chess
Implemented neural networks and stochastic gradient descent (AdaDelta) in C++11 using the Eigen BLAS library
Engineered a smooth low level feature representation that resulted in highly efficient learning with good generalization
Devised a novel way to combine the power of minimax searches in stochastic situations with the power of neural networks in pattern recognition
The resulting program plays at the level of FIDE International Master after 72 hours of training - by far the highest strength ever achieved using machine learning from low level features
Results were widely reported in both mainstream and tech media, including the MIT Technology Review
Thesis: http://arxiv.org/abs/1509.01549
Deep Learning for MRI Segmentation (MSc Project)
December 2014 - May 2015
Used deep learning techniques to segment 3D brain MRI images for Alzheimer's diagnosis
Implemented 3 convolutional architectures in Theano (Python meta-programming framework) with different computational power vs accuracy tradeoffs, and performed experiments on GPUs
Wrote a report summarizing the development history of neural networks, including recent discoveries such as ReLU activation, DropOut, model compression ("Dark Knowledge"), and convolutional architectures
Report: http://arxiv.org/abs/1505.02000
Thunderbots
January 2011 - June 2013
Designed a team of autonomous robots to play at the annual Robocup international robot soccer competition
Led an electrical sub-team of about 10 students responsible for all electrical aspects of the robots
Mentored younger students working on parts of the robot as well as peripheral projects and experimental tech prototyping
Kept track of electrical budget, timelines, and collaborating with other sub-teams (mechanical and software)
Aerobatics, a CG Clip Written in OpenGL
April 2013
Wrote a CG fly-through video of an airplane performing aerobatics above a complex randomly-generated cityscape
Final project of an introduction to graphics course (140% on this project, 100% in the course overall). Orders of magnitude higher complexity than all other submissions
Implemented custom GLSL shader-based, high quality lighting, particle effects, variably-emissive surfaces, and fog
Implemented an efficient renderer to support very large scale cities (500,000 buildings in one frame)
http://www.youtube.com/watch?v=_aF4uGe3jMQ&hd=1 (http://tinyurl.com/kyxpc33)
Mini Robot Soccer (School Project)
April 2013
Built a simple robot that collects tennis balls and push them out of the opponent's gate
Responsible for all software components - C++/Qt-based GUI and an AI based on a hybrid of potential well and A-star algorithms
Wrote a realistic simulator that allowed us to work on the AI before we had working hardware
AI worked perfectly and transferred to real hardware almost without any change
Oversaw hardware and firmware design, and system integration
AnalysisBot, an Online Chess Analysis Program
January 2010
Wrote an interactive bot that provides computer analysis of chess positions on the Free Internet Chess Server
Designed a convenient "chat" based user interface that allows users to tell the bot to provide real-time analysis on ongoing games, or annotate historical games
Used BSD sockets API to talk to the server using a difficult-to-parse human-oriented protocol
Uptime of about 5 years. Used by more than 32000 unique users
Education
Imperial College London
Master of Science in Advanced Computing
with Distinction
Thesis - Giraffe: Using Deep Reinforcement Learning to Play Chess (arxiv.org/abs/1509.01549)
Courses - Machine Learning, Machine Learning and Neural Computation, Intelligent Data and Probabilistic Inference, Argumentation and Multi-agent Systems, Computer Vision, Parallel Algorithms, Cryptography Engineering
2015
University of British Columbia
Bachelor of Applied Science in Electrical Engineering
with Distinction, Co-operative Education
2013
EXPO 86 (Engineering) Award
2013
Undergraduate Student Research Award
2011
Undergraduate Student Research Award (Industrial)
2010
Interests
Classical musician on the clarinet, saxophone, piano, and viola, with 3 years of orchestra playing experience
Backpacking, blogging, social psychology and mental health, musical theatre, martial arts, fish-keeping, video games, consumer gadget design, chess, SCUBA diving
Federal Aviation Administration and Transport Canada certified private pilot (airplane)
Please visit http://matthewlai.ca/resume for the latest version of my resume.