Learning Machine Learning
I am by no means an expert in machine learning. I actually know very little about it. From my limited understanding, it is a program designed to make the computer learn from some inputs in order to generate an output. That output will probably be better than what humans could do on their own. Based on that definition, machine learning is a method for a computer to achieve artificial intelligence.
In college, I learned a little bit of machine learning using a genetic algorithm. I do not remember exactly what the application was. I think it had something to do with mapping heat distribution. Regardless of what it was, I remember it not being very interesting to me.
Since I graduated college, I have heard the term ‘machine learning’ get thrown around over and over again. I know I heard of it from Coursera and Udacity. I saw people using machine learning and other programming methods to help in stock buying and selling. I have also seen a pretty awesome video on YouTube. It trains Mario in Super Mario World (a game for the Super Nintendo) to beat a level much faster than most humans can. The machine starts from nothing, not even knowing what the controls do! That process is amazing – I recommend watching it here.
I have looked for several resources to learn machine learning, specifically for stock trading. One paper I ran across talked about these algorithms. It states that when transaction fees are taken into account, these algorithms are no more lucrative than buying and holding. However, that paper did not account for cryptocurrencies. I’m interested in learning machine learning for potentially seeing how I could use it to trade Bitcoin and other altcoins.
On the plus side, maybe I can develop a really good algorithm to earn money. If that fails, I still learn a really useful skill. That skill can likely be used in my job or for other side hobbies. It also gives me material to post on this blog. 🙂 It’s a win-win!
I’m a big fan of free online learning platforms like Coursera and Udacity. In my search for learning resources, I’m taking the following courses:
Did you know that Udacity’s nanodegrees consist of several courses that you can take individually without paying for the degree? The degree definitely has extra benefits, like side projects and help with finding a job. However, you can just take the courses for free if you don’t want those added features. You can also do the same thing with courses in Coursera. I found a helpful site that lists all the courses that go into a Udacity nanodegree from the following site:
Using that site, I know the 7 courses I will be taking for Udacity’s Machine Learning nanodegree. The last one on there at the time of this writing is a course for machine learning and trading. Ironically, one of my coworkers is taking a course at Georgia Tech from that professor. It should be very interesting!
After I finish the Udacity nanodegree courses, I may take the courses in the deep learning specialization on Coursera to learn more: https://www.coursera.org/specializations/deep-learning
Learning Is a Life-Long Process
Where did all of this interest in machine learning come from? I found something that interests me, and I am pursuing it. It may help on the job and in my financial life. It will also keep me up-to-date with current software technology. It also feeds into my broader interest of automation. Machines learning something better than I can through an algorithm? Pretty neat!
As a software engineer or a programmer, it is important to keep yourself updated with current practices and technology. I have seen far too many people in my career using design practices that were popular 10 or 20 years ago. In particular, using C code without any good development practices such as code reviews, unit testing, continuous integration, or even source control! While these things have worked well in the past and will still work, newer design processes can make development much more efficient with higher quality.
So how do you know what’s out there? How can you keep yourself current? The following lists how I do this:
- Read blogs (Hacker News and Simple Programmer are two good ones)
- Listen to podcasts on your commute (I am going to start listening to https://softwareengineeringdaily.com/)
- Attend meetups in your area – if they don’t exist, organize one!
- Look at what is trending on Coursera/Udacity/other learning platforms. Take some courses that interest you.
Part of my future posts will be detailing my learning process going through these Udacity and Coursera courses. This will help you learn about machine learning and its applications. In addition, it will walk you through my learning process. Perhaps you can glean something from that as well. Or perhaps I can encourage you to learn something new.
What is something you can start learning today that will make you more effective on your job? What is something you can learn that will better your life? Stop putting it off and start doing it today.