Project - Developing Artificial Neural Network Using FPGA

Discussion in 'The Projects Forum' started by Skyferia, Jul 1, 2011.

  1. Skyferia

    Thread Starter New Member

    May 5, 2010
    My project is about developing Artificial Neural Network(ANN) using FPGA.

    The problem I am having right now is thinking of what type of project, hardware-wise, I can do to show the implementation of ANN using FPGA.

    Any ideas? Would be truly helpful if there are any :)
  2. StayatHomeElectronics

    Well-Known Member

    Sep 25, 2008
    What exactly is a neural network and how is it implemented in an FPGA? What kinds of things can be done with a neural network?

    Neural networks are not among the frequent discussions here so some background may be helpful.
  3. Skyferia

    Thread Starter New Member

    May 5, 2010
    So sorry for the really late reply
    About your question, it's hard to explain here, but to summarize, a neural network acts like a brain, where it basically has three layers, the Input Layer (to receive input(s)), the Hidden Layer (to process the received input(s) and to act to process upon it/them and then generate output(s)) and the Output Layer (to send output(s)); and there are many things that can be done with a neural network, an example is picking up a stick.

    About the request, I already have gotten an idea, by chance, when doodling on a piece of paper.

    Thanks anyway!
  4. bwack


    Nov 15, 2011
    ANN, artificial neural network is a mathematical function where you can "teach" it to give a good (not perfect) output (value or pattern) for a given input pattern. The information lays in the large quantity of weights, mimicing the strength between the connection between neural cells in the brain. Think of it as a polynomal function (but it is not) that is curvefitting a function to give desired aproximate result.

    An example (I have worked with in my M.Sc. thesis) is training an ANN to perform good moves in the game of Backgammon. You can teach an ANN to calculate a "probability of success" value for every particular move (the input pattern of the net ++). At the current move in the game you can feed the ANN with all possible next moves, and then you pic the one with most success of win. You may now think, how can you teach the ANN EVERY move in backgammon when it is in the order of 10^12 posibilities, well, you don't, but the ANN "gets" the problem after a while.

    Training the net is more difficult, but it basically is having a "teacher" showing the net examples output values for given input. After a while, IF a generalized solution to the problem actually exist, the ANN can even predict outputs for input patterns that it has never seen before.

    Training the net can take weeks and months depending on the algo used, but the golden here is that using the net to get a value for a given pattern takes a fraction of a second! Thats much better (and actually practical) than bruteforcing the problem (impractical for such large quantities of moves in backgammon (the dice makes it even more difficult)). Oh another great thing about ANN is that the ANN is easily splittable for parallell processing. :) That is when talking of multicore/multicpu computers. For FPGA's it is a question of resources, but yeah the cool with FPGA is that is parallell processing by its nature.
    Edit: I must be fair and give some downsides. There are some difficulties with using ANNs like how steep the training rate should be, determining if the Error that the ANN is giving is stuck at local minimum (a larger learning rate can make the Error "jump" out of this local minima). It only is good for problems that only requires an aproximate result, has a very arbitrary function (or else whe could just have used algebra or a database), and we know there exist a solution somehow.

    Sorry Skyferia I didn't use it for FPGA but for C to compare two learning algorithms. You could look at AC motors using ANNs ? I'm not sure, need to search for some :) Do you have access to IEEE ? I don't anymore, but look for papers in there and you will find many examples of use. There are some papers on utilizing FPGAs for ANN too. I definetly will read on your problem here. It is something I haven't worked on for 5 years, but I'm very interested to learn more applications using ANNs.
    Last edited: Jan 19, 2012