home edit +

Priors on Multivariate Linear Functions

We can interpret matrices as linear functions:

var M = Matrix([
  [1,3,1],
  [2,1,4]
]);

var input = T.transpose(Vector([1, 5]));

var f = function(x) {
  return T.dot(x, M);
}

f(input);

We can sample Gaussian matrices:

var sampleGaussianMatrix = function(dims, mean, variance){
  var length = dims[0] * dims[1];
  var dist = DiagCovGaussian({
    mu: Vector(repeat(length, constF(mean))),
    sigma: Vector(repeat(length, constF(variance)))
  });
  var g = sample(dist);
  return T.reshape(g, dims);
};

wpEditor.put('sampleGaussianMatrix', sampleGaussianMatrix);

sampleGaussianMatrix([2, 3], 0, 1);

Thus, we have a prior on multivariate linear functions:

var sampleGaussianMatrix = wpEditor.get('sampleGaussianMatrix');

var functionPrior = function() {
  var matrix = sampleGaussianMatrix([2, 3], 0, 1);
  var f = function(x) {
    return T.dot(x, matrix);
  }
  return f;
}

var f = functionPrior();
var input = T.transpose(Vector([1, 5]));
f(input);