1. Understanding neural networks with TensorFlow Playground

Find Your Buddy

Before start this codelab, please find one or two people close to you to be your 'buddy'. We would like you to go through the labs with your buddy, discussing about the content with them, and asking them any questions you have to understand the material better.

Introduction

You may have heard the buzz about neural networks and deep learning, and want to learn more. But when you learn about the technology from a textbook, many people find themselves overwhelmed by mathematical models and formulas. I certainly was.

For people like me, there's an awesome tool to help you grasp the idea of neural networks without any hard math: TensorFlow Playground, a web app written in JavaScript that lets you play with a real neural network running in your browser, where you can click buttons and tweak parameters to see how it works.



In this codelab, I'd like to show how you can play with TensorFlow Playground so that you can understand the core ideas behind neural networks. Then you can understand why people have become so excited by the technology lately.

1-1. Let the computer solve the problem

Computer programming requires a programmer. Humans instruct a computer to solve a problem by specifying each and every step through many lines of code. But with machine learning and neural networks, you can let the computer try to solve the problem itself. A neural network is a function that learns the expected output for a given input from training datasets.



For example, to build a neural network that recognizes images of a cat, you train the network with a lot of sample cat images. The resulting network works as a function that takes a cat image as input and outputs the "cat" label. Or — to take a more practical example — you can train it to input a bunch of user activity logs from gaming servers and output which users have a high probability of conversion.

How does this work? Let's look at a simple classification problem. Imagine you have a dataset such as the one below. Each data point has two values: x1 (the horizontal axis) and x2 (the vertical axis). There are two groups of data points, the orange group and blue group.



How do you write code that classifies whether a data point is orange or blue? Perhaps you draw an arbitrary diagonal line between the two groups like below and define a threshold to determine in which group each data point belongs.



The condition of your IF statement would look like this.



where b is the threshold that determines the position of the line. By putting w1 and w2 as weights on x1 and x2 respectively, you make your code more reusable.



Further, if you tweak the values of w1 and w2, you can rotate the angle of the line as you like. You can also tweak the "b" value to move the line position. So you can reuse this condition for classifying any datasets that can be classified by a single straight line.

But the thing is, the programmer has to find appropriate values for w1, w2 and b — the so-called parameters — and instruct the computer how to classify the data points.



Lab: Solving the simple classification on Playground

Now, let's look at how the computer behind TensorFlow Playground solves this particular problem.

  • Click this link to open Playground for this problem.
  • On the Playground, click the Play button in the upper left corner. The line between blue and orange data points begins to move slowly.
  • Hit the reset button and click play again a few times to see how the line moves with different initial values.
  • Discuss with your buddy about the following.
    • What do the lines between X1, X2 and the output mean?
    • How weights and biases works to solve this problem?
    • If you and your buddy have anything unclear, find a tutor and ask about it!

1-2. A neuron: classifying a data point into two kinds

What you're seeing is the computer trying to find the best combination of weights and threshold to draw the straight line between two groups.

TensorFlow Playground is using a single artificial neuron for this classification. What's an artificial neuron? It’s an idea inspired by the behavior of biological neurons in the human brain.


The network between biological neurons (From: Wikipedia)


For a detailed description about the mechanism of a biological neural network, visit the Wikipedia page: each neuron gets excited (activated) when it receives electrical signals from other connected neurons. Each connection between neurons has different strengths. Some connections are strong enough to activate other neurons whereas some connections suppress activation. Together, the hundreds of billions of neurons and connections in our brain embody human intelligence.

The research into biological neurons led to the creation of a new computing paradigm, the artificial neural network. With artificial neural networks, we mimic the behavior of biological neurons with simple mathematics. To solve the above classification problem, you can use the following simple neural network, which features a single neuron (aka Perceptron).



x1 and x2 are the input values, and w1 and w2 are weights that represent the strength of each connection to the neuron. b is the so-called bias, representing the threshold to determine whether or not a neuron is activated by the inputs. This single neuron can be calculated with the following formula.



Yes, that's exactly the same formula we used for classifying the datasets with a straight line. And actually, that's the only thing an artificial neuron can do: classify a data point into one of two kinds by examining input values with weights and bias. With two inputs, a neuron can classify the data points in two-dimensional space into two kinds with a straight line. If you have three inputs, a neuron can classify data points in three-dimensional space into two parts with a flat plane, and so on. This is called "dividing n-dimensional space with a hyperplane".


A neuron classifies any data point into one of two kinds


Lab: What does a single neuron do?

  • Discuss with your buddy what a single neuron does.
  • Discuss with your buddy what "classifying the data points in two dimensional space into to kind" means. How does this explanation relate to what you see in the Playground examples?

What We Learned

In this section, we have learned the following concepts.

  • A Neural Network is just like a function in math or programming. It learns the expected output for a given input from training datasets
  • TensorFlow Playground let you play with a neural network and see how it works
  • A Neuron classifies a data point into two kinds, by adding all inputs multiplied with weights and seeing if it exceeds a threshold (bias).

What's Next?

In the next section, we will use TensorFlow to create a single layer neural network for analyzing real-world data. Please proceed with 2. Classify Manhattan with TensorFlow.