In this version, it is possible to factorize a matrix using PALM4MSA without any constraint on one or several factors. This is made possible by
the identity projector proj_id. In PALM4MSA when proj_id is used on a factor, the only change on the latter is made by the gradient descent (no other structure is imposed because proj_id simply does not modify the factor).
In particular, this is possible to factorize a matrix with the pyfaust.fact.hierarchical with no constraint at all on residual factors (except the last one which composes the output Faust and so needs to be constrained). Several tests have been made and we’ve seen that the Hadamard matrix factorization works pretty well without residual constraints on the condition that the skperm projector is used (rather than the less accurate splincol projector which gave bad results). We’ve seen also that it is possible to factorize the MEG matrix (hierarchical, section 6.) with, here again, no constraints on residual factors without observing a drop in accuracy.
The best advantage of these light configurations, is to naturally define the constraints of the targeted Faust we need to obtain through the factorization without making assumptions on the residual factors structures. Only the factors that actually compose the Faust are constrained.
Although, this new feature needs further considerations, it is made available to make possible for anyone to pursue some experiments.
For more details and in order to test if by yourself, please look at: pyfaust.fact.hierarchical (5. and 6.), pyfaust.fact.ParamsHierarchicalNoResCons, pyfaust.fact.ParamsHierarchicalWHTNoResCons, pyfaust.fact.ParamsHierarchicalRectMatNoResCons.
Other enhancements in this version:
– Smoother non-consistent constraints error handling in pyfaust.fact.palm4msa and pyfaust.fact.hierarchical (avoiding a python runtime crash and giving more informative error messages). This enhancement is yet to add to matfaust.
– Several recent bugs have been corrected (in particular, bugs dating from FAµST 3.20 which switched to matlab interleaved complex API).