Fourier Features Let Networks Learn
High Frequency Functions in Low Dimensional Domainshttps://arxiv.org/abs/2006.10739Статья 2020 года с нипса о том, почему же позиционные эмбединги трансформеров хорошо работают именно в таком странном виде эмбедингов из синусов и косинусов (но не только).
Основная мысль: если подавать время, позиции, координаты как есть, то сетка даже на обучающей выборке не может выучить высокочастотные компоненты целевой функции. А если делать "позиционные эмбединги", преобразование f_feat(p), то подобной проблемы не возникает.
Пишут, что идея статьи пришла при работе над NERF'ом.
Общий вид изучаемых эмбедингов позиций, времени, 2d и 3d координат:
f_feat(p) =(a1*cos(2Pi*), a1*sin (2Pi*), ..., a_d *cos(2Pi*), a_d*sin(2Pi*)).
Их называют fourier features.
Что с ними делают:
1) пытаются теоретически объяснить, почему подобное преобразование работает лучше, чем подавать данные нейросетке в исходном виде.
2) пытаются определить качественное влияние параметров a_i, w_i на получающееся решение
3) проводят мотивирующие эксперименты
Теоретическое объяснение:Через neural tangent kernel в несколько шагов:
1) err_t - ошибка сетки на обучающей выборке с learning rate lr на шаге обучения t - может быть аппроксимирована с помощью выражения, использующего матрицу K: K_ij = k_ntk(xi, xj)
|err_t| ~= e^(-lr *K*t)
2) матрица K неотрицательно определена, поэтому можно использовать разложение K=QDQ^T, где Q ортонормированная матрица собственных векторов, а D - диагональная и D_ii>= 0:
Q^T*(err_t) ~=e^(-lr *D*t)Q^T
и
[Q^T*(err_t)]_i ~=e^(-lr *l_i*t)Q^T
3) Получается, что скорость сходимости ошибки на обучающей выборке зависит от спектра матрицы K. Если собственные значения сильно отличаются друг от друга, то разные компоненты ошибки будут сходиться с разной скоростью. А если матрица плохо обусловлена, т.е. есть собственные значения близкие к нулю, то соответствующие компоненты ошибки не сойдутся к нулю фактически никогда
4) Если же элементы обучающей выборки x_i расположены на гиперсфере, то (по другому результату) k_ntk(x_i, x_j) =k_ntk'(). Для fourier features
norm(f_feat(x_i)) =const,
а также
=h(x_i-x_j),
поэтому k_ntk(f_feat(x_i), f_feat(x_j)) =k_ntk'(h(x_i-x_j))
5) Из-за предыдущего равенства матрица K для выборки, преобразованной f_feat, будет матрицей стационарного ядра, и (видимо) подобная симметрия обеспечивает "хороший" спектр. В частности, K_ii =K_jj.
Пункты 3 и 5 дают нужные утверждения.
Также есть видео с красивой презентацией и наглядными визуализациями:
https://youtu.be/nVA6K6Sn2S4?si=bhu-XmE-Ejk1Bhvzи блогпост с неформальными поясениями
https://bmild.github.io/fourfeat/