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?
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.
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.
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.
EDIT:
The IPython Notebook tasks (i.e. the core exercises) are nice.
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.
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.
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).
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.)
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.
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.
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.
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?
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.
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.
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.
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.
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?
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).
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?