changeset 984:5badf36a6daf

mcRBM - added notes to leading comment
author James Bergstra <bergstrj@iro.umontreal.ca>
date Tue, 24 Aug 2010 13:50:26 -0400
parents 15371ff780a0
children 78b5bdf967f6
files pylearn/algorithms/mcRBM.py
diffstat 1 files changed, 60 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/pylearn/algorithms/mcRBM.py	Mon Aug 23 16:06:23 2010 -0400
+++ b/pylearn/algorithms/mcRBM.py	Tue Aug 24 13:50:26 2010 -0400
@@ -5,7 +5,10 @@
     Modeling pixel means and covariances using factored third-order Boltzmann machines.
     IEEE Conference on Computer Vision and Pattern Recognition.
 
-and performs one of the experiments on CIFAR-10 discussed in that paper.
+and performs one of the experiments on CIFAR-10 discussed in that paper.  There are some minor
+discrepancies between the paper and the accompanying code (train_mcRBM.py), and the
+accompanying code has been taken to be correct in those cases because I couldn't get things to
+work otherwise.
 
 
 Math
@@ -24,25 +27,71 @@
 
 
 
-Full Energy of mean and Covariance RBM, with 
+Version in paper
+----------------
+
+Full Energy of the Mean and Covariance RBM, with 
 :math:`h_k = h_k^{(c)}`,
 :math:`g_j = h_j^{(m)}`,
 :math:`b_k = b_k^{(c)}`,
 :math:`c_j = b_j^{(m)}`,
 :math:`U_{if} = C_{if}`,
 
-:
+    E (v, h, g) =
+        - 0.5 \sum_f \sum_k P_{fk} h_k ( \sum_i (U_{if} v_i) / |U_{.f}|*|v| )^2 
+        - \sum_k b_k h_k
+        + 0.5 \sum_i v_i^2
+        - \sum_j \sum_i W_{ij} g_j v_i
+        - \sum_j c_j g_j
+
+For the energy function to correspond to a probability distribution, P must be non-positive.  P
+is initialized to be a diagonal, and in our experience it can be left as such because even in
+the paper it has a very low learning rate, and is only allowed to be updated after the filters
+in U are learned (in effect).
+
+Version in published train_mcRBM code
+-------------------------------------
+
+The train_mcRBM file implements learning in a similar but technically different Energy function:
 
     E (v, h, g) =
-        - 0.5 \sum_f \sum_k P_{fk} h_k ( \sum_i U_{if} v_i )^2 / |U_{*f}|^2 |v|^2
+        - 0.5 \sum_f \sum_k P_{fk} h_k (\sum_i U_{if} v_i / sqrt(\sum_i v_i^2/I + 0.5))^2 
         - \sum_k b_k h_k
         + 0.5 \sum_i v_i^2
         - \sum_j \sum_i W_{ij} g_j v_i
         - \sum_j c_j g_j
 
-For the energy function to correspond to a probability distribution, P must be non-positive.
+There are two differences with respect to the paper:
+
+    - 'v' is not normalized by its length, but rather it is normalized to have length close to
+      the square root of the number of its components.  The variable called 'small' that
+      "avoids division by zero" is orders larger than machine precision, and is on the order of
+      the normalized sum-of-squares, so I've included it in the Energy function.
+
+    - 'U' is also not normalized by its length.  U is initialized to have columns that are
+      shorter than unit-length (approximately 0.2 with the 105 principle components in the
+      train_mcRBM data).  During training, the columns of U are constrained manually to have
+      equal lengths (see the use of normVF), but Euclidean norm is allowed to change.  During
+      learning it quickly converges towards 1 and then exceeds 1.  It does not seem like this
+      column-wise normalization of U is justified by maximum-likelihood, I have no intuition
+      for why it is used.
 
 
+Version in this code
+--------------------
+
+This file implements the same algorithm as the train_mcRBM code, except that the P matrix is
+omitted for clarity, and replaced analytically with a negative identity matrix.
+
+    E (v, h, g) =
+        + 0.5 \sum_k h_k (\sum_i U_{ik} v_i / sqrt(\sum_i v_i^2/I + 0.5))^2 
+        - \sum_k b_k h_k
+        + 0.5 \sum_i v_i^2
+        - \sum_j \sum_i W_{ij} g_j v_i
+        - \sum_j c_j g_j
+
+      
+
 Conventions in this file
 ========================
 
@@ -64,10 +113,15 @@
  - `b`, a vector of hidden covariance biases (K)
  - `c`, a vector of hidden mean biases  (J)
 
-Matrices are generally layed out according to a C-order convention.
+Matrices are generally layed out and accessed according to a C-order convention.
 
 """
 
+#
+# WORKING NOTES
+# THIS DERIVATION IS BASED ON THE ** PAPER ** ENERGY FUNCTION
+# NOT THE ENERGY FUNCTION IN THE CODE!!!
+#
 # Free energy is the marginal energy of visible units
 # Recall: 
 #   Q(x) = exp(-E(x))/Z ==> -log(Q(x)) - log(Z) = E(x)