This sound like projecting data into the linear space spanned by {x_i, x_i*x_j} where x_i are the features variables, and then applying standard regularization methods to remove noise and low value coefficients. Anisotropy and the cone ideas may explain why PCA underperforms, but it does not uniquely justify this particular quadratic decoder. The geometric story is not doing explanatory work beyond “data is nonlinear…
A polynomial autoencoder beats PCA on transformer embeddings
21–30 of 39 posts
Re: A polynomial autoencoder beats PCA on transformer embeddings
#22The normal PCA encoding:
1) Given a mean-center-scaled X matrix, get the latent variable matrix T with X = T * P’ + e, where P = loadings and e = residuals. The P is your model, so for a new vector xnew, you can calculate tnew = xnew * P (because P’ * P = I).
This is the encoder —- nothing changes here. The original matrix is dimensionally reduced with residuals e discarded. This is why PCA is lossy.
The decoder is where things diverge
The usual PCA decoder reconstructs a given latent variable t_any by using the trained P loadings, like thus x_reconstructed = t_any * P’. This reconstructed data lies on a linear hyperplane, so if the original data did not lie on the hyperplane, reconstruction errors are potetially high.
In your proposal, instead of a linear decoder, you train a quadratic decoder (essentially a classic ridge regression using a quadratic) on the original X. So for your reconstruction, you have x_reconstructed = poly(t_new).
This achieves lower reconstruction error in-sample (naturally, because quadratic is higher order than linear), but your poly function is trained on a particular corpus. Which means that when you’re in-distribution within that corpus, you’re good but when you’re not, you can be very wrong in biased ways that PCA’s linear reconstruction is not.
SO this is not a better technique than PCA in a general sense. It’s a better reconstruction machine when your data is mostly in-sample. It’s a kind of computationally cheap “specialization” on a particular distribution of data, which can be useful if you’re mostly in-distribution but introduces new risks when out-of-distribution.
Whereas PCA just drops the residual and makes modest claims, a quadratic decoder is trying to predict the residual and on out-of-sample data, it can be wrong in biased ways that PCA is not. In other words, it can hallucinate.
But if on a large enough training corpus, chances are we’re going to be in-distribution most of the time, so maybe this could generalize well.
Re: A polynomial autoencoder beats PCA on transformer embeddings
#23Author here — questions and pushback both welcome.
I think your per-axis std normalization is likely doing a big pile of the work —- it’s fairly well-known that “wrong” PCA, setting sigma=Id or just taking a square root, gives better embeddings than the un-normalized version. It would be worth showing a comparison to similarly-normalized PCA I think, if it’s not too hard?
Re: A polynomial autoencoder beats PCA on transformer embeddings
#24Author here — questions and pushback both welcome.
In the article, you mention this approach requires no search over hyper-parameter, because the method comprises a closed-form solution with "simple" linear algebra. I agree with this, but do you not in think need to tune the L2-regularization strength? That would for me be a hyper-parameter you would need to do a CV over (or similarly).
Re: A polynomial autoencoder beats PCA on transformer embeddings
#25Author here — questions and pushback both welcome.
Re: A polynomial autoencoder beats PCA on transformer embeddings
#26Polynomial Regression As an Alternative to Neural Nets (2018) https://arxiv.org/abs/1806.06850
Π-nets: Deep Polynomial Neural Networks (2020) https://arxiv.org/abs/2003.03828
Re: A polynomial autoencoder beats PCA on transformer embeddings
#27It sounds like this replaces the PCA reconstruction function with a quadratic. The normal PCA encoding: 1) Given a mean-center-scaled X matrix, get the latent variable matrix T with X = T * P’ + e, where P = loadings and e = residuals. The P is your model, so for a new vector xnew, you can calculate tnew = xnew * P (because P’ * P = I). This is the encoder —- nothing changes here. The original matrix is dimensionally…
Re: A polynomial autoencoder beats PCA on transformer embeddings
#28Re: A polynomial autoencoder beats PCA on transformer embeddings
#29Re: A polynomial autoencoder beats PCA on transformer embeddings
#30Author here — questions and pushback both welcome.