Altinkaya: турецкие корпуса для РЭА
РадиоЛоцман - Все об электронике

Что такое машинное обучение? Часть 1 - Введение в сверточные нейронные сети

Analog Devices MAX78000

Аннотация

Мир искусственного интеллекта (ИИ) стремительно развивается, и ИИ все чаще позволяет создавать приложения, которые раньше были недостижимы или очень сложны в реализации. В этом цикле статей рассказывается о сверточных нейронных сетях (convolutional neural networks, CNN) и их значении для машинного обучения в системах ИИ. CNN – это мощные инструменты для извлечения признаков из сложных данных. Это, например, распознавание образов в аудиосигналах или изображениях. В этой статье рассматриваются преимущества CNN по сравнению с классическим линейным программированием. В следующей статье, «Что такое машинное обучение? Часть 2 – Обучение сверточных нейронных сетей», будет рассказано о том, как происходит обучение моделей CNN. В третьей части будет рассмотрен конкретный пример тестирования модели с помощью специализированного микроконтроллера ИИ.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Что такое сверточные нейронные сети?

Нейронные сети – это системы или структуры нейронов, которые позволяют искусственному интеллекту лучше понимать данные, что дает ему возможность решать сложные задачи. Хотя существует множество типов сетей, в этой серии статей речь пойдет исключительно о сверточных нейронных сетях (CNN). Основными областями применения CNN являются распознавание образов и классификация объектов, содержащихся во входных данных. CNN – это тип искусственных нейронных сетей, используемых в глубоком обучении. Такие сети состоят из входного слоя, нескольких сверточных слоев и выходного слоя. Сверточные слои являются наиболее важными компонентами, поскольку они используют уникальный набор весов и фильтров, позволяющих сети извлекать особенности из входных данных. Данные могут быть самыми разными, например изображениями, аудио или текстами. Процесс извлечения признаков позволяет CNN выявлять закономерности в данных, что дает возможность создавать более эффективные и действенные приложения. Чтобы лучше понять CNN, мы сначала обсудим классическое линейное программирование.

Выполнение линейных программ в классической технике управления

При управлении техническими системами основная задача состоит в считывании данных с одного или нескольких датчиков, обработки данных и реакции на эти данные в соответствии с заданными правилами для их визуализации или передачи результатов на внешние устройства. Например, регулятор температуры измеряет температуру каждую секунду с помощью микроконтроллера (МК), который считывает данные с датчика температуры. Значения, полученные от датчика, служат входными данными для системы управления с замкнутым контуром и сравниваются с заданной температурой в цикле. Это пример линейного выполнения, осуществляемого МК. Такой метод позволяет получить окончательные результаты на основе набора запрограммированных и фактических значений. В отличие от этого, в работе систем искусственного интеллекта важную роль играют вероятности.

Обработка сложных образов и сигналов

Существует также множество приложений, работающих с входными данными, которые сначала должны быть интерпретированы системой распознавания образов. Распознавание образов может применяться к различным структурам данных. В наших примерах мы ограничимся одно- и двумерными структурами данных. В качестве примера можно привести аудиосигналы, электрокардиограммы (ЭКГ), фотоплетизмограммы (ФПГ), сигналы датчиков вибрации для одномерных данных и изображения, тепловые изображения и графические изображения двумерных данных.

В распознавании образов, используемом в указанных случаях, преобразование приложения в классический код для МК является чрезвычайно сложной задачей. Примером может служить распознавание объекта (например, кошки) на изображении. В этом случае нет разницы, является ли анализируемое изображение предыдущей записью или только что считано сенсором камеры. Программа анализа выполняет основанный на правилах поиск деталей, которые можно отнести к кошачьим: типичные заостренные уши, треугольный нос или усы. Если эти признаки удается обнаружить на изображении, программа сообщает о находке кошки. Здесь возникают некоторые вопросы: Что будет делать система распознавания образов, если кошка изображена только со спины? Что произойдет, если у нее не будет усов или она потеряет лапы в результате несчастного случая? Несмотря на маловероятность таких исключений, код распознавания образов должен будет проверить большое количество дополнительных правил, охватывающих все возможные аномалии. Даже в нашем простом примере набор правил, создаваемых нейронной сетью в процессе распознавания, быстро становится обширным.

Как машинное обучение заменяет классические правила

Идея ИИ заключается в том, чтобы имитировать человеческое обучение в небольших масштабах. Вместо того чтобы формировать большое количество правил «если – то», мы моделируем универсальную машину для распознавания образов. Ключевое различие между этими двумя подходами заключается в том, что ИИ, в отличие от набора правил, не дает четкого результата. Вместо сообщения «Я распознал на изображении кошку» машинное обучение выдает результат «С вероятностью 97.5% на изображении изображена кошка. Это также может быть леопард (2.1%) или тигр (0.4%)». Это означает, что разработчик такого приложения должен принять решение в конце процесса распознавания образов. Для этого используется порог принятия решения.

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

Как выглядит машина распознавания образов изнутри?

Сеть нейронов в искусственном интеллекте напоминает свой биологический аналог в человеческом мозге. Нейрон имеет несколько входов и только один выход. По сути, такой нейрон – это не что иное, как линейное преобразование входов – умножение входов на числа (веса, w) и добавление константы (смещение, b) – с последующей фиксированной нелинейной функцией, которая также известна как функция активации1). Эта функция активации, как единственный нелинейный компонент сети, служит для определения диапазона значений, в котором срабатывает искусственный нейрон. Математически функция нейрона может быть описана следующим образом

  (1)

где

f – функция активации,
w – вес,
x – входные данные,
b – смещение.

Данные могут быть представлены в виде отдельных скаляров, векторов или в матричной форме. На Рисунке 1 показан нейрон с тремя входами и функцией активации ReLU2). Нейроны в сети всегда расположены слоями.

Нейрон с тремя входами и одним выходом.
Рисунок 1. Нейрон с тремя входами и одним выходом.

Как уже говорилось, CNN используются для распознавания образов и классификации объектов, содержащихся во входных данных. CNN делятся на различные секции: один входной слой, несколько скрытых слоев и один выходной слой. Небольшая сеть с тремя входами, одним скрытым слоем с пятью нейронами и одним выходным слоем с четырьмя выходами показана на Рисунке 2. Все выходы нейронов соединены со всеми входами в следующем слое. Сеть, показанная на Рисунке 2, не способна обрабатывать значимые задачи, и используется здесь только в демонстрационных целях. Даже в этой небольшой сети в формуле, используемой для описания сети, 32 смещения и 32 веса.

Небольшая нейронная сеть.
Рисунок 2. Небольшая нейронная сеть.

Нейронная сеть CIFAR – это тип CNN, который широко используется в задачах распознавания образов. Она состоит из двух основных типов слоев: сверточных и объединяющих, которые используются для эффективного обучения нейронных сетей. В сверточном слое используется математическая операция, называемая сверткой, для выявления закономерностей в массиве значений пикселей. Свертка происходит в скрытых слоях, как показано на Рисунке 3. Этот процесс повторяется несколько раз, пока не будет достигнут желаемый уровень точности. Следует отметить, что выходное значение операции свертки всегда особенно велико, если два сравниваемых входных значения (изображение и фильтр, в данном случае) похожи. Это называется матрицей фильтра, которую также называют ядром фильтра или просто фильтром. Затем результаты передаются в слой объединения, который генерирует карту признаков – представление входных данных с выделением важных признаков. Это считается еще одной матрицей фильтра. После обучения в рабочем состоянии сети эти карты признаков сравниваются с входными данными. Поскольку карты признаков содержат характеристики, характерные для конкретного класса объектов, которые сравниваются с входными изображениями, нейроны срабатывают только в том случае, если их содержимое совпадает. Комбинируя эти два подхода, сеть CIFAR может быть использована для распознавания и классификации различных объектов на изображении с высокой точностью.

Модель сети CIFAR, обученной на наборе данных CIFAR-10.
Рисунок 3. Модель сети CIFAR, обученной на наборе данных CIFAR-10.

CIFAR-10 – один из специфических наборов данных, обычно используемых для обучения нейронных сетей CIFAR. Он состоит из 60,000 цветных изображений 32 × 32, разбитых на 10 классов, которые были собраны из различных источников, таких как веб-страницы, группы новостей и личные коллекции изображений. Каждый класс содержит по 6000 изображений, равномерно распределеных между обучающим, тестовым и проверочным наборами данных, что делает его идеальным для тестирования новых архитектур компьютерного зрения и других моделей машинного обучения.

Основное отличие сверточных нейронных сетей от сетей других типов заключается в способе обработки данных. С помощью фильтрации входные данные последовательно изучаются на предмет их свойств. С увеличением количества последовательно соединенных сверточных слоев растет и уровень детализации, который можно распознать. Процесс начинается с простых свойств объекта, таких как края или точки, после первой свертки, а затем продолжается с более детальными структурами, такими как углы, окружности, прямоугольники и т.д., после второй свертки. После третьей свертки признаки представляют собой сложные образы, которые напоминают части объектов на изображениях и обычно уникальны для данного класса объектов. В нашем примере это усы или уши кошки. Визуализация карт признаков, как показано на Рисунке 4, не является необходимой, но она помогает понять суть свертки.

Feature maps for a CNN.
Рисунок 4. Карта признаков для CNN.

Даже небольшие сети, такие как CIFAR, состоят из сотен нейронов в каждом слое и множества последовательно соединенных слоев. Количество необходимых весов и смещений быстро растет с увеличением сложности и размера сети. В примере CIFAR-10, изображенном на Рисунке 3, насчитывается уже 200,000 параметров, которые требуют определенного набора значений в процессе обучения. Карты признаков можно дополнительно обработать с помощью объединяющих слоев, которые уменьшают количество параметров, требующих обучения, но при этом сохраняют важную информацию.

Как уже упоминалось, после каждой свертки в CNN нередко происходит объединение, часто называемое в литературе подвыборкой. Это служит для уменьшения размерности данных. Если вы посмотрите на карты признаков на Рисунке 4, то заметите, что большие области практически не содержат значимой информации. Это происходит потому, что объекты составляют не все изображение, а лишь небольшую его часть. Оставшаяся часть изображения не используется в этой карте признаков и, следовательно, не имеет значения для классификации. В слое объединения задается тип объединения (максимальное или среднее) и размер оконной матрицы. В процессе объединения оконная матрица пошагово перемещается по входным данным. Например, при максимальном объединении берется самое большое значение данных в окне. Все остальные значения отбрасываются. Таким образом, количество данных постоянно уменьшается, и в итоге они вместе со свертками формируют уникальные свойства соответствующего класса объектов.

Однако результатом этих сверток и объединения групп является большое количество двумерных матриц. Для достижения нашей реальной цели – классификации – мы преобразуем двумерные данные в длинный одномерный вектор. Преобразование выполняется в так называемом сглаживающем слое, за которым следуют один или два полностью связанных слоя. Нейроны в двух последних типах слоев похожи на структуру, показанную на Рисунке 2. Последний слой нашей нейронной сети имеет ровно столько выходов, сколько классов необходимо выделить. Кроме того, в последнем слое данные также нормализуются, чтобы получить распределение вероятностей (97.5% кошки, 2.1% леопарда, 0.4% тигра и т. д.).

На этом моделирование нашей нейронной сети завершено. Однако веса и коэффициенты матриц ядра и фильтра все еще неизвестны и должны быть определены в процессе обучения сети, чтобы модель работала. Об этом будет рассказано в следующей части нашей статьи, а в третьей части мы расскажем об аппаратной реализации рассмотренной нами нейронной сети на базе микроконтроллера искусственного интеллекта MAX78000, разработанного компанией Analog Devices.


1) Обычно используются сигмоидная функция, гиперболический тангенс или ReLU.
2) ReLU – выпрямленный линейный нейрон. Отрицательные входные значения для этой функции выводятся как ноль, а значения больше нуля – как их входные значения.

Перевод: Михаил Басков по заказу РадиоЛоцман

На английском языке: What Is Machine Learning? Part 1 - Introduction to convolutional neural networks

Содержание цикла «Что такое машинное обучение?»

  1. Часть 1 - Введение в сверточные нейронные сети
  2. Часть 2 - Обучение сверточных нейронных сетей
  3. Часть 3 - Аппаратное преобразование сверточных нейронных сетей
20 предложений от 8 поставщиков
MCU-Application Specific 32 bit, 100 MHz, 128 KB RAM/512 KB Program, 0.9 V to 1.21 V in, CTBGA-81
AiPCBA
Весь мир
MAX78000EXG+
Maxim
1 154 ₽
ChipWorker
Весь мир
MAX78000EXG+
Maxim
1 170 ₽
Utmel
Весь мир
MAX78000FTHR#
от 2 084 ₽
Akcel
Весь мир
MAX78000FTHR#
Maxim
по запросу
Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя