top | item 14322953

Ask HN: How can a front-end developer dive into machine learning?

340 points| FahadUddin92 | 9 years ago | reply

I am a Computer Systems Engineer who is good at front end development. I want to learn machine learning next. How can a front end developer utilize machine learning?

148 comments

order
[+] mrdrozdov|9 years ago|reply
In Feb 2015 I quit my job as a front end developer to learn more about machine learning.

First, I went through the Recurse Center, which is a 3 month program sort of like a writing retreat for programmers. I learned a lot about Python and AWS in that time, and got an internship as a data engineer.

In that Fall, I started a computer science master's. I've taken mostly courses in machine learning including: Machine Learning Theory, Deep Learning, Probabilistic Graphical Models, NLP, and GPUs. I've collaborated with two professors on research papers, which has definitely been the highlight of my degree although I definitely think the courses were necessary as I continue to use the information that was covered.

Finally, I'll be starting this summer as a research engineer doing deep learning! This process took me 2.5 years, but I feel very prepared for my new role. It probably is possible to do this faster by joining a program like Metis or Insight, which prepare you for data science like jobs w/in 3 months. I would say that approach is slightly more challenging / high risk. If you really want to go into machine learning, I'd say doing the degree is a more surefire approach, granted it's more expensive in time and money.

[+] jorgemf|9 years ago|reply
I work in machine learning and I don't think a 3 months course is going to transform you in a machine learning engineer. I think you need at least the time you took. You need to learn the maths, statistics, etc. Apply those tools to real problems, get some experience with different problems and techniques. And, finally, be involved in some type of research. Because machine learning is evolving so fast, you need to learn how to read a paper, how to understand it, and how to apply it to your problem. I see no way to do everything it in 3 months. You need at least a couple of years and be lucky to find a job related, so you put your first step in the industry.

And congratulations for you achievement and your bravery to quit the job!

[+] wunderlust|9 years ago|reply
Was your undergrad in computer science or did you 'hop' into the masters?
[+] 3chelon|9 years ago|reply
Your question says "utilize" machine learning. I was in the same position. It struck me that rather than go off and try to catch up with half a century's research, and contribute nothing, I'd be better off utilizing machine learning in my front-end work.

So I have started using IBM's Watson platform, and some of Google's AI tools. I was specifically interested in speech processing applications (I have some background in signal processing and audio, which helps a little), and I've found the Watson stuff particularly useful.

At the end of the day, if depends on your motivation. If you really want to become a true expert, stop reading this and start studying. Otherwise, I think there does exist a significant "gap in the market", as it were, to build useful front ends to these technologies, which currently exist as raw APIs.

In terms of career prospects, I have already met several Watson consultants, who do exactly that, and charge top dollar for it. The plain fact is, it doesn't take very much to be considered an AI "expert" in the current climate. And you're probably more likely to get there quickly by standing on the shoulders of giants than by dedicating your life to a PhD.

[+] luked22|9 years ago|reply
I have no clue about Watson and Machine Learning, I mean I've talked to people and quickly glanced at the platforms. But in terms of the speech processing, does that not require any back-end at all? I'm assuming your using the browsers API to capture sound and then passing this off to Watson in some back-end method to analyze? Or can this seriously be done all fron-end? Pretty amazing if so.
[+] qorrect|9 years ago|reply
I am a long time developer who is trying to move into data science / ML.

What I've found after taking off for 12 months of self-study, is that it quickly dissolves into you must know math. As far as I can tell, its take a problem, map it into a vector space, then use the full power of mathematical analysis on it .

There is a huge push by large companies to make AI as a service though, and for that, you only really need to know how to use the APIs.

Which makes me wonder, why in hell have I done burnt through all my savings for this. Sure I have a new found love for math, but I'm not going to be accepted as a mathematician ever without the rigor of a formal education, and if I just wanted to use APIs ... I could have continued to do what I was doing.

[+] eshvk|9 years ago|reply
> Sure I have a new found love for math, but I'm not going to be accepted as a mathematician ever without the rigor of a formal education

I think there are two separate things here:

1. Being a research mathematician requires a degree of expertise which is easier to come by with formal education.

2. Knowing how to use APIs and make correct distributional assumptions; despite the bullshit fed by our industry, it is not easy or non trivial to design a completely idiot proof API. So having know-how of how the math works under the hood is helpful even if you are going to just use the API.

[+] ma2rten|9 years ago|reply
You don't have to be a mathematician to do machine learning. Jeff Dean said that almost every engineer working at Google should be capable of picking up the math for machine learning [1]. In particular with deep learning the math is quite manageable.

I would encourage you to take part of some Kaggle competitions to get a better feel for the practical aspect of machine learning.

[1] https://backchannel.com/how-google-is-remaking-itself-as-a-m...

[+] sjg007|9 years ago|reply
For sure work through a linear algebra book, a stats book and some probability theory. Some basic calculus as well. Work through all of the simple examples. Just like programming..

That level of math helps to model the problem domain. The part of modeling the problem is to see that everything in ML is a graph. So you can look at it from that point of view as well, at least computational wise. Mapping the math to the graph is the heart of it all.

[+] bkyan|9 years ago|reply
I'm a little confused -- how does learning math involve burning through savings?
[+] sabman83|9 years ago|reply
So where are you at in terms of job search and preparation?
[+] nogbit|9 years ago|reply
I don't usually comment on HN but when I do...

Kidding aside, I've seen these kinds of posts so many times and I want to make sure that for those that are thinking "strategically" about their profession, career and passions then I would advise to buckle down with a good BS in Math at a minimum (or CS).

But why? Im your older self telling you that you will grow to really really like and enjoy programming, computers, tech etc. and may want to continuously dive deeper. And when you attempt to do that it all comes down to Math. So save yourself a ton of time and money and just do it, close all your browser tabs, cobble together all your transcripts and get into a Math program (if you already have, go get a MS in Math at a uni that has a strong CS program).

[+] hello_newman|9 years ago|reply
That's exactly how i feel. I dropped out of school at 19, taught myself to code, went to a hack school, and have been working as a rails dev for the last 4-ish years. I realized I wanted to go into ML, and instead of trying to take shortcuts, at 24 I enrolled in my local community college to finish a degree in comp-sci. Looking at 8+ math classes (from Geometry to Calculus 3), but the only reason why I'm doing it is because I believe it will be worth it in the long run.

The only thing that sucks about it is all the GE classes I have to take before I can even start my fun Comp-Sci classes.

[+] atarian|9 years ago|reply
I'm not sure if I agree with this. This is like saying that the very essence of cooking is chemistry and that in order to fully understand and appreciate how cooking works, a chef should get a MS in Chemistry.
[+] tinyrick2|9 years ago|reply
Dan Shiffman created a Youtube playlist titled "Intelligence and Learning", which might be a good place to start.

This is the link to his channel https://www.youtube.com/user/shiffman

[+] ahamedirshad123|9 years ago|reply
Siraj Raval and Dan Shiffman are THE best, when comes to teaching.
[+] iask|9 years ago|reply
Thanks for sharing this. I immediately like his energy...I find KNN and TSP very interesting problems and I see he has a videos on those...bon weekend!
[+] arsmoriendi|9 years ago|reply
Thanks! There is a live session now (started 34 minutes ago), as every friday. He's apparently coding a Minesweeper. It seems like a really good resource.
[+] niix|9 years ago|reply
That intro video is hilarious.
[+] MehdiHK|9 years ago|reply
Awesome! Thanks for sharing this.
[+] seibelj|9 years ago|reply
A lot of bootcamp / self-trained devs went into front-end JS for the money. Now that it's saturated, time to move onto the next buzz word. A foundation of CS fundamentals will still be lacking.
[+] allyelsey|9 years ago|reply
You say "for the money" like it's a bad thing. A job is where you trade labor for money, no need to foist anything else onto it.
[+] throw_fraud_dev|9 years ago|reply
I'm a self trained dev (aka horrible person?) who's spent the last 8 years doing back end dev work - mostly C#, Java, Python and now Scala in everything from SV startups to a government research lab. Either I'm an outlier, or you're overestimating the importance of those cherished fundamentals (which can be picked up independently of a degree anyhow).
[+] krosaen|9 years ago|reply
I'm about a year into a transition from traditional software dev / engineering leadership to ML / robotics engineering, starting with 6 months off of personal study and now continuing study while on the job as a research engineer. I wrote about my experience and give advice on how to approach learning ML here:

http://karlrosaen.com/ml/

[+] laughingman2|9 years ago|reply
http://course.fast.ai

Its hands down the best course to get your hands dirty with latest , state of art stuff, and then learn how it works. It has completely different approach to most courses. It is top down.

Do this first, you can immediately apply it to cool stuff like image classification , nlp etc.

The assignments have additional resources where you can get into more detailed math (but the course doesn't dumb things down, but gives more intuitive explanations) and dive even deeper.

[+] ransom1538|9 years ago|reply
Hey honest question.

I have worked with ai and nlp guys. How i have seen this works out: there is a problem x. They get the best most recent respected research on the problem x. They implement it most of the time it's on (github).

If it doesn't solve the problem at hand they shrug their shoulders and say something like "it is the standford nlp parser can't do better than that!"

the concept "getting into ai" - I am confused. We need more people to git clone ai repos? Or are these people truly interested in ai research - at that point they should be looking at a phd.

Then people pile on: "learn how an nn works!" Uh why? Anyone can git clone and setup nodes. I am missing something. Please help.

[+] sseveran|9 years ago|reply
So I have been doing what I shall call applied machine learning since I was in college when I built an ad classifier for a web crawler I was building at the time. I made the real transition while working in the search team of a web company almost 10 years ago now.

Let me first say that I am unlikely to ever design a new novel algorithm like an SVM kernel. I have however studied ML theory extensively and have a good grasp of the underlying math. I also had the advantage of working in medical research starting in high school and even before college I had learned a lot about statistics and was comfortable using a tool like SPSS to perform ROC analysis as well as gaining a solid understanding of what real statistical rigor was.

I, and those I know and work with, do a lot more than clone some repos from GitHub and see if they work. Typically there is some sort of a business problem that needs solving. Sometime we know of an approach that will work but often there is a literature survey that needs to be conducted to see if anyone has solved a similar enough problem and written about it. I am comfortable reading ML/NLP literature and evaluating the methodologies described. Often there is some open source stuff to get us started but rarely (I can't think of any, but its early in the morning) have I been able to put together a complete solution without solving some difficult problems on my own.

If I were to give someone advice it would be probably not the advice that they would want but here goes. I assume that the person would already have a solid mathematical foundation like engineering calculus. 1. Start by getting solid foundation in statistics and probability. 2. You will need a foundation in linear algebra. 3. Find a mentor(s) that can help you with both the theoretical side of ML and the applied side. In my case they were different people. 4. Implement some learning algorithms from scratch. I build a NN library a long time ago. I never used it in a production application but the learnings it gave me are still invaluable. 5. Read the research. You need to feel comfortable picking up a paper, understanding it, and evaluating whether you should believe the authors or not.

Maybe there are shorter roads. Personally I don't believe so. I was lucky to be paid to learn these skills through my career. I am sure there are people who are smarter than me or who can just learn by reading. I learn by doing. But this has led to success for me and I think gave me the ability to succeed in different environments, using different technologies, and long before the entire world was so enamored with deep learning.

[+] Scarblac|9 years ago|reply
Yes, to actually improve the state of the art, you start a PhD, I agree.

But there's still also a lot of work that people can do applying the "Github repositories" to new problems. And to do that effectively, you also have to know stuff (e.g. you need to be able to read the most recent research, now when tool X is appropriate over tool Y, know what preprocessing makes sense in a given situation, etc). There's money to be made there and people want to do that work.

[+] ojr|9 years ago|reply
http://www.fast.ai/ is a mooc, Coursera is a mooc that has courses on the topic also there is udemy, the knowledge you retrieve depends on the effort you put in, just like front end development
[+] intellectronica|9 years ago|reply
I did Udacity's Deep Learning and Machine Learning courses and found them to be a really great introduction, and enough for me to continue on my own. I'm not a front-end dev, but also definitely not a mathematician or computer scientist. You should be able to learn enough to do some cool stuff.

- Make sure you know Python well - pretty much everything interesting in ML is in Python. If you already know JS this shouldn't be too difficult.

- Learn you some classic ML using scikit-learn and some online course.

- Learn Deep Learning using TensorFlow, Keras and/or PyTorch with one of the online courses.

- Get in the habit of reading new papers in ML (which are out on a daily basis) and replicating the results.

- Start working on some cool, original stuff.

[+] nerdponx|9 years ago|reply
How can you utilize it? It's not "front end" per se, but you can use it to build recommendation systems and predictive models for users. Basically, anytime you need or want to make a decision involving some amount of uncertainty.
[+] autokad|9 years ago|reply
it depends if you want to be a data engineer (lots of need for that), software engineer that developers code for data scientists (Software Engineer: Machine Learner - also lots of demand), or a data scientist.

the latter, 'might' be a challenge. I started looking into linkedin profiles of data scientists of top tech companies after I realized there were more wharton mba's as data scientists than there where people who mastered in CIS in my program.

So far, 50% had a masters/phd in statistics, 25% Information / Data Science, 25% business background. However, I am still looking into it as my sample is small and I have selection bias in my sampling.

[+] potatoyogurt|9 years ago|reply
That's probably because "data scientist" isn't a job description, it's a trendy title for a whole constellation of jobs that involve looking at data. I would expect that the Wharton grads are probably doing work that is fundamentally different from most people with hardcore academic stats backgrounds.
[+] sjg007|9 years ago|reply
Isn't there a joke that a data scientist is a statistician who knows SQL?

It's also weird when we say collate big data and data science.

Any statistician worth their salt can do inference in limited/noisy data sets.

[+] sceew|9 years ago|reply
What are the primary skills of the 'Wharton data scientists' you are talking about? Is it excel, SQL, R, Python?
[+] master_yoda_1|9 years ago|reply
Just like you use socketio api without knowing about tcp ip or network routing protocols. You can treat machine leaning as an api which does things. You don't need to take a machine leaning class. Just treat it as an api.

And you never know, you might be already using some api which does machine learning.

[+] RangerScience|9 years ago|reply
I literally just grabbed the last (at the time) machine learning paper that'd crossed my feed, and started reading.

Whenever I encountered something I didn't know, I googled around until I had even a vague idea.

That said a) I don't know how do-able that would have been without the math background I've already got, and b) I haven't gotten much further in that reading that one paper ...yet.

Regarding the math - The only thing I know for sure to point you at is multivariable calculus, which is also (probably) the most useful math class I ever took. (It helps that the teacher was completely amazing). The set of concepts it introduced me to are amongst the most useful things I ever learned, and it's that understanding that has always given me a leg up on jumping into things at the deep end.

(I took multivar from UC berkeley in, I think, spring 2002? I went looking for video lectures, but did not find what I was looking for...)

[+] anant90|9 years ago|reply
I'm a front end developer who was in a similar position as you! I'd highly recommend giving this playlist a shot: https://www.commonlounge.com/discussion/81f5bbcfea4e44b9b2bd...

From the description: These tutorials have been chosen to maximize learning curve, i.e. learn the most in the shortest amount of time and cover topics from basic deep learning all the way to research done within the last 1 year.

They cover significantly more material than a typical deep learning course and took me lesser time. Good luck!