Всем доброго здоровья и хорошего настроения.
Есть еще один метод, посдвигать все на две размерности, получить тензор, и его тензорным разложением покромсать. Метод клевый, достаточно устойчивый, можно под тысячу экспонент вытаскивать, но вычислительная сложность получается очень не ахти. Я когда-то много в этой области наследил, могу и ссылок накидать, и порассказывать детали.
ilghiz пожалуйста расскажите с чего начать.
Ключевая идея тензорного или multillinear, three-way, multi-way decomposition в том, что представление в трех и более мерном пространстве вида
![$$a_{ijk} = \sum_{r=1}^R \alpha_r b_{ir}^{(1)} b_{jr}^{(2)} b_{kr}^{(3)}$$ $$a_{ijk} = \sum_{r=1}^R \alpha_r b_{ir}^{(1)} b_{jr}^{(2)} b_{kr}^{(3)}$$](https://dxdy-04.korotkov.co.uk/f/7/c/5/7c544d29059dad00bea8dcc3a1b948ed82.png)
не требует ортогональности матриц
![$B^{(1)} = \{ b_{ir}^{(1)} \}$ $B^{(1)} = \{ b_{ir}^{(1)} \}$](https://dxdy-03.korotkov.co.uk/f/6/9/2/6925ecb90c32ce417861c0c8493694b582.png)
,
![$B^{(2)} = \{ b_{ir}^{(2)} \}$ $B^{(2)} = \{ b_{ir}^{(2)} \}$](https://dxdy-04.korotkov.co.uk/f/f/4/8/f483947f6d9670b03ad3f5c0e4841fc582.png)
,
![$B^{(3)} = \{ b_{ir}^{(3)} \}$ $B^{(3)} = \{ b_{ir}^{(3)} \}$](https://dxdy-03.korotkov.co.uk/f/2/d/7/2d774fe2983978e8c609f4b3c351efe482.png)
, как в сингулярном разложении, поэтому, такое разложение для такого сдвинутого тензора сразу дает правильное решение. Если решение не отрицательно по физике, оно и получается в виде матриц с неотрицательными числами. Первым это осознал в 1977 году Крускал doi: 10.1016/0024-3795(77)90069-6
Да, вычислительная сложность тензорного разложения обычно очень большая, но, ведь решает, поэтому им и пользуются.
Еще можно увеличивать размерности - например, если у вас сигнал в виде комплексной экспоненты на 1024 отсчетах, вы можете его представить в виде, например, пятимерного тензора
![$4 \times 4 \times 4 \times 4 \times 4$ $4 \times 4 \times 4 \times 4 \times 4$](https://dxdy-01.korotkov.co.uk/f/0/7/2/072287803414c70dadda8d7398fab1ad82.png)
(или даже 10-ти мерного) и напустить на него такую тензорную аппроксимацию. Тогда ничего сдвигать не надо и тензор будет довольно маленький. Мы когда-то как раз это с соавторами и придумали 10.1038/nmeth900
Как это решать, надо всегда смотреть по обстоятельствам. Готового решателя на все случаи жизни нет.
Обычно более-менее хорошо сходится ALS, не я его придумал, кажется Харшман в 1970-м году, только он написал очень не понятно, поэтому, все Кирса или Бро цитируют, да и у меня тоже понятно написано в 10.1002/nla.297 . Сорсы топового решателя есть в приложении одного из наших патентов, с номером десять семь семь три ноль девяноста два, выданном пару лет назад в американском патентном ведомстве. Для многомерных разреженных данных я не знаю альтернатив, которые решают эту задачу устойчивее и быстрее.
По всей видимости мне нужно изучить тензор трейн?
хоть эта поделка Осцеледца и хорошо гуглится и цитируется, в конкретно этом случае она не сможет вам помочь. Кстати, реально не знаю вообще для чего ее придумали, разве только чтобы увековечить в названии буковку Т от руководителя оного (Тыртышникова) как по аналогии к Н-матрицам придуманным Хакбушем :)