I am learning about unsupervised machine learning, and am a bit confused regarding different algorithms to update weights. So, I understand that both Oja's Rule and BCM can be used.
In Oja's rule:
dw/dt = k*x*y - w*y^2
Where x
is the value at the input neuron, y
is the value at the output neuron and w
is the connection strength between the two. The idea is that this prevents weights from growing out of proportion.
In BCM:
dw/dt = k*(y-theta)*x
Where the idea is that unless my postsynaptic strength exceeds a threshold theta then I don't want my connectio to be strenghtened.
Studying competitive learning, which is yet another type of unsupervised learning I cam across another rule:
dw/dt = n*(x-y)
In this case however x
is the full input vector and y
is the vector representation of the output vector. The idea being that we move the prototype that responded the strongest to a given input closer to it, making the two more similar.
However, I don't understand when should I use which rule? For example, why couldn't I use a rule that combines both Oja's and BCM, hence only increasing connection weights when the output exceeds a given threshold, and preventing weights from growing out of proportion?