|
Hello, I wanted to ask you, from your own experience, how would you recommend studying Machine Learning?. I ask this because I've recently seen much people interested in the area But they do not really know where to start. And most of them end up using someone's else implementation without bothering on how it works. In this place, I have met people with great insight and knowledge on the algorithms and methods. And it is exactly that knowledge the one I'm asking for, how goes your day in ML research?, do you focus on a single project or you look different projects at a time? If any, what book, paper or tutorial impacted in you? I do not want a list of resources, we already have great posts on that. Just describe the way you do research to be so good. Thank You |
|
I read lots of papers. In the university, my stack of papers for a week was usually a lot bigger than the tiny stacks of papers my colleagues were annoyed that their advisor had them read before graduating. Also, I tend to do a lot of thought experiments trying to understand how things work and why, and why they are not just done differently. A part of this is spending some time explaining things to myself so I can understand them better (and in practicing this metaoptimize has been extremely helpful, as here I can also get feedback for my attempts at explaining things to understand them). I find helpful to think of alternatives when I read a paper or watch a talk, and try to convince myself about the quality of my alternative suggestions. I code things far less often than I should, specially because I don't have many datasets lying around to try stuff on, or many ways of measuring the performance of what is happening. When I do run experiments I prefer to code almost everything from scratch, as then I can understand what works, when, and why, and also understand all the little points about optimization that are mixed in the papers with the actual model structure. Try bioinformatics, there are tons of free data sets waiting to be processed.
(May 19 '11 at 02:44)
Leon Palafox
@Leon: there are many datasets around, just not that many I understand well enough to get what is going on and care about it.
(May 19 '11 at 03:00)
Alexandre Passos ♦
How do you choose which papers to read, and how much time do you devote to each of them. Do you have a method, or simply check conferences and check the titles.
(May 19 '11 at 03:03)
Leon Palafox
I went to NIPS the two last years an that helped a lot. Otherwise I check papers by people that are well known in areas that interest me or that wrote papers that I found intriguing. Also I just go through the list of - say - ICML and check the titles and read what I feel like ;)
(May 19 '11 at 03:09)
Andreas Mueller
3
I always follow the top conferences and journals (Mikio Braun has an RSS feed of most ML journals and ML-related arxiv things, as well as many ML blogs). I usually follow references in good papers, to understand better what is going on (chances are the paper you're reading is not the first to use those ideas, and it always helps to have other perspectives) and papers with interesting titles who cited some interesting papers I've read. Also, and this is very important, when I read a really interesting paper I google the authors and search their webpages for other interesting papers (or, if it's a student, for interesting papers by other students of the same advisor).
(May 19 '11 at 03:22)
Alexandre Passos ♦
As an inexperienced person, I've never tried to delve into reading a large number of papers in ML(especially those advanced papers in JMLR), since I still feel that there are lots of fundamentals that I don't know and I should first find out them throughout good books in an organized way. And having done that, Step in MS level for really a thorough understanding of them and getting involved in state-of-the-art issues.
(May 19 '11 at 13:19)
Bahr
@Bahr: it is worth it to read the good books in ML (say Mitchell, Bishop, EOSL), but they by no means provide a good introduction to the research that I find interesting and that is happening right now, for varied reasons (Mitchel's too old and outdated, Bishop's goes over some important things and sometimes fails to pass the intuitions behind things, EOSL is far too technically statistical for an ML audience). Reading papers is not that difficult, and can give you a far better perspective on specific topics.
(May 19 '11 at 13:28)
Alexandre Passos ♦
I think you are right. I'll try to incorporate reading at least two papers weekly in parallel with my previous reading schedule.
(May 19 '11 at 14:44)
Bahr
I couldn't find this RSS feed, searching for Mikio Braun. Is the feed from his delicious account?
(May 19 '11 at 15:44)
Andrei Formiga
I've found that most NIPS and ICML papers are accessible just from having a Bishop-level background. Mathematical content is either analysis that is peripheral to the main idea being presented, or explained in a fairly concise and straightforward way. There are exceptions, and for those the solution is usually to just grind through it and look up significant previous papers if they're identified. It seems to me that machine learning papers rarely go into the sort of intensely brutal math that algorithms or computational complexity (and computational learning theory) papers do, at least when they're constrained to 8 pages.
(May 23 '11 at 01:36)
Jacob Jensen
This is not spoken from a position of authority, but finding a broad overview like a textbook or wikipedia article, then doing a Google Scholar search on the parts that interest you and reading highly-cited articles can be a good focusing strategy. There's a great, general article on how to do scholarship here: http://lesswrong.com/lw/5me/scholarship_how_to_do_it_efficiently/
(May 25 '11 at 14:12)
Steve
showing 5 of 11
show all
|
|
When I stated doing machine learning about two years ago, I started implementing things on CUDA as my advisor wanted me to. That might have not been the best start. Since then I tried to understand many different methods from kmeans to hierarchical non-parametrics. Often I implement algorithms and play with them to gain better understanding. Now I mostly use python for that, sometimes with weave. I often browse papers from the big conferences to get a feel of what's going on and alternate between getting to know new ideas and really understand the basics. I barely use other peoples implementations. The libraries I use the most are libsvm and shogun, since I don't want to do SVM optimization - and some computer vision features. I feel my way got me a pretty good and wide insight into ML methods but I didn't produce much myself :-/ When you implement algorithms, do you use other's implementations as a base, or do you simply jump into it. I find helpful to have someone else's implementation to compare, at least to see everything does what it's supposed to do
(May 19 '11 at 02:46)
Leon Palafox
Depends. When I have the feeling that my things work and do what I expect them to do, then I don't compare. If I have doubts, I try to check other peoples code or just run someone else's algorithm on the same data to compare results.
(May 19 '11 at 02:49)
Andreas Mueller
@Andreas you complain about an instructor that asks you to implement things in CUDA? You should consider yourself lucky to have a superior who lets you toy around with this kind of stuff. There's a .pdf of a machine learning course by David Barber of UCL floating around the Internet (300+ pages). I think it's even linked on his homepage. I haven't worked my way through it but as far as I can tell it's a very good foundation.
(May 19 '11 at 13:11)
David the Dude
I think it's a lot more work to implement an algorithm in CUDA than in Matlab or Python. My background is in pure mathematics so I needed to learn all the basics of machine learning. And I just don't think CUDA is the right tool for that.
(May 20 '11 at 04:31)
Andreas Mueller
I see where you come from, implementing Machine Learning Algorithms in things like CUDA is not the best way to learn how to implement ML algorithms. You have to care about too much stuff besides how the math works
(May 20 '11 at 05:55)
Leon Palafox
|
|
This has not been mentioned quite a lot here, but there are some good exercises/questions in some classic machine learning text books. Doing the exercises or the derivations, though time consuming, is helpful in understanding different aspects (e.g. computational complexity) of a model. Beyond learning machine learning algorithms and models itself, it is always interesting to study problems in other domains, such as biology, vision, neuron science. These fields contain many problems where computational modeling should have been helpful but there is a big gap between applying standard ML algorithms and solving the domain problems. What books are you using? Is there any book in particular that you are thinking about? I am mostly using Bishop which has quite a lot of exercises - which I haven't done nearly enough of...
(May 20 '11 at 15:14)
Andreas Mueller
Bishop's has many exercises and some of which has solutions online, though for most of us the solution does not matter as much as the derivation practice itself. I have used ESL's simply because overall I like the book better than others as a general treatment of machine learning (concise and clear). The exercises covered many topics that could have been included in the chapter. But for topics such as graphic model, approximate inference and sampling method, Bishop's may have a better coverage. I had thought about organizing some journal club in my school for that but it seems the interests are limited...
(May 20 '11 at 16:51)
Denzel
|
|
Most things I wanted to say have been said already but I wanted to emphasize what I think is an important attitude towards all the information we are flooding ourselves with. I think it is very important to keep a certain form of humbleness at all times. With this I mean that it is important to continuously question your own understanding of the things you read about. There is no 'teacher' to correct us when we misunderstood something. For this reason it also doesn't hurt to still read sections in papers that seem to deal with things you already know. I'm often enough guilty of skipping those sections but I found that they sometimes fill in gaps in my understanding that I didn't know about before or even fix things I misunderstood. I learned that there is a lot more to know about 'simple' methods and models and the basic probability distributions than there is in the standard machine learning textbooks. Metaoptimize is very good for this because it also forces you to ask yourself whether you can actually be 100% sure when you answer a question. If you cannot be 100% sure it is a nice motivation to (re-) read about the subject matter. When do you think someone is ready to start publishing on ML?
(May 19 '11 at 06:53)
Leon Palafox
This is just my opinion but I think there is actually no restriction to that. Sometimes people might be able to directly publish the work they did during their first machine learning course project. My point about 'being humble' was not to discourage publishing but to keep on learning and refining the basics.
(May 19 '11 at 07:25)
Philemon Brakel
|
|
I've got a consulting gig just in order to learn some optimization methods in depth. The best way to learn, in my opinion, is to start with a problem, a nasty real-world problem with its messy data and tight implementation schedule/budget and try to solve it. Talk to people outside of your usual environment, they may point you to great real-world problems to solve that you'd otherwise miss, buried in a stack of papers. Talk to people with problems, not people with solutions. |
|
The paper that got me into Machine Learning was the Yann LeCun's convolutional networks. I was in my third semester undergrad, and you could imagine back then it blew my mind. So I read pretty much anything I could find on neural networks, because you could actually model the human brain with those. Then I took every course on machine learning I came across. As for implementation, there are plenty of open source implementations. I would read a paper, try to find an implementation of that algorithm and play with it. If it's in matlab, then I would translate it to python and in the process understand what's going on. Once I start feel comfortable with what's going on, I start breaking it down and tweek the parameters. It's just playing and having fun for the most part. Which brings me to answering your question about how to get people excited who want to learn machine learning. I have the feeling there's a sufficient buzz created around this field (no wonder we are in the web 3.0), so people are interested in it for the wrong reasons. So a good test would be to give them some interesting papers to read, and if they come asking for more, and enjoy discussing the problems, then good. But if they come asking for more chewing, ask for simplification or more machine learning for dummies, then there's little hope. You are right, just after Newton was presented in Jeopardy, I saw tons of posts asking "How do I make something similar"
(May 26 '11 at 03:43)
Leon Palafox
|
I'll probably put my own answer, but I have to work a bit on that.