How I am learning Deep Learning
I have been a web developer and designer for quite some years and a year ago when i was just learning about AI and getting started, finding right courses for me was very hard and challenging. Any course outline would make no sense to me as i knew nothing about AI, Machine Learning or Deep Learning. Whatever i learned today i gathered those knowledge from many courses, following some, dropping some from halfway, blog posts, video tutorials and so on. Its been a crazy ride and as this field is so huge, I have gathered only like 10-15% of ideas about many topics, theories and its implementations and so on.
Let me share you a learning path I took while learning ML and tell you the downsides and upsides of them .
At first I thought to begin any new topic, I would need to get some ideas about it, theory behind it, how things work in a conceptual way and I thought, may be after that i will slowly start to practice those in code and implement them one after another.
So, to do that I first took this very famous course ‘Machine Learning’ by Andrew NG on Coursera. This course is super intense, its solid gold, no doubt. But for me it was overwhelming. Because of that It took me like 4 months to finish this course. And right after finishing this course, I thought, now I know so much about Machine Learning and so I tried to dive straight into the implementations. But I totally got lost. I had no confidence on how to get started coding, and on top of that now I was beginning to question the concepts I learned and even those concepts and intuitions were starting to fade away from my memories. Few weeks after the completion of my course, I was right back where I was 4 months ago. And on the negative side, after taking that super intense course, I had no intension and strength to go back and re-visit those lectures.
I had to do something. So I began to wander on the internet, enrolled on every new course and took few lectures from every one of those courses. I continued this activity for like a month, then only I realized that may be its best if i take some time off and realize things and then may be I would be able to plan better that way.
During that ‘break’ period, I developed a mental model to learn Machine Learning, again. Taking those every new courses also taught me something. It helped me realized, how much I understood from previous courses and what I was lacking and what should be done to gain confidence on those areas.
I realized that I have understood the higher level concepts of some models in Machine Learning and Deep Learning but I still need to understand the inner working of those models. But I also realize that before I learn the details about inner working of those models, I should at least be able to code them first, even not knowing how they actually operate inside. That way, my mind will be focused on learning only the details and not worry about the coding part later on. I found that Machine Learning has this standard 6–7 steps process. Each of these steps have their own complexities and details inside but on super higher level, that is all what they do.
- Gather the data
- Prepare the data
- Initialize the model,
- Feed the data into the model
- Calculate the cost
- Optimize Parameters
- Iterate this process until satisfying cost is achieved
So after realizing that, I re took some of the old courses. I first took this video series from a user on youtube called ‘Sentdex’. He has this excellent playlist of Machine Learning. His series gave me that code wise confidence, which i was seriously lacking on Machine Learning.
After the completion of that series. I took CS231n course of Stanford about computer vision and deep learning. Excellent course! But this course is not a strict MOOC like course as this course is the recordings of physical course and we only get to view them as lecture series. This has serious downside in terms of practice. This course is also super heavy on theory but lacks implementation details.
But now I have somehow gained an insight on how to implement stuffs so I had this little confidence and I could easily follow this CS231n course.
After that course, I took some paid courses on Udemy and some free courses on other websites as well but they didn’t help me that much. One thing I realized that, those free courses, they benefited me more than the paid courses. And these paid courses they make things look exclusive than they really are. I stumbled upon a free course on Udacity about deep learning but I failed to follow that course. For me I felt that what they are advertising is not actually what they are selling. I got similar experience with other paid courses on Machine Learning as well. This whole notion of making things exclusive to certain individual was really upsetting for me. On the other hand those free courses on Youtube and Coursera is what really helping people solve their problems.
I don’t know about the new Deep Learning Nanodegree program but after that bad experience with the free deep learning course on Udacity, I am very uncertain about it.
After taking these courses, I started following docs on fameworks and libraries. I first stumbled upon Tensorflow, It has really good getting started guides and tons of examples on the internet. But personally, I started liking pyTorch more than Tensorflow, as pyTorch has this simpler way to implement things. Its like similar to how you studied them on your lecture. I think pyTorch is more intuitive than Tensorflow but, that is only my opinion.
After taking these courses, I realized where i should proceed in this field of deep learning and since then, I have been re-implementing models by studying them on github, following examples on implementations, individual blogs, videos, articles and papers and asking around with other devs and learning new stuffs every day about deep learning.
Recently I came across this Fast.ai course on deep learning, out of curiosity I just took two lectures as I wanted to know how they are teaching. I must say, this course ‘Practical Deep Learning for coders’ on Fast.ai is really good for beginners. It is actually what I should have followed at the beginning and this course is free on youtube, which makes it even better. But similar to CS231n, it is not a MOOC on a strict sense as it is a lecture recording of a physical classroom and practice wise for new learners, it might fall behind. But that only depends on the learner and they have also provided Jupyter notebooks and access to forums and wikis to anyone who wish to follow.
I recommend this course to any beginner and I suggest anyone who is just getting started, to learn from free stuffs first and only if its an absolute necessity then buy the courses elsewhere. You will learn a lot from youtube, coursera and docs than any other resources.