Matthew Lai

Matthew Lai

Research / Software Engineer

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

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)

  • http://ubcthunderbots.ca

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

  • https://bitbucket.org/waterreaction/analysisbot

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)

Valid XHTML 1.0 Strict Valid CSS!