Unsupervised Deep Learning in Python (Udemy.com)
Autoencoders, Restricted Boltzmann Machines, Deep Neural Networks, t-SNE and PCA
Created by: Lazy Programmer Team
Last updated August 2026
What you will learn
- Understand the theory behind principal components analysis (PCA)
- Know why PCA is useful for dimensionality reduction, visualization, de-correlation, and denoising
- Derive the PCA algorithm by hand
- Write the code for PCA
- Understand the theory behind t-SNE
- Use t-SNE in code
- Understand the limitations of PCA and t-SNE
- Understand the theory behind autoencoders
- Write an autoencoder in Theano and Tensorflow
- Understand how stacked autoencoders are used in deep learning
- Write a stacked denoising autoencoder in Theano and Tensorflow
- Understand the theory behind restricted Boltzmann machines (RBMs)
- Understand why RBMs are hard to train
- Understand the contrastive divergence algorithm to train RBMs
- Write your own RBM and deep belief network (DBN) in Theano and Tensorflow
- Visualize and interpret the features learned by autoencoders and RBMs
Course Description
Ever wondered how AI technologies like OpenAI ChatGPT, GPT-4, DALL-E, Midjourney, and Stable Diffusion really work? In this course, you will learn the foundations of these groundbreaking applications.
This course is the next logical step in my deep learning, data science, and machine learning series. I’ve done a lot of courses about deep learning, and I just released a course about unsupervised learning, where I talked about clustering and density estimation. So what do you get when you put these 2 together? Unsupervised deep learning!
In these course we’ll start with some very basic stuff - principal components analysis (PCA), and a popular nonlinear dimensionality reduction technique known as t-SNE (t-distributed stochastic neighbor embedding).
Next, we’ll look at a special type of unsupervised neural network called the autoencoder. After describing how an autoencoder works, I’ll show you how you can link a bunch of them together to form a deep stack of autoencoders, that leads to better performance of a supervised deep neural network. Autoencoders are like a non-linear form of PCA.
Last, we’ll look at restricted Boltzmann machines (RBMs). These are yet another popular unsupervised neural network, that you can use in the same way as autoencoders to pretrain your supervised deep neural network. I’ll show you an interesting way of training restricted Boltzmann machines, known as Gibbs sampling, a special case of Markov Chain Monte Carlo, and I’ll demonstrate how even though this method is only a rough approximation, it still ends up reducing other cost functions, such as the one used for autoencoders. This method is also known as Contrastive Divergence or CD-k. As in physical systems, we define a concept called free energy and attempt to minimize this quantity.
Finally, we’ll bring all these concepts together and I’ll show you visually what happens when you use PCA and t-SNE on the features that the autoencoders and RBMs have learned, and we’ll see that even without labels the results suggest that a pattern has been found.
All the materials used in this course are FREE. Since this course is the 4th in the deep learning series, I will assume you already know calculus, linear algebra, and Python coding. You'll want to install Numpy, Theano, and Tensorflow for this course. These are essential items in your data analytics toolbox.
If you are interested in deep learning and you want to learn about modern deep learning developments beyond just plain backpropagation, including using unsupervised neural networks to interpret what features can be automatically and hierarchically learned in a deep learning system, this course is for you.
This course focuses on "how to build and understand", not just "how to use". Anyone can learn to use an API in 15 minutes after reading some documentation. It's not about "remembering facts", it's about "seeing for yourself" via experimentation. It will teach you how to visualize what's happening in the model internally. If you want more than just a superficial look at machine learning models, this course is for you.
"If you can't implement it, you don't understand it"
Or as the great physicist Richard Feynman said: "What I cannot create, I do not understand".
My courses are the ONLY courses where you will learn how to implement machine learning algorithms from scratch
Other courses will teach you how to plug in your data into a library, but do you really need help with 3 lines of code?
After doing the same thing with 10 datasets, you realize you didn't learn 10 things. You learned 1 thing, and just repeated the same 3 lines of code 10 times...
Suggested Prerequisites:
calculus
linear algebra
probability
Python coding: if/else, loops, lists, dicts, sets
Numpy coding: matrix and vector operations, loading a CSV file
can write a feedforward neural network in Theano or Tensorflow
WHAT ORDER SHOULD I TAKE YOUR COURSES IN?:
Check out the lecture "Machine Learning and AI Prerequisite Roadmap" (available in the FAQ of any of my courses, including the free Numpy course)
Instructor Details
- 4.6 Rating
2,475 Reviews
Lazy Programmer Team
The Lazy Programmer is a seasoned online educator with an unwavering passion for sharing knowledge. With over 10 years of experience, he has revolutionized the field of data science and machine learning by captivating audiences worldwide through his comprehensive courses and tutorials.
Equipped with a multidisciplinary background, the Lazy Programmer holds a remarkable duo of master's degrees. His first foray into academia led him to pursue computer engineering, with a specialized focus on machine learning and pattern recognition. Undeterred by boundaries, he then ventured into the realm of statistics, exploring its applications in financial engineering.
Recognized as a trailblazer in his field, the Lazy Programmer quickly embraced the power of deep learning when it was still in its infancy. As one of the pioneers, he fearlessly embarked on instructing one of the first-ever online courses on deep learning, catapulting him to the forefront of the industry.
More courses by Lazy Programmer Team
Artificial Intelligence: Reinforcement Learning in Python (2026)
4.9 (10,817 Reviews)
Provider: Udemy
Time: 14.7h
$79.99
Advanced AI: Deep Reinforcement Learning in Python (2026)
4.8 (6,557 Reviews)
Provider: Udemy
Time: 10.7h
$29.99
Cluster Analysis and Unsupervised Machine Learning in Python (2026)
4.7 (5,236 Reviews)
Provider: Udemy
Time: 8h
$29.99
Unsupervised Machine Learning Hidden Markov Models in Python (2026)
4.4 (4,436 Reviews)
Provider: Udemy
Time: 9.8h
$29.99
Deep Learning Prerequisites: The Numpy Stack in Python V2 (2026)
4.4 (3,835 Reviews)
Provider: Udemy
Time: 2h
Free
Data Science: Supervised Machine Learning in Python (2026)
4.7 (3,555 Reviews)
Provider: Udemy
Time: 6.4h
$29.99
Reviews
By Jai Ganesh on 2/23/2021
Behind the complex mathematics and statistics, this course gives a very intuitive and comprehensive explanation about all of the subjects and gives some approaches to solve several problems. The course is exhaustive in describing loads of algorithms. I wish there were more DIY codes and exercises. They are making it too easy by giving you everything. Cheers!
By Matthew Hawes on 9/10/2020
I have done a few courses in this series now and all have been great. This one has proven particular useful/interesting to me though. Concepts are clearly explained and there are plenty of opportunities to practice what you are learning. In particular the motivation for using unsupervised learning is now a lot clearer to me than it was before taking the course.
By Anders Albert on 5/1/2020
I absolutely loved the theory part of this course, in particular, how the instructor got into the details of PCA and RBM. I have done many ML courses, and I have never seen anybody else go into the mathematics in such detailed. Loved it. The coding part has some minor annoyances, end of lines not visible in code along and instructor not explaining himself while writing the code. This improves a lot with the extra lectures that have been added to the course at a later stage. However, this only give you an incentive to do the implementation by yourself and only use the lectures as a check. Not enough to deduct anything from my score. This is my second course from the Lazy Programmer, and it surely will not be my last.
By Akash PB on 6/2/2019
Brilliantly taught course (as usual). I loved this course specifically because it was more inclined towards mathematical derivation of the results and then applying the results in form of code. I did search a few research papers initially before enrolling for this course and the content was too vast to start from. Now, I have got a direction as to where to go next and what all things I need to explore from here on. I took this course too seriously and have spent around a month on the course writing notes wherever possible (even for the codes). So overall I can say, everyone should at least do this course for better understanding of the concepts.
By Diego Paez on 3/21/2019
Good explanations, regarding autoencoders: stacked autoencoders and deep autoencoders. Also, RBM (Restricted Boltzmann Machines) are well explained. I give 4 and not a 5 because it was what I expected, but was not above my expectations. To be above my expectations topics like sparse autoencoders would need to be covered and perhaps other topics.
By Thomas B on 3/18/2019
Easy enough to follow. The RBM part is just copied from the Recommender systems lectures. Lazy programmer indeed :) Through this course I understood t-sne better, and figured out how to use auto encoders. It is a useful course, and was well worth the 9.99 I paid for it.
By Louie Shum on 9/22/2018
Does a great job of explaining the intricacies behind unsupervised deep learning and why they are applicable in the real world environment. I enjoyed the exercise for coding from Tensorflow each time. It's great to understand how everything is working so well. I believe it's a must have for anyone who wants to know about deep learning.
By Vince Santillan on 8/24/2018
This course provides an insightful look at the theoretical parts of deep learning. It gets to the core of some concepts like vanishing gradient problem and how autoencoders and boltzmann machine can be used there. The course gives a mathematical justification for all the algorithms which helps me with my understanding. It uses Python, and you can implement whatever you learned straight away.
By Ivan Zaytsev on 1/8/2018
This is a unique course which provides mathematical insight into deep learning and neural networks. The videos provide very clear explanation and intuition behind unsupervised deep learning methods. The most helpful part of the course is seeing all the code. The examples gave a good understanding of the implementations and how to build neural networks piece by piece.
By Gyorgy Fekete on 12/22/2016
This instructor is clearly knowledgeable and well versed in the topic. The one place where I though my time could have been spent better was during the lectures watching the instructor type code. What I think would be more effective and time-efficient is perhaps displaying code and adding annotations and talking through the motivation of each step. Great intro to this topic, by the way and I shall look for more courses from this instructor.
Quality Score
Overall Score : 92 / 100










