A note to prospective students(Modified with permission from Bert Huang.)
While openings in my research group will be rare, I thought it would be helpful for me to write about what qualities in students I look for, to give you an idea of what I find important for doing successful research with me. The three major elements, in order of what CS grad students typically need the most improvement on, are communication, mathematics, and programming. I wouldn't expect you to be excellent at all of these aspects right away, but if we work together, I'd expect you to continually make efforts to improve all of these. This should sound fun and exciting to you. If it doesn't, it's a good sign that we may not have great working compatibility. The first requirement for collaborating with me is some background in machine learning, at least consisting of taking a graduate-level introductory machine learning course or equivalent. You should have some maturity in understanding how machine learning algorithms work, their mathematical foundations, and how one implements them in computer programs. CommunicationResearch requires a ton of communication. You must be able to express
ideas verbally and in writing, and you must be good at listening and
understanding what others say or write (often not well). You'll need to
become an expert in English grammar, style, and usage. You don't need to
be an expert right away, and mastering English is a lot of work, even
if you are a native speaker, but the better you get at it, the more fun
and productive your scientific research will be. MathematicsThere is a multitude of weird mathematical concepts in ML research, so you'll need to be capable of learning to understand some of these concepts. At the core, there are some standard math areas that you need for nearly all ML research. The work I do requires being comfortable with the basic concepts of probability, linear algebra, optimization, discrete math, calculus, and graph theory. Some of these concepts are exotic and could be new to you, or they could be things you learned in high school, but we will be using them in likely higher dimensionality than you've previously done if you haven't done ML research before, and things can become very counterintuitive. ProgrammingMachine learning is a mathematical research discipline that is
centered on empirical data, which means you need to be very good at
designing, coding, debugging, and maintaining code to test the
algorithms and mathematical ideas you investigate. As a reference, my
research code is a mix of Python, Java, MATLAB, and C/C++. Among these, my favorite language is Python. Joy and commitmentIf we work together, we'll spend a lot of time struggling with these
three areas. At some point, you will have to spend tremendous and absurd
amounts of time and effort refining a sentence, being confused by an
equation, or trying to find bugs in your code. These situations will be
very frustrating, difficult, and exhausting, but at the same time, they
should also be fun. Again, if you can't imagine these things being
enjoyable, my guess is you'd be happier following a different path. (For
example, if you love math but dislike programming, there are lots of
more purely theoretical research areas and groups – even some who are
doing a type of machine learning research – that might fit better.) If you're still on boardBe aware that I get a lot of email from students wanting to work with me, so I may not be able to reply to every query. However, if all this stuff excites you more than it scares you, feel free to get in touch to see if our research interests line up. |