1. 程式人生 > >How I Got Started In Machine Learning

How I Got Started In Machine Learning

I get a lot of emails asking about how I got interested in machine learning and about my background.

I don’t think my story is special or interesting, but I’m happy to share it and honored I’m asked.

This post feels a little self-indulgent. I figure it can be the definitive version of my story that I can use to answer similar inquiries in the future.

The lessons that I point to underly much of my work on machine learning mastery and there is a slim chance that maybe there is a kernel from the story that you can take away as motivation or inspiration.

The Short Version

Here is the one-line version:

I’m a programmer who started tinkering, left his corporate job to research artificial intelligence and earn a few higher degrees and came back to programming to work on bigger problems.

Here’s the one-paragraph version:

I was awakened to the creativity and power of programming. I sought more powerful tools until I discovered artificial intelligence. I started coding and writing and wining competitions. I was working as a corporate consultant on a good path, and quit to purse my passion for AI. I followed this passion into a Masters and a PhD in computational intelligence. I then bounced from web startup to defense subcontractor and worked on multi-agent systems. I now work on systems and models used by meteorologists to forecast tropical cyclones in Australia and the south pacific. I pursue my mission to help programmers get started and make progress in machine learning at MachineLearningMastery.com.

The Long Version

The narrative of the the things I did and the lessons I learned can be divided into five parts:

  1. Computers: Computers and software were a means to an end, in this case entertainment.
  2. Programmer: Creating and sharing work product leads to opportunities and the knowledge is there for the taking.
  3. Researcher: Passion is a powerful tool so wield carefully and have confidence in yourself.
  4. Problems: Smart people and interesting tech is not enough, that you need a problem that matters to be fulfilled.
  5. Mission: Mindset is key. Leverage your skills as a programmer or engineer and study and practice applied machine learning.

If you’er on LinkedIn, you can connect with me and get an itemized breakdown of some of the stuff I’ve done.

Part 1: Computers

Computer as an Appliance

I grew up in a house with computers. My father was a network administrator and we always had a family PC and later multiple systems and lot of ad hoc computer hardware.

The home PC was an appliance. I could use it to play adventure games, platform games and later, early first person shooter games.

Some games required special configuration of the system. Learning DOS and the details of loading drivers and memory management was driven by a desire to get specific games to work. Optimizing the configuration of the system became the game, more challenging and enjoyable than the games themselves.

Disk Operating System

DOSK Disketts
Photo by DBreg2007, some rights reserved

Hardware and Networking

We always seemed to have a lot of hardware about the house. Big things like old monochrome monitors as well as random bits and pieces like boxes of XT motherboards, MFM hard drives and later SCSI controllers, and Ethernet network cards.

Learning how to build PCs was motivated by the desire to play games that were only available on 5 1/4″ floppy disks. Later, learning to design and build PCs was motivated by the economics of having my own PC to play newer and more resource hungry games like Quake.

Network games were a passion, first over modem and null-model cables and later over small local area networks. Learning how to setup ad hoc networks was absolutely required in order to be able to play cooperative and deathmatch Doom and subseqent first person shooter games.

The pattern here is that was I not draw to computers for their own sake, technique knowledge was acquired as a means toward a specific end, almost universally to play games.

ethernet cables

Ethernet Cables
Photo by GlennFleishman, some rights reserved

Part 2: Programmer

Game Modding

Playing a lot of first person shooter games lead to the desire to modify the game.

I started out creating my own levels for games. I distributing them with friends and later on my own personal website. I got interested in deeper changes to the games the way they worked. I started to change the code and distribute my own game modifications, some of which even got some broader coverage.

I was not interested in programming for programming sake, at least initially. I was interested in what I could build and who I could share it with. I learned C and C++ so that I could make modification to games. I learned Java so that I could easily create simple GUIs and network games. I learned web programming so I could make my personal website look and work better.

I learned the importance of semi-formal work product that could be packaged and shared. I also learned that others could learn from, comment on and even improve upon my work, if I was brave enough to share it. Comments on my work lead to other opportunities such as coverage in the media, offers for free hosting and collaboration with masters.

Quake3 Platform Game

Magazine article for my Quake 3 Platform Game Modification (circa 2000).

Programming

I got hooked on programming. School changed from a place to force-fed topics to a resource I could leverage to learn the things I needed to know to build more interesting things. My programming and grades got noticed and I was offered and took a job as an IT consultant doing lots of web programming and enterprise Java for corporate clients.

I dove deeper into the art and craft of programming and into more powerful tools like network programming and multi-threading on various projects. I started to read about artificial intelligence, starting with the classics and moving through Minsky, Novig and Brooks.

I experimented with my own AI bots for first person shooters and explored the problems of navigation and planning. I learned about neural networks and genetic algorithms and started to write own implementations. I discovered algorithms like learning vector quantization and self-organizing map and implemented and re-implemented my own versions. This lead into AI writing competitions and machine learning competitions, in which I did well.

I learned that my interest could push me into new and interesting subject areas and that I could learn what I needed just-in-time to get results. The papers and books are all there, ready to be read when I needed them. I also learned that algorithms are amazing, but not magical. They are written down in papers and can be turned into code by anyone.

agent ecosystem

Ecosystem of agents in Quake II, showing herbivores, seeds, and poisonous plants.

Part 3: Researcher

Passion

I was young and more interested in spending my days studying AI than helping companies make more money. I quite my job and switched the Masters I was taking (at nights) from coursework to research.

I connected with an amazing complex intelligent systems lab and was given the permission and freedom to think deeply and choose what I wanted to work on. I decided to dive into genetic algorithms and read a bunch of population ecology books, landing on ecological niche theory and algorithms that try to exploit that to solve multi-modal and multi-objective problems.

I continued on and discovered the field of artificial immune systems and explored spatial and temporal properties of evolution-like processes in hierarchical and distributed models of the acquired immune system. It was blast.

I learned that passion is a powerful tool and that having the freedom to choose and commit to an area of study unleashes that passion, it removes the harness and you become accountable ultimately to yourself.

artificial immune system

Image from my 2006 IEEE CEC paper

Research

I enjoyed reading and writing more than doing my own experiments. This was a complete turn around for me.

I read hundreds or thousands of research papers, just for the fun of it. I developed and refined a process of condensing and explaining what I was learning into small semi-formal work products in the form of technical reports.

I spent a lot of time thinking about the problems of the broader field. I created my own platform for implementing and racing algorithms and was acutely aware of the variation in the quality of published work, the absolute futility of racing algorithms, and the deep problems around the reproducibility of published work.

I loved science, but these problems put me off a career as an academic. I had found my love of reading and communicating the work from research publications and I learned that I didn’t need to be in an institution to continue that interest.

optimization algorithm toolkit

Screenshot from my Optimization Algorithm Toolkit

Part 4: Find Purpose

Startups

After graduate school I threw together a team of the smartest people I knew. Our mission was to turn our technical skill into money via a “start-up”, I’m quoting because we had absolutely no idea what we were doing.

We could all build, but we could not sell nor market and had no idea of the best way to use our talents. We had a mission of building one website per month for as many months that we could keep going. We failed to survive more than 4-6 months, but managed to build a bunch of sites, two of which got some traction and customers.

I jumped to another start-up, this time in attempt to put my AI and research skills to good use. It was a small defense subcontractor using multi-agent technology in diverse domains as information retrieval, net-centric warfare and UAV controller design. Mostly aviation related projects. The technology was fun and interesting to learn, but it was all R&D prototypes. Nothing that I could see ever got actually used.

I learned that you need real people with real problems. I learned that even with smart people and cool technology, you will not make an impact unless you are working closely with the people with an actual problem.

Problem

I jumped into an opportunity of programming, research and data all focused around a problem that mattered.

I currently work for a meteorological organization and develop and maintain software and models used by meteorologists to forecast tropical cyclones in Australia and the south pacific. I have a particular interest in statistical models, the verification of forecasts and ensemble methods because of the use and overlap with machine learning methods and practices.

I continue participate in machine learning competitions on occasion and consult for local startups. I always learn something. I also wrote a book on algorithms in an attempt to directly help beginners looking to implement and learn about interesting algorithms

I learned that working on problems that matter that engage your skill set is very fulfilling.

clever algorithms

Cover from my 2011 book: Clever Algorithms

Part 5 Mission

I’m not an expert in machine learning but I have seen a few things. I’ve been the interested programmer and implemented algorithms. I’ve seen the academic side and got some higher degrees. I’ve consulted for clients from finance to start-ups. I’ve written books and participated in modern competitions. Now I’m interested in giving back and helping beginners.

I took a long road just to wind up where I started. I found confidence in myself and discipline to get things done. The change was mindset, not technical skill.

My mission is to help programmers and engineers get started and make progress in machine learning. To overcome their self-limiting beliefs and put to use the skills they already have.

If you are obsessed with machine learning, then study and practice machine learning. Focus on your strengths and the skills you already have and make unique contributions that only engineers and programmers can make.

I can assure you, that once you find that mix of problem that matters that combines with your skill set you will find fulfillment.

If you feel some affinity with my story and my mission, download my machine learning resource guide and get on my email list discover where you fit and what to focus on to start and continue your machine learning journey.

相關推薦

How I Got Started In Machine Learning

Tweet Share Share Google Plus I get a lot of emails asking about how I got interested in machine

How Do I Get Started In Machine Learning?

Tweet Share Share Google Plus I get daily emails asking the question: How do I get started in ma

How To Get Started In Machine Learning: A Self

Tweet Share Share Google Plus Specifically, the original poster of the question had completed t

How To Get Started With Machine Learning Algorithms in R

Tweet Share Share Google Plus R is the most popular platform for applied machine learning. When

How to Get Started with Machine Learning in Python

Tweet Share Share Google Plus The Python conference PyCon2014 has held recently and the videos f

How To Get Started With Machine Learning in R (get results in one weekend)

Tweet Share Share Google Plus How do you get started with machine learning in R? R is a large an

Five steps for getting started in machine learning: Top data scientists share their tips

If you want to carve out a career in machine learning then knowing where to start can be daunting. Not only is the technology built on college-level math,

Steps to Get Started in Machine Learning: The Top

Tweet Share Share Google Plus Getting started is much easier than you think. In this post I show

Practical Advice for Getting Started in Machine Learning

Tweet Share Share Google Plus David Mimno is an assistant professor in the Information Sciences

How Facebook Uses Bayesian Optimization to Conduct Better Experiments in Machine Learning Models

How Facebook Uses Bayesian Optimization to Conduct Better Experiments in Machine Learning ModelsHyperparameter optimization is a key aspect of the lifecycl

How can AI, Blockchain And Machine Learning Go Hand-in-Hand?

The last few years have seen exponential growth in new technologies. It seems that the world is now opening up to new ideas and experiments. Exponential te

How Beginners Get It Wrong In Machine Learning

Tweet Share Share Google Plus The 5 Most Common Mistakes That Beginners Make And How To Avoid Th

How To Talk About Data in Machine Learning (Terminology from Statistics and Computer Science)

Tweet Share Share Google Plus Data plays a big part in machine learning. It is important to unde

How to Better Understand Your Machine Learning Data in Weka

Tweet Share Share Google Plus It is important to take your time to learn about your data when st

How To Handle Missing Values In Machine Learning Data With Weka

Tweet Share Share Google Plus Data is rarely clean and often you can have corrupt or missing val

機器學習筆記1 - Hello World In Machine Learning

之間 項目 圍棋 gpu 強勁 大量數據 特殊 轉換成 [1] 前言 Alpha Go在16年以4:1的戰績打敗了李世石,17年又以3:0的戰績戰勝了中國圍棋天才柯潔,這真是科技界振奮人心的進步。伴隨著媒體的大量宣傳,此事變成了婦孺皆知的大事件。大家又開始激烈的討論機器人什

Data Leakage in Machine Learning 機器學習訓練中的資料洩漏

refer to:  https://www.kaggle.com/dansbecker/data-leakage There are two main types of leakage: Leaky Predictors and a Leaky Validation Strategies. L

Top 4 Steps for Data Preprocessing in Machine Learning

Data Processing in the machine learning is a data mining technique. In this process, the raw data gathered and you analyze the data to find a way to transf

How I built a GPU Deep Learning Cluster with ray 

It all began at the end of May. Eric texted me that he was working on a personal research project and that he needed my help to realize his goal. He wanted

Learn How to Code and Deploy Machine Learning Models on Spark Structured Streaming

This post is a token of appreciation for the amazing open source community of Data Science, to which I owe a lot of what I have learned. For last few month