Ask Slashdot: How To Get Into Machine Learning?
An anonymous reader writes: I know this is a vague question, but hoping to get some useful feedback anyway. I'm an experienced SW Engineer/Developer who is looking to get into the Machine Learning arena. I have an MS in CS and a solid 15 years of experience in a variety of areas, but no experience in Machine Learning.With that as background, my question is: What is the most time-efficient (and reasonable cost) way to:
(1) Decide whether Machine Learning is for me and
(2) Make myself employable in the field.
An additional constraint is that I can't afford to quit my full-time day job. Thanks.
(1) Decide whether Machine Learning is for me and
(2) Make myself employable in the field.
An additional constraint is that I can't afford to quit my full-time day job. Thanks.
....Coursera, MIT Distance learning classes, etc. to get a feel for what "machine learning" actually is. Also, bone up on your math skills...it's a math intensive field.
this is how I'm approaching things and I'm looking at it from a doctoral programme standpoint.
my 2 cents
Have you considered online education towards a certificate in machine learning? For example, The University of Washington, via Coursera, offers a certificate in Machine Learning after about 30 weeks of study and a capstone project. You'll need some background in statistics, and familiarity with Python, and you'll have to put in several hours a week. Total cost is about $500.
Finding God in a Dog
Sign up for Coursera and take Andrew Ng's Machine Learning course. It's excellent (took it twice).
That was the turning point of my life--I went from negative zero to positive zero.
You pretty much answered your own question, especially with criteria number three: Get involved in Open Source AI.
http://opencog.org/
http://wiki.opencog.org/w/The_Open_Cognition_Project
I am sure there is more than OpenCog. Google is your friend on this one.
Brought to you by Carl's Junior.
I might recommend the following along with the associated free textbook: https://lagunita.stanford.edu/... Textbook: http://www-bcf.usc.edu/~gareth... Afterwards you can look at the more advanced free textbook: http://statweb.stanford.edu/~t...
Turn off the TV. Go into online learning fast & hard.
Bust your ass and eventually join some of the OSS project/s and volunteer to help.
It gets your name out there and the right people do notice that.
Machine learning is meant to learn itself on its own, right?
Learn xyz because you have a passion in it; job security or employable should not be the reason. xyz will be replaced by abc the moment you are ready. Also the jobs needing xyz may be off-shored.
..there is only 24 hours in a day -- don't learn something and waste those hours unless you immensely enjoy that field.
If you have already worked 15 years, life is short; start enjoying things which money can't bring. Cut down expenses, manage finances better and hope we reach post-scarcity and you can live off with less money. The point is
From what I know, MI truly expands the horizons of computer science. So someone who wants to be strong in MI; should have a good grasp on CS, algorithms, data structures.
MIT has a good free intro to AI and ML by Patrick Winston. I watched it for an hour a day while I was on the treadmill. I learned a lot, and burned off a few pounds.
You should also learn CUDA and/or OpenCL. That will not only help you with ML, but also with any other HPC, and make you more employable.
...or he's just bored with the various employment he's had over the years and looking to something that superficially interests him. Machine Learning from the outside seems like a fun field to get into (whether it is or is not on the practical side) so that's where he wants to turn his attention.
I'm sorry but a lot of your generalizations only apply to someone living in a certain box of life. 15 years of experience "approaching paying off your mortgage"... are you kidding me? Sure for some people but that's certainly not the average. Even with more people getting 15 year mortgages 15 years out of school doesn't necessarily put you into the position to be at the end of that and those first few years you weren't necessarily making that kind of cash anyway. Add in things like Student loan payments, car payments, family, eating and well maybe even living your life outside of the office and being at the end of your mortgage term is SO not to be expected at this point.
Failed engineer? Maybe but certainly not clearly from his description. The only dig I would say is with a MS in CS and 15 years in the field I would think he would have figured out how to explore new technologies by now without asking /. As for not being able to quit his day job: I like to tell my friends I live paycheck to paycheck on *really large paychecks. That's my choice. I like to live every minute of my life outside of work to the fullest and that costs money ergo I'm not banking it away. I've managed to survive a couple employment hiccups just fine and so like living on that edge. He might have a family to feed (I don't) or huge student loans (remember the MS) or etc etc etc that are burning away those paychecks before they can be saved. Kudos to you for being extremely frugal with your money but most of the population require their paychecks to continue, even those of us with really large ones.
Anyway... I must've really felt like typing today (or avoiding that pesky day job of mine) since trolls don't typically deserve this kind of bandwidth. Thanks for providing some much needed distraction!
As for the OP's questions:
1) It might be... go try it! Google is your friend and will lead you to things like Coursera or Open Source projects or Amazon's Machine Learning tools or or or..
2) Contributing to Open Source projects is your best bet for practical experience in the field OR taking a hit to get an entryish level job in the field and proving your worth inside to get back to your 15 year salary expectations. Honestly if you've got a solid resume and that MS of yours getting a job shouldn't be the hard part.
It doesn't help that picking up 'machine learning' isn't exactly on the same scale as picking up the trendy framework or language of the day. It's not clear that the rate we churn through those is actually a good idea; but at least there are huge areas of conceptual similarity that allow somebody versed in yesterday's hot language and environment to pick up today's and tomorrow's with some acclimatization to new vocabulary.
This is pretty much an entire different branch of mathematics, similar only in that the problems are large enough that you need programming skills to implement useful solutions.
I'm not sure that would help a failed engineer.
The GP's advice was not just directed at the submitter, but at the hundreds of other people who might have the same question. Machine Learning is a big and growing field, and everyone involved in tech should learn the basics about how ML works and what it can do.
I would more go in the direction that a software engineer (a real one) needs to know the following:
- Modeling
- Software Architecture
- Requirement Engineering
- Enough to talk to the database guys what he wants as data model stored
- Project management
- Programming
- Continuous integration and delivery
- Software versioning and building
As a FB programmer you need to know only a subset mainly programming and using the tools in CI and VCS. In modern companies also modeling.
For AI a total different skill set is required. It is like being a baker and switching to butcher.
If you want to start playing with some deep learning models, I would highly recommend this page. It provides some basic examples that run right in your browser. Also, this page provides a great guide to working with neural networks without getting bogged down in a bunch of mathematical equations.
Another great resource is Caffe. Caffe is a deep learning framework that will let you define a wide variety of neural networks by just writing a text file. You can run Caffe applications in CPU or GPU mode (a lot of open source deep learning code will only work with GPUs, so being able to run things either way is a nice feature).
If you want to do computer vision, make sure that you read up on fully convolutional neural networks, because they are the big thing right now.
Remember that story about a program that was able to learn how to play just about any Atari game? That is called reinforcement learning, and that's a big thing right now too. Udacity has a great course on reinforcement learning.
I worked in a machine learning shop for 2 years (doing machine learning...). In my experience, which is entirely anecdotal and limited, machine learning shops resembled academia more closely than industry. By that I mean:
1) They valued credentials that most software shops find almost meaningless (PhD level credentials, Masters at least)
2) The ones I encountered were extremely clique-y. They didn't associate with non-machine learning people.
3) There was an insane amount of dead weight (people doing lots of work but accomplishing nothing) and a general disinterest in practical application. The cliche of "herding cats" was extremely relevant here.
I got away from machine learning and more general AI as quickly as I could because I didn't like the culture. It reminded me too much of academia.
Here are some points that the OP needs to understand.
1. There are two different levels of expertise with working on machine learning: either as a library/tool user, or as a ML algorithm developer. It is EXACTLY analogous to how one approaches SQL: You can make a great living being a SQL user and knowing how to write efficient queries and build indexes, or you can go deeper and build the SQL engine itself along with its query optimizer, storage layer, etc. If you want to use ML as a library/tool user, you can have a great career as long as you know what tools and algorithms to use. If you want to be a ML algorithm developer, that means you want to work on the innards, such as using new SVM kernels or building new deep learning networks; for this role, you'll usually need a PhD-calibre background heavy in math. I personally started out as a library/tool user with Weka and Mallet, but as I used them more, I was able to understand the math behind them.
2. ML is an abstract field, and it's best to approach it from an applications point of view. Pick a problem that needs ML, such as natural language processing or image recognition. It's important to pick a problem that has an abundant amount of labelled data. There are some fields such as voice recognition where it is terribly difficult to get real labelled data. For NLP (aka computational linguistics), you can start with some basic problems such as document classification (e.g. for this document, is it about sports, business, entertainment, etc.?) or sentiment analytics (e.g. for this Twitter tweet, is it positive or negative?). There are lots of good datasets in the NLP field.
3. You can explore datasets from the Kaggle competitions and the University of California, Irvine, repository: http://archive.ics.uci.edu/ml/
4. Pick a tool and stick with it. I have used Weka, Mallet, and R. You can also use Python and Matlab.
5. When you read the literature, you will find two nearly-synonymous terms: "machine learning" and "data mining". Both are closely related. Machine learning historically comes from the AI community and generally focuses on building better ML algorithms and solving supervised ML problems. Data mining historically comes from the database community and generally focuses on using tools and solving unsupervised ML problems (e.g. finding clusters of similar customers).
6. At the end of the day, creating a better solution does not come down to the ML algorithms themselves. Rather, the better solution comes from the amount of data and what features you are able to extract. As for the many ML algorithms for supervised learning: at the end of the day, your main responsibility will come down to picking the one that best suits your application. It is just like picking which sorting algorithm to use: when do you use Quicksort, and when do you use Mergesort?
7. Here are some really good books that I have personally read:
Beginner level:
- Programming Collective Intelligence by T. Segaran.
- Introduction to Data Mining by P.-N. Tan and M. Steinbach.
Intermediate level:
- Data Mining: Practical Machine Learning Tools by I. Witten and E. Frank. (goes with the Weka tool)
Advanced level:
- Artificial intelligence: A Modern Approach by S. Russell and P. Norvig. (touches on all aspects of AI, such as tic-tac-toe algorithms with minimax and First Order Logic)
- Introduction to Machine Learning by E. Alpaydin
PROTIP: How to tell if you're reading an advanced machine learning book -- if the index contains reference to Vapnik–Chervonenkis dimension or shattering, then the book is hardcore.
Look at the competitions on Kaggle to see what people are up too.
ML can be used to do OCR, detect diseases from scans or measurements, use sensor data to figure out preventive maintenance, optimize the navigation of websites, voice recognition, marketing (duh, but there's a lot to it), recommendation systems (like netflix and amazon), network analysis (social, electrical...).
That's all I got right now, but there's more.