Home Нейронные сети Python Argmax — искусственный интеллект + | DeepTech

Python Argmax — искусственный интеллект + | DeepTech

0
Python Argmax — искусственный интеллект +
 | DeepTech

Введение

Функция Argmax широко используется при построении алгоритмов машинного обучения: она часто служит окончательным правилом прогнозирования в алгоритмах классификации. В этой статье мы начнем с обоснования необходимости функции argmax. Затем мы опишем работу встроенной функции argmax в Numpy (Python Argmax). Будет описана работа функции numpy с одномерными и двумерными массивами вместе с примерами кода.

Читайте также: Что такое Argmax в машинном обучении?

питон Аргмакс

Аргмакс означает Аргумент максимума. Это математическая функция, которая принимает на вход функцию е(х) и возвращает точки из домена (аргумента) ф где функция максимальна. В Python функция argmax обычно работает с массивами, которые потенциально могут быть многомерными. Общая идея заключается в том, что позиция максимального элемента возвращается функциями Argmax в Python.

пустой Argmax

Python изначально не поддерживает операцию argmax. Библиотека Numpy, с другой стороны, имеет np.argmax() функция, которую можно использовать для извлечения индексов максимальных элементов массивов Numpy. Рассмотрим одномерный массив numpy, как показано ниже.

Что такое Аргмакс

В этом иллюстративном примере элементы массива обозначают значения вероятности, выдаваемые классификатором. Индексы массива numpy также показаны ниже. Максимальный элемент равен 0,613 и имеет индекс 2. Таким образом, функция argmax возвращает значение 2, индекс максимального элемента в массиве.

Функция argmax Numpy также применяется к многомерным массивам. Мы проиллюстрируем работу с двумерным массивом, как показано ниже.

Понимание Аргмакс

Двумерные массивы имеют две оси для операций argmax: строки и столбцы. По соглашению строки принадлежат оси 0, а столбцы принадлежат оси 1. Каждая запись двумерного массива на рисунке является значением вероятности и может представлять результат трех классификаторов (строк), которые решают задачу классификации 5 классов ( столбцы). Таким образом, сумма строк равна 1, поскольку каждый классификатор выводит 5 значений вероятности. Максимальный элемент в строках подчеркнут, а максимальный элемент в столбцах выделен курсивом. Обратите внимание, что одно и то же значение может представлять максимальные значения как для строк, так и для столбцов. Например, значение 0,553 является максимальным элементом как для его строки, так и для его столбца. В результате значение будет подчеркнуто и выделено курсивом.

Параметр оси функции np.argmax можно использовать для указания оси вдоль которого будет выполняться операция argmax. Далее мы опишем поведение параметра оси, начиная с варианта столбца, так как он более интуитивно понятен.

Читайте также: Что такое разреженная матрица? Как это используется в машинном обучении?

Случай 1: параметр оси = 1 (столбцы)

Функция просканирует столбцы и вернет индексы максимальных значений для каждой строки. Таким образом, возвращается значение для каждой строки. На рисунке выше мы ищем подчеркнутые записи, что приводит к выводу (2, 0, 4).

В вышеупомянутой интерпретации этих значений массив индексов можно интерпретировать как: «для каждой модели вернуть класс с наибольшей вероятностью (прогнозом)». В стратегии ансамбля его можно использовать для голосования среди нескольких моделей и прогнозирования класса, который является наиболее частым высшим классом среди моделей.

Случай 2: Параметр оси = 0 (строки)

В этом случае функция просканирует строки и вернет индекс максимального значения для каждого столбца. Поэтому для каждого столбца будет возвращен один индекс, номер строки. На рисунке выше мы ищем записи, выделенные курсивом, что приводит к выводу (1, 2, 0, 2, 2).

В приведенном выше примере массив индексов можно интерпретировать как: «для каждого из 5 классов вернуть модель, дающую классу наибольшую вероятность». Его можно использовать для поиска погрешностей в нескольких моделях и другого подробного анализа результатов.

Если параметр оси не указан, то поведение по умолчанию состоит в том, чтобы сгладить входной тензор и вернуть argmax сглаженного массива. В нашем примере сглаженный массив равен (0,115, 0,337, 0,613, 0,021, 0,014, 0,553, 0,138, 0,215, 0,002, 0,092, 0,02, 0,388, 0,002, 0,113, 0,477), а его argmax равен 2, индекс максимума элемент 0,613.

Наконец, функция np.argmax также позволяет напрямую вставлять выходные данные в выходной массив с помощью параметра out.

Чем полезен Аргмакс

Рассмотрим типичную задачу классификации с несколькими классами, когда перед моделью машинного обучения стоит задача выбрать один из трех классов C1, C2 и C3 для заданных входных данных, как показано на рисунке ниже. Это обычная ситуация, так как многие архитектуры используют слой softmax на последнем уровне для вычисления значений, подобных вероятностным. Этот массив чисел с плавающей запятой представляет собой уверенность модели в каждом из классов и может использоваться в качестве вероятности для классов. На рисунке ниже будет создан одномерный массив из 3 вероятностей.

Аргмакс

Правило принятия решения состоит в том, чтобы затем назначить класс, соответствующий наибольшей вероятности. Функция Argmax используется для программного выбора метки класса на основе значений вероятности. В нашем случае, скажем, метки классов расположены в массиве («C1», «C2», «C3»). Argmax вероятностей можно использовать для прямого индексирования этого массива и возврата метки класса.

Эксперимент с numpy Argmax

Ниже мы приводим небольшой пример с тем же двумерным входным массивом, что и выше. Мы начинаем с инициализации этого массива и вычисления argmax по столбцам, а затем по строкам. Затем мы сглаживаем двумерный массив, чтобы получить одномерное представление. Показано, что argmax версии 1D совпадает с argmax в исходной матрице, когда не задан параметр оси.

import numpy as np

X = np.array(((0.115, 0.337, 0.613, 0.021, 0.014), # A 2-D input array
              (0.553, 0.138, 0.215, 0.002, 0.092),
              (0.020, 0.388, 0.002, 0.113, 0.477)))

print(np.argmax(X, axis = 1)) # Column-wise

# Output
(2 0 4)


print(np.argmax(X, axis = 0)) # Row-wise

# Output
(1 2 0 2 2)


print(X.flatten()) # Flatten to get a 1D array

# Output
(0.115 0.337 0.613 0.021 0.014 0.553 0.138 0.215 0.002 0.092 0.02 0.388
0.002 0.113 0.477)


print(np.argmax(X.flatten())) # argmax of the flattened 1-D array

# Output
2

print(np.argmax(X)) # When no axis param is specified, argmax is on the flattened array

# Output
2
Источник: YouTube

Читайте также: Rectified Linear Unit (ReLU): введение и использование в машинном обучении

Машинное обучение Python: машинное обучение и глубокое обучение с помощью Python, scikit-learn и TensorFlow 2.

Заключение

Мы рассмотрели функцию argmax, ее важность для машинного обучения и встроенную функцию argmax в Numpy в Python. Функция возвращает положение максимального элемента в массиве и может использоваться по разным осям многомерного массива. Функция argmax чаще всего используется для индексации массива меток классов, чтобы предсказать класс на основе вероятностей, вычисленных моделью машинного обучения.

Ссылка

Numpy.Argmax — Руководство по NumPy v1.24. https://numpy.org/doc/stable/reference/generated/numpy.argmax.html. По состоянию на 3 февраля 2023 г.

«Numpy.Argmax в Python». GeeksforGeeks22 августа 2017 г., https://www.geeksforgeeks.org/numpy-argmax-python/. По состоянию на 6 февраля 2023 г.

Эбнер, Джошуа. «Numpy Argmax, объяснение». Sharp Sight, Inc.9 ноября 2020 г., https://www.sharpsightlabs.com/blog/numpy-argmax/. По состоянию на 6 февраля 2023 г.

Объявления

LEAVE A REPLY

Please enter your comment!
Please enter your name here