diff --git a/README.md b/README.md
index 5d2db65fe..85e134602 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,6 @@
# Spiking-Neural-Network
-This is the python implementation of hardware efficient spiking neural network. It includes the modified learning and prediction rules which could be realised on hardware and are enegry efficient. Aim is to develop a network which could be used for on-chip learning as well as prediction.
+This is the python implementation of hardware efficient spiking neural network. It includes the modified learning and prediction rules which could be released on hardware and are energy efficient. Aim is to develop a network which could be used for on-chip learning as well as prediction.
+
Spike-Time Dependent Plasticity (STDP) algorithm will be used to train the network.
@@ -15,7 +16,7 @@ Spike-Time Dependent Plasticity (STDP) algorithm will be used to train the netwo
## [SNN Simulator for Classification](classification/)
-Assuming that we have learned the optimal weights of the network using the STDP algorithm (will be implemented next), this uses the weights to classify the input patterns into different classes. The simulator uses the 'winner-takes-all' strategy to supress the non firing neurons and produce distinguishable results. Steps involved while classifying the patterns are:
+Assuming that we have learned the optimal weights of the network using the STDP algorithm (will be implemented next), this uses the weights to classify the input patterns into different classes. The simulator uses the 'winner-takes-all' strategy to suppress the non firing neurons and produce distinguishable results. Steps involved while classifying the patterns are:
- For each input neuron membrane potential is calculated in its [receptive field](receptive_field/) (5x5 window).
- [Spike train](encoding/) is generated for each input neuron with spike frequency proportional to the membrane potential.
@@ -24,7 +25,7 @@ Assuming that we have learned the optimal weights of the network using the STDP
- Simulator checks for output spike.
### Results
-The simulator was tested upon binary classification. It can be extended upto any number of classes. The images for two classes are:
+The simulator was tested upon binary classification. It can be extended up to any number of classes. The images for two classes are:
@@ -50,7 +51,7 @@ In the previous section we assumed that our network is trained i.e weights are l
### Spike Time Dependent Plasticity
STDP is actually a biological process used by brain to modify it's neural connections (synapses). Since the unmatched learning efficiency of brain has been appreciated since decades, this rule was incorporated in ANNs to train a neural network. Moulding of weights is based on the following two rules -
- Any synapse that contribute to the firing of a post-synaptic neuron should be made strong i.e it's value should be increased.
-- Synapses that don't contribute to the firing of a post-synaptic neuron should be dimished i.e it's value should be decreased.
+- Synapses that don't contribute to the firing of a post-synaptic neuron should be diminished i.e it's value should be decreased.
Here is an explanation of how this algorithm works:
@@ -60,21 +61,20 @@ Consider the scenario depicted in this figure
-Here we can see clearly observe that Neuron 1 has learned pattern '1', Neuron 2 has learned '0', Neuron 3 is noise and Neuron 4 has learned '2'. Consider the plot of Neuron 1. In the beginning when the weights were randomly assigned it was firing for all the patterns. As the training proceeded, it became specific to pattern '1' only and was in inhibitory state for the rest. Onobserving Neuron 3 we can coclude that it reactsa to all the patterns and can be considered as noise. Hence, it is advisable to have 20% more output neurons than number of classes.
+Here we can see clearly observe that Neuron 1 has learned pattern '1', Neuron 2 has learned '0', Neuron 3 is noise and Neuron 4 has learned '2'. Consider the plot of Neuron 1. In the beginning when the weights were randomly assigned it was firing for all the patterns. As the training proceeded, it became specific to pattern '1' only and was in inhibitory state for the rest. On observing Neuron 3 we can conclude that it reacts to all the patterns and can be considered as noise. Hence, it is advisable to have 20% more output neurons than number of classes.
-There is a slight overlapping of '2' and '0' which is a common problem in competetive learning. This can be eliminated proper fine tuning of parameters.
+There is a slight overlapping of '2' and '0' which is a common problem in competitive learning. This can be eliminated proper fine tuning of parameters.
### Improper training
If we don't use variable threshold for normalization, we will observe some patterns over shadowing others. Here is an example:
@@ -122,8 +122,8 @@ Building a Spiking Neural Network from scratch not an easy job. There are severa
- Number of Spikes Per Sample
- Range of Weights
- I have demonstrated how some of these parameters affect the network and how they should be handeled [here](https://github.com/Shikhargupta/snn-brian-mlp/tree/master/simple_demo) under the heading Parameter Analysis.
+ I have demonstrated how some of these parameters affect the network and how they should be handled [here](https://github.com/Shikhargupta/snn-brian-mlp/tree/master/simple_demo) under the heading Parameter Analysis.
## Contributions
-I was helped on this project by my collegue at Indian Institute of Technology, Guwahati - Arpan Vyas. He further went on to design an architecture of hardware accelerator for this Simplified SNN and deploy it on FPGA and hence reducing the training time considerably. [Here](https://github.com/arpanvyas) is his Github profile.
+I was helped on this project by my colleague at Indian Institute of Technology, Guwahati - Arpan Vyas. He further went on to design an architecture of hardware accelerator for this Simplified SNN and deploy it on FPGA and hence reducing the training time considerably. [Here](https://github.com/arpanvyas) is his Github profile.