All posts by laimonas

Artificial Intelligence Engineer Udacity Degree – Finished

Happy to say that earlier this month I have graduated from the Udacity’s AI nano degree! It was the hardest course I have taken since college, which was some 15 years ago. At the same time, it was a fun challenge that I am happy to see reach a successful end.

I want to quickly summarize the parts of the course I enjoyed the most. I really had two subjects that were awesome: game playing AI and deep learning.

We learned game agent AI topics such as minimax, alpha-beta pruning, and various other tree/graph traversal techniques. It was awesome, enjoyable, just immersed myself during that part of the course. Search algorithms kept me busy and tinkering for weeks. A*, DFS/BFS, the basics that I had to re-learn and happy that I did. The game playing agent project was cool to go through and actually see your agent in action was rewarding.

The second term introduced neural networks. I could not recommend enough the neural network (NN) lectures. I went from zero knowledge of NN to somewhat being able to grasp the basics in a very short time and was able to build several models that could return decent predictions in their domain.

Would I recommend this course overall? It depends on your learning goals. If you want to get an introduction to a wide variety of topics that AI encompasses, this course is great. The field itself is HUGE. I took it to find out what the field is all about and equally important challenge myself to see if I could finish an intense course like that. I will say I am happy that I did.

But if you want to learn about ML/NN, this course contains too many topics outside of the ML field. Planning, HMM, and a few other topics were quite out dated and more important from the historical perspective. They took up a lot of time that I wish I would have spent doing ML projects instead.

What’s next? I have enrolled in Udacity’s Machine Learning Nano Degree! It will allow me to close up some of the knowledge gaps I have around machine learning, also give me an opportunity to continue practice machine learning on more projects that come with the degree. In addition to that, I am looking for ways to apply ML at work and have a few areas that I am trying it out already. Just keep on doing work and gathering the practical experience.

Book review: How to Fail at Almost Everything and Still Win Big

The book was highly enjoyable and packs so much useful information and advice. I am impressed how succinctly and clearly Scott has expressed his opinion on a large variety of topics.

It is essentially Scott’s take on life and how to succeed. Success can mean different things to different people, but I can safely say many will find information in here that they can use. I would highly recommend this book to anyone who is looking to get a good sense of how one can accomplish difficult tasks and live a fulfilled life.

At a high level, his take on life boils down to several key points (which I hear repeated in various forms over and over again in other books):

Increase your energy capacity by eating right, getting a good amount of sleep every day, and exercise/stay active. These are the foundational pillars that enable you to work hard, think clearly, seek out knowledge or adventure, and in general lead a fulfilling existence. Beyond that, you need luck, be at the right place at the right time so to speak. But luck is not a fixed concept, you can increase your odds of luck by picking up new skills, mastering concepts such as psychology, finance, social interactions, public speaking. The additional skills will increase your surface area of luck, so to speak and the rest is up to you: once given an opportunity, take

Through it all, embrace the failure for it is a valuable signal and a learning material that if utilized properly will enable you to grow.

The topics that the book covers are rather varied and all expressed from Scott’s point of view and what he learned. The presentation style though is fun and engaging which makes it easy to read and learn.

A couple of ideas that stood out to me in addition to the above big level concepts:

  • Systems vs goals. I’ve had heard this distinction before but did not fully buy into it. The author has some really interesting points and examples of how expressing your goals as systems instead can make a huge difference.Let’s take reading books as an example. You could set a goal of reading two books per month. It’s measurable, you know when you succeed or fail. And is actionable, action being sitting down and reading. But putting that number out there, Scott argues, makes you feel somewhat inadequate if you don’t succeed, you are always in a state of failure until you reach that number.

    Instead, you should come up with a system for reading books, such as: anytime you commute on a train, you will read a book (instead of looking at twitter/fb/etc on my phone). Or every other day during lunch you will read. etc. You pick what works for you and do the action. You don’t worry about the count of books, just make sure you put a system in place that allows you to spend time reading. Then pay attention to how well you are doing. If you are not reaching the amount of reading you want, try to find a better system. Iterate.

    It’s a simplified example, but if you apply it to enough behaviors, you can have a pretty good setup going on for reading and anything else. For instance, I have couple systems for reading (that I setup without even knowing): 1) keep my kindle in the commuting backpack 2) when on a train, read 3) when I see a book I like, buy it. The number of books per month varies, but I feel like I am always reading. I am almost at the end of the month and have finished four books. Last month 2, a month before 2. I am happy with the amount of reading I do and sometimes it drops to zero but that’s OK.

  • Happiness level of a human being depends on the direction of the progress and not the current state. (e.g. A rich person that goes from 2 billion to 1 billion dollars in fortunate is often sadder than a person who is increasing his earning from 90k to 120k).
  • Affirmations, a somewhat vague and controversial concept of essentially wishing for a certain outcome and it becoming a reality. Scott presents multiple examples from his life and makes sure to mention how there is no science behind it and it all could essentially be bullshit. Yet he seems to have used them in the past and tends to believe there is something there.
  • Avoid career traps that require you to sell your time for money. I am definitely in that stage right now, basically, my time is what earns me money and this book is making me strongly consider what other revenue streams I could add to improve this situation.
  • Happiness is being able to do what you want when you want it. The flexibility of choosing when to do the activity that you want to do is very important to us, it appears. I can attest to that and could explain why I am very happy at my current job: the flexibility of my schedule.
  • One should be familiar with or get a good understand of topics such as psychology, public speaking, accounting, and a few other foundational skills. I jotted down the list and see which ones are my weak points. I am always taking courses in my field of profession, but this book is making me consider if I should try to branch out and see if I can learn a complimentary skill that is not necessarily tied to my current profession (software engineering).

Again, if you are a looking for an easy yet educational read, I highly recommend Scott’s book. Enjoy!

AI Nano Degree update – Term 2, almost done

I am loving Term 2. It starts with the basics of neural networks and the introduction to Multilayer Perceptron networks (MPLs) where you build a basic neural network that you can train and use to predict either categorical (classification) or numerical values (regression). It’s power and limitations are presented through very fun exercises involving analyzing IMDB and image data.

MLPs are followed by Convolution Neural Network (CNN) introduction, by far the most fun I’ve had in this course. CNNs are mostly used for image recognition and you get to experience building image recognition networks while working on a project to classify dog breeds from a set of provided images. Really cool and fun project. It barely scratches the surface of what’s possible but you get a very nice intro and then you can branch out on your own.

CNN intro was followed by the Recurring Neural Networks (RNN). The application here focuses on language and character prediction tests with the project asking to implement a model that is capable generating English language words. It was really cool how effective the model was and how it was able to generate English words after just a few hours of toying around with training and parameters. This article http://karpathy.github.io/2015/05/21/rnn-effectiveness/ contains really cool info on RNNs.

After these topics, you reach a point in the degree where you have to select a specialization. I went with Computer Vision as that is the area that I find really fascinating and exciting. The other choices are Natural Language Processing (NLP) and Voice User Interfaces. NLP is probably the most useful but I am trying to stay away from it as everything that has to do with “language” I find very boring. It’s something that I will get over but right now I want to just have a lot of fun and learn and I know Computer Vision will provide me with both.

The plan right now is to finish up the lectures, get the project done (I hear it’s short, a weekend type of endeavor) and I am done! Can’t wait to graduate!

Book review: Antifragile

Antifragile

Absolutely loved the book and its main messages. It’s deep, ambitious, and very thought provoking. It was an immense pleasure to read.

Things that jumped out of me, in no particular order:

  • Term “Antifragile”. As defined by the author, antifragile is something that benefits from random events, somebody that gets stronger when stress is applied to it. This is a step above “robust” where robust most often means ability to deal with stress. Love it as a concept. Netflix’s Chaos Monkey seems to be something that you could define as a tool of antifragility. By randomly killing cloud instances, it helped Netflix build a more resilient architecture that now survives all kinds of cloud service failures. It actually gains from AWS going out as the rest of the services scramble, they stand strong and get positive press, admiration, tech fans that want to work there, etc. Evolution is another example. Individual participants (a human, animal) dies and disappears but the concept of genome continues to survive and actually gets stronger as individual members experience stressors that take out the weak and let the strong survive.

  • Barbell strategy, a way to build antifragility. There are many ways to explain this strategy, but it boils down to playing majority of the time safe, and be very aggressive otherwise. NO MIDDLE GAME. Playing safe you are not exposing yourself to destructive events that could take you out, so to speak. At the same time, if you truly pick a smart but aggressive investment or activity, since it’s loss magnitude is small, even if all of it disappears – that’s just a small percentage lost. But if you hit “gold”, you benefit greatly. The key is finding an activity/investment that has such a great upside and whose downside is small. Seems obvious at first, but I think in real life we play mostly in the middle. Very little on the safe side, very little on the risky side and fat column in the middle. This thought is really nagging at me and making me reconsider many of my own activities and actions.

  • Optionality, another way to build antifragility. When you have little or no options, you are limited in your actions and when you have no options, a catastrophic event can wipe you out. You don’t get better when Black Swans hit, you either suffer greatly, or survive. Options can enhance you ability to benefit from the Black Swan.

  • Via Negativa. Another way to increase antifragility, as well as a way to look at life. Don’t try to add, but work hard to remove. When looking at a design of the systems, adding functionality adds complexity, which adds fragility. Simplify, remove it, and remove some more. A noble goal in any profession and in life. It’s something that is really hard to do as adding can be tempting and short-term gratifying. Also, rarely did anybody receives an award for not doing something. Bigger/complicated systems seem to hide failures underneath the surface and it eventually all comes out in a large (Black Swan) event that has catastrophic repercussions. Large governments, top-down as opposed to bottom-up, are inflexible, fragile, and susceptible to large crises. Think of how much infrastructure and layers of bureaucracy that exist within large governments and corporations. When you get an inside look, the picture is not pretty. According to the author, such setups are just a matter of time before they get hit with a Black Swan event that can wipe them out. At the very least many people suffer.

  • Lindy effect. The longer the technology is around, the longer it will survive. Another way to spin it, don’t trust something that is new because by the mere fact that it is new, it has a really high probability not sticking around.

  • Skin in the game. A large topic but it boils down to an idea that don’t listen/rely on somebody who is not impacted by whatever they are saying or asking you to do. A doctor that suggests you a procedure which he himself would never under go (e.g. risky back surgery), an investment advice from somebody that does not use it themselves. These appear to be obvious but are not obvious in real life. There are a ton of forecasters and prediction people that get things wrong all the time, their false forecasts or news being used in real life with negative consequences. Yet the forecaster suffers no consequences. That’s the reality of the modern world. We are too large, too big, we seek out commentators on anything and everything and then follow them without asking if that person has anything in it or just spewing nonsense for profit and moving on.

In general, the book praises the life of stoicism, small size, and simplicity, suggesting the reader looks at Mother Nature, the most antifragile thing that we know of, for clues on how to live and advance.

I love this book so much that I will buy a print copy to refer to from time to time.

As a side note, I found it fascinating to see how many people absolutely deplore the author and this book. I can see how the ideas can be unsettling, and the author’s style is rather rude. I actually like it, no sugar coating and straight to the point. If you are offended by it, move on. The message is simply not for you.

Book review: The Wisdom of Insecurity

I don’t possess good enough writing skills to review such a book in detail.  Instead, I would like to link to Scott Young’s review. He does a much better job than I could and then, with Scott’s review being quite large, I would like to share a couple of my own thoughts below.

Would I recommend it? If your interests are starting to steer towards the philosophy of living in the present, Zen and Buddhism (those are not mentioned in the book directly but the philosophy is there), you should give this book a try. It’s relatively short and has some good ideas.

The book was written in the 1940s but very much applicable to today’s age. The main theme of the book is our search for security in the ever-changing world. In Watt’s view, such attempts are fruitless and are only spent by people who cling to a false idea of what life is all about.  To seek security in your life is to misunderstand life itself. Change, wars, successes, and failures are all part of life and trying to “fix” them in place is a losing fight. We use words as labels to try to define things we don’t understand or can’t control. Yet so much in life is not under our control.

One of my favorite sub-themes of the book is how we as humans fail to live in the present. We search for happiness, that always feels like a thing that will happen in the future. We define and come up with ideas of what happiness is based on our past experience. So we look towards future informed by the past and ignore the present.

The book also includes many discussions around the role of science and religion. In a way, to the author, the two are identical in that it is a human invention that tries to explain the world around us. Science uses scientific methods while religion assigns certain beliefs and urges its followers to adhere to them. Both trying to define the same thing while using a different language.

I am walking away from this book with a good reminder that nothing stays on forever, that change is part of life, without pain there would be no joy and vice versa, and the best we can do is appreciate the present moment we have while we are on this short adventure called life.

 

AI Nano degree update – Finished Term 1

With much relief, I am happy to say that Term 1 (out of 2) is now complete. Since my last update, I went through two more projects. How did it go?  Overall satisfied with how much I learned but the ending was rather boring and I couldn’t wait to complete the assignments and move on to the next term.

Project 3: Implement a planning search sounded very excited. Planning AIs is a big part of AI systems but the way the topic was presented in the class was just absolutely terrible. It was presented in a strict academic fashion and I walked away from the project feeling very dissatisfied. I spent most of my time not on learning and experimenting with the concepts but deciphering rather confusing code setup and data structures from AIMA code. The actual solution was a very straightforward copy/paste exercise that taught you close to nothing.

After thinking about this more, I don’t per se blame the materials or the Udacity. The issue here is that the subject is very broad that doing it as a 3-week exercise most likely will leave you dissatisfied no matter how you present it. To do a full project from the ground up, coming up with planning language, possible states, etc is an involved exercise. That’s where I think Udacity was better off leaving this as an optional part of the course and spent more time on search techniques or tackled more advanced adversarial search techniques like Monte Carlo Tree Search.

Project 4 was not that much different in how much it disappointed. The topic itself once more very sophisticated and exciting: HMMs. I am not sure how much I learned from the lectures and instead relied on other resources to start to understand how would one go about using HMMs. After doing the project I realized that the lectures were incredibly disconnected from the project. One could do the project without looking at the lectures at all. The videos for part 4 should just be scrapped altogether. They add no value.

 

I don’t want to end on a negative note since overall I enjoyed Term 1. The first two months were incredible, exciting and I learned a lot. The second project especially, search techniques for solving problems, was by far my favorite and one of the main reasons why I took the course.  The udacity’s system of slack rooms and office hours combined with the projects were really useful for learning and I am glad to be able to continue on.

For now, I am taking couple weeks off until Term 2 begins. Term 2 focus on more practical uses of AI and deep learning, culminating in students selecting a single specialization out of these three areas: voice user interfaces, natural language processing, and computer vision. I am leaning towards computer vision as I have always wanted to learn more how such systems operate. Although I do wonder if voice user interfaces would be more useful from a career perspective. Perhaps I will do image processing and then do voice user interfaces specialization as an add-on. Let’s hope Term 2 starts with a bang like Term 1 did and stays that way!

Book review: The Mastery

Mastery – a guide to discovering the inner force and principles for achieving mastery in any field or activity. It does not dive into the specific areas or skill sets but instead distills a set of general principles that one must follow on their path to achieving mastery in a field or subject of their choice.

The book is very dense in the material it presents. You could unpack each chapter for hours and dive into them deeper with more books and materials. What helps for the book to stay clear on the message and follow along is the format it chose. It expresses the principles by looking at contemporary and historical figures that were highly influential and respected personas in music, business, and technology and weaves all principles in mini stories that are easy to isolate and dissect.

The common theme of the book is that we all posses the ability to be great. It is not about the talent; it is not about “born genius,” or mystical powers. Luck plays a great role in our lives and cannot be dismissed. But you have to be prepared to accept and use luck to turn into anything meaningful. You have to be ready to receive it before it can make an impact on you. Through it all, it is all about hard work and more work, tactical plans combined with an ability to be flexible with a capacity to learn from others and stay on course despite the challenges that the life will present you.

It all starts with the process. First, you need to know what your big goal is. What are you trying to achieve? What is that you are trying to become? It is a difficult thing to define, and you need to spend time thinking about this deeply. Sometimes we get lucky, and we just know in our hearts what we want to do. In that case, the big goal is already defined, otherwise work to set it.

Second follows an immense practice and learning of your field or subject of interest. Not superficial tutorial here and there but full immersion and intentional practice. We need to anticipate that once the initial excitement wears off, the difference will be our ability to stick around and continue to study, learn, and practice the field. Push hard, let go, relax, push hard, let go, relax, push hard, let go relax … a cycle that will get you working hard and at the same time keeping you re-energized for more. The key is that each time you learn something, more unknowns open up and you continue to dig deep to understand the field or whatever it is that you are trying to master. The practice must be deliberate, that is with a goal in mind, and each stage has to have a purpose behind it. It’s a challenging work, but the rewards can be great.

During this time you must be strong enough to deal with self-doubt and potential criticism of others. Accept it but don’t get discouraged. Another roadblock here could be people close to you that will advise you against going for something big and steer you towards fields or topics that have quick short term gain but usually are dead-end occupations or endevours that will leave you unsatisfied. You need to find the calling that attracts you, that also is useful to the world, and then go after it.

All of the hard work is for one goal: developing of intuition. The greater the mastery, the better the intuition. There is a feel that gets developed that hints to you what approach is right and what is wrong. The deep intuition also helps you develop the connections between the subjects and fields that deepen the learning AND fuel the discovery. This is why the people that are in the field for a long time can know right away what the issues are, can solve them fast, and move past the complicated concepts in their field. The intuition is guiding them along th way.

You can enlist the help of mentors to accelerate your development. If mentors are being available, the next best thing is books and learning materials. The key is to be tactical about what is being studied and the approach that is used. The mentors can be incredible accelerators of the development and are highly recommended to be seeked out. Unfortunately in this area I have no experience as I have only occassionally encountered somebody who I could call a mentor in some capacity. The book advices on how to find such a person, how to approach it, and how to work under them. Don’t expect the mentor to have you as their primary concern. Instead you have to be creating some sort of value for the mentor in exchange for the mentorship. At the end, don’t be surprised when your hard work is taken over or adapted by the mentor. It is OK, and can happen. Accept it and expect it. And then if you follow the right path you will outgrow the mentor and move past it. The key is to recognize when that time comes and move on.

Another section that was immensily helpful and I found very useful was the section on social intelligence. Along the way to mastery, you will work with other people and organizations. The ability to read and navigate social situations is as useful as knowledge itself. Knowledge in a vacuum is useless. It has to be presented to others, allowed for others to take it apart and criticize it. Beware that at the end, people only care about themselves so potential “political” meddling and situations can arise. I love the book’s advice on it: expect it, embrace it, and move away from it. Don’t play “political” games if the goal is the mastery and gaining the knowledge. Instead, be prepared for it in a way that it does not surprise you or blind side you and do your own thing.

Overall the book was a great read. I have a feeling that I will be coming back to it from time to time. Also, just picked up a few of other Greene’s books that have similar rave reviews as Mastery. Here is to more reading and learning!

AI Nano degree update – Project Two

This is the second post in the Udacity’s AI Nano degree series. Taking the course is my attempt at learning and re-familiarizing with AI / CS concepts.

Project #2 tasked the students to implement an AI agent that is capable of playing a game of isolation. The only exception from the usual isolation game was that the moves had to follow a chess knight’s pattern. The course provided the board implementation and we had to write AI agent that is capable of searching for optimal moves through the board with the goal of defeating an opponent.

Sample isolation board. Visited squares are in the grey/black shade.

Initially, the game itself was not something to get too excited about. But when the implementation of algorithms started that’s when the fun picked up! Let’s start at the high-level definition of a problem. Given a board, it is not obvious what should the next move be in order to guarantee a win. One could run simulations and try to find it, but the search space can be too large even for the small boards (7×7) making it impossible to solve by a brute force alone. Instead, AI agent should focus on optimizing how it traverses the game tree by doing two things:

  • Come up with a way to evaluate the score for the board positions. A winning board has a score of infinity, a losing board has a score of negative infinity, anything in between should have a score that correctly determines how favorable the board is for winning or losing.
  • Iterate the possible solution tree in a way that is fast. You want to throw out the boards that are unfavorable to you, or select ones that were known to benefit you.

For the first problem, coming up with a way to value a board, means defining a heuristic function for the board position. The strength of the heuristic function is the difference maker in the AI agents. It requires a balance between being accurate but also fast to compute so that your algorithm can evaluate many boards during a single turn. If you make a heuristic function that is too complicated, then AI agent will be slow and with certain rules where time limits are enforced will lose.

For the second problem, iterating the possible solution tree, there are approaches such as minimax, alpha-beta pruning to optimize your move selection. Mix in iterative deepening search and you got an effective agent.

The heuristic functions I tried out where giving a score to a players position that indicated how many open moves the player had vs the opponent (the more moves over the opponent you have the better) COMBINED with how close the player was to the open positions. The idea here is not to get trapped. Another variation of the above I tried was staying as far away from the walls as possible. That one turned out to be a good heuristic, but not as effective as staying close to the open fields. And lastly I tried one combination where I combine staying away from the walls with staying close to the open fields and the results were still less than just staying close to the open fields.

All in all, it was a successful implementation that beat the baseline score set out by the project’s creators. Now I am trying to decide what to do with the agent and see what can be added to it so that it can participate in the competition against the agents of other students.

Some observations from going through the exercise:

  • Visualization is the king. Visualizing the board positions and move calculations really helped me discover bugs in my implementation. I should just always start with the visualization when working on the problems and go from there.
  • Iterative deepening was somewhat unintuitive at start. It is amazing how much it helps to find the solution faster without going too deep into only certain parts of the tree.
  • Alpha-beta can be a bit confusing at the start and you definitely need many manual/on-paper implementations to see why it is effective.

Some things that I did not implement as part of this exercise that still need to explore:

  • quiescent search. This one is a mystery and something that I will bring up on the course forums. I have read book materials on it and other online resources but something tells me that until I will try to implement it, it will not fully make sense.
  • Monte Carlo tree search roll outs. I really want to implement this one and see how it would make the AI agent better. Seems like it is a big part of any game playing AIs and making them effective.

This was fun. On to the advanced search concepts and pacman lab!

AI Nano degree update: Project One

First project required to write an AI agent capable of solving a Sudoku puzzle. The key goals of the exercise: familiarize students with concepts of constraint propagation and search for solving problems.

I would summarize constraint propagation as follows. In abstract, when you have a function that needs to pick a solution given multiple of choices, it can narrow down the answers by coming up with strategies that eliminate the subset of given solutions until a single solution remains or the number of potential solutions is smaller than the input solution space.

In Sudoku project, the three strategies for eliminating the solutions employed were as follows:

  • straight up elimination – find boxes that are solved, and then remove that box’s value from its peers (rows, cols, squares)

  • only-choice – given a box with multiple possible digits, for each of those digits, see if it is not present in other unit’s of that box thus making that number the only viable choice for the box

  • Naked twins – sometimes you have units that have two boxes with the same possible solutions, so that means those two squares will have either one of those digits. Thus those digits can be eliminated from other units of the box. There are variations of this called naked triplets, and so on. Twins seemed to be the most effective.

Now you can imagine that one can run through the solution elimination sequence in a loop, with each pass applying all the elimination techniques. You stop looping if none of the techniques are reducing the solution space further. You are stalled.

What now? Well, brute force search. Pick un unsolved box, and iterate through its solutions, in each pass applying the constraint elimination sequence until you either solve the problem or you stall. If you stall – the initially picked solution is not a good choice, move on to the next until solution is found.

The project was a very fun exercise. I never was much into Sudoku before so at the very least it gave me an excuse to try the puzzles out. It quickly became a fun exercise of finding patterns. And once you mix in writing Python code to solve the problem automatically, it was nothing but a delight.

Here is a screenshot of AI agent in action:

AI agent in action solving a sudoku puzzle
AI agent in action solving a Sudoku puzzle

To generalize the idea: when you have a function which has a set of possible solutions to choose from – go ahead and think through how you could constrain possible solutions to reduce the search space. Then brute force search through each until the answer is discovered.

Besides a great warm up into search, the first project also gave me a great intro into Anaconda, “Leading Open Data Science Platform Powered by Python.” Think of it as a Python environment that is loaded with data science libraries and tools. If that is not enough, it can “containerize” your Python environments that are entirely isolated and across machines/platforms. You can setup a Python 2 environment and Python 3 environments, load it on the same machine, and neither will impact each other. And again, not to mention that it comes pre-installed with a variety of data/ml related packages.

On to the second project, which goes much deeper into general AI ideas around search and advanced game-playing techniques. I am done with that project two and should have a write up for it shortly.

Machine Learning update – Feb 2017

In the last update on my machine learning journey, I had just finished the Udacity’s intro and started with the Coursera / Stanford Intro to Machine Learning. I am happy to say that this course is now complete as well!

It feels slightly surreal to reach this point. When I first setup my plan for ML, Coursera’s course was something I had marked as being challenging and a “maybe if time allowed.” The reviews and the feedback mentioned how great the course was, but also many people seemed to drop off at the neural network chapters. Essentially I had my doubts about being able to finish it on time while doing it part time. There is no time limit to the course, and you could transfer to the next cohort, but I wanted to make sure I did it in the same session I had started. Once you start delaying an online course, there is a chance you will delay it indefinitely.

In retrospect, the course was indeed challenging but not as bad as I expected it to be. The hardest part was to get comfortable with Octave environment and translating lecture notes and formulas into matrix equivalents. I am quite happy that I stuck to the end, and with 100% grade to boot.

If I had to compare the intro courses from Udacity and Coursera, I would still recommend Udacity to start and then use Coursera to augment and deepen the understanding of the basics. I had quite a few “aha!” moments when taking Coursera’s course, but Udacity makes ML more practical and attainable. I thought it demystified the Machine Learning field. After taking the course, you see the application opportunities and the landscape which you should further study. Perhaps best is to combine the two classes – they are drastically different – and learn and compare the concepts between the two.

What’s next? Feb 16th I am starting AI Engineer Nano Degree on Udacity. The same feeling again, a bit daunting and challenging. Hopefully, I will hang in there and power through it. I am sure to post the update as I go.

Before the course starts, I am taking a quick detour back to stats and statistical analysis, to make sure I grasp the basic concepts of analyzing data. Trying to go deeper into kernels and data sets on kaggle.com, familiarizing myself with pandas framework, etc. Basically having fun before AI degree ruins it all.

View story at Medium.com