Машинное обучение (ML) - горячая тема, когда речь идет практически обо всем, что связано с вычислениями, от анализа данных в облаке до самоуправляемых автомобилей, распознающих людей и предметы, и до обнаружения неисправных печатных плат или микросхем. Как и искусственный интеллект (ИИ), машинное обучение - это очень широкое подмножество ИИ, которое часто неверно трактуется даже людьми с техническим образованием.

Глубокое обучение - это термин, который широко используется в наши дни, но что он на самом деле означает? Обычно это сокращение для обсуждения глубоких нейронных сетей (DNN). Мы более подробно рассмотрим нейронные сети, но сначала сделаем комментарий о текущем использовании машинного обучения.

Недавно мы завершили нашу местную ярмарку науки и техники Mercer , которой я помогаю. Как нетрудно догадаться, во многих проектах модели машинного обучения использовались для решения различных задач. Это вызов с многих точек зрения.

Все студенты использовали предопределенную модель машинного обучения для выполнения определенной задачи, например, для выявления проблемы. Некоторые на самом деле обучали модель, но общие знания о машинном обучении, их модели и ее значениях не были чем-то, с чем не могли справиться ни студенты, ни судьи. В итоге я дал нескольким судьям обзор ML и то, как они должны рассматривать его в отношении проектов.


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

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

Сумма усилий между этими двумя людьми значительна: от дневной работы до десятков человеко-часов. Многие будут просто использовать такой продукт, как интеллектуальная камера, в которой используется машинное обучение, даже не имея непосредственного отношения к этой технологии. Тем не менее, это помогает знать, как работает технология и каковы ограничения, потому что у нас пока нет позитронного мозга или роботов, которым можно было бы соответствовать.

Основы машинного обучения
Две из основных технологий машинного обучения включают экспертные системы на основе правил, которые являются своего рода конечными автоматами на стероидах, и нейронные сети.

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

С другой стороны, нейронные сети (НС) моделируются по образцу мозга, хотя и на логическом уровне. Такой подход существует уже несколько десятилетий. Однако новое оборудование сделало этот подход более практичным, позволив реализовать сложные модели AI / ML.

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

1. Персептрон умножает значения веса на входные данные, которые затем суммируются и комбинируются с функциями смещения и активации для генерации выходных данных.
1. Персептрон умножает значения веса на входные данные, которые затем суммируются и комбинируются с функциями смещения и активации для генерации выходных данных.


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

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


Выходы - это вероятности. Система часто имеет пороговые значения для приемлемой идентификации в зависимости от цели модели. Уровень детализации при анализе изображения, например, может варьироваться от объекта до животного, от кошки до персидской кошки.


Работа с изображениями может значительно усложнить модель. Даже небольшое изображение размером 320 × 240 пикселей соответствует 76800 входам. Если в качестве входных данных используется цвет вместо оттенков серого, то кодирование красный-зеленый-синий (RGB) увеличивает это в три раза.

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

Множество нейронных сетей
Существует множество различных типов NN, включая искусственные нейронные сети (ANN) и нейронные сети с пиковыми сигналами (SNN) . ИНС используют параллельный подход к представлению входов в сеть с выходами, доступными после того, как все данные проходят через сеть.

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

3. SNN похожи на биологические нейроны, потому что входные данные представляют собой серию связанных со временем всплесков данных.
3. SNN похожи на биологические нейроны, потому что входные данные представляют собой серию связанных со временем всплесков данных.


SNN, как правило, имеют меньше накладных расходов, чем другие нейронные сети, но их точность обычно ниже. Имейте в виду, что все эти сети имеют дело с порогами и вероятностями, и 100% точность - это только цель. Кроме того, имейте в виду, что SNN часто можно обучать в полевых условиях, в то время как обучение других нейронных сетей обычно выполняется в облаке, где накапливаются дополнительные данные. Сети SNN могут делать это отчасти из-за меньших накладных расходов на реализацию и благодаря самой технологии.


Существует ряд других типов нейронных сетей, и многие модели могут соответствовать этим широким категориям. Они могут выполнять такие функции, как идентификация и классификация. Давайте подробнее рассмотрим три основные категории:

Сверточные сети (CNN)
Рекуррентные нейронные сети (RNN)
Генеративные состязательные сети (GAN)
CNN - это DNN, который обычно используется для анализа изображений. Его можно применять в системах распознавания лиц, анализе документов и сегментации изображений. CNN также являются разновидностью пространственно-инвариантных искусственных нейронных сетей (SIANN).

Модель CNN по существу реализует фильтры через процесс обучения. Операции смещения и активации включают внутреннее скалярное произведение Фробениуса. Модель включает сверточный и объединяющий слои. Количество входов и выходов сверточного слоя обычно одинаково. Слои пула уменьшают количество выходов. Это часто достигается путем получения выходных данных, которые включают максимальное входное значение или среднее значение группы входных данных.

Персептроны РНС принимают свои выходные данные в качестве входных данных для следующего набора данных (рис. 4) . Реализация потока данных обычно включает фиксированные входы, чтобы выходные данные можно было использовать в последующих вычислениях. Часто RNN используются для анализа аудиопотоков, текста и информации временных рядов.

4. Рекуррентные нейронные сети (RNN) обеспечивают каждый персептрон петлей обратной связи.
4. Рекуррентные нейронные сети (RNN) обеспечивают каждый персептрон петлей обратной связи.


GAN - это нейронная сеть, предназначенная для генерации выходных данных, аналогичных входным. Например, модель GAN может превратить кошку в собаку, которая будет иметь такую ​​же позу и т. Д. Этот тип модели может отрисовывать изображения или повышать масштаб видео.

GAN состоит из генераторной сети и дискриминантной сети. Первый создает кандидатов на основе входных данных, а второй оценивает новые данные. Каждый должен быть обучен с помощью дискриминирующей сети, обучаемой с помощью входных данных, во многом так же, как обучение CNN. Генератор обычно представляет собой деконволюционную нейронную сеть, которая обучена увеличивать частоту ошибок дискриминантной сети.


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

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

Подходы к аппаратному ускорению можно разделить на поддержку потока данных или приложения, целевую многоядерность и увеличение набора команд. Большинство микросхем ML / AI поддерживают поток данных или многоядерные реализации. Последний часто представляет собой DSP или архитектуру с одной инструкцией и несколькими данными (SIMD), настроенную для моделей AI / ML. Примером расширения набора команд является Cortex-M55 компании Arm , который добавляет инструкции, улучшающие поддержку числовых кодировок и вычислений, связанных с AI / ML, таких как манипуляции с матрицами.

Модели AI / ML могут быть реализованы с использованием чисел с плавающей запятой двойной точности, но это имеет тенденцию быть очень неэффективным по разным причинам. Использование более компактных форматов, таких как 8- и 16-битные с плавающей запятой и 8-битные с фиксированной запятой, значительно снижает требования к хранилищу, вычислительному оборудованию и времени вычислений, тем самым снижая требования к мощности при одновременном повышении производительности.

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

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

Например, электромобиль может иметь усовершенствованную систему помощи водителю (ADAS) или полностью автономную систему вождения, которая использует распознавание объектов и другие модели для профилактического обслуживания электродвигателей. Целевые или сложные решения «система на кристалле» (SoC) часто предназначены для работы с этой смесью.


Разделение моделей имеет смысл, поскольку аппаратная поддержка разных частей модели может различаться. Многоядерные микроконтроллеры, такие как ECM3532 от Eta Compute, включают в себя Cortex-M4 и NXP CoolFlux DSP. Последний расширен для обработки моделей AI / ML, но Cortex-M4 может помочь.

Принятие решений по заявкам
Выбор моделей и аппаратных платформ для их поддержки может быть сложным. Они, вероятно, смогут использовать модель искусственного интеллекта, если кто-то ее сделает. С другой стороны, к этому типу поддержки можно подойти по-разному, если ваше приложение получит пользу от поддержки AI / ML.

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

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

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

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

Проблема в наши дни заключается в том, что технология и доступность решений AI / ML меняются так быстро. Улучшения компилятора могут иногда удваивать производительность, делая платформу более низкого уровня способной обрабатывать ваше приложение, когда она не могла этого сделать с более ранней версией. Точно так же становится доступным множество новых микросхем с усовершенствованиями AI или выделенных микросхем, и новые конструкции процессоров регулярно включают расширения набора команд и форматы данных, подходящие для моделей AI / ML.