Распаковка общей структуры науки о данных
Концепция тензора была создана в 1900 году двумя итальянскими математиками, Туллио Леви-Чивита и Грегорио Риччи-Курбастро, и, как обычно, они основывались на работах других математиков. Страница «Тензор» в Википедии начинается:
Для нематематиков это большая работа!
К счастью, гораздо легче понять, что такое тензор в практическом смысле и как мы им манипулируем в науке о данных.
Я считаю полезным визуализировать тензор в виде вложенных «списков» чисел с любым количеством «уровней». Другой способ визуализировать это - представить каждую ячейку в электронной таблице 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]], ])
Такое кодирование данных позволяет иметь любое количество измерений, что имеет огромную ценность, когда у нас есть гигантские объемы сложных данных!
Я надеюсь, что это помогло объяснить, почему, по крайней мере в науке о данных, тензоры можно рассматривать как «вложенные» массивы.
В одном из следующих постов я расскажу об «поэлементном» сложении, вычитании, умножении, делении тензоров и т. Д., А также о разнице между «произведением Адамара» и «тензорным произведением» - требуются тензоры одинаковой размерности и никто не делает.
В Интернете есть так много отличных ресурсов для обучения науке о данных. Вот еще несколько моих любимых ресурсов:
- Мастерство машинного обучения, Джейсон Браунли
- БЕСПЛАТНЫЙ вводный курс по нейронным сетям, автор 3Blue1Brown
- Flatiron School (платные программы)
Я оптимистично настроен в отношении того, что ИИ будет все чаще использоваться для улучшения жизни всех нас. У вас есть проблема / задача в области науки о данных? Я с удовольствием помогу; давай подключимся!
Спасибо за прочтение!