Тензоры: это скаляры, векторы или матрицы?
В прошлые времена тензоры, вероятно, были бы популярным термином только среди сторонников изучения человеческого тела, и особенно скелетно-мышечной системы. Однако по мере того, как современные технологии продолжают преодолевать ограничения с помощью искусственного интеллекта, этот термин становится общепринятым, и эта тенденция часто вызывает вопрос: что такое тензор?
Прежде чем объяснять, что такое тензор, связанный с математикой и заимствованный из компьютерных наук, всегда полезно понять, что тензор стал жизнью современного искусственного интеллекта. Таким образом, первая мотивация для дальнейшего чтения заключается в том, что вы в полной мере оцените работу искусственного интеллекта, если сначала освоите сущность тензоров.
Учитывая сложность определения тензора, я буду подходить к нему поэтапно.
Шаг 1
Во-первых, оцените тензор как числовое представление интереса.
Интерес может представлять собой цвет предмета, скорость автомобиля, цена мороженого, национальность человека, форма носа.
Безусловно, Да! Все можно выразить в цифрах. Но как?
Предположим, мы хотим классифицировать 4 типа носов:
- Мясистый нос
- Ухабистый нос
- Курносый нос
- Соколиный нос
Мясистый нос, будучи первым типом, может быть представлен 1
Горбатый нос 2
Курносый нос 3
Ястребиный нос 4
. Потом, если мне прислали номер 1
и сказал бы, что это тип носа, я бы автоматически понял, что это относится к мясистому носу.
Почему мы все равно должны представлять вещи в числах?
Во-первых, числа не зависят от языка. Другими словами, независимо от того, понимает ли человек только греческий, латинский, французский, английский или суахили среди прочих, мы все понимаем числа. Таким образом, становится легче передавать информацию из разных источников с помощью чисел, поскольку это своего рода универсальный язык.
Во-вторых, компьютеры понимают только нули и единицы (числа), и, в конце концов, все, что мы хотим сделать с нашими компьютерами, будет преобразовано в числа. Таким образом, числа являются основой вычислений.
Вернемся к примеру с носами.1
означает Мясистый нос. Таким образом, 1
является тензором, представляющим тип носа. Более того, 1
это тип тензора, называемый скалярным, потому что он имеет только одно измерение — это всего лишь одно число. Шаг второй говорит о другом типе тензора, который может иметь больше измерений.
Шаг 2
Поймите, что интересы многогранны в реальной жизни. Другими словами, интересы состоят из нескольких частей или измерений.
Возьмем цену мороженого. Предположим, что это $ 5,00.
Вы можете подумать, что у него только одно измерение, но на самом деле оно имеет несколько измерений:
- знак валюты ($)
- первая группа цифр перед точкой (5)
- точка (это могла быть запятая в другом языке)
- группа цифр после точки
Мы можем переписать цену в группу чисел.
- Присвоим номер валюте. В мире существует около 180 валют, и мы можем принять решение о назначении
1
в качестве валюты доллара США. Впоследствии, каждый раз, когда мы видим1
представляющая валюту, это доллар США. - Мы можем решить оставить группу чисел перед точкой или запятой как есть, поскольку они уже являются числами.
- Можно предположить, что место точки могут занимать всего два символа (технически, десятичные разделители): точка и запятая. Таким образом, точка становится
1
и запятая2
. - Цифры после точки оставим как есть
- Наконец, давайте использовать формат,
(currency, numbers before dot/comma, dot/comma, numbers after dot/comma)
переписать цену мороженого в четырех измерениях следующим образом:
price_of_ice_cream = (1, 5, 1, 0)
В локали, такой как Канада (французская), где запятая используется в качестве десятичного разделителя, если мороженое стоит 5 долларов, это можно записать как 5,00 долларов. Присвоим 2 канадскому доллару. Цена может быть записана так:
price_of_ice_cream = (2, 5, 2, 0)
Первый 2
для канадского доллара, второе значение 5
для первой части значения цены третье значение 2
для запятой (десятичный разделитель) и 0
за последнюю часть стоимости.
Мы только что представили цену мороженого в виде тензора. На этот раз это вектор, а не скаляр, и это четырехмерный вектор, потому что он использует четыре числа (размерности). В зависимости от того, что мы хотим сделать, он может стать двумерным вектором (x, y), трехмерным (x, y, z) или даже семимерным (x, y, z, a, b, c, d). , если бы мы почерпнули больше измерений из цены.
Шаг 3
Учтите, что у объекта или события может быть несколько точек интереса, которые сами по себе имеют несколько измерений.
При описании мороженого интересными моментами могут быть:
Давайте предположим следующее для одного мороженого (мороженое A):
- Цена = 5 долларов США.
- Производитель: Dovry Ice Creams, идентификатор производителя 0052.
- Вкус клубничный — вкус клубники имеет код 2153.
Предположим, что это для другого мороженого (мороженое B):
- Цена = 5,00 канадских долларов
- Производитель Resty Ice Creams, идентификатор производителя 1045.
- Вкус клубничный, соответствует коду 2153.
У нас уже есть векторы цен. Мы можем легко создать векторы для производителя из цифр идентификатора и вкуса из цифр кода вкуса.
Описание мороженого в векторах:
# price is given in step 2 above
price_of_ice_cream_A = (1, 5, 1, 0)
producer_of_ice_cream_A = (0, 0, 5, 2)
flavor_of_ice_cream_A = (2, 1, 5, 3)
Описание мороженого B в векторах
# price is given in step 2 above
price_of_ice_cream_A = (2, 5, 2, 0)
producer_of_ice_cream_A = (1, 0, 4, 5)
flavor_of_ice_cream_A = (2, 1, 5, 3)
Но нам нужно иметь возможность транспортировать все векторы, связанные с конкретным мороженым, вместе.
Мы могли бы закончить с этим:
ice_cream_A = [(1, 5, 1, 0), (0, 0, 5, 2), (2, 1, 5, 3)]
ice_cream_B = [(2, 5, 2, 0), (1, 0, 4, 5), (2, 1, 5, 3)]
И мы можем переписать это более красиво:
ice_cream_A = [(1, 5, 1, 0),
(0, 0, 5, 2),
(2, 1, 5, 3)]
ice_cream_B = [(2, 5, 2, 0),
(1, 0, 4, 5),
(2, 1, 5, 3)]
Это тоже тензоры. На этот раз это тензоры, несущие информацию из нескольких векторов, и они выглядят как таблицы. Каждый вектор для конкретного мороженого становится строкой в тензоре, а размеры образуют столбцы. Этот тип тензора называется матрицей (множественное число: матрицы).
Мы можем убрать скобки и запятые, чтобы прояснить матрицы:
ice_cream_A = [ 1 5 1 0
0 0 5 2
2 1 5 3 ]
ice_cream_B = [ 2 5 2 0
1 0 4 5
2 1 5 3 ]
Ну вот! Тензоры могут быть матрицами, образованными из нескольких векторов. Если это поможет, вы можете посмотреть на матрицы, такие как информационные таблицы.
Шаг 4
Поймите, что часто мы хотим нести информацию о более чем одном предмете.
На шаге 3 мы использовали матрицу для переноса нескольких данных только об одном конкретном мороженом. Однако часто используют матрицы для представления информации об одном и том же интересе от разных объектов. Например, если нас интересует сравнение цен, матрица может нести информацию о ценах на разные вещи.
Давайте проиллюстрируем это, используя две цены на мороженое на шаге 2:
У нас может быть матрица с именем price_of_ice_creams, и она будет иметь две цены 5,00 долларов США и 5,00 канадских долларов, как показано ниже:
prices_of_ice_creams = [(1, 5, 1, 0),
(2, 5, 2, 0)]
Давайте очистим это:
prices_of_ice_creams = [ 1 5 1 0
2 5 2 0 ]
И у нас есть еще одна матрица с двумя векторами (строками), имеющими четыре измерения (столбцы). Это тензор, матрица 2 X 4, так как он имеет 2 строки и 4 столбца.
Шаг 5
У нас могут быть более продвинутые тензоры. Например, тензор, являющийся матрицей матриц, и тензор, являющийся матрицей матриц матриц. Мы можем продолжать, но лучше оставить это для другого поста.
- Тензоры представляют вещи или объекты математически
- Если число, обозначающее предмет, одиночное, другими словами, оно имеет одно измерение, оно называется числом.
scalar
. Например:dollar_sign = 1
- Если конкретное представление имеет более одного измерения, этот тензор называется вектором. Например:
price_of_ice_cream_A = (1, 5, 1, 0)
- Когда тензор содержит информацию о нескольких вещах, например о ценах на несколько видов мороженого, он называется матрицей. Матрицу можно рассматривать как таблицу, каждая строка которой содержит информацию об определенном элементе. Например:
prices_of_ice_creams = [ 1 5 1 0 2 5 2 0 ]
Здесь каждая строка содержит информацию о цене одного мороженого.
- Тензоры могут быть скалярами, векторами, матрицами или их комбинацией.
- Вы можете рассматривать векторы как группу скаляров.
- Вы можете рассматривать матрицы как группу векторов.
- Вектор — это последовательность чисел; массив, список или кортеж и т. д., в зависимости от используемого языка программирования. Количество измерений вектора относится к количеству элементов в нем.
[1, 2, 3]
представляет собой трехмерный вектор, и[2, 3, 4, 5, 6]
является 5-мерным вектором. - Матрица похожа на таблицу и может иметь строки и столбцы.
- Матрица может быть описана количеством строк и столбцов. Следующее имеет
2
ряды и2
столбцов и называется матрицей 2X2. Первый ряд1, 5
и второй ряд2, 3
. В первом столбце сверху вниз1, 2
и второй столбец имеет5, 3
.
a_matrix = [ 1 5
2 3 ]
Учитывая это математическое введение в тензоры, мы можем продолжить изучение его применения в компьютерных науках. Например, в Tensorflow вы можете встретить тензор, который содержит текст, а не числа… Не волнуйтесь! В любом случае все сводится к числам, и если вы понимаете числовые основы вычислений, все встанет на свои места.
Удачного программирования ИИ!