My Experience in Machine Learning with Udacity, Part2
The Machine Learning Engineer Nanodegree program (MLND)
In my last post, I explained how I undertook the Intro to Machine Learning course with Udacity and have been motivated for the MLND program.
I currently work as a Computer Scientist Civilian in Ivory Coast. My job position is very steady, guaranteed for several dozen years, but it is not directly implied in AI. So I involve in the field on my own, as I am passionate about Cognitive Computing Research.
Now I am ongoing to talk about the fundamental Machine Learning engineering skills provided by the program, and why it is worth to try it. Indeed, after the Intro to Machine Learning, several online courses exist, even free courses.
Why undertake the MLND program?
I will first look at the program orientation.
It is an advanced program compared to the Intro which was of an intermediate level.
As you could see on the program page, Machine Learning (ML) represents a key evolution in the fields of computer science, data analysis, software engineering, and artificial intelligence. So, an advanced level should mean the keen technical methods to make all these fields work together.
After my completion, I could say that it is a true engineering program designed for those who want to acquire job ready skills to directly work in the field or pursue their own objectives.
On the other hand, the teaching strategy itself. The program provides feedback from ML experts on the various real life projects, and also a career support as extra courses.
That not means the experts perform the work for the students, there are some specifications to meet. They provide guidance, reorientation, advice. If you are not able to complete these specifications you could pass even two years without graduating of your nanodegree (There is an Honor Code).
So, that said, the MLND is a perfect adequation between theory and practice in the field of Machine Learning. An engineer in the field should be able to deeply understand the algorithms (Naive Bayes, SVM, PCA, KMeans, etc.) and the different subsets of ML (Supervised Learning, Unsupervised Learning, Reinforcement Learning, Deep Learning). Like this, he will be able to engineer on new real life problems and provide the best solutions for them. That exactly what the program also provides. For an engineer, simply work on projects without this adequation between theory and practice is very restricting.
In comparison with in-person programs, the MLND is focused on the industry (real life AI projects) and is research oriented (proposal and paper writing). Indeed, in addition to the real life projects, the program teaches how to write state-of-the-art proposals and papers.
I have followed an in-person 5-year engineer program in my country (Côte d’Ivoire) to become a network engineer. And at each step, there are some tests and validations reviewed by teachers until after the training the student has the ability to work on his defense as a network engineer. And I think the Udacity MLND online program is the closest to these in-person programs.
And after you have learned and mastered the subject (state of the art methods in the field of Machine Learning), the last step to graduate is to apply your knowledge on a project of your choice (the capstone), which is equivalent to a master of engineering thesis defense for this online program. But here, it is focused on a professional proposal and paper writing (research oriented).
The final project of the advanced Deep Learning course included in the lectures, is generally proposed to students for their capstone project (Build a live camera app that can interpret number strings in real-world images), or they could work on their own idea of a project.
I personally chose to work on an Age and Gender Classification project. It is a futuristic field, implied in security application and research on the field are still actively ongoing.
So I applied my acquired skills to build it using the necessary available resources (suitable open dataset, computational resources, etc.). And when all was OK, I proposed it for the capstone project.
For this specific capstone project the tools provided by the MLND I used during the Machine Learning Process are listed below:
- Supervised Classification
- Data Exploration
--> Feature Observation : Identify and build feature and target columns from the dataset.
Using labeled face images (the Adience benchmark), I have been able to recreate a new Unified dataset of new features and labels to fit my models.
- Data Visualization (Unified dataset, Training set and Test set visualization)
- Performance Metric (Loss and Accuracy Scores)
- Shuffle and Split Data : Training and Testing Data Split (sklearn train_test_split tool)
- Training Models (TFLearn and Tensorflow Keras models)
- Model Evaluation and Validation (Loss and Accuracy)
- Analyzing Model Performance (Tensorboard and Training history Visualization)
--> Learning Curves
--> Complexity Curves
- Making Predictions (of correct labels)
- Model Optimization - Model Tuning (optimizer, activation, loss and regularization functions, number of epoch, etc. )
- Training computational cost (Big-O complexities of common algorithms used in Computer Science)
And the intended main contribution of my work had been:
- Provide simple and easy to use tools for dataset preprocessing, considering different Machine Learning Frameworks requirements (Custom Data Preprocessing and visualization functions, prediction interpretation functions, etc.).
- Assemble the prediction process in one step for both predictions, age and gender (instead of separate networks: age network and gender network).
- Turning the implementation in video and mobile application (all process resources provided).
- Models' performances : 97% accuracy with the tuples model and about 60% of exact accuracy with the 2-hot labels model (Beat the true accuracies of previous research work in the field).
- Fully reproducible paper, with full Python implementation code available. Could be applied to any age dataset with more age classes.
All on my Github Age and Gender Classification project.
The program is designed for 6 months and you could get a half tuition back if you complete it within 12 months from your first subscription. But it is allowed to those who can to complete it in at least 2 months (not less). And I think if you follow all lectures and complete all the quizzes and projects, you should not be able to finish it earlier than that.
So, after my capstone, with 3 months of participation in the MLND program (3 months of subscription passed working on), I graduated and have now the necessary research abilities to work on my own, on any other real life project in the field of Machine Learning, and write professional proposals and papers for my implementations. Not just using advanced APIs, I am able to build my own ML models from scratch and/or contribute to improving existing systems.
I am proud of that and say thank you to Udacity for the MLND.