Концепция тензора была создана в 1900 году двумя итальянскими математиками — Туллио Леви-Чивита и Грегорио Риччи-Курбастро, и, как это обычно бывает, основывалась на работе других математиков. Страница в Википедии о тензорах начинается так:

Те́нзор (от лат. tensus, «напряжённый») — объект линейной алгебры, линейно преобразующий элементы одного линейного пространства в элементы другого. Частными случаями тензоров являются скаляры, векторы, билинейные формы и т. п.

Звучит непросто для тех, кто не разбирается в математике!

К счастью, на практике намного проще понять, что такое тензор и как он используется в науке о данных.

Я предпочитаю изображать тензор в виде вложенных “списков” чисел с любым количеством “уровней”. Другой способ представления: ячейка в электронной таблице Excel, содержащая все данные из другой таблицы. Во второй таблице каждая ячейка связана с другой таблицей и так далее. Каждую таблицу можно рассматривать как дополнительное “измерение”.

Тензор первого порядка имеет только одно измерение. В компьютерных науках это можно назвать вектором или упорядоченным набором чисел. Тензор второго порядка будет матрицей, как электронная таблица в Excel, то есть двумерным. С ростом числа измерений можно рассматривать информацию как векторы, матрицы или массивы, вложенные в массивы, с любым числом измерений (n-мерные).

Вот как можно представить тензор третьего порядка:

Визуализация тензора третьего порядка

Каждая из групп верхнего уровня значений представлена разным цветом. В этом примере цифры каждого значения соответствуют конкретной ячейке значения в общей структуре данных. Крайняя правая цифра каждого значения соответствует группе верхнего уровня, к которой она относится. Все значения красного цвета находятся в группе верхнего уровня номер 1, зелёные — в группе номер 2 и голубые в группе номер 3.

Каждая группа верхнего уровня является матрицей (двумерной). Крайняя левая цифра каждого значения соответствует строке, в которой находится, а средняя цифра — столбцу. Таким образом сохраняется порядок всех значений, что позволяет нам выполнять вычисления на всей структуре, используя другие векторы, матрицы или массивы.

Вот та же структура, содержащая другую информацию:

Тензор третьего порядка

Каждая буква отображает уникальное положение в структуре; та же цветовая кодировка используется для разграничения матриц верхнего уровня. 

Более сложная визуализация возможна с трёхмерным кубом. Каждый вертикальный уровень такого куба будет содержать данные одной из групп верхнего уровня, создавая куб 3x3x3 с 27 уникальными местоположениями. Но возможность визуализировать тензор при помощи графики исчезает, как только мы выходим за пределы трёх измерений.

Из-за этого ограничения давайте рассмотрим, как можно закодировать те же данные, используя компьютерное ПО. С помощью Python и Numpy создадим массив числовых данных из первого примера:

from numpy import array

T = array([

[[111,121,131], [211,221,231], [311,321,331]],

[[112,122,132], [212,222,232], [312,322,332]],

[[113,123,133], [213,223,233], [313,323,333]],

])

При таком кодировании нам доступно любое количество измерений, что имеет колоссальное значение при работе с гигантскими объёмами сложных данных!

Я надеюсь, у меня получилось объяснить, что, как минимум в машинном обучении, тензоры могут быть представлены в виде вложенных массивов.

Читайте также:


Перевод статьи Giovanni Rosati: What’s a Tensor?

Предыдущая статьяУлётные пакеты Julia для машинного обучения - мечта программиста!
Следующая статьяКак скоро хуки вытеснят классы React?