Deep Learning 101: Tensorflow Playground
By Prof. Ryan Ahmed
Summary
## Key takeaways - **Visualize Neural Networks with TensorFlow Playground**: TensorFlow Playground allows you to visually build and train artificial neural networks without writing code, offering insights into layers, neurons, and training processes. [00:06], [01:14] - **Deep Networks: More Layers, More Complexity**: Adding hidden layers and neurons increases the complexity of a neural network, allowing it to tackle more intricate problems. [01:40], [02:13] - **Random Initialization & Training**: Before training, neural network weights are randomly initialized; the training process then adjusts these weights to minimize loss and improve performance. [03:12], [05:04] - **Hyperparameters: Learning Rate & Activation**: Key hyperparameters like learning rate control training aggressiveness, while activation functions (e.g., ReLU) determine how neurons process information. [03:39], [03:50] - **Feature Engineering for Complex Data**: For challenging datasets like spirals, feature engineering—creating new inputs from existing ones (e.g., x1 squared)—can significantly improve model performance. [08:17], [10:54] - **Spiral Dataset Challenge**: The spiral dataset presents a difficult classification task, often requiring increased network complexity (more layers/neurons) and feature engineering to solve effectively. [07:31], [09:01]
Topics Covered
- Neural networks learn by adjusting weights, not magic.
- Train your model to generalize, not memorize data.
- Visualize AI training: Loss decreases as boundaries form.
- Complex problems require deeper networks or better features.
- Feature engineering unlocks performance on complex datasets.
Full Transcript
hello everyone and welcome to this
lecture
in this lecture i wanted to show you
guys a tool
known as tensorflow playground
where we can visually see
how we build an artificial neural
network and how do we actually train it
as well
how to change the number of layers and
how to also change the number of neurons
activation layer and so on okay
please note that this tool is
independent of
the teachable machines but it's again
provided by google as well
okay all right so let's go ahead and get
started
so this is simply the type of artificial
neural network that we are going to
build together using tensorflow
playground
just to clarify so tensorflow is
google's framework
to build train and deploy ai and ml
models
at scale and please note
that tensorflow specifically is beyond
the scope of this course
so we are not going to learn i would say
how to code
in python or leverage you know
tensorflow and keras
here i just wanted to show you from a
very high level how can we visually
build our newer network and how we can
train it essentially live as well
without writing any
lines of code okay so please go ahead
and and go to that link which is
playground.tensorflow.org
all right and i have it open in here
okay
so as you guys can see here essentially
i have the inputs
okay here i have the first hidden layer
and what i could do is i can change the
number of neurons
and you guys would notice that here we
have what we call it a dense
or fully connected artificial neural
network
meaning that all the neurons in one
layer
are fully connected to all the neurons
in the subsequent layer
okay so if you guys can see here this
input here
is fully connected to all the neurons in
all the
subsequent hidden and
if i wanted to make or create a deep
neural network well
i can add a hidden layer so if you press
on the positive here i'm adding a new
hidden layer
and if you click on that adding neurons
you should be able to see
again additional neurons that are being
added
and the more that you add neurons the
more that you're increasing the
complexity of the network
and again you guys will notice that here
also i have a dense fully connected
artificial neural network as well
and a very important point to notice
here is that
this network hasn't been trained yet
if you guys recall when we cover the
training and testing phases of
artificial neural networks
is that we build our artificial neural
network first
we train it with the training data and
that's when we actually go
and change the values of these weights
if you guys remember
and then afterwards we go ahead and test
it and assess its performance
using the testing data set so you guys
will notice here
that all these values of weights
like minus 0.29 minus 0.19
point you know like 1 4 all these values
are randomly initialized because we
haven't trained it yet we haven't done
anything yet
here i'm just building the network i'm
randomly initializing the weights
and i haven't even trained any the
network yet
okay and what you guys can see here is
well you can see the learning rate we
are actually now familiar with the
learning rate
and this is simply how aggressive you
would like to update your network or
update the weights
so let's set it to 0.03 as is
also here you should be able to see that
we have different activation functions
if you guys remember we only covered the
basic
step activation function you guys can go
ahead and change the activation
function again we're not going to go
into the details of what's really relu
stands for rectified linear units but
don't worry about it
let's just you know let's take let's
maybe pick like relu for example for now
and we can also change the problem type
to either classification
or regression and let's stick with
classification because that's what we're
doing right now
and you can also change what we call it
the regularization
and this is simply just a term to ensure
that the network network
is able to generalize and not memorize
it's more of a penalizing term
that try to improve the generalization
ability of the network
again don't worry about it for now what
i could do right now
is i can well select the training data
that i need here
so i can select for example a very
simple two classes
and now the network is not trained yet i
haven't trained it yet
but now i can go ahead and actually
train it so if you click play
when i say play that means i'm going to
start off the training
that means now i'm going to feed in the
training data to my network
and i'm going to try to update the
values of weights
so if you click play here we go you guys
will see that the loss here
starts very high and then it decayed
afterwards
and now that boundary has been drawn
between the two classes
so now i have that green i'm sorry that
blue
area here and the orange area indicating
that now the model my ai model has been
trained
and as you guys notice here the values
of weights have actually changed
right so here for example the value of
weight becomes 1.1 for example or 1.2
and that's it that means now the model
was able to
train to learn the difference between
these two classes
and you guys will see here this is the
epochs counter if you guys remember we
also covered the definition
of epochs before and that's every time
we feed in
all the training data to my model and
update the weights
once okay so maybe if i try a little bit
harder problem like this problem for
example
and i click play again as you guys can
see the loss
start is very high or the error starts
high and then it decays afterwards
and i was able to draw that boundary
between the blue class
and the orange class okay pretty
incredible
all right and what you guys can see here
as well
is that you can increase or vary the
noise you can also
change the ratio of the training to
testing data so maybe you can change it
make it 80
to 20 you can increase the noise for
example
in the input as you guys can see as you
increase the noise
as the problem becomes much harder
because now the two
classes are are not linearly separable
and you can also change the batch size
as well by changing the number of
samples or data points that you feed
at once to the network if you guys
remember
and you can again you can click play as
well and you should be able to see that
the network also was able to trade right
now
and was able to draw the boundary to
classify the two classes
all right okay so now it's time
for a quick mini challenge actually it
might be a little bit i would say uh
hard but that's the point i want you
guys to experiment with
the um with the tool so i want you first
to choose the most challenging data set
which is the spiral data set so you guys
will see that here we had four options
before
let me go back so here we had four
options
i want you guys to start with this one
because this one the spiral one
is the most difficult of all and
i wanted to choose it first i wanted to
train the model okay
and then because it's a difficult
problem we have to do something about it
maybe we need to change the architecture
of the model for example
maybe we need to add new hidden layers
or maybe add
additional neurons or maybe change
activation functions i want you guys to
play with it
to try to improve its performance and
next step number three i wanted to tune
the model hyper parameters maybe play
with a learning rate
maybe play with the regularization and
try to achieve better model performance
and then finally i want you guys to
perform
some feature engineering to improve
model performance
so when i say feature engineering that
means instead of feeding in
the inputs as is maybe you can feed in
the input squared or maybe you can sum
up the two inputs together and feed them
as one input
or maybe add let's say x squared plus y
squared for example again there are so
many options
so that's it please go ahead pause the
video
attempt to solve the mini challenge and
i will be back with a solution
in a couple of seconds best of luck and
i will see you guys
after the challenge
all right hope you guys were able to
figure out the challenge
let's go ahead and give it a shot so
what i'm going to do
is i'm going to first select the spiral
okay and then next what i'm going to do
is i'm going to give it a shot maybe
click play without changing anything and
you guys would notice here
that the network is actually really
trying really hard
to try to come up with that boundary but
because the problem is quite difficult
you guys will see that now the loss
training loss is at 0.3
and the test loss is at 0.4 right
it's going down it's improving over time
which is good and the network here you
guys will see that now i was able to
actually
like draw the boundary which is pretty
great and the loss
settled at around 0.17
approximately okay
and again it's trying
it's trying which is not bad actually
the performance is pretty good so far
and what i could do as well is well i
can maybe
change the number of neurons maybe try
additional neurons
maybe try additional neurons too maybe
add an additional hidden layer
okay and maybe let's add an additional
hidden layer as well and give it a shot
and let's click play and here we go
you guys will see that again the network
is learning that's good sign
here we're going to ultimately of course
we would like the loss to drop to
almost zero that means the error has
each almost zero and that's a great sign
they mean the network was able to um
to generalize and here we go so now the
loss actually reduced to almost 0.06
which is again
pretty pretty great you guys will see
that here i have all the spiral here
it's pretty good and now i'm standing at
0.05
of error okay so that's again another
way of solving the problem
another way of solving the problem too
is maybe we can perform some sort of
feature engineering
so instead of only feeding x1 and x2
which is these two classes in here
maybe i can feed in let's say x1 squared
and maybe x2 squared and maybe x1 times
x2
and maybe sine x and maybe sine x1 and
sine x2
again you guys can there's a lot of
trial and error in here
and let's go ahead and run it and as you
guys notice here the network
is as well training and now
we are not only feeding in the original
data but we're also performing
again feature engineering while
increasing the number of inputs that are
being fed to the network
and you guys will see that the loss now
achieved 0.03
which is again pretty pretty good i
think it's better than the previous run
and that's it the network is pretty
stable the error is actually very very
low it's almost 0.034
and you guys will see that the the
actual blue here has been completely
separated from the other class from the
orange class which is pretty amazing
that's exactly what we're looking for
what you guys as well could do is maybe
you can increase the noise level here to
try to make it a little bit harder so
now it's much
harder problem and maybe you can give it
a shot as well and see if the network is
able to do it
and please note that you can do a lot of
stuff here maybe you can change the
activation function for example
maybe change or tweak the learning rate
for instance or maybe add regularization
to try to improve the generalization
ability of the network
and here we go the loss is standing at
0.256 and please note that this is a
much harder problem
okay and still the network was actually
able to
get it right so we are standing at .24
of loss and again it's really trying
okay again the loss dropped to 0.06 0.05
again pretty incredible and here we go
so now the model
after around 350 epochs was able to
actually draw that boundary here
and separate the two classes together
the blue from the orange class
all right okay and that's it that's all
i have for
this lecture and this is the mini
challenge solution as well if you guys
want to check it out
and that's it i hope you guys enjoy this
lecture in the next lecture we are going
to learn
how to export our model how to save and
deploy
our trained ai model so please stay
tuned and i'll see you guys
in the next lecture
Loading video analysis...