Если коротко, то идея в том чтобы некоторым образом обобщать разделение переменных на многомерный случай.
Например для матриц, если есть матрица
ранга
, то ее можно записать в виде
или
что соответсвует ситуации когда индексы
и
в матрице
разделяются идеально. В общем случае для матрицы ранга
имеем
Понятно, что если ранг
мал, то хранение вместо матрицы
векторов
сильно снижает объем данных которые мы храним -
вместо
.
Если попробовать обобщать это на многомерные массивы (скажем трехмерные) в виде
- это так называемое каноническое разложение тензора (CP - canonical polyadic), и определить "ранг" как минимальное
, такое что такое разложение найдется, то оказывается что это очень плохое во всех смыслах определение, например задача о поиске CP ранга произвольного тензора является NP полной. Ну и там всякие вещи что при произвольно малом возмущении ранг может скакнуть и стать вообще любым.
Поэтому люди стали думать какие еще разложения можно придумать. Есть разложение Такера, есть TT (Tensor-Train) разложение. Первое для тензоров с больше чем
модами мало используется, поэтому напишу про второе. Мы представляем
- мерный тензор
в виде списка из
-х мерных тензоров
, таких что
, где
- числа которые называют рангами TT-тензора и
. "Ядра"
удовлетворяют соотношению
Поясню что имеется ввиду -
это
-х мерный массив. При подстановке туда в качестве среднего индекса
мы получаем матрицу размера
. Произведение этих матриц дает нам число - соответствующий элемент тензора
(число так как размеры крайних ядер есть
и
). Посчитаем число параметров -
что существенно меньше чем изначального размер
-
Для массивов
при
, можно добиться еще более сильного сжатия если сначала его превратить в тензор
тогда сложность будет линейна по
- логарифмическая по
. Идея тут в том что мы вместо индекса используем его бинарное разложение -
, и что в таких переменных у многих функций тоже разделяются переменные. Например для массива значений экспоненты на сетке
переменные разделяются полностью. То есть экспоненту мы можем задать фактически на любой сетке вообще практически, и для хранения понадобится всего
чисел.