Skip to main content

Day 2 (7/9/19): Mathematics and Data Science Review

After a brief meeting with the other interns in the morning (and receiving our prizes from the team building exercise yesterday), I started working in the Machine Vision Lab to establish a solid foundation of the math and programming packages that will be essential for this internship. After finishing setting up my workplace and resolving a few operating system issues, we successfully installed all the necessary software, such as anaconda, Spyder, Numpy, and Pytorch, for me to begin experimenting and utilizing the learning resources.



I started off reading a few articles and completing an edX course titled "Essential Math for Machine Learning- Python Edition". These materials reviewed the fundamentals of linear algebra (vectors, matrices, tensors, and their operations), calculus (multivariate differentiation, integration, etc.), and statistics/probability (measures of central tendency and variance, confidence intervals, sampling distributions, and hypothesis testing).

After becoming confident in the math upon which deep learning is founded, I transitioned into a Microsoft course titled "Introduction to Python for Data Science". This course was a great review of python programming practices which i haven't used in awhile and an easy introduction to the packages useful in python as well. These include Numpy (numeric python), Matplotlib (for data visualization), and Pandas (for dataframes storing data of different type).


Finally, I finished the day with a few more articles on the python packages Numpy and Pytorch. These tutorials gave me more in-depth knowledge around the uses of the packages and allowed me to start experimenting on my own in the Spyder IDE.

Overall, my second day was very informative, and I learned/reviewed a lot of material which I believe will be very useful in the future.



Comments

Popular posts from this blog

Day 9 (7/18/19): Incrementally Learning CUB200

Today I continued my work learning about incremental learning models by testing out different strategies on the CUB200 dataset. From what I understand from reading various articles, there seem to be five different approaches to mitigating catastrophic forgetting in lifelong learning models. These are regularization methods (adding constraints to a network's weights), ensemble methods (train multiple classifiers and combine them), rehearsal methods (mix old data with data from the current session), dual-memory methods (based off the human brain, includes a fast learner and a slow learner), and sparse-coding methods (reducing the interference with previously learned representations).  All of these methods have their constraints and I don't believe it is yet clear what method (or what combination of different methods) is best. Full rehearsal obviously seems to be the most effective at making the model remember what it had previously learned but given that all training exam...

Day 24 (8/8/19): Multilayer Perceptron Experiment

I continued gathering more results for my presentation today, and the data table is coming along nicely. We are able to see a significant trend that using Mahalanobis instead of Baseline Thresholding recovers much of the OOD recognition that is lost with streaming or incremental models. The SLDA model appears to be a lightweight, accurate streaming model which can be paired with Mahalanobis to be useful as an embedded agent in the real world. For the purposes of demonstrating catastrophic forgetting, I ran five experiments and averaged the results for a simple incrementally trained MLP. Obviously, the model failed miserably and was achieving only about 1% of the accuracy of the offline model. Including this is only to show how other forms of streaming and incremental models are necessary to develop lifelong learning agents. A diagram of a simple multilayer perceptron.