Известный успех в рамках #91 вновь привёл к теме Energy Based Models. А именно в PSD использовался подход EBM. Хотя, если уж совсем честно, то результаты PSD в эксперименте большого дела не сделали, но тем не менее стало ясно, как EBM работает.

Energy Based Models - есть туториал [LeCunTutEBM] от Yann LeCun

Посмотрел лекции и практикум LeCun:
https://www.youtube.com/watch?v=tVwV14YkbYs (Lecture: Energy based models and self-supervised learning)
https://www.youtube.com/watch?v=bggWQ14DD9M (Practicum: Under- and over-complete autoencoders)
https://www.youtube.com/watch?v=ZaVP2SY23nc (Lecture: Contrastive methods and regularised latent variable models)
https://www.youtube.com/watch?v=7Rb4s9wNOmc (Practicum: Variational autoencoders)

Тут ещё инфа про EBM: https://cs.nyu.edu/~yann/research/ebm/

Вообще получается, что даже Olshausen неявно использовал подход EBM. Там тоже была латентная переменная - коэффициенты для базисных функций, которые искались через conjugate gradient descent.

Learning EBM состоит в формировании энергетической функции. В практической реализации это могут быть например, ядра свертки, или матрицы энкодера/декодера в автоэнкодере. Inference в EBM состоит в минимизации энергетической функции с помощью gradient descent. Т.е. мы делаем или берём откуда-то какой-то guess и его оптимизируем. Тем самым приходим к боль-мень правдоподобному варианту. Понятное дело, что каждый раз так делать (gradient descent) - это очень затратно. Поэтому параллельно с gradient descent можно строить аппрксимирующую функцию, которая будет быстро давать ответ. В PSD такой аппрксимирующей функцией являлся enncoder. Но вообще можно и сам gradient descent саппроксимировать - см. алгоритм LISTA (unfolded ISTA).

ЕBM даёт ответ на вопрос, поднятый в #80. А именно, как строить такие системы, в которых есть скрытая (латентная) переменная, которая управляет выводом. А именно, нам нужна энергетическая функция, возможность её дифференцировать и через gradient descent оптимизировать, а также использование аппроксимаций, чтобы быстро это делать.

Слайды лекции: LeCun. Energy-Based Models Lecture Sliders.pdf


Из диалога с ИИ Kavukcuoglu Fast Inference in Sparse Coding Algorithms with Applications to Object Recognition.pdf

The difference is subtle but crucial. In standard Deep Learning, we usually think:
Input -> [Black Box] -> Probability/Class
In EBMs, we think:
Input + Potential Answer -> [Energy Function] -> Scalar Value (Badness)

In a normal neural network, the output layer (like Softmax) is forced to compete: if the probability of “Cat” goes up, “Dog” must go down. In an EBM, the energy function is a “compatibility” score. It doesn’t have to sum to anything. This allows you to model multi-modal outputs.

https://www.reddit.com/r/MachineLearning/comments/kc8ruw/d_what_exactly_is_yann_lecuns_energy_based/#:~:text=Energy%2Dbased%20models%20versus%20probabilistic,this%20point%20in%20the%20video.

One thing to note is that the model doesn’t give you an output on its own, you supply an output and it gives you a score (the energy) of how well the output matches the input. You can do gradient descent over the output space to find the “best” output according to the model.