Question: What is the difference between back-propagation and feed-forward neural networks?

By googling and reading, I found that in feed-forward there is only forward direction, but in back-propagation once we need to do a forward-propagation and then back-propagation. I referred to [this link](http://www.nnwj.de/backpropagation.html)

1. Any other difference other than the direction of flow? What about the weight calculation? The outcome?
2. Say I am implementing back-propagation, i.e. it contains forward and backward flow. So is back-propagation enough for showing feed-forward?

Answer: 
There is no pure backpropagation or pure feed-forward neural network.

Backpropagation is algorithm to train (adjust weight) of neural network.
Input for backpropagation is output\_vector, target\_output\_vector,
output is adjusted\_weight\_vector.

Feed-forward is algorithm to calculate output vector from input vector.
Input for feed-forward is input\_vector,
output is output\_vector.

When you are training neural network, you need to use both algorithms.

When you are using neural network (which have been trained), you are using only feed-forward.

Basic type of neural network is multi-layer perceptron, which is Feed-forward backpropagation neural network.

There are also more advanced types of neural networks, using modified algorithms.

Also good source to study : <ftp://ftp.sas.com/pub/neural/FAQ.html>
Best to understand principle is to program it (tutorial in this video) <https://www.youtube.com/watch?v=KkwX7FkLfug>
Neural Networks can have different architectures. The connections between their neurons decide direction of flow of information. Depending on network connections, they are categorised as - Feed-Forward and Recurrent (back-propagating).

**Feed Forward Neural Networks**

In these types of neural networks information flows in only one direction i.e. from input layer to output layer. When the weights are once decided, they are not usually changed. One either explicitly decides weights or uses functions like Radial Basis Function to decide weights. The nodes here do their job without being aware whether results produced are accurate or not(i.e. they don't re-adjust according to result produced). There is no communication back from the layers ahead.

**Recurrent Neural Networks (Back-Propagating)**

Information passes from input layer to output layer to produce result. Error in result is then communicated back to previous layers now. Nodes get to know how much they contributed in the answer being wrong. Weights are re-adjusted. Neural network is improved. It learns. There is bi-directional flow of information. This basically has both algorithms implemented, feed-forward and back-propagation.