15 comments

[ 2.7 ms ] story [ 21.9 ms ] thread
Isn't this one of the homework's in the stanford/coursera ml course? I feel like this is not really original content
The author never implied that this was their own original discovery. Unless they ripped the entire article off, this is just a tutorial on how to work with Eigenfaces on your own, and an explanation of how they work.
[Author here] Definitely never intended to claim that this was an original discovery; the original paper using the term is ~25 years old [http://www.cs.ucsb.edu/~mturk/Papers/mturk-CVPR91.pdf].

Nonetheless, I've found it to be an interesting concept. There is indeed a homework from the Coursera ML course for computing and visualizing eigenfaces, and the course (and the Stanford CS229 notes) discuss PCA further. I decided to explore the ideas further and distill it into a blog post specifically on eigenfaces.

Goal is for it to serve as a condensed tutorial on an interesting topic! I definitely learned a bunch writing it, and it may be interesting to others who have yet to come across to concept.

Here's an animation of an autoencoder learning filter weights. It's interesting that they look similar.

https://lambdal.com/images/autoencoder-learning-face-filters...

It's not completely by chance. There's an old paper [1] that shows that if the activation functions are well approximated using only up to the linear term of its Taylor expansion, then the optimal weights for encoding and decoding are the same as PCA.

There's probably newer results on this topic; I'm sure.

However, I will say that I've created some autoencoders on toy sets like those found in scikit-learn, and the spaces learned via the autoencoder and the spaces found through PCA were often similar if not identical. For example, if my input vectors were in R^n (with n > 3) and I restricted an autoencoder to 3 units, the encoding matrix of the autoencoder would span the same subspace as the first 3 principal component directions.

[1]: http://oucsace.cs.ohiou.edu/~razvan/courses/dl6900/papers/bo...

Ghost like faces? It's as if they are... spectral

(•_•) ( •_•)>⌐■-■ (⌐■_■)

(Nomen omen) spectral look is an artifact of using negative values. It's nice to see non-negative components - http://www.quantumblah.org/?p=428. They are both more accurate and more human-interpretable (at the cost of computational efficiency).
Great contribution and interesting read. I'll certainly be checking this method out in more depth!
An interesting post in need of a reference to past work:

http://www.mitpressjournals.org/doi/abs/10.1162/jocn.1991.3....

nearly 25 years old and 13k references, so it's pretty well studied...!

Very interesting. I'd like to see something like that for sounds/music to see how audio will evolve after several cycles of encoding/recovering.