This class introduces the concepts and practices of deep learning. The course consists of three parts. In the first part, we give a quick introduction of classical machine learning and review some key concepts required to understand deep learning. In the second part, we discuss how deep learning differs from classical machine learning and explain why it is effective in dealing with complex problems such as the image and natural language processing. Various CNN and RNN models will be covered. In the third part, we introduce the deep reinforcement learning and its applications.
This course also gives coding labs. We will use Python 3 as the main programming language throughout the course. Some popular machine learning libraries such as Scikit-learn and Tensorflow will be used and explained in detials.
This course is intended for senior undergraduate and junior graduate students who understand
2018/12/13 - Lecture 17: notebook announced
2018/12/06 - Lecture 17: slides and videos announced
2018/12/06 - Lecture 16: notebook announced
2018/12/04 - Contest 04: notebook announced
2018/11/29 - Lecture 16: slides and videos announced
2018/11/29 - Lecture 14: notebook announced
2018/11/22 - Lecture 14: notebook announced
2018/11/20 - Contest 03: notebook announced
2018/11/15 - Lecture 14: slides and videos announced
2018/11/15 - Lecture 13: notebook announced
2018/11/12 - Lecture 12: videos announced
2018/11/08 - Lecture 13: slides and videos announced
2018/11/08 - Lecture 12: notebook announced
2018/11/07 - Lecture 12: slides announced
2018/11/06 - Contest 02: competition announced
2018/11/01 - Lecture 12: notebook announced
2018/10/18 - Lecture 11: slides and videos announced
2018/10/18 - Lecture 10: notebook announced
2018/10/16 - Contest 01: competition announced
2018/10/12 - Lecture 10: slides and videos announced
2018/10/12 - Lecture 09: slides and videos announced
2018/10/11 - Lecture 08: notebook announced
2018/10/09 - Lecture 07: notebook announced
2018/10/04 - Lecture 08: slides and videos announced
2018/10/04 - Lecture 07: slides and videos announced
2018/10/04 - Lecture 06: notebook announced
2018/10/02 - Lecture 05: notebook announced
2018/09/28 - Lecture 06: slides and videos announced
2018/09/27 - Lecture 05: slides and videos announced
2018/09/27 - Lecture 04: notebook announced
2018/09/25 - Lecture 04: notebook announced
2018/09/20 - Lecture 04: slides and videos announced
2018/09/20 - Lecture 03: notebook announced
2018/09/18 - Lecture 02: notebook announced
2018/09/13 - Lecture 01: notebook announced
2018/09/11 - Lecture 03: slides and videos announced
2018/09/11 - Lecture 02: slides and videos announced
2018/09/11 - Lecture 01: slides and syllabus announced
If you have any feedback, feel free to contact: shwu [AT] cs.nthu.edu.tw
What's ML? | How DL Differs from Classic ML? | About This Courses | FAQ
This lab guides you through the setup of scientific Python environment and provides useful references for self-reading.
Span & Linear Dependence | Norms | Eigendecomposition | Singular Value Decomposition | Traces | Determinant
This lab guides you through the process of Exploratory Data Analysis (EDA) and discuss how you can leverage the Principle Component Analysis (PCA) to visualize and understand high-dimensional data.
Random Variables & Probability Distributions | Multivariate & Derived Random Variables | Bayes’ Rule & Statistics | Principal Components Analysis | Information Theory | Decision Trees & Random Forest
In this lab, we will apply the Decision Tree and Random Forest algorithms to the classification and dimension reduction problems using the Wine dataset.
Numerical Computation | Optimization Problems | Unconstrained Optimization | Stochastic Gradient Descent | Perceptron | Adaline | Constrained Optimization | Linear & Polynomial Regression | Duality
In this lab, we will guide you through the implementation of Perceptron and Adaline, two of the first machine learning algorithms for the classification problem. We will also discuss how to train these models using the optimization techniques.
This lab guides you through the linear and polynomial regression using the Housing dataset. We will also extend the Decision Tree and Random Forest classifiers to solve the regression problem.
Point Estimation | Bias & Variance | Consistency | Decomposing Generalization Error | Weight Decay | Validation
In this lab, we will guide you through some common regularization techniques such as weight decay, sparse weight, and validation.
Maximum Likelihood Estimation | Maximum A Posteriori Estimation | Bayesian Estimation
In this lab, we will guide you through the practice of Logistic Regression. We will also introduce some common evaluation metrics other than the "accuracy" that we have been used so far.
KNNs | Parzen Windows | Local Models | Support Vector Classification (SVC) | Nonlinear SVC | Kernel Trick
In this lab, we will classify nonlinearly separable data using the KNN and SVM classifiers. We will show how to pack multiple data preprocessing steps into a single Pipeline in Scikit-learn to simplify the training workflow.
CV | How Many Folds? | Voting | Bagging | Boosting | Why AdaBoost Works?
In this lab, we will guide you through the cross validation technique for hyperparameter selection. We will also practice and compare some ensemble learning techniques.
In this competition, you have to select the most appropriate response from 6 candidates based on previous chat message. Your goal is to learn a function that is able to predict the best response.
When ML Meets Big Data... | Representation Learning | Curse of Dimensionality | Trade-Offs in Large-Scale Learning | SGD-Based Optimization
NN Basics | Learning the XOR | Back Propagation | Cost Function & Output Neurons | Hidden Neurons | Architecture Design
In this lab, we will introduce basic concepts of TensorFlow. Then we train a neural network, called the word2vec, that embeds words into a dense vector space where semantically similar words are mapped to nearby points.
Momentum & Nesterov Momentum | AdaGrad & RMSProp | Batch Normalization | Continuation Methods & Curriculum Learning | Weight Decay | Data Augmentation | Dropout | Manifold Regularization | Domain-Specific Model Design
Convolution Layers | Pooling Layers | Variants & Case Studies | Visualizing Activations | Visualizing Filters/Kernels | Visualizing Gradients | Dreaming and Style Transfer | Segmentation and Localization | Object Detection | More Applications
In this lab, we will introduce two datasets, MNIST and CIFAR-10, then we will talk about how to implement CNN models for these two datasets using tensorflow. Then offer a guide to illustrate typical input pipeline of TensorFlow.
This lab guides how to load and use a pretrained VGG19 model and how to visualize what the CNN network represents in selected layers. This also introduces an interesting technique called "Style Transfer" and displays galleries of its creative outputs.
In this competition, you should design a model to detect multiple objects in images. This is a multi-tasks problem, the first one is localization and second is classification.
Vanilla RNNs | Design Alternatives | Backprop through Time (BPTT) | LSTM | Parallelism & Teacher Forcing | Attention | Explicit Memory | Adaptive Computation Time (ACT) | Memory Networks | Google Neural Machine Translation
This lab guides how to use recurrent neural networks to model continuous sequence like nature language, and use it on not only article comprehension but also word generation.
In this competition, you should design a model that can be given an image, then generates suitable caption which can describe the image.
Clustering | Factorization & Dimension Reduction | Manifold Learning & Data Synthesis | Predictive Learning | Autoencoders | Generative Adversarial Networks (GANs)
In this lab, we are going to introduce Autoencoder. We will use MNIST dataset to show you how to use autoencoder to learn manifold.
In this lab, we are going to introduce Generative Adversarial Networks. We will use MNIST dataset to show you how to use GAN to generate images.
In this competition, given a set of texts, your task is to generate suitable imagese to illustrate each of the texts. We will guide you to use GANs to complete this competition.
Label Propagation | Semisupervised GANs | Semisupervised Clustering | Multitask Learning | Weight Initiation & Fine-Tuning | Domain Adaptation | Zero Shot Learning | Unsupervised Transfer Learning | Future at a Glance
Markov Decision Process(MDP) | Model-Free RL using Monte Carlo Estimation | Temporal-Difference Estimation and SARSA | Exploration Strategies | Q-Learning
In this lab, we will introduce temporal-difference learning and then use Q-learning to train an agent to play "Flappy Bird" game
Introduction | DQN | Double DQN | Prioritized Reply | Dueling Network | NoisyNet and Scalable Implementations | Policy Gradient Methods & DDPG | Episodic Policy Gradient & REINFORCE | Reducing Variance | Baseline Subtraction | Function Approximation, Actor-Critic, and A3C
In this lab, we will introduce DQN and policy network and use them to train an agent to play "Flappy Bird" game
Following provides links to some useful online resources. If this course starts your ML journey, don't stop here. Enroll yourself in advanced courses (shown below) to learn more.
For more course materials (such as assignments, score sheets, etc.) and online forum please refer to the iLMS system.
Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press, 2016, ISBN: 0387848576
Trevor Hastie, Robert Tibshirani, Jerome Friedman, The Elements of Statistical Learning: Data Mining, Inference, and Prediction, Second Edition, Springer, 2009, ISBN: 0387848576
Christopher M. Bishop, Pattern Recognition and Machine Learning, Springer, 2006, ISBN: 0387310738
Sebastian Raschka, Python Machine Learning, Packt Publishing, 2015, ISBN: 1783555130