Learning programming by building Deep Learning models
Part of the How I’m Learning Deep Learning Series:
Part I: A new beginning. (You’re currently reading this)
Part II: Learning Python on the fly.
Part III: Too much breadth, not enough depth.
Part IV: AI(ntuition) versus AI(ntelligence).
Extra: My Self-Created AI Master’s Degree
The whole AI revolution is fascinating to me. I wanted to get involved. My searches led me to Udacity. A beautiful online learning platform. I really like the layout and the colours used on the website. I have a thing for that.
I signed up to be notified of new courses and discovered the Deep Learning Foundations Nanodegree.
The prerequisites were basic Python syntax and some precalculus knowledge. When I first read the email, I had zero python experience (minimal overall programming experience at that) and a small amount of calculus knowledge in the archives of my brain from high school.
The Build Up
I was extremely interested in getting involved in the field of programming. After reading so many articles on Medium, blogs and the rest of the internet, Machine Learning and Deep Learning interested me the most. I decided I would begin to prepare for the course. I had three weeks before the sign on deadline.
I began learning about python in a number ways, mainly through a Python Bootcamp course I had previously purchased on Udemy.
The deadline was fast approaching. I had barely passed methods and functions in Python before I had 24 hours left to decide.
Filled with anxiety as to whether I’d be ready or not, I entered my credit card details and signed up to the Nanodegree on Udacity. Doubting myself, I even emailed support stating my concerns and when the refund window ended.
I was second guessing myself.
I decided against opting for a refund. I wanted to test myself. I figured, “What’s the worst that could happen?”.
Learning Python was fun. Out of all the languages I’ve seen, Python won me over the quickest.
Alongside the Udemy course, I started Udacity’s free Programming Foundations with Python course. These two worked great together.
Having the course start date quickly approaching was great motivation to study Python every day. In three weeks, I went from zero Python knowledge to being able to draw flowers, check a block of text for profanities and of course, complete the classic FizzBuzz algorithm challenge.
I even made a YouTube video of me trying to explain how I used Python to draw flowers. This really helped to cement my learning.
So after three weeks of Python prep I managed to go from mega noob, to super noob.
Two days out from the course, I hadn’t studied any math. I have a strong mathematics background from high school (7 years ago) but haven’t done much since. My mind works well with numbers so I was more confident with the math part than the programming.
In some of the announcements leading up to the course I heard matrix manipulation mentioned a few times. The Udacity team recommended using Khan Academy to brush up on matrices and vectors. So I began watching some videos and practicing matrix multiplication and rediscovering what a vector is.
I joined the Slack channel for the Deep Learning Foundations Nanodegree. The introductions channel was packed with unread messages. I began scrolling through the channel.
“Hi, I’m John from SF, software engineer at X”*
“Hey everyone, I’m Paul from London, data analyst at X”*
*These are both made up names. Everyone in the channel is extremely nice and helpful.
Anxiety levels rising.
What had I gotten myself into?
I realised, it wasn’t a competition between me and the rest of the cohort. We’re all doing this course for a reason, most likely to improve our own skills, to help each other and change the world, not to compete.
It’s funny how quickly we tend to compare ourselves to other people. Am I the only one that does this?
Even if it was a competition, the Udacity team did everything they could to warn me that the course would be hard and gave detailed prerequisites. If I was anxious about starting the course because I was in over my head, that was my choice.
Another realisation. I was surrounded by some of the smartest people in the world. I now have an opportunity to learn from the best in the field, how could I not be excited?
By the end of week 1 I had already learned a phenomenal amount. I was introduced to some of the amazing Udacity Deep Learning Team.
I learned what Deep Learning actually meant. Yes, I started a Deep Learning Foundations Nanodegree without actually knowing the proper definition of Deep Learning. It has something to do with Machine Learning, right?
I learned where Deep Learning can be applied, I even made use of some pre-made algorithms to style a photo of my dog just like Picasso’s La Muse.
I used this technique to style a bunch of different photos for friends, they all loved it.
I learned about linear and logistic regression models and how they’re used in Machine Learning as the building blocks of neural networks.
I learned about NumPy and matrix math through a few programming examples. Prior to this week, I had never used NumPy before. The documentation on NumPy is extensive and really helpful when coupled with the Udacity lessons.
Finally, I had an in-depth look at the thinking behind Logistic Regression and Neural Networks. For me, this was the most difficult section of the week. At times I was frustrated because I didn’t understand what was going on. To get over this, I would go over the content of the lesson once. I would then walk away for a few minutes just to think about it. I would then come back and write down (on paper) all the sections I didn’t understand well and revise these before attempting the challenges.
This technique seemed to work well.
I missed all of the week 2 content due to being at an MIT Bootcamp in my home city.
The beauty of doing an online course is that all of the information is accessible at any time.
Week 3 is this week.
I’m going to continue to finish off the rest of the week 1 and week 2 content before starting week 3 and then finally begin working on my first project.
I’m tracking my progress using Trello, feel free to follow along and let me know if I’m slacking.
By the end of this month, I’ll have built and trained my very own neural network from scratch.
I’ve got a lot of work to do.
I’m scared but excited.
Jumping in and starting this course was one of the best things I’ve ever done. I’m having fun learning how to program, as well as being a part of a community I had so often looked at from the outside.
I’ve learned so much already but one of the biggest things would be to just start. For so long I had wanted to learn to program and I’m finally doing it.
If you’re thinking of starting to learn how to program, just try it. There’s plenty of free resources online, try them all. Find the one that suits you best.
I still don’t know if this suits me best but so far I’m loving it.