Leo's Home page -- Github Page -- License: CC BY-SA 4.0

Binding and Unbinding Vectors

Leonardo M. Rocha

Contact Me

Introduction

This notebook has as purpose to show the binding and unbinding of vectors.

In signal processing convolution and deconvolution are widely used in all types of signals. While in Artificial Neural Networks (ANNs) they are mostly used in computer vision (although some implementations are not strictly a convolution operation) they are not commonly used in the study of embeddings.

This notebook focus on implementing a convolution and its reverse deconvolution operation in order to be able to bind and unbind vectors to get some inspiration for ANNs. This is inspired by the work presented in Neural Engineering by Eliasmith & Anderson.

The notebooks can be found at the neural-representation repo and the completed code and all the tests are available at minibrain's sequence directory

Here some random values and made the matrix a bit sparse to lightly simulate what would happen in the brain.

Merging vectors in order x,y

The result is the same dimension as the inputs, preserving embedded dimension space is important in ANN applications.

Now unbinding the vectors and recovering the original (still the problem here is that there is the need to have the las added value to the convolution)

Gotcha!

After fighting with too many issues wiht the previous implementations I've found that with Scipy there is somebody that managed to do it correctly https://stackoverflow.com/questions/17473917/is-there-a-equivalent-of-scipy-signal-deconvolve-for-2d-arrays

Conclusion

The present code is able to bind and unbind vectors preserving order. This is important for events that must be taken into account in order.

The code is shown to work for one and two dimensional vector spaces, it can be extended for more dimensions.

While implementing this I had to review math and working with discrete signals which has some gotchas I didn't remember at the moment, for example having to shift the signal.