Thursday, April 14, 2011

Neural Networks with C# - part 1

Download Sample

Neural networks and artificial intelligence is a fairly large topic. As such I will limit this article to a direct and simple example of creating a neural network with C#. Of course there are many other good examples, however I hope to provide simple code for those who are attempting to learn about neural networks. This example uses a standard hidden layer feedforward with backpropagation learning algorithm type of network.

A High Level Understanding

The type of neural network discussed in this article is one that has an input layer, one or more hidden layers, and an output layer. Below are two examples of potential neural networks.

Because of the obvious correlation between the cognitive thought process of the brain and an attempt to create a mathematical simulated model of it (thanks to John Von Neumann), like the term neural in neural networks, each node in the network is likewise called a neuron. The associate links between nodes I like to call axons (not officially called that, but I like it since it keeps with the whole biological brain naming conventions).

The Math Basics of a Feedforward Network
  1. vj is the input values for the jth layer. wji is the axon connectors 0 thru m from the ith layer to the jth layer.
  2. y is the input values for the jth layer. This is calculated by passing the calculated value of node n coming from the ith layer to the activation function Φ(x).
  3. Φ(x) is the activation function using either a sigmoid function or a hyperbolic tangent function (I prefer tanh because it better handles negative values).
It should further be noted that n is referring to the nth node in a series of node calculations from input to output. Also, i and j simply note the distinction between one layer and another.

I highly recommend watching Prof. S. Sengupta lectures for deriving these equations.

See part 2 >>

Download Sample

1 comment: