Hacker News new | past | comments | ask | show | jobs | submit login
Google's Free Deep Learning Course (udacity.com)
614 points by olivercameron on Jan 22, 2016 | hide | past | favorite | 62 comments

I'm going through the course right now, and the instructor is saying some strange things, clearly (to me) ignoring that what he's saying is only true in very specific contexts.

For example, in the video I just watched he said "the natural way to compute the distance between two vectors is using cross entropy." And then he goes on to describe some unnatural features of cross entropy. The truly "natural" way to compute distances between vectors is the Euclidean distance, or at least any measure that has the properties of a metric.

I can understand this is a crash course and there isn't time to cover nuances, but I'd much rather the instructor say things like "one common/popular way to do X is..." rather than making blanket and misleading statements. Or else how can I trust his claims about deep learning?

It's a course assuming some background in ML.

For _probability_ vectors, there is a distance measure called cross-entropy. It's a standard error measure in classification problems. It has some important properties different from the Euclidean distance (especially for low probabilities) and there is information-theoretic interpretation.

More on it:

- http://stats.stackexchange.com/questions/80967/qualitively-w...

I understand it, I just disagree with the presentation. If you're sweeping complexity under the rug, say so and provide a link to further reading. I don't think cross-entropy is that common that someone in the target audience for this course would quickly and easily see the nuance.

Euclidean distance is not a good measure in higher dimension: http://stats.stackexchange.com/questions/29627/euclidean-dis...

Because he wrote one of the most successful ones?

My goal is to understand it for my own purposes, not to put on blinders and replicate his work.

"Just trust me, I'm smarter than you are." isn't the best stance for a teacher to take.

If you want more than a 4 lecture course, I recommend Nando de Freitas's course. It's very high quality and free.


To be clear, the posted course is not a survey course in machine learning. It is instead a more practical course on using TensorFlow to build deep neural network architectures useful for certain tasks.

The link the OP posted is a (great) survey course dedicated to machine learning as a whole, which includes methods other than deep learning.

When it comes to the course itself (I've just started it) it looks nice, but the (initial) questions tend to be vague.

E.g. in the first question with code I had to reverse-engineer what they mean (including passing values in a format, which I consider non-standard (transpose!)). The first open-ended questions were entirely "ahh, you meant this aspect of the question".

Otherwise, the course (the general level, pace, overview) seems nice.


The IPython Notebook tasks (i.e. the core exercises) are nice.

I think intro to machine learning https://www.udacity.com/courses/ud120 is the prerequisite to this course

I was just beginning to give it a try, it just requires you to type the code that is shown on video. Poor way of teaching something, it seems at first. I sense this course is just to teach me the tools of the trade, not really enabling students to fully understand what they're doing.

On the other hand, some months ago I watched the ML course by Andrew Ng, and I still did not understand how to test a simple linear regression for myself, so I did not really understand it, and stopped watching the course.

From the yc reading list 2015 [http://themacro.com/articles/2015/12/yc-2015-reading-list/], they recommend [for Neural Networks] this book: http://neuralnetworksanddeeplearning.com/

It's more about understanding than "learning tools."

I really liked the NN&DL course. Another I've been meaning to check out is this book: http://www.deeplearningbook.org

That's an exceptionally clear, well-written book, and I recommend it without reservation. And it's free online, so anybody who's curious can just check it out.

NN&DL is great for neural nets specifically, it doesn't really cover other branches of ML. That being said, I found it very easy to understand with no prior ML knowledge, all you need is some calculus and linear algebra experience.

Could you share a link to the YC reading list 2015 . I'm surprised no one asked.

You might like the book 'data science from scratch' by Joel Grus. He uses Python without ML libraries and explains clearly what's going on.

For people interested, Stanford has an excellent online course on deep-learning with an emphasis on convolutional networks. [1]

It comes with video, notes, all the math, cool ipython notebooks and will let you implement a deepish network from scratch. That includes doing backprop through the svn, softmax, max-pool, conv and ReLU layers.

After that you should be more than capable to build a 'real' net using your favourite lib (Tensorflow, theano etc).

[1]: http://cs231n.stanford.edu/

While TensorFlow may be not yet as mature as Theano or Torch, I love their tutorial: https://www.tensorflow.org/versions/master/tutorials/. It's clean, concrete, and more general than introduction to their API. (Before I couldn't find anything comparable in Theano or Torch.)

In any case, I regret waiting so long for learning deep learning. (I thought that I needed to have many years of CUDA/C++ knowledge (I have none); but in fact, what I need to to know the chain rule, convolutions etc - things I've learnt long time ago.)

Yes! Andrew Ng's coursera + kaggle.com + this deep learning course by Google is a very nice -and free- foundation.

How accessible is a course like this with no prior knowledge of linear algebra? I know it's listed in the pre-reqs, but with a good head for math and lots of calc, is it something that could be picked up along the way? I'm normally pretty bold about stuff like that, but I know it's a core part of deep learning / ML. If it's really necessary, if anyone has any resources for linear algebra run-throughs it would be greatly appreciated!!

I would start with the nano degree program if you don't have any prior knowledge of ML.

Udacity has a Linear Algebra review course, but I don't believe it is public for now. I had taken a linear algebra course before I took the GT ML class, but I wasn't a expert by any means. I don't believe you will need a deep understanding of linear algebra before taking this class. Singular value decomposition might come up. I think if you are familiar with everything in the following pdf you should be fine.


If you are motivated, you will do fine. Good luck!

Awesome, thanks for the pdf!

Simple explanation of the basics:

http://www.intmath.com/matrices-determinants/matrix-determin... - matrices

http://www.intmath.com/vectors/vectors-intro.php - vectors

Linear Algebra using Python:

https://www.coursera.org/course/matrix - Coursera: Coding the Matrix

http://codingthematrix.com/ - Website: Coding the Matrix

The simplest software for linear algebra would be GeoGebra, http://www.geogebra.org/. For instance, to enter a matrix just have the spreadsheet view open, enter the numbers, highlight the cells, then choose the option "Create Matrix". To enter a vector start writing "vec" in the input bar at the bottom and intellisense gives you the option to choose "Vector[<Start Point>, <End Point>]". Choose this. Fill it in, for example, "Vector[(-3, 4), (1, 2)]" (Hint: Use Tab to move between options in the input formula, here to move between "<Start Point>" and "<End Point>]".) Voila the vector is drawn! You can even draw a vector with just two clicks in Graphics view, if you first select the "Vectors" tab at the top (the symbol is a line with an arrowhead). The GeoGebra software is really incredible for learning/doing Linear Algebra, Calculus and Statistics. A real godsend.

Linear algebra is simple (but ubiquitous - so you need to feel it, not only "sort of follow it").

Some visual matrix operations are here: http://setosa.io/ev/ If you want a beginner textbook, I recommend http://www.matrixanalysis.com/

Again, it is simple, so maybe you can even take course and look up Wikipedia when needed (but for me it is hard to guess you level, current knowledge, etc).

In any case, this ML course assumes some ML knowledge.

Yeah, your last suggestion was what I was leaning towards. Because of the ubiquity of linear algebra, though, this seems like as good a time as any to start getting a good handle on it. Thanks for the resources!

Haven taken this course (though I will), but check out Andrew Ng's Coursera's ML course. He gives a crash course in linear algebra. It helped me a lot in my endeavours in ML & neural nets. I also like to learn as I go along, and this intro was just about enough to get started.

I did not find the crash course in Linear Algebra to be useful. I had to complete Strang's course (ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/video-lectures/) before doing Andrew Ng's course , after which most of the course seemed easy.

Ng is an awesome lecturer, very easy to follow.

Hi guys one question sorry if it's answered somewhere but why does the title say "Free" course? is it free cause of the trial period or the whole course is free as of now?

If the whole course is free are there more free courses on this site?

Thanks for the reply.

I believe all the courses on udacity are free. They make money through offering nanodegrees, partnering with companies, and a partnership with Georgia Tech to offer an online master's degree in computer science.

So free to take, money if you want degrees.

Great thanks for the reply!

Will the projects/assignments be workable on Windows, or would I need Linux et al for these?

And if not natively (using docker/VMs), would they be able to use NVidia CUDA card on my system? And how much disk space would be needed.


Does this use tensor flow?

Yes it does. I wonder if it's overkill but Google has to push tensorflow to the market some how

Why do they have to push the library. Are there any competitive advantages?

So they can spend less time onboarding new engineers.

From the site: "Complete learning systems in TensorFlow will be introduced via projects and assignments."

Purely video-based though, no materials at all, no transcript. That's a no-go for me.

Videos are also really short. If you don't already know how neural networks work, you won't learn it here.

This, I think, is more of a library demonstration than anything.

It does start really basic, with a single logistic classifier. I think you'd have to be pretty motivated to learn how neural networks work from this course, but it seems possible. If you don't know any machine learning at all, then you probably wouldn't be able to.

I must have gone blind, thank you :)

Yeap, it's dead :)

Would it be beneficial for me as a developer to take these machine learning courses? I took a course in the uni a while back and know the general techniques, but I'm not sure how it would help me in my career unless I'm doing some cutting edge work in the field or focusing on a machine learning career, in which case wouldn't I need to be pursuing a postdoc or something in it?

Likely. Data analysis (of which ML is an important part) is needed in many places, from entry-level to top-level.

I am a data science freelancer and I mostly do projects for IT-dominated companies. First, I was surprised that such companies need some external help with relatively simple tasks; only later I discovered that top-notch performance in webdev (or even: algorithms) does not mean that someone is able to do simplest data analysis.

For data science / ML - I know a lot of openings in which they are looking for "data scientists", but what they mean is software engineers with at least a slight idea what is data analysis.

When it comes to deep learning in particular - I don't know.

>"For data science / ML - I know a lot of openings in which they are looking for "data scientists", but what they mean is software engineers with at least a slight idea what is data analysis."

I've been wanting to get into this field recently. Do you have more info about these openings, perhaps?

Now I don't track offers (I get contracts through recommendations/networking), so I may be not up-to date. My background is different (PhD in quantum physics), so for me stats/data/ML is simple, but software architecture, algorithms - not as much.

When 3 years ago I was looking for data science internships, most of interview were strictly in software engineering. (I got into a more data-analysis oriented.) Even when I applied to Google a year ago (and failed), all non-trivial questions where in software engineering (some with data-oriented paradigms, tough).

Look at https://medium.com/@rchang/my-two-year-journey-as-a-data-sci... - the taxonomy of "Type A Data Scientist" vs "Type B Data Scientist" is useful. You want to apply for the "B" or even - software engineer in a company which deals with data and is open to shifting roles.

Going back to the interviews: I see that the set of questions is entirely different. E.g. if the first question is "how to invert a binary table" or "how to test if a black-box number generator is fair". But sometimes it is not clear from the job opening.


If you are interested in my background: http://p.migdal.pl/2015/12/14/sci-to-data-sci.html

It's enough tasks where you need to have understanding of the ML algorithms/workflows/tools, and be able to implement production system that integrates them into real systems, generating value for companies. In many cases you need to have very good domain knowledge & software development skills in addition to understanding of ML. And in ML-related systems, the big part of implementation not ML itself, but a lot of supporting stuff (figure 1 from "Hidden Technical Debt in Machine Learning Systems" paper (https://papers.nips.cc/paper/5656-hidden-technical-debt-in-m...) quite useful for understanding).

I personally took several ML courses from coursera/udacity/edX, and they helped me when I decided to move to another group that works on the ML-related projects.

No. Honestly, no. Do it because you think it's interesting. Very few companies do deep learning (Google, Facebook, and Microsoft come to mind - it might be useful if you work at these companies already). That number will undoubtedly grow, but the vast majority of ML/data science positions deal with stuff like linear regression, PCA, logistic regression, decision trees, random forests, maybe svms/boosting if you want to get fancy. Take an ML survey course like Andrew Ng's course to learn about these. Also basic statistics/probability.

It sort of makes you wonder if we're looking at a future where something like 5 teams composed of 1000 of the top researchers each are going to build the premier ML systems, and those teams can then solve most generalized ML tasks.

Most other programmers wouldn't be able to contribute much value in a world that worked like this.

This perhaps mirrors how the chip market works, which similarly involves a limited number of researchers involved in advanced manufacturing techniques that are highly specialized and mostly a mystery to other people in the technology field.

But there may be a larger market to hire people who know how to use the tools they design.

The caveat is that in the long term, ML systems are generalized systems that function independently and won't necessarily always remain in the form of an "API tool" that traditional programmers will interface with.

Machine learning only going to be more and more relevant in the tech industry. Eventually you're going to have to deal with some sort of data analysis, just because there is little to no barrier from data collection to data analysis.

I'm not sure that a deep learning course would be a good first course. But an intro course on linear regression and basic probability/statistics would be worth looking into.

I'd recommend really mastering basic statistics if you aren't going to go all the way with learning data analysis. It's surprisingly subtle and more widely applicable to a broad range of careers.

If you can make the time than learning new things and taking courses is always a good idea. You never know where you're going to end up as a developer. Who knows you may end up changing the course of your career. Also machine learning and AI are all becoming big fields.

TBH, I like machine learning in terms of its applications, but I have no desire to go into the field in order to do research, or deal with statistics, etc. I would rather just use it as part of my software that I am building. To that extent, how helpful is it for me to take these deep learning type courses?

I fucking love Google, it's the greatest company there is. Thank you for this free course, incredibly high quality and very enjoyable to watch.

Udacity is kinda ridiculous, making us answer some stupid questions every 5 minutes. I'm not in school anymore (by the way: no one ever learns anything in school).

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact