Each module transforms its input representation into a higher-level representation.
High-level features are more global and more invariant
Low-level features are shared among categories
Deep Learning Goal: Make all modules trainable and get them to learn appropriate representations.
Deep Learning
Deep Learning: many layers (stages) of processing.
For e.g., this network recognizes objects in images,
Each box consists of many neuron-like units.
Deep Learning
You can visualize what a learned feature is responding to by finding an image that excites it. (We’ll see how to do this.)
Higher layers in the network often learn higher-level, more interpretable representations
Distributed Representations
What is a representation?
Your data representation determines what questions are easy to answer.
A dictionary of word counts is good for questions like "What is the most common word in Hamlet?"
It is not so good for semantic questions like "If Alice liked Harry Potter, will she like The Hunger Games?"
What is a representation?
What is a representation?
Mathematical relationships between vectors encode the semantic relationships between words
Measure semantic similarity using dot products
Represent a web page with the average of its word vectors
Complete analogies by doing arithmetic on word vectors
"Paris is to France, as London is to ________"
Paris - France + London = ________
Designing such representations by hand is hard, so we learn from data
This is a big part of what neural nets do, whether it is supervised, unsupervised, or reinforcement learning!
Applications of Deep Learning
Supervised Learning Examples
Supervised learning: have labeled examples of the correct behavior
E.g., handwritten digit classification with the MNIST dataset
Task: given an image of a handwritten digit, predict the digit class
Input: the image
Target: the digit class
Data: 70,000 images of handwritten digits labeled by humans
Training set: first 60,000 images, used to train the network
Test set: last 10,000 images, not available during training, used to evaluate performance
Neural nets already achieved $>$ 99% accuracy in the 1990s, but we still continue to learn a lot from it
Supervised Learning Examples
Supervised Learning Examples
Object Recognition
ImageNet dataset: 1000 categories, millions of labeled images
Lots of variability in viewpoint, lighting, etc.
Error rate dropped from 26% to under 4% over just a few years!
Supervised Learning Examples
Supervised Learning Examples
Unsupervised Learning Examples
In generative modeling, we want to learn a distribution over some dataset, such as natural images.
We can evaluate a generative model by sampling from the model and seeing if it looks like the data.
Unsupervised Learning Examples
The progress of generative models:
Big GAN, Brock et al, 2019:
Unsupervised Learning Examples
Generative models of text. The models like BERT, GPT-3 perform unsupervised learning by reconstructing the next words in a sentence. The GPT-3 models learns from 499 Billion Tokens and has 175 Billion parameters.
Unsupervised Learning Examples
Recent exciting result: models are being developed to generate realistic images from text prompts.
Unsupervised Learning Examples
Recent exciting result: models are being developed to generate realistic images from text prompts.
Reinforcement Learning
An agent interacts with an environment (e.g., game of Breakout)
In each time step,
The agent periodically receives a reward (e.g., points)
agent receives observations (e.g., pixels) which give it information about the state (e.g., positions of ball and paddle)
agent picks an action (e.g., keystrokes) that affects the state
The agent wants to learn a policy, or mapping from observations to actions, which maximizes its average reward over time.
Reinforcement Learning
Reinforcement Learning for Control
Software and This Course
Software Frameworks
Scientific computing (NumPy)
vectorize computations (express them in terms of matrix/vector operations) to exploit hardware efficiency
Neural network frameworks: PyTorch, TensorFlow, JAX, etc.
automatic differentiation
compiling computation graphs
libraries of algorithms and network primitives
support for graphics processing units (GPUs)
For this course:
PyTorch, a widely used neural net framework with a built-in automatic differentiation feature
Software Frameworks
Why take this class, if PyTorch does so much for you?
So you know what to do if something goes wrong !!
Debugging learning algorithms requires sophisticated detective work, which requires understanding what goes on beneath the hood.
That is why we derive things by hand in this class !!
Who is this course for?
You should take the course if you want to:
Understand the fundamental concepts behind deep neural networks.
Deep dive into how deep neural networks are useful and can be adapted for machine learning.
You should not take the course if:
You do not have a background in probability, statistics or machine learning.
Your goal is to use deep learning as a black-box toolkit.
Your goal is to learn how to use deep learning packages like TensforFlow or PyTorch.