Text
                    
AI at the Edge Solving Real-World ProЫems with Embedded Machine Learning Daniel Situnayake and /еппу Plunkett Beijing • Boston • Farnham • Sebastopol • Tokyo o·REILLY

Дэниел Ситуная1<е, Дженни План1<етт Искусственный интеллект для периферийных V' устроиств Осваиваем встраиваемые системы для машинного обучения Астана «АЛИСТ» 2025
УДК ББК 004.89 32.973.26-018.2 С41 Ситунаяке Д. С41 Искусственный интеллект для периферийных устройств: Пер. с англ. Д. Ситунаяке, Дж. Планкетт. -Астана: АЛИСТ, 2025. - 512 с.: ил. / ISBN 978-601-08-4727-9 В книге исследованы возможности использования искусственного интеллекта при работе с периферийными устройствами, датчиками и Интернетом вещей. Рас­ смотрены алгоритмы, применяемые при реализации периферийного ИИ, паттерны проектирования программных и аппаратных компонентов Интернета вещей, рас­ считанных на последующее машинное обучение. Продемонстрировано, как подби­ рать и фильтровать данные, развертывать, развивать и поддерживать сети умных устройств. Для специалистов по uскусственному интеллекту и Интернету вещей ББК УДК 004.89 32.973.26-018.2 © 2025 ALIST LLP Authorized Russian translation of the English edition of А/ aJ the Edge, ISBN 9781098120207 © 2023 Daniel Situnayake and Jenny Plunkett. This translation is puЫished and sold Ьу perrnission ofO'Reilly Media, lnc., which owns or controls all rights to puЫish and sell the same. Авторизованный перевод с английского языка на русский издания А/ at the Edge, ISBN 9781098120207 © 2023 Daniel Situnayake, Jenny Plunkett. Перевод опубликован и продается с разрешения компании-правообладателя ISBN 978-1-098-12020-7 ISBN 978-601-08-4727-9 (англ.) (каз.) O'Reilly Media, lnc. © Daniel Situnayake, Jenny Plunkett, 2023 © Издание на русском языке. ТОО "АЛИСТ'', 2025
Содержание Отзывы о книге "Искусственный интеллект периферийных устройств" ........ 13 Предисловие ................................................................................................................... 17 Введение .......................................................................................................................... 19 О книге ............................................................................................................................. 20 ..................................................................................................... 20 Что вам нужно знать перед чтением ............................................................................. 21 Ответственность, этичность и эффективность искусственного интеллекта ............. 22 Дополнительные ресурсы ............................................................................................... 22 Условные обозначения и соглашения ........................................................................... 23 Использование примеров кода ....................................................................................... 24 Платформа онлайн-обучения O'Reilly .......................................................................... 24 Как с нами связаться? ..................................................................................................... 24 Благодарности ................................................................................................................. 25 Что ожидать от книги ГЛАВА 1. Краткое введение в искусственный интеллект периферийных ........................................................................................................................ 27 устройств Ключевые термины ......................................................................................................... 27 Встроенные системы ............................................................................................... 27 Периферийные устройства (и Интернет вещей) ................................................... 29 Искусственный интеллект ....................................................................................... 32 Машинное обучение ................................................................................................ 34 ИИ периферийных устройств ................................................................................. 36 .............................. 37 Цифровая обработка сигналов ................................................................................ 3 8 Зачем нам нужен ИИ периферийных устройств? ........................................................ 39 BLERP и преимущества ИИ периферийных устройств ....................................... 40 Использование ИИ периферийных устройств во благо ....................................... 44 Машинное обучение встраиваемых и миниатюрных систем Ключевые различия между ИИ периферийных устройств и обычным искусственным интеллектом .................................................................................. 46 50 Резюме ..............................................................................................................................
6 1 Содержание ГЛАВА 2. Искусственный интеллект периферийных устройств в реальном мире ............................................................................................................ 51 Распространенные варианты использования ИИ периферийных устройств ............ 51 52 Реальные продукты .................................................................................................. 53 Типы приложений ........................................................................................................... 58 Оrслеживание объектов .......................................................................................... 59 Анализ и управление системами ............................................................................ 61 Анализ людей и живых существ ............................................................................. 64 Преобразование сигналов ....................................................................................... 67 Оrветственное создание приложений ........................................................................... 70 Оrветственный дизайн и этика искусственного интеллекта ............................... 71 Черные ящики и предвзятость ................................................................................ 75 Технологии, которые вредят, а не помогают ........................................................ 78 Резюме .............................................................................................................................. 81 Новые и существующие проекты ........................................................................... ГЛАВА 3. Аппаратное обеспечение для искусственноrо интеллекта периферийных устройств ............................................................................................ 83 Датчики, сигналы и источники данных ........................................................................ 83 ...................................................................................... 86 Акустика и вибрация ............................................................................................... 87 Визуальные данные и сцена .................................................................................... 88 Движение и положение ........................................................................................... 90 Физическое и тактильное воздействие .................................................................. 91 Оптические, электромагнитные и радиационные ................................................. 92 Экологические, биологические и химические датчики ....................................... 93 Другие сигналы ........................................................................................................ 94 Процессоры для ИИ периферийных устройств ............................................................ 96 Аппаратная архитек,ура ИИ периферийных устройств ...................................... 96 Микроконтроллеры и процессоры цифровых сигналов ....................................... 98 Система на кристалле ............................................................................................ 103 Ускорители глубокого обучения .......................................................................... 105 FPGA и ASIC .......................................................................................................... 106 Граничные серверы ................................................................................................ 109 Архитек,уры с множеством устройств ................................................................ 1 1О Устройства и рабочие нагрузки ............................................................................ 112 Резюме ............................................................................................................................ 113 Типы датчиков и сигналов ГЛАВА 4. Алrоритмы для искусственноrо интеллекта периферийных устройств·························································································· Конструирование признаков ........................................................................................ Работа с потоками данных ••s 115 .................................................................................... 116
Содержание 1 7 Алгоритмы цифровой обработки сигналов ......................................................... 118 .................................................................... 123 Алгоритмы искусственного интеллекта ..................................................................... 125 Типы алгоритмов по функциональности ............................................................. 126 Типы алгоритмов по реализации .......................................................................... 130 Оптимизация периферийных устройств .............................................................. 146 Обучение на устройстве ........................................................................................ 150 Резюме ............................................................................................................................ 152 Объединение признаков и датчиков ГЛАВА S. Инструментарий и эк:спертиза ............................................................... 153 Сбор команды для ИИ периферийных устройств ...................................................... 153 Экспертиза в предметной области ....................................................................... 154 Разнообразие .......................................................................................................... 156 Заинтересованные стороны ................................................................................... 158 Роли и обязанности ................................................................................................ 159 Найм в сфере ИИ периферийных устройств ....................................................... 162 Изучение навыков в сфере ИИ периферийных устройств ................................. 164 Арсенал инструментов ................................................................................................. 166 Программная инженерия ....................................................................................... 167 Работа с данными ................................................................................................... 171 Разработка алгоритма ............................................................................................ 173 Запуск алгоритмов на устройстве ........................................................................ 184 Разработка встроенного программного обеспечения и электроника ................ 188 Комплексные платформы для ИИ периферийных устройств ............................ 193 Резюме ............................................................................................................................ 199 ГЛАВА 6. Анализ и формулировка задач .............................................................. 201 Рабочий процесс ИИ периферийных устройств ......................................................... 201 Ответственный искусственный интеллект в рабочем процессе ИИ периферийных устройств ............................................................................... 203 Есть ли необходимость в использовании ИИ периферийных устройств в вашем случае? ............................................................................................................. 203 Описание задачи .................................................................................................... 204 Нужно ли развертывание на периферии? ............................................................ 205 Есть ли необходимость в использовании машинного обучения? ..................... 21 О .................................................................................... 217 Определение возможности реализации ...................................................................... 218 Возможность реализации с моральной точки зрения ......................................... 219 Возможность реализации с точки зрения бизнеса .............................................. 221 Возможность реализации с точки зрения набора данных .................................. 223 Технологическая возможность реализации ......................................................... 225 Практическое упражнение
8 1 Содержание Принятие окончательного решения ..................................................................... 228 ....................................... 229 Резюме ............................................................................................................................ 231 Планирование проекта ИИ периферийных устройств ГЛАВА 7. Как создать набор данных ...................................................................... 233 Как выглядит набор данных? ....................................................................................... 233 Идеальный набор данных ............................................................................................. 235 Наборы данных и экспертные знания предметной области ...................................... 237 Данные, этика и ответственный искусственный интеллект ...................................... 238 Сведение к минимуму неизвестных ..................................................................... 240 Обеспечение экспертизы предметной области ................................................... 241 Датацентричное машинное обучение ......................................................................... 242 Оценка требований к данным ...................................................................................... 243 Практический рабочий процесс для оценки потребностей в данных ............... 245 Получение данных ........................................................................................................ 247 Уникальные проблемы сбора данных на периферии ......................................... 249 Хранение и ювлечение данных ................................................................................... 252 Помещение данных в хранилища ......................................................................... 255 Сбор метаданных ................................................................................................... 256 Обеспечение качества данных ..................................................................................... 257 Обеспечение репрезентативности наборов данных ............................................ 258 Проверка данных с помощью выборки ................................................................ 260 Зашумленность меток ............................................................................................ 262 Распространенные ошибки данных ...................................................................... 264 Дрейф и сдвиг ......................................................................................................... 266 Неравномерное распределение ошибок ............................................................... 267 Подготовка данных ....................................................................................................... 268 Создание меток данных ......................................................................................... 268 Форматирование .................................................................................................... 279 Очистка данных ..................................................................................................... 281 Конструирование признаков ................................................................................. 288 Разделение данных ................................................................................................. 289 Аугментация данных ............................................................................................. 294 Конвейеры обработки данных .............................................................................. 296 Создание набора данных с течением времени ........................................................... 298 Резюме ............................................................................................................................ 299 ГЛАВА 8. Дизайн приложений с искусственным интеллектом периферийных устройств .......................................................................................... 301 .......................................................................... 302 Принципы дизайна ................................................................................................. 303 Определение масштаба решения .......................................................................... 305 Постановка целей дизайна .................................................................................... 308 Дизайн продуктов и взаимодействия
Содержание 1 9 Архитектурный дизайн ................................................................................................. 312 Оборудование, программное обеспечение и сервисы ........................................ 313 Базовые архитектуры приложений ....................................................................... 314 Сложные архитектуры приложений и паттерны проектирования .................... 320 Работа с паттернами проектирования .................................................................. 325 Учет выбора при проектировании ............................................................................... 326 Результаты проектирования .................................................................................. 329 Резюме ............................................................................................................................ 330 ГЛАВА 9. Разработка приложений с искусственным интеллекrом периферийных устройств .......................................................................................... 331 Итеративный рабочий процесс для разработки ИИ периферийных устройств ...... 331 Исследование .......................................................................................................... 332 Постановка целей ................................................................................................... 334 Начальная загрузка ................................................................................................ 336 ...................................................................................... 340 Развертывание ........................................................................................................ 34 7 Поддержка .............................................................................................................. 349 Резюме ............................................................................................................................ 349 Тестирование и итерации ГЛАВА 10. Оценка, развертывание и поддержка приложений с искусственным интеллекrом периферийных устройств .................................. 351 Оценка систем ИИ периферийных устройств ............................................................ 351 Способы оценки системы ...................................................................................... 353 Полезные метрики ................................................................................................. 356 Методы оценки ....................................................................................................... 368 Оценка и ответственный искусственный интеллект .......................................... 372 Развертывание приложений ИИ периферийных устройств ...................................... 3 72 Задачи перед развертыванием .............................................................................. 3 73 Задачи в процессе развертывания ........................................................................ 375 Задачи после развертывания ................................................................................. 376 Поддержка приложений ИИ периферийных устройств ............................................ 377 Мониторинг после развертывания ....................................................................... 377 Улучшение запущенного приложения ................................................................. 3 84 Эrика и долгосрочная поддержка ......................................................................... 387 Что будет дальше .......................................................................................................... 391 ГЛАВА 11. Вариант использования: мониторинг дикой природы ................... 393 Исследование задачи ..................................................................................................... 394 Исследование вариантов решения ............................................................................... 395 Постановка целей .......................................................................................................... 395
10 1 Содержание Разработка решения ...................................................................................................... 396 ........................................................................ 396 Подходы к разработке решений ........................................................................... 397 Соображения относительно дизайна .................................................................... 399 Воздействие на окружающую среду .................................................................... 401 Начальная загрузка ................................................................................................ 402 Определение классов машинного обучения ........................................................ 403 Сбор набора данных ..................................................................................................... 403 Edge Impulse ........................................................................................................... 404 Выбор оборудования и датчиков .......................................................................... 405 Сбор данных ........................................................................................................... 406 iNaturalist ................................................................................................................. 408 Ограничения набора данных ................................................................................. 411 Лицензирование наборов данных и юридические обязательства ..................... 412 Очистка набора данных ......................................................................................... 413 Загрузка данных в Edge lmpulse ........................................................................... 414 Рабочий процесс DSP и машинного обучения ........................................................... 415 Блок цифровой обработки сигналов .................................................................... 416 Блок машинного обучения .................................................................................... 41 7 Тестирование модели .................................................................................................... 425 Классификация в реальном времени .................................................................... 426 Протестируйте модель ........................................................................................... 427 Протестируйте свою модель локально ................................................................ 428 Развертывание ............................................................................................................... 429 Создание библиотеки ............................................................................................ 429 Мобильный телефон и компьютер ....................................................................... 430 Готовая бинарная прошивка ................................................................................. 432 Приложение-runnеr для Impulse ........................................................................... 433 Исходный код GitНub ............................................................................................ 433 Итерации и циклы обратной связи .............................................................................. 433 Искусственный интеллект во благо ............................................................................. 435 Похожие работы ............................................................................................................ 435 Наборы данных ...................................................................................................... 436 Исследования ......................................................................................................... 436 Какие решения уже существуют? ГЛАВА 12. Вариант испольэования: обеспечение качества пищевых продуктов ...................................................................................................................... 439 Исследование задачи ..................................................................................................... 439 Исследование вариантов решения ............................................................................... 440 Постановка целей .......................................................................................................... 441 Разработка решения ...................................................................................................... 442 Какие решения уже существуют? ........................................................................ 442 Подходы к разработке решений ........................................................................... 443
Содержание 1 11 Соображения относительно дизайна .................................................................... 445 Экологическое и социальное воздействие ........................................................... 446 Начальная загрузка ................................................................................................ 44 7 Определение классов машинного обучения ........................................................ 447 Сбор набора данных ..................................................................................................... 448 Edge lmpu\se ........................................................................................................... 448 Выбор оборудования и датчиков .......................................................................... 449 Сбор данных ........................................................................................................... 449 Встроенное программное обеспечение для сбора данных ................................. 450 Загрузка данных в Edge lmpulse ........................................................................... 452 Очистка набора данных ......................................................................................... 454 Лицензирование наборов данных и юридические обязательства ..................... 456 Рабочий процесс DSP и машинного обучения ........................................................... 456 Блок цифровой обработки сигналов .................................................................... 457 Блок машинного обучения .................................................................................... 459 Тестирование модели .................................................................................................... 463 Классификация в реальном времени .................................................................... 464 Протестируйте модель ........................................................................................... 464 Развертывание ............................................................................................................... 465 Готовая бинарная прошивка ................................................................................. 465 Исходный код GitHub ............................................................................................ 469 Итерации и циклы обратной связи .............................................................................. 469 Похожие работы ............................................................................................................ 4 71 Исследования ......................................................................................................... 4 71 Новости и другие статьи ....................................................................................... 4 73 ГЛАВА 13. Вариант использования: потребительские товары ......................... 475 Исследование задачи ..................................................................................................... 475 Постановка целей .......................................................................................................... 476 Разработка решения ...................................................................................................... 476 ........................................................................ 477 Подходы к разработке решений ........................................................................... 4 77 Соображения относительно дизайна .................................................................... 479 Экологическое и социальное воздействие ........................................................... 480 Начальная загрузка ................................................................................................ 481 Определение классов машинного обучения ........................................................ 482 Сбор набора данных ..................................................................................................... 483 Edge Impulse ........................................................................................................... 483 Выбор оборудования и датчиков .......................................................................... 484 Сбор данных ........................................................................................................... 485 Встроенное программное обеспечение для сбора данных ................................. 485 Очистка набора данных ......................................................................................... 487 Лицензирование наборов данных и юридические обязательства ..................... 488 Какие решения уже существуют?
12 1 Содержание Рабочий процесс DSP и машинного обучения ........................................................... 489 Блок цифровой обработки сигналов .................................................................... 490 Блоки машинного обучения .................................................................................. 493 Тестирование модели .................................................................................................... 496 Классификация в реальном времени .................................................................... 496 Протестируйте модель ........................................................................................... 498 Развертывание ............................................................................................................... 499 Готовая бинарная прошивка ................................................................................. 499 Исходный код GitHub ............................................................................................ 500 Итерации и циклы обратной связи .............................................................................. 500 Похожие работы ............................................................................................................ 500 Исследования ......................................................................................................... 501 Новости и другие статьи ....................................................................................... 502 Предметный указатель .............................................................................................. 503 06 авторах .................................................................................................................... 509 Об изображении на обложке ..................................................................................... 511
Отзывы о книге "Искусственный интеллект периферийных устройств" В этой книге приведено простое введение в новую быстроразвивающуюся область применения искусственного интеллекта в периферийных устройствах, причем в простой для понимания форме и с множеством практических примеров. Автор раз­ венчивает популярные мифы и освещает реальные проблемы, с которыми вы, веро­ ятно, столкнетесь при создании периферийных приложений искусственного интел­ лекта. Книга представляет собой важное руководство, позволяющее перейти от основных понятий к развертыванию. Если вы хотите начать работу в этой облас­ ти - эта книга вам необходима. Вибке Хутири, - Делфтский технический университет Мне очень нравится стиль изложения автора, благодаря которому сложные техни­ ческие темы стали доступными и понятными. Эту книгу хочется положить где-то рядом и время от времени заглядывать в нее, как в справочник, - и я так и поступлю! - Фрэн Бейкер, директор по устойчивому развитию и социальному воздействию, Arm Невероятно доступное и подробное введение в развивающуюся область искусст­ венного интеллекта периферийных устройств! В книге затронуто поразительно много тем, от самых базовых понятий и до новейших аппаратных и программных инструментов. Также здесь вы найдете множество практических советов и несколь­ ко комплексных примеров. Благодаря этой книге любой дилетант в этой новой и интересной области с у довольствием обретет глубокие знания по теме. - Орельен Жерон, бывший руководитель кшwанды автоматической классификации видео УоиТиЬе, автор бестселлеров
14 Отзывы о книге "Искусственный интеллект периферийных устройств" Данная книга - это руководство по созданию более умных устройств, являющее собой отличное введение в то, как современные технологии искусственного интел­ лекта объединяются со встроенными системами. - Элесия Уайт, "Making Embedded Systems" ведущая подкаста Embedded автор книги и
Дженни хотела бы посвятить эту книгу вce.lW женщинам, которые в данный момент получают инженерное образование, - w,u хотят получить вы добьетесь всего, чего пожелаете. Дэн хотел бы посвятить эту книгу семье Ситунаяке. Эти годы были трудными, но мы всегда все преодолевали как одна команда.

Предисловие В 2022 году генеральный директор GitHub Томас Домке однажды сказал: "Я ду­ маю, переход на облачные технологии произойдет настолько стремительно, что, мне кажется, всего через несколько лет на вашем локальном компьютере вообще не останется кода" 1. В этой книге я постараюсь объяснить, почему я и многие другие специалисты в области машинного обучения периферийных устройств считают, что он совершенно не прав. На наших глазах возникает множество новых практических приложений, таких как высококачественное распознавание голоса, предотвращение лесных пожаров и управление умным домом. Существование подобных вещей возможно лишь пото­ му, что локальные устройства стали способны запускать самые продвинутые алго­ ритмы машинного обучения. Дженни и Дэн написали замечательную книгу, из ко­ торой читатель не только узнает, почему добавление периферийным приложениям интеллекта так важно для решения насущных проблем, но также получит полное руководство по проектированию, реализации и тестированию таких приложений. Поначалу проект машинного обучения на периферийном устройстве может пока­ заться довольно пугающим. В этой области используется много жаргона, она быстро трансформируется и требует знаний и из области встроенных систем, и из области искусственного интеллекта, причем хорошей интегрированности между этими об­ ластями исторически не появилось. Авторы сумели написать плавное, но подробное введение во все, что вам нужно знать для эффективной работы над при.1ожением. Им также удалось сделать книгу доступной для широкого круга читателей за счет упора на примеры из реальной жизни и объяснения даже сложных тем простым языком, а не цифрами и формулами. Поэтому эту книгу можно рекомендовать и менеджерам по продуктам, и руководителям, и проектировщикам, и инженерам. Им удалось взять все свои знания, с большим трудом полученные из своего опыта, и превратить их в уроки, которые дадут большую фору любой команде, работаю­ щей над такого рода приложениями. Авторам также удалось выйти за рамки практических проблем создания перифе­ рийного приложения с машинным обучением и рассказать вам, как не причинить 1 Из аккаунта GitHub в Твиттере (https://oreil.ly/WgTQu).
18 Предисловие своей работой вред другим людям. Этические проблемы, связанные с ИИ, могут совершенно поразить вас, но авторам у дается разбить их на вопросы, каждый из которых можно сделать частью процесса планирования и тестирования проекта. Эти знания помогут всем заинтересованным сторонам вашего проекта эффективно сотрудничать и, надеюсь, избежать многих потенциальных опасностей, связанных с наделением компьютеров возможностями принятия решений в нашей жизни. Я работаю над периферийными приложениями с машинным обучением уже более десяти лет. Начинал я в стартапе, затем был техническим руководителем в Google, а сейчас являюсь основателем другого стартапа, и я попрошу всех новых членов моей команды прочитать эту книгу. Если у вас есть хоть какой-то интерес к этой области, будь вы программист, дизайнер, менеджер или просто человек, интере­ сующийся новыми технологиями, я не могу не порекомендовать эту книгу. Гаран­ тирую, что вы найдете в ней множество увлекательных идей, а также сделаете шаг к созданию умных устройств нового поколения. -Пит Уорден, генеральный директор компании создатель Useful Sensors /пс., TensorFlow Lite для микроконтроллеров
Введение За последние несколько лет растущее сообщество инженеров и исследователей не­ заметно переписало правила взаимодействия компьютеров с физическим миром. В результате появилась технология, известная как "ИИ периферийных устройств", которая обещает встряхнуть столетнюю историю компьютеров и ворваться в жизнь каждого человека. Всего лишь небольшого обновления программного обеспечения достаточно, чтобы технология искусственного интеллекта (ИИ) периферийных устройств смогла нау­ чить дешевые, энергоэффективные процессоры (которые сегодня есть везде от по­ судомоечных машин до термостатов) воспринимать и понимать мир. Мы можем наделить повседневные объекты собственным интеллектом, больше не зависящим от централизованных серверов, требующих множества данных. А инструменты но­ вого поколения делают это волшебство доступным каждому: от старшеклассников до исследователей дикой природы. В мире уже существует множество периферийных устройств с ИИ. На страницах этой книги мы встретим некоторые из них: ♦ интеллектуальные устройства, помогающие предотвратить лесные пожары, вы­ званные электросетями, которые устанавливаются на опоры ЛЭП и предсказы­ вают, когда может произойти неисправность; ♦ браслеты, которые следят за безопасностью пожарных, предупреждая их о риске теплового у дара и перенапряжения; ♦ голосовые пользовательские интерфейсы, обеспечивающие управление техноло­ гиями без помощи рук и не требующие подключения к Интернету; ♦ умные ошейники, которые отслеживают перемещения диких слонов, помогая исследователям изучать их поведение и вовремя предотвращать конфликты; ♦ установленные в дикой природе камеры, которые идентифицируют конкретные виды животных и помогают ученым изучать их поведение. Технология ИИ периферийных устройств все еще свежа и нова, и существующие приложения - лишь малая часть того, что вообще возможно. По мере того как люди будут доскональное изучать работу ИИ периферийных устройств, они будут созда­ вать приложения, решающие проблемы во всех сферах человеческой деятельности.
20 Введение Цель этой книги- дать вам возможность стать именно таким человеком. Мы хо­ тим помочь вам на базе ИИ создавать успешные продукты в той сфере, которая вам будет по душе. О книге Эта книга предназначена для инженеров, ученых, менеджеров по продуктам и лю­ дей, принимающих решения, которые будут двигать технический прогресс вперед. Это общее руководство по всей сфере, в котором описан рабочий процесс и зало­ жена база для решения реальных проблем с использованием ИИ периферийных устройств. В числе прочего мы покажем вам: ♦ возможности, ограничения и риски, связанные с различными технологиями ИИ периферийных устройств; ♦ платформу для анализа проблем и разработки решений с использованием искус­ ственного интеллекта и машинного обучения встраиваемых систем; ♦ комплексный практический процесс успешной разработки периферийных приложений искусственного интеллекта. В первых главах первой части книги мы рассмотрим и обсудим ключевые понятия, которые помогут вам уяснить основы. Затем мы познакомимся с практическими процессами, которые помогут вам в разработке и реализации собственных прило­ жений. Во второй части книги, начиная с главы 11, будут приведены три полноценных по­ шаговых руководства, которые станут примерами того, как применять новообре­ тенные знания для решения реальных задач в научных, промышленных и потреби­ тельских проектах. К концу книги вы начнете уверенно смотреть на мир через призму ИИ периферий­ ных устройств, и в вашем арсенале появится солидный набор инструментов, кото­ рые можно использовать для создания эффективных решений. ~ l~ В этой книге затронуто очень много тем! Для того чтобы увидеть их все, ознакомьтесь с оглавлением. Что ожидать от книги Это не книга по программированию и не руководство по конкретному набору инст­ рументов, поэтому долгих построчных объяснений кода или инструкций по ис-
Введение 1 21 пользованию конкретного программного обеспечения тут не будет. Вместо этого вы узнаете, как применять общие концепции для решения задач, используя те инст­ рументы, которые лучше всего подходят для этой работы. Но и здесь нам пригодятся интересные интерактивные примеры, которые можно бьmо бы изучать, настраивать и развивать. По ходу книги мы будем постоянно ука­ зывать вам на ресурсы, которые можно изучить, - от репозиториев Git до бесплат­ ных онлайн-наборов данных и примеров конвейеров обучения. Многие из них будут размещены в Edge Impulse (https://edgeimpulse.com)- это инженерный инструмент для создания приложений с ИИ периферийных уст­ ройств 1• Он построен на технологиях с открытым исходным кодом и лучших обще­ принятых практиках, поэтому основные принципы будут вам понятны, даже если вы работаете на другой платформе. Оба автора книги являются большими поклон­ никами Edge Impulse, хоть и несколько предвзято, поскольку сами участвовали в его создании! Для обеспечения переносимости все артефакты конвейера машинного обу­ чения можно экспортировать из Edge lmpulse в открытые форматы. К ним относятся наборы данных, модели машинного обучения и реализации лю­ бого кода обработки сигналов на С++. Что вам нужно знать перед чтением Эта книга посвящена созданию программного обеспечения, работающего на пери­ ферийных устройствах, поэтому вам будет полезно познакомиться с общими кон­ цепциями разработки встраиваемых систем. Это могут быть либо устройства с ог­ раниченными ресурсами, такие как микроконтроллеры или процессоры цифровых сигналов (digital signal processors, DSP), Linux. либо устройства общего назначения, такие как встроенные компьютеры с Тем не менее даже если вы только начинаете работать со встроенным программ­ ным обеспечением, проблем возникнуть не должно! Мы будем сохранять простоту повествования и вводить новые темы по мере их появления. Помимо этого, никаких особых знаний от читателя не требуется. Поскольку эта книга, по сути, представляет собой практическую дорожную карту по всей области, мы рассмотрим множество тем на высоком уровне. Если вы хотите глубже изучить затронутые нами темы - от основ машинного обучения до основ проектирования приложений машинного обучения, - мы предоставим множество ресурсов, кото­ рые нам самим показались весьма полезными. 1 Edge Impulse описан в научной статье "Edge Impulse: платформа MLOps для крошечного машинного ("Edge Impulse: An MLOps Platform for Тiny Machine J,eaming" (https://oreil.ly/Dyd-Z)). обучения"
22 Введение Ответственность, этичность и эффективность искусственного интеллекта Наиболее важной частью создания любого приложения является обеспечение его корректной работы в реальном мире. К сожалению, приложения ИИ особенно уяз­ вимы для множества связанных проблем, из-за которых кажется, что они работают хорошо, но на самом деле работают не просто плохо, да еще и во вред. Вопросы о том, как избежать такого рода проблем, станут одной из основных (если не ведущей темой) тем этой книги. Поскольку современная разработка ИИ - это итеративный процесс, недостаточно протестировать систему в конце рабочего про­ цесса, чтобы утверждать, будто она работает. На каждом этапе пути вам необходи­ мо думать о потенциальных подводных камнях. Вам придется понять, в чем заклю­ чаются риски, критически проанализировать свои промежуточные результаты и принять обоснованные решения, учитывающие потребности всех заинтересован­ ных сторон. Эта книга заложит для вас фундамент, благодаря которому вы научитесь понимать, обосновывать, оценивать производительность и принимать решения, базируясь на понимании того, что может пойти не так при создании приложений ИИ. В книге мы заложим фундамент всего нашего процесса разработки и определим способ проек­ тирования наших приложений. Этот процесс стартует с самого начала проекта. Для создания эффективных прило­ жений важно понимать, что существуют определенные случаи использования, для которых наш нынешний подход к ИИ просто не подходит. Во многих ситуациях риск причинения вреда - физического, финансового или социального - переве­ шивает потенциальную выгоду от внедрения ИИ. Эта книга научит вас выявлять эти риски и учитывать их при изучении вопросов реализуемости проекта. Как эксперты в предметной области, мы несем ответственность за то, чтобы техно­ логия, которую мы создаем, использовалась надлежащим образом. Никто не сдела­ ет эту работу лучше нас, поэтому мы должны сделать ее хорошо. Эта книга помо­ жет вам принимать правильные решения и создавать приложения, которые и хорошо работают, и не причиняют вреда, а лишь несут пользу миру. Дополнительные ресурсы Книга, в которой бы затрагивались аспекты искусственного интеллекта встраивае­ мых систем от низкоуровневой реализации до высокоуровневых паттернов проек­ тирования, занимала бы целую книжную полку! Вместо того чтобы пытаться втис­ нуть все в одно издание, мы представим вам подробную, но высокоуровневую дорожную карту всего пространства тем.
Введение 1 23 Для того чтобы более детально рассмотреть темы, важные для вашего конкретного проекта, в разд. "Изучение навыков в сфере ИИ периферийных устройств" главы 5 приведено множество дополнительных ресурсов. Достижение Авторы хотели бы услышать ваше мнение - напишите нам на bello@edgeaibook.com. Условные обозначения и соглашения В книге используются следующие общепринятые типографские обозначения. Курсивом Обозначены новые термины, имена файлов, расширения файлов. Жирным шрифтом Обозначены URL-aдpeca, адреса электронной nоtпы, элементы интерфейса про­ рамм. Моноwиринный wрифт Используется в листингах программ, а также внутри абзацев для обозначения таких элементов программы, как имена переменных и функций, базы данных, типы данных, переменные среды, операторы, ключевые слова. Жирный МОНО111Иринный IIIРИФТ Обозначает команды или другой текст, который должен быть набран пользова­ телем буквально. Курсивный юноошринный шрифм Обозначает текст, который должен быть заменен значениями, введенными поль­ зователем, или значениями, определяемыми контекстом. ~ Данный элемент обозначает подсказку илн сонет. i .~ . ~' Данный элемент обозначает общее замечание . Данный элемент обозначает предупреждение или предостережение.
Введение 24 Использование примеров кода Дополнительные материалы (примеры кода, упражнения и т. д.) можно скачать по адресу https://github.com/ai-at-the-edge. В случае возникновения вопроса или проблемы с использованием примеров кода отправьте электронное письмо по адресу bookquestions@oreilly.com. Эта книга создана для того, чтобы помочь вам сделать свою работу. Если в этой книге встречается пример кода, вы можете использовать его в своих программах и документации. Вам не нужно обращаться к нам за разрешением, если вы не воспроизводите значительную часть кода. Например, для написания программы, в которой исr~ользуется несколько фрагментов кода из этой книги, разрешение не требуется. Продажа или распространение примеров из книг O'Reily требует разре­ шения. Для того чтобы процитировать эту книгу или пример кода, разрешения не требуется. Дпя включения значительного количества примеров кода из этой книги в документацию вашего продукта требуется разрешение. Мы обычно не требуем указания авторства, но будем вам за него признательны . Сюда входят название, автор, издатель и ISBN. Например: "AI at the Edge", Дэниел (O'Reily). Авторские права: Дэниел Ситунаяке и 2023, 978-1-098-12020-7". Ситунаяке и Дженни Планкетт Дженни Планкетт, Если вы считаете, что использование вами примеров кода выходит за рамки добро­ совестного использования или разрешения, описанного выше, свяжитесь с нами по адресу permissions@oreilly.com. Платформа онлайн-обучения O•REILIL-v1 • O'Reilly Более 40 лет компания O'Reilly Media организует технические и бизнес-тренинги, передает знания и опыт, чтобы помочь компаниям достичь успеха. Наша уника.г11,ная сеть экспертов и новаторов делится своими знаниями и опытом через книги, статьи и платформу онлайн-обучения . Эта платформа предоставляет доступ по требованию к интерактивным учебным курсам, углубленным програм­ мам обучения, интерактивным средам кодирования, а также к обширной коллекции текстовых и видеоматериалов от O'Reilly и более нительная информация представлена на сайте 200 других издательств. Допол­ https://oreilly.com. Как с нами связаться? Просим направлять комментарии и вопросы относительно данной книги в изда­ тельство по адресу: O'Reilly Media, lnc. 1005 Gravenstein Highway North
Введение 1 25 Sebastopol, СА, 954 72 800-998-9938 (в США 707-829-0515 или Канаде) (международный или местный) 707-829-0104 (факс) На веб-странице книги можно ознакомиться с редакциями, примерами и другой дополнительной информацией. Она доступна по адресу https://oreil.ly/ai-at-the- edge. Если вы хотите оставить комментарий или задать технические вопросы по книге, пишите по адресу Новости и bookquestions@oreilly.com. информацию о наших книгах и курсах можно найти на сайте https://oreilly.com. Ищите нас на Linkedln: https://linkedin.com/company/oreilly-media. Следите за нами в Смотрите нас на Twitter: https://twitter.com/oreillymedia. YouTube: https://www.youtube.com/oreillymedia. Благодарности Эта книга не увидела бы свет без упорного тру да и поддержки большого числа лю­ дей, которым мы очень благодарны. Предисловием мы обязаны (https://pete warden.com)- единственному и неповторимому Питу Уордену не только мощному техническому специалисту, дос­ тойному огромной похвалы за открытие этой области, но и замечательному челове­ ку и отличному другу. Огромное спасибо за поддержку, Пит! Мы выражаем глубокую благодарность Вибке (Туссен) Хутири Saint.com), (https://wiebketous который сделал все возможное, помогая нам написать часть книги, ка­ сающуюся ответственного ИИ, включая фантастическое введение к разд. "Ответ­ ственный дизайн и этика искусственною интеллекта". В своей области вы супер­ звезда. Мы в долгу перед нашей замечательной командой технических рецензентов и кон­ сультантов, чья мудрость и проницательность оказали такое огромное влияние на эту книгу. Их имена- Алекс Элиум, Орельен Жерон, Карлос Роберто Ласерда, Дэвид Дж. Грум, Элесия Уайт, Фрэн Бейкер, Джен Фокс, Леонардо Каваньис, Мэт Келен, Пит Уорден, Виджай Джанапа Редди и Вибке (Туссен) Хутири. Оrдельное большое спасибо Бенджамину Кабе за то, что он позволил нам привести в качестве примера его проект искусственного носа. Ответственность за любые неточности полностью лежит на авторах. Мы также хотели бы поблагодарить замечательную команду O'Reilly, особенно Анжелу Руфино, которая с величайшим пониманием и заботой сопровождала нас в
26 Введение процессе написания. Особая благодарность Элизабет Фаэрм, Кристен Браун, Майку Лукидесу, Николь Таше и Ребекке Новак. Эта книга не существовала бы без поддержки нашей команды Edge lmpulse - на­ стоящей команды супергероев. Особая благодарность основателям Заку Шелби и Яну Джонгбуму за то, что они поверили в наше видение этой книги, поддержали нас в ее реализации и создали пространство, на котором наши идеи смогли расцве­ сти. С большой любовью всей команде, в которую на момент написания входят: Адам Бенцион, Алессандро Гранде, Алекс Элиум, Амир Шерман, Арьян Камфуис, Арти Бивис, Арун Раджасекаран, Эшвин Рохария, Орельен Лекертье, Карл Уорд, Клинтон Одуор, Дэвид Шварц, Дэвид Тишлер, Дими Томов, Дмитрий Маслов, Эмиль Бош, Эоин Джордан, Зван Раст, Фернандо Хименес Морено, Франческо Ва­ рани, Джед Хуанг, Джим Эдсон, Джим ван дер Ворт, Джоди Лэйн, Джон Пура, Хорхе Сильва, Джощуа Ба1<, Джульетт Окель, Килин Мерфи, Киртана Мурти, Луи Моро, Луиза Пол, Мэгги Янг, Мэт Келси, Матеуш Майхжицкий, Матийс Баайенс, Михайло Ралич, Майк Сенезе, Майки Бивис, MJ Ли, Набиль Керогли, Ник Фами­ гетти, Омар Шрит, Отман Механнене, Пейдж Холвик, Рауль Джеймс, Рауль Верга­ ра, Р.Дж. Виссерс, Росс Лоу, Салли Аткинсон, Сания Ахтар, Сара Олссон, Серджи Мансилья, Шамс Мансур, Шан Хэнском, Шан Хаймел, Шина Патель, Тайлер Хойл, Воислав Миливоевич, Уильям ДеЛей, Ян Ли, Яна Вайб и Зин Чжо. Вы настоящие волшебники. Дженни хотела бы поблагодарить свою техасскую семью и друзей за огромную и многолетнюю поддержку, а также своих кошек Блу Джин и Беатрис за то, что они были замечательными коллегами. Отдельно ей хотелось бы поблагодарить своего отца, Майкла Планкетта, который вдохновил ее на изучение электротехники в Техас­ ском университете в Остине и пробудил в ней тягу и рвение к новым технологиям. Дэн хотел бы поблагодарить свою семью и друзей за поддержку в каждом большом приключении. Он глубоко благодарен Лорен Уорд за ее любовь и сотрудничество на протяжении всех наших путешествий. Также он благодарит Миникэт за ее успо­ каивающее кошачье присутствие и разрешение использовать ее фотографии в этой книге.
ГЛАВА 1 Краткое введение в искусственный интеллект периферийных устройств Добро пожаловать на борт! В этой главе мы проведем всестороннюю экскурсию по миру искусственного интеллекта (ИИ) периферийных устройств. Мы определим ключевые термины, узнаем, что отличает "ИИ периферийных устройств" от ИИ других объектов, а также приведем некоторые наиболее важные случаи его исполь­ зования. Наша цель в этой главе - ответить на два важных вопроса: ♦ Что вообще такое ИИ периферийных устройств? ♦ Зачем он мне? Ключевые термины В каждой области технологий есть множество умных словечек, и ИИ периферий­ ных устройств ничем не отличается. Даже сам термин "ИИ периферийных уст­ ройств" представляет собой объединение нескольких умных словечек в один мощ­ ный термин. Его часто можно услышать рядом с его кузенами: машинным обучение.w встраиваемых систем и ТiпуМL. Прежде чем двигаться дальше, уделим некоторое время тому, чтобы дать опреде­ ления терминам и понять, что они означают. Поскольку мы имеем дело со сложны­ ми умными словами, давайте сначала разберемся с тем, из чего они состоят. Встроенные системы Что такое "встроенные"? При наличии некоторого опыта этот термин может ока­ заться вам наиболее знакомым из тех, которые мы пытаемся описать. Встроенные системы - это компьютеры, которые управляют электроникой разнообразных фи­ зических устройств: от В\uеtооth-наушников до блока управления двигателем со­ временного автомобиля. Встроенное программное обеспечение обеспечение, которое работает на таких устройствах. На рис. ры встроенных систем. 1.1 это программное приведены приме­
28 Глава 1 Промышленное оборудование Аудиовизуальное оборудование Игровые приставки Датчики движения Бытовая техника Медицинские приборы Рис. 1.1. Телекоммуникационное оборудование Транспортные средства Встроенные системы встречаются повсюду, включая ваш дом и рабочее место Встроенные системы могут быть крошечными и простыми, как микроконтроллер в цифровых часах, а могут быть большими и сложными, как встроенный компьютер внутри смарт-телевизора. В отличие от компьютеров общего назна­ чения, таких как ноутбук или смартфон, встроенные системы обычно предназначе­ на базе Linux ны для выполнения одной конкретной задачи. Встроенные системы лежат в основе большей части наших современных техноло­ гий, и поэтому они чрезвычайно широко распространены. Фактически, в 2020 году было продано более 28 млрд микроконтроллеров 1, а это всего один из типов встро­ енных процессоров. Они работают в наших домах, в машинах, на заводах и на ули­ цах наших городов. Вероятно, где бы вы ни были, до ближайшей встроенной сис­ темы всегда будет не более пары метров. Встроенные системы обычно соответствуют ограничениям среды, в которой они развернуты. Например, многие встроенные системы должны работать от аккумуля­ тора, поэтому их разрабатывают с учетом энергоэффективности. Возможно, это достигается за счет ограничения объема памяти или чрезвычайно низкой тактовой частоты. 1 По данным Business Wire (https://oreil.ly/xaOo-).
Краткое введение в искусственный интеллект периферийных устройств Программирование встраиваемых систем - 1 29 это искусство преодоления ограниче­ ний и написания программного обеспечения, которое выполняет требуемую задачу, максимально эффективно используя ограниченные ресурсы . Эта задача может быть невероятно сложной . Разработчики встраиваемых систем - невоспетые герои со­ временного мира. Если вы один из них, то спасибо вам за ваш тяжелый труд! Периферийные устройства (и Интернет вещей) История компьютерных сетей всегда была похожа на гигантское перетягивание ка­ ната. В первых системах - отдельных компьютерах размером с комнату - вычис­ ления были по своей сути централизованы. Это была одна машина, и она выполня­ ла всю работу. Однако со временем компьютеры начали подключаться к терминалам (как показано на рис. 1.2), которые взяли часть работы на себя . Большая часть вычислений проис­ ходила в центральном мейнфрейме, но некоторые простые задачи (например, вывод букв на экран электронно-лучевой трубки) выполнялись электроникой терминала. Рис. 1.2. Мейнфреймы выполняли основную часть вычислений, а простые терминалы обрабатывали входные данные, печатали результаты и выводили простую графику Со временем терминалы становились все более сложными и начинали брать на себя все больше и больше функций, которые раньше выполнялись центральным компь-
30 Глава 1 ютером. И вот тут началось перетягивание каната! Когда был изобретен персональ­ ный компьютер, маленькие компьютеры стали способны выполнять полезную ра­ боту, даже не подключаясь к другой машине. Веревка перетянулась от центра сети к периферии. Развитие Интернета, а также веб-приложений и сервисов породило по-настоящему интересные вещи - от потокового видео до социальных сетей. Но эти вещи тре­ буют подключения компьютеров к серверам, которые постепенно берут на себя все больше работы. За последнее десятилетие большая часть наших вычислений снова стала централизованной, но на этот раз в облаке. Без Интернета наши современные компьютеры становятся бесполезными! Но не только наши рабочие и игровые компьютеры подключены к сети. По оцен­ кам, в 2021 году к Интернету было подключено 12,2 млрд различных предметов 2 , создающих и потребляющих данные. Эта обширная сеть объектов называется Интернетом вещей (Internet of Things, IoT), и в нее входит все, что вы можете вооб­ разить: промышленные датчики, умные холодильники, подключенные к Интернету камеры видеонаблюдения, персональные автомобили, транспортные контейнеры, фитнес-трекеры и кофемашины. Первое устройство loT было создано в 1982 Карнеги-Меллона подключили автомат по году. Студенты Университета продаже кока-колы к сети ARPANET (https://oreil.ly/В510Z)- раннему предшественнику Интерне­ та, - чтобы, не выходя из своей лаборатории, проверять, не опустел ли он. Все эти устройства представляют собой встроенные системы, содержащие мик­ ропроцессоры, на которых работает программное обеспечение, написанное разра­ ботчиками встроенного программного обеспечения. Поскольку они находятся на периферии сети, мы также можем называть их периферийными устройствами. Выполнение вычислений на периферийных устройствах называется граничными вычислениями. Периферия - это не какое-то одно место, это скорее обширный регион. Перифе­ рийные устройства могут взаимодействовать друг с другом, а также с удаленными серверами. Даже целые серверы могут быть расположены на периферии. На рис. 1.3 показано, как это выглядит. Работа на периферии сети дает несколько важных преимуществ. Во-первых, имен­ но отсюда берутся все данные! Периферийные устройства - это связующее звено между Интернетом и физическим миром. В них используются датчики, собираю­ щие информацию о том, что происходит вокруг них, будь то частота сердечных сокращений бегуна или температура прохладительного напитка. Они могут прини­ мать решения на основе этих данных локально, а могут отправлять их в другие места. Периферийные устройства имеют доступ к данным, которого нет ни у кого другого. 2 По данным IoT Analytics (https://oreil.ly/yMRAF), к 2025 году ожидается рост до 27 млрд.
Краткое введение в искусственный интеллект периферийных устройств 31 Периферия Инфраструктура ((( ))) Шлюз loT Конечные устройства Периферийный сервер Вышка ш сотовой связи Рис. 1.3. Устройства на периферии сети могут взаимодействовать с облаком, с периферийной инфраструктурой и друг с другом. Периферийные приложения обычно охватывают несколько мест на этой карте (например, данные могут отправляться с устройства ~ IoT, оборудованного датчиками, на локальный периферийный сервер) Являются пи мобильные телефоны и планшеты периферийными устройствами? Мобильные телефоны, планшеты и даже персональные компьютеры рас­ положены на периферии сети и являются периферийными устройствами. Мобильные телефоны были одной из первых платформ, оснащенных ис­ кусственным интеллектом, и современные мобильные телефоны исполь­ зуют его для многих целей, от голосовой активации до умной фотографии 3 . К периферийным устройствам мы вернемся позже (поскольку им посвящена данная книга) . А пока продолжим вводить термины. 3 Разработка встраиваемых систем и мобильная разработка обычно являются отдельными дисцип­ линами . Даже в мобильном устройстве встроенная прошивка и операционная система отличаются от мобильных приложений . В этой книге основное внимание уделяется разработке встраиваемых систем, поэтому мы не будем много говорить о создании мобильных приложений, но рассмотрим методы, которые актуальны в обоих случаях .
Глава 32 1 Искусственный интеллект Уф! Тут в двух словах не объяснить. Искусственный интеллект (ИИ)- очень об­ ширная идея, и ей очень сложно дать определение. С незапамятных времен люди мечтали о создании разумных существ, которые могли бы помочь нам в нашей борьбе за выживание. В современном мире мы мечтаем о роботах-помощниках, которые помогут нам во всех делах: о сверхразумных синтетических разумах, ко­ торые решат все наши проблемы, и о чудесных корпоративных продуктах, которые оптимизируют наши бизнес-процессы и гарантируют быстрое продвижение по службе. Но чтобы дать определение ИИ, нам нужно дать определение интеллекту, а это оказывается непросто. Что такое "обладать интеллектом"? Означает ли это, что мы можем говорить или думать? Очевидно, что нет - спросите слизевика (рис. 1.4 ), простого организма без центральной нервной системы, способного находить выхо­ ды из лабиринтов. Рис. 1.4. Слизевики - это одноклеточные организмы, которые, как было задокументировано, способны преодолевать лабиринты в поисках пищи с помощью процесса биологических вычислений, как показано в статье "Slime Mould Solves Maze in Опе Pass Assisted Ьу Gradient ofChemo-Attractants" 4 Но перед вами не учебник по философии, поэтому у нас нет времени целиком и полностью исследовать тему интеллекта. Вместо этого мы хотим предложить бы­ строе определение: Интеллект - это знание того, что нужно сделать в нужное время. Вероятно, на научную дискуссию с таким определением не придешь, но нас оно устраивает. Оно дает нам инструмент для изучения предмета. Приведем некоторые задачи, для которых, согласно нашему определению, требуется интеллект: ♦ выполнение фотосъемки, когда в кадре находится животное; ♦ применение тормозов в случае риска попадания в аварию; ♦ информирование оператора о том, что машина сломалась; 4 Адамацки Э. Слизевик преодолевает лабири1п за один проход с помощью градиента хемоаттрактан­ // arXiv. - 2011 (https://oreil.ly/Ecrq9). тов
Краткое введение в искусственный интеллект периферийных устройств ♦ 33 выдача правильной информации в ответ на вопрос; ♦ создание аккомпанемента к музыкальному спектаклю; ♦ включение крана, когда человек хочет помыть руки. Каждая из этих задач включает в себя как действие (открытие крана), так и предва­ рительное условие (кто-то хочет вымыть руки). Внутри своего контекста большин­ ство этих проблем кажутся относительно несложными, но, любой, кто пользовался туалетом в аэропорту, знает, что не всегда все так просто. Большинству людей не составит труда выполнить львиную долю этих задач. Мы очень способные существа с общим интеллектом. Но эти задачи могут выполнять и меньшие системы с более узким интеллектом. Возьмем, к примеру, слизевика. Он может, хотя и не понимая зачем, выбраться из лабиринта, и вполне на это способен. Но зато слизевики вряд ли знают, когда следует открывать кран. Вообще говоря, гораздо проще выполнить одну небольшую задачу (например, открыть воду), чем выполнять разнообразный набор совершенно разных задач. Создать общий искусственный интеллект, эквивалентный человеческому существу, как показали десятилетия безуспешных попыток, будет очень сложно. Но создать что-то, работающее на уровне слизевика, гораздо проще. Например, защитить ма­ шину от ошибок водителя - теоретически довольно простая задача. Если вам из­ вестны текущая скорость автомобиля и расстояние до стены, задача реализуется с помощью простой условной логики: cuггent_speed = 10 distance_frOP1_wall = 50 seconds_to_stop = 3 # В меР1рах в секунду # В мet'lpax # Нинимальное время в секундах, # необходимое для safety_buffeг =1 OCf'IOHOBKU аВ11о,.юбиля # Запас прочносf'lи в секундах до нaжaflluя на f'IО{)МОЗ # Подсчuf'Юем, сколько времени осf'IОЛось до сf'IОлкновения seconds_until_cгash = distance_frOP1_wall / cuггent_speed # Задейсf'IВуем l'IОрмоза, если близиl'IСЯ сf'IОлкновение if seconds_until_cгash < seconds_to_stop + safety_buffeг: applyBгakes() Понятно, что в этом упрощенном примере не учитывается множество факторов. Но если немного усложнить ситуацию, то современный автомобиль с системой помо­ щи водителю, основанной на этой условной логике, возможно, получит приписку "с умным ИИ" в названии 5 . Здесь мы пытаемся подчеркнуть два момента: во-первых, довольно сложно опре­ делить, что такое интеллект, а для решения многих довольно простых задач тре- s В течение многих лет существовала надежда, что общий искусственный интеллект можно создать с помощью сложной условной логики. настраиваемой вручную. Но все оказалось нам1ю1·0 сложнее!
34 Глава 1 буется определенный уровень интеллекта . Во-вторых, программы, реализующие этот интеллект, не обязательно должны быть особенно сложными. Иногда подой­ дет и слизевик. Итак, что такое ИИ? Если говорить простыми словами, то это искусственная сис­ тема, которая принимает разумные И один из способов создания ИИ решения на основе неких входных данных. это машинное обучение. - Машинное обучение Концепция машинного обучения (МО - machine learning, ML) по своей сути до­ вольно проста. Это способ автоматически обнаруживать закономерности в том, как устроен мир, пропуская данные через алгоритмы. Зачастую термины "ИИ" и "машинное обучение" используются как синонимы, словно это одно и то же. Но это не так. ИИ не всегда предполагает машинное обу­ чение, а машинное обучение не всегда предполагает использование ИИ. Но, тем не менее, эти вещи хорошо сочетаются друг с другом! Представить машинное обучение проще всего на примере. Вообразите, что вы соз­ даете фитнес-трекер - небольшой браслет для спортсменов. В нем есть акселеро­ метр, который показывает, какое ускорение происходит по каждой оси (х, у и данный момент времени, как показано на рис. о 304 608 912 1216 ассХ (1) Рис. 1.5. 1520 ассУ (2) z) в 1.5. 1824 2128 2432 2736 accZ (3) Выходной сигнал трехосного акселерометра производится с частотой 6,25 Гц В течение многих лет теплилась надежда, что общий ИИ можно создать с помощью сложной условной логики, настраиваемой вручную. Но все оказалось намного сложнее! Для того чтобы облегчить спортсменам тренировки, можно вести автоматический журнал их активности. Например, спортсмен в понедельник час бегал, а во вторник час плавал. Поскольку движения во время плавания и во время бега сильно различаются, предполагается, что и вы сможете отличить эти действия по показаниям акселе­ рометра на браслете. Для того чтобы собрать данные, вы раздаете прототипы браслетов дюжине спортсменов и заставляете их выполнять определенные дейст-
Краткое введение в искусственный интеллект периферийных устройств вия 1 35 плавать, бегать или ничего не делать. А браслеты в этот момент записыва­ - ют данные (рис. 1.6). 20 15 о 608 304 912 1216 ассХ (1) Рис. 1.6. отличной от рис. 1520 ассУ 1824 (2) 2432 2128 2736 accZ (3) Выходные данные трехосного акселерометра для активности, 1.5. У каждого вида активности есть своя закономерность изменения ускорения по каждой оси с течением времени Получив набор данных, можно попытаться определить некоторые правила, которые помогут вам понять, что делает спортсмен в данный момент - плавает, бегает или просто отдыхает. Как вариант, это можно сделать вручную, а именно проанализи­ ровать данные и найти в них нечто интересующее. Возможно, окажется, что во время бега возникает более сильное ускорение по определенной оси, а при плава­ нии такого нет. С помощью этой информации можно написать некоторую услов­ ную логику, которая определяет действие на основе показаний с этой оси. Ручной анализ данных может быть сложной задачей и обычно требует экспертных знаний в предметной области (например, в области движений человека во время занятий спортом). Но можно использовать вместо ручного анализа машинное обу­ чение. При использовании машинного обучения вы вводите все данные своих спортсме­ нов в обучающий алгоритм. При наличии данных акселерометра и информации о том, какой активностью спортсмен занят в данны/:i момент, алгоритм постарается изучить сопоставление между ними. Это сопоставление называется моделью. Если обучение прошло успешно, то мы надеемся, что новоиспеченная модель ма­ шинного обучения сможет принять совершенно новые входные данные, которые раньше не видела (набор данных акселерометра за некоторый промежуток време­ ни), и понять, какой активностью занят спортсмен. Этот процесс называется выводом. Способность модели понимать новые входные данные называется обобщение.«. В ходе тренировки модель нашла некоторые характеристики, отличающие бег от пла­ вания. После этого вы можете использовать модель в своем фитнес-трекере для анализа новых данных точно так же, как использовали бы условную логику, о ко­ торой мы упоминали ранее. Существует множество различных алгоритмов машинного обучения, и у каждого есть свои сильные и слабые стороны, и не для каждой задачи машинное обучение
36 Глава 1 является лучшим инструментом. Позже в этой главе мы обсудим сценарии, в кото­ рых машинное обучение оказывается наиболее полезным. А пока запомним хоро­ шее практическое правило: машинное обучение по-настоящему полезно в случаях, когда данные по-настоящему сложны. ИИ периферийных устройств Итак, мы добрались до нашего первого составного модного словечка! Уже не удив­ ляет, что ИИ периферийных устройств - это комбинация периферийных устройств и искусственного интеллекта. Как мы обсуждали ранее, периферийные устройства - это встроенные системы, которые обеспечивают связь между цифровым и физическим миром. Обычно они оснащены датчиками, которые передают им информацию об окружающей среде, в которой они установлены. Получается некоторый воображаемый конвейер посто­ янной обработки высокочастотных данных. Нам часто говорят, что данные - это кровь и сердце современной экономики, они наполняют собой всю инфраструктуру и обеспечивают работу компаний. Это опре­ деленно так, но не все данные создаются одинаково. Данные, получаемые с датчи­ ков, обычно очень объемны, но относительно малоинформативны. Представьте себе акселерометр в браслете, который мы описали в предыдущем разделе. Акселерометр способен снимать показания сотни раз в секунду. Каждое отдельное показание мало что говорит нам о происходящей в данный момент дея­ тельности. Для того чтобы понять, что происходит, нам нужен набор из тысяч по­ следовательно считанных показаний. Обычно устройства loT рассматриваются как простые узлы, которые собирают данные с датчиков, а затем передают их на обработку в некоторое централизован­ ное место. Проблема этого подхода заключается в том, что отправка таких больших объемов малоценной информации обходится чрезвычайно дорого. Мало того, что само подключение стоит недешево, так еще и передача данных требует тонны энергии, что является большой проблемой для устройств IoT с аккумуляторным питанием. Из-за этой проблемы большая часть данных, которые собирают датчики loT, обыч­ но просто выбрасывается. Мы собираем с датчиков огромное количество данных, но не можем ничего с ними поделать. ИИ периферийных устройств - решение этой проблемы. Можем ли мы вместо то­ го, чтобы отправлять данные на обработку в какое-то отдаленное место, выполнять обработку непосредственно на устройстве, на котором данные и генерируются? Тогда мы могли бы не полагаться на центральный сервер, а принимать решения локально, а это значит, что и подключение к серверу не требуется. А если мы по-прежнему хотим передавать информацию на вышестоящие серверы или в облако, можно будет передавать только важную информацию, а не тысячи показаний датчика. Это должно сэкономить много средств и энергии.
Краткое введение в искусственный интеллект периферийных устройств 1 37 Существует множество различных способов развертывания ИИ на периферийных устройствах. На рис. 1. 7 показан переход от облачного ИИ к интеллекту, полно­ стью встроенному в устройство. Как мы увидим далее в этой книге, ИИ перифе­ рийных устройств можно распространить на всю архитектуру распределенных вы­ числений, включая и непосредственно периферийные узлы, и узлы в локальных шлюзах или облаке. Как мы видели, "искусственный интеллект" может означать много разных вещей. Он может быть простым - крупицей человеческой разума, закодированной в не­ большой простой условной логике. А может быть и очень сложным, основанным на последних разработках в области глубокого обучения. ИИ периферийных устройств точно такой же. По своей сути ИИ периферийных устройств предполагает принятие некоторых решений на периферии сети, т. е. там, где рождаются данные. Но есть вещи и поинтереснее. И это подводит нас к сле­ дующему разделу! Обучение и вывод на конечном устройстве Полное обучение и вывод Обучение и вывод на периферии Полное обучение и вывод Совместное обучение и вывод между облаком и периферией Разделение обучения и вывода между облаком и периферией Обучение в облаке, вывод на устройстве Обучение в облаке, вывод только на конечном устройстве Обучение в облаке, вывод на периферии Обучение в облаке, вывод на периферийных устройствах Обучение в облаке, вывод Обучение в облаке, вывод в облаке и на периферийных устройствах на периферии и в облаке Облачный интеллект Рис. 1.7. на конечном устройстве • на конечном устройстве t=r 'о wo 'о •о • Обучение и вывод только в облаке Пространство между облачным интеллектом и интеллектом, полностью встроенным в устройство. Эти шесть уровней были описаны в документе "Edge lntelligence: Paving the Last Mile of Artificial lntelligence with Edge Computing" 6 Машинное обучение встраиваемых и миниатюрных систем ML встраиваемых систем - это искусство и наука запуска моделей машинного обучения во встраиваемых системах. Машинное обучение миниатюрных систем, 6 Чжоу Чжи и др. Edge lntelligence: прокладывая последнюю милю искусственного интеллекта с Proceedings ot'the IEEE. - 2019 (https://oreil.ly/8uWK-). помощью периферийных вычислений//
Глава 1 или TinyML7, - 38 это реализация той же задачи, но на самом маломощном встроен­ ном оборудовании, например на микроконтроллерах, процессорах цифровых сиг­ налов и небольших программируемых пользователем вентильных матрицах programmaЫe (field- gate array, FPGA). Говоря о машинном обучении встраиваемых систем, мы обычно имеем в виду со­ ставление выводов - процесс получения входных данных и формирования прогно­ за (например, угадывание физической активности на основе данных акселеромет­ ра). Обучение по-прежнему происходит на обычном компьютере. У встраиваемых систем часто бывает мало памяти. Это затрудняет запуск многих типов моделей машинного обучения, которые часто предъявляют высокие требова­ ния как к постоянной памяти (ПЗУ памяти (ОЗУ - - для хранения модели), так и к оперативной для обработки промежуточных результатов, генерируемых во вре­ мя вывода). С точки зрения вычислительной мощности тоже часто бывают ограничения. По­ скольку многие типы моделей машинного обучения требуют значительных вычис­ лительных ресурсов, это также может быть проблемой. К счастью, за последние несколько лет было сделано много достижений в оптими­ зации, которые позволили запускать довольно большие и сложные модели машин­ ного обучения на очень маленьких встраиваемых системах с низким энергопотреб­ лением. В следующих нескольких главах мы узнаем о некоторых таких методах! Машинное обучение встраиваемых систем часто идет бок о бок со своим верным спутником - цифровой обработкой сигншюв. Прежде чем двигаться дальше, да­ вайте определим и этот термин. Цифровая обработка сигналов В мире встраиваемых систем часто приходится работать с цифровыми представле­ ниями сигналов. Например, акселерометр выдает нам поток цифровых значений, соответствующих ускорению по трем осям, а цифровой микрофон - поток значе­ ний, соответствующих уровням звука в конкретный момент времени. Цифровая обработка сигналов (digital signal processing, DSP) - это практика ис­ пользования алгоритмов для управления такими потоками данных. В сочетании с машинным обучением DSP зачастую используется для изменения сигналов перед их передачей в модели машинного обучения. Причин этому несколько: ♦ очистка зашумленного сигнала; ♦ удаление пиков или выпадающих значений, которые могут быть вызваны аппа­ ратными проблемами; ♦ извлечение из сигнала наиболее важной информации; ♦ преобразование данных из временной области в частотную область 8. 7 8 Термин ТinyML является зарегистрированным товарным знаком TinyML Foundation. Это будет объяснено в разд. "Спектральный анализ" главы 4.
Краткое введение в искусственнь1й интеллект периферийных устройств DSP 1 39 настолько распространена во встраиваемых системах, что в чипах часто быва­ ет встроена сверхбыстрая аппаратная реализация часто используемых алгоритмов DSP на тот случай, если они вам понадобятся . Теперь у нас есть четкое понимание наиболее важных терминов из этой книги. На рис . 1.8 показано, как они сочетаются друг с другом в контексте. Искусственный интеллект (ИИ) Пери-ферийные Машинное обучение (МО) ИИ периферийных вычисления устройств МО встраиваемых систем TinyML Рис. 1.8. На этой схеме показаны некоторые наиболее важные концепции ИИ периферийных устройств в контексте друг друга - сверху вниз от наиболее общих до наиболее конкретных В следующем разделе мы углубимся в тему ИИ периферийных устройств и начнем разбираться, почему эта технология так важна. Зачем нам нужен ИИ периферийных устройств? Представьте себе, что этим утром вы отправились прогуляться по национальному парку Джошуа-Три (Joshua Tree National Park)- большому заповеднику дикой природы в пустыне Южной Калифорнии. Вы все время слушали музыку, трансли­ руемую на телефон через бесперебойную сотовую связь. Оказавшись в особенно красивом месте высоко в горах, вы сделали фотографию и отправили ее парню или девушке. Через несколько минут вы получили ответ. Зачем нам нужен ИИ периферийных устройств в мире, где даже в самых отдален­ ных местах есть хоть какая-то возможность для подключения к сети и передачи данных? Какой смысл в крошечных устройствах, которые могут принимать реше­ ния, если до мощных облачных серверов буквально радиоволной подать? Не ус­ ложняем ли мы себе жизнь всеми этими ухищрениями? Как вы уже догадались, ответ - нет! ИИ периферийных устройств решает некото­ рые вполне реальные проблемы, которые в противном случае мешают сделать тех-
Глава 40 1 нологии более эффективными для людей. Я больше всего люблю объяснять пре­ имущества ИИ периферийных устройств с помощью грубой мнемоники BLERP и BLERP. преимущества ИИ периферийных устройств BLERP? Джефф Бир, основатель ИИ периферийных устройств и Vision Alliance, создал этот превосходный инструмент (https://oreil.ly/UY-DG) для демон­ Что за страции преимуществ ИИ периферийных устройств. Он состоит из пяти слов: пропускная способность; ♦ Bandwidth - ♦ Latency - задержка; ♦ Ecoшonics - ♦ Reliability- ♦ Privacy -- конфиденциальность. экономика; надежность; Вооружившись принципом BLERP, любой сможет легко запомнить и разъяснить другому преимущества ИИ периферийных устройств. Также этот принцип может выступать в роли фильтра, помогающего решить, подходит ли ИИ периферийных устройств для конкретного приложения. Давайте разберем его компоненты по порядку. Пропускная способность Устройства IoT часто собирают больше данных, чем способны передать. Это озна­ чает, что подавляющее большинство данных с датчиков даже не используются, а просто выбрасываются! Представьте себе интеллектуальный датчик, который от­ слеживает вибрацию промышленной машины, чтобы определить, правильно ли она работает. В нем можно заложить простой алгоритм определения порогового значе­ ния, позволяющий понять, что машина вибрирует слишком сильно или недоста­ точно сильно, а затем передать эту информацию через радиоканал с низкой пропу­ скной способностью. Это уже звучит полезно. Ну а если бы вы могли выявить в данных закономерности, которые подскажут вам, что машина вот-вот выйдет из строя? Имея достаточную пропускную способность, мы могли бы отправить данные датчиков в облако и про­ вести некоторый анализ, чтобы спрогнозировать неизбежный сбой. Однако во многих случаях пропускной способности или энергии оказывается не­ достаточно для отправки постоянного потока данных в облако. Тогда нам придется отказаться от большей части данных с датчиков, даже если они содержат полезную информацию. Ограничения пропускной способности встречаются очень часто. Речь идет не толь­ ко о доступных возможностях подключения, но и о мощности. Передача данных по сети является самой энергозатратной задачей, которую может выполнить встроен­ ная система, а это означает, что срок службы аккумулятора не даст нам разгулять­ ся. Некоторые модели машинного обучения могут требовать значительных вычис-
Краткое введение в искусственный интеллект периферийных устройств 1 41 лительных ресурсов, но они, как правило, потребляют меньше энергии, чем пере­ дача сигнала. И вот тут на помощь приходит ИИ периферийных устройств. Что, если бы мы мог­ ли запускать анализ данных на самом устройстве IoT без необходимости переда­ вать данные? В этом случае, если анализ покажет, что машина вот-вот выйдет из строя, мы сможем отправить уведомление об этом по каналу с малой пропускной способностью. Это гораздо реалистичнее, чем пытаться передать все данные в по­ токовом режиме. Зачастую устройства вообще не имеют подключения к сети! В этом случае ИИ пе­ риферийных устройств открывает перед нам огромное число возможностей, доселе невиданных. Позже мы поговорим об этом подробнее. Задержка Передача данных требует времени. Даже при наличии высокой пропускной спо­ собности путь пакета данных от устройства до интернет-сервера и обратно может занять десятки или сотни миллисекунд. В некоторых случаях задержка может из­ меряться минутами, часами или днями - например, если используется спутнико­ вая связь или обмен сообщениями с промежуточным хранением. В некоторых приложениях требуется получить ответ быстрее. Например, управлять движущимся транспортным средством с помощью удаленного сервера- это явно неразумно. Управление транспортным средством в некоторой среде требует посто­ янной обратной связи между элементами рулевого управления и положением авто­ мобиля. В случае слишком большой задержки рулить будет крайне неудобно! ИИ периферийных устройств решает эту проблему, полностью устраняя время пу­ тешествия сигнала туда-обратно. Отличным примером этого является беспилотный автомобиль. Системы ИИ автомобиля работают прямо на его компьютере. Это по­ зволяет ему практически мгновенно реагировать на изменяющиеся условия, напри­ мер, на внезапно тормозящий впередиидущий автомобиль. Одним из наиболее убедительных примеров использования ИИ периферийных уст­ ройств ради борьбы с задержками является роботизированное исследование космо­ са. Марс настолько далек от Земли, что радиосигналу, передаваемому со скоростью света, требуется несколько минут. Хуже того, из-за расположения планет прямое общение зачастую оказывается невозможным. Из-за этого управлять марсоходом оказывается очень трудно. NASA (Национальное управление по аэронавтике и ис­ следованию космического пространства) решило эту проблему с помощью ИИ пе­ риферийных устройств- в их марсоходах используются сложные системы ИИ (https://oreil.ly/iQr8t), предназначенные для планирования задач, навигации по ок­ ружающей среде и поиска жизни на поверхности другого мира. Если у вас есть не­ много свободного времени, вы даже можете помочь будущим марсоходам ориен­ тироваться на местности их алгоритмов! (https://oreil.ly/RATTg), размечая данные для улучшения
42 Глава 1 Экономика Подключение к сети стоит больших денег. Подключенные системы обходятся до­ роже в эксплуатации, а необходимая им инфраструктура дорога в производстве. Чем больше требуемая пропускная способность, тем выше стоимость. Особенно плохо обстоят дела с устройствами, развернутыми в удаленных местах, подклю­ читься к которым можно только через спутник. Обрабатывая данные "не отходя от кассы", ИИ периферийных устройств сокращает или вовсе устраняет затраты на передачу данных по сети и их обработку в облаке. Это может открыть массу ранее невиданных возможностей. В некоторых случаях в качестве "подключения" есть только специально обученный человек, вручную выполняющий некоторую задачу. Например, натуралисты обыч­ но используют фотоловушки для наблюдения за дикой природой в отдаленных местах. Эти устройства делают фотографии, если обнаруживают движение, и со­ храняют их на SD-карту. Загружать все фотографии через спутниковый Интернет слишком дорого, поэтому исследователям приходится ездить к фотоловушкам, чтобы вручную забрать снимки и заменить карту на чистую. Поскольку традиционные фотоловушки активируются при движении, они делают много ненужных фотографий, т. к. иногда активируются движущимися на ветру ветвями, проходящими мимо туристами или зверьками, которые исследователей не интересуют. Но сегодня некоторые команды используют ИИ периферийных уст­ ройств, чтобы камера определяла только тех животных, которые им интересны, не делая лишние снимки. Это означает, что исследователю придется пореже ездить за тридевять земель, чтобы поменять SD-карту. Иногда стоимость подключения не является проблемой. Однако в случае продук­ тов, которые зависят от серверного ИИ, стоимость обслуживания серверной инфра­ структуры может усложнить бизнес-модель. Если вам требуется поддерживать парк устройств, которым необходимо "звонить домой" для принятия решений, вас могут вынудить перейти на подписную модель. Вам также надолго придется взять на себя работу по обслуживанию серверов, а это порождает риск того, что устройства кли­ ентов превратятся в кирпичи, если вы решите отключить серверы 9. Не стоит недооценивать влияние экономики. Снижая стоимость долгосрочной под­ держки, ИИ периферийных устройств открывает огромное количество вариантов использования, которые в противном случае были бы невозможны. Надежность Системы, управляемые ИИ на устройстве, потенциально более надежны, чем те, которые зависят от подключения к облаку. Оснащая устройство беспроводным со­ единением к устройству, вы добавляете обширную и чрезвычайно сложную сеть зависимостей, от технологий связи на канальном уровне до интернет-серверов, на которых может запускаться ваше приложение. 9 Не все приложения ИИ периферийных устроllств застрахованы от этого. поскольку часто необхо­ димо мониторить устройства и обновлять алгоритмы. Но все равно есть много случаев, когда ИИ перифериllных устройств может снизить затраты на обслуживание.
Краткое введение в искусственный интеллект периферийных устройств 1 43 Многие части этой головоломки вы не можете контролировать, поэтому, даже сде­ лав все правильно, все равно остается риск надежности, связанный с технологиями, составляющими ваш стек распределенных вычислений. В некоторых приложениях это может быть терпимо. Если вы создаете интеллекту­ альный динамик, который реагирует на голосовые команды, пользователи сами поймут, что устройство перестало реагировать на команды, когда дома отвалится Интернет. Но и это весьма расстраивает! В других случаях безопасность имеет первостепенное значение. Представьте себе систему на базе ИИ, которая контролирует промышленную машину, проверяя, что она работает в пределах безопасных параметров. Если такая система перестанет работать из-за отключения Интернета, это может поставить под угрозу жизни лю­ дей. Было бы намного безопаснее, если бы ИИ полностью базировался на устройст­ ве и мог продолжать работать в случае проблем с подключением. Надежность - это зачастую компромисс, и требуемый уровень надежности варьи­ рует в зависимости от варианта использования. ИИ периферийных устройств мо­ жет стать мощным инструментом повышения надежности продуктов. Хотя ИИ по своей сути сложен, это не та же самая сложность, что у глобального подключения, и его рисками зачастую оказывается легче управлять. Конфиденциальность За последние несколько лет многие люди неохотно смирились с компромиссом ме­ жду удобством и конфиденциальностью. Теоретически, если мы хотим получить более умные и более полезные технологические продукты, придется поделиться с ними данными. Поскольку интеллектуальные продукты традиционно принимают решения на удаленных серверах, они очень часто отправляют потоки данных дат­ чиков в облако. Для некоторых приложений это может быть хорошо - например, если термостат IoT передает данные о температуре на удаленный сервер, в этом ничего страшного нет 10 . Но в других приложениях конфиденциальность является огромной пробле­ мой. Например, многие люди не решаются установить в своем доме камеру видео­ наблюдения, подключенную к Интернету. Она могла бы в некоторой степени повы­ сить безопасность, но сам факт того, что видео и аудио из вашей комнаты транслируется в Интернет, перевешивает безопасность. Даже если производитель камеры заслуживает полного доверия, всегда существует вероятность того, что из­ за уязвим остей безопасности данные будут раскрыты 11 . ИИ периферийных устройств предлагает альтернативу. Вместо потоковой передачи видео и звука в реальном времени на удаленный сервер камера видеонаблюдения может использовать встроенный интеллект, чтобы определить присутствие зло- ю Даже в этом безобидном nримере злоумышленник, получивший достуn к данным вашего термоста­ та, может использовать их, чтобы узнать, когда вы находитесь в отnуске, и проникнуть в ваш дом. Именно такой сценарий произошел в 2022 году с домашней системой безопасности Ring, которая (Amazon's Ring Quietly Fixed Security Flaw That Put Users' Camera Recordings at Risk ofExposure // TechCrunch. - 2022 (https://oreil.ly/MПLH)). 11 оказалась уязвимой для атак
Глава 44 1 умышленника, когда хозяина нет дома. Затем устройство может соответствующим образом оповестить владельцев. Если данные обрабатываются только во встроен­ ной системе и никогда не передаются в облако, конфиденциальность пользователей защищена и вероятность злоупотреблений снижается. Способность ИИ периферийных устройств обеспечивать конфиденциальность от­ крывает огромное количество интересных вариантов использования. Эrо особенно важный фактор для приложений в сфере безопасности, промышленности, ухода за детьми, образования и здравоохранения. Фактически, поскольку некоторые из этих областей связаны с жесткими нормативными положениями (или ожиданиями кли­ ентов) в отношении безопасности данных, продукт с наилучшей конфиденциально­ стью должен вообще не собирать данные. Использование BLERP Как мы увидим в главе 2, принцип BLERP позволяет определить, подходит ли ИИ периферийных устройств для решения конкретной задачи. Не обязательно нахо­ дить веские аргументы для всех компонентов аббревиатуры: даже соответствие хо­ тя бы одному или двум критериям, если они достаточно убедительны, позволит сделать какие-то выводы. Использование ИИ периферийных устройств во благо Уникальные преимущества ИИ периферийных устройств дают нам новый набор инструментов, применимый к множеству самых серьезных мировых проблем. Тех­ нологи в таких областях, как охрана окружающей среды, здравоохранение и обра­ зование, уже используют ИИ периферийных устройств и достигают серьезных ре­ зультатов. Вот лишь несколько примеров, интересных лично нам. ♦ В SmartParks (https://www.smartparks.org) используются ошейники с моделями {https://oreil.ly/nyVlm), чтобы лучше понять поведение машинного обучения слонов в парках дикой природы по всему миру. ♦ RAM-1 от компании Izoelektro {https://oreil.ly/hR-US) помогает предотвратить лесные пожары, вызванные оборудованием передачи электроэнергии, используя встроенное машинное обучение для обнаружения будущих неисправностей. ♦ Исследователи, подобные доктору Мохаммеду Зубайру Шамиму из Университе­ та короля Халида в Саудовской Аравии, разрабатывают модели обучения, кото­ рые могут диагностировать пациентов на наличие жизнеуrрожающих заболева­ ний, таких как рак полости рта (https://oreil.ly/ktZq_), с использованием недорогих устройств. ♦ Студенты по всему миру разрабатывают решения для близких им задач. Жоао Витор Юкио Бордин Ямасита из UN[FEI в Бразилии создал систему для выявле­ ния болезней, поражающих кофейные растения (https://oreil.ly/gSv-J), с исполь­ зованием встроенного оборудования. Свойства ИИ периферийных устройств делают его особенно подходящим инстру­ ментом для решения глобальных проблем. Поскольку надежная связь стоит дорого
Краткое введение в искусственный интеллект периферийных устройств 1 45 и не всегда доступна, многие интеллектуальные технологии нынешнего поколения оказываются полезными только людям, живущим в промышленно развитых, бога­ тых и хорошо доступных регионах. Устраняя необходимость в подключении к Ин­ тернету, ИИ периферийных устройств расширяет доступ к технологиям, которые могут принести пользу людям и планете. Если в этом коктейле присутствует машинное обучение, в ИИ периферийных уст­ ройств обычно используются небольшие модели, обучение которых часто выпол­ няется быстро и дешево. Поскольку также отпадает необходимость поддерживать дорогостоящую серверную инфраструктуру, ИИ периферийных устройств позволя­ ет разработчикам с ограниченными ресурсами создавать передовые решения для местных рынков, которые они знают лучше, чем кто-либо другой. Для того чтобы узнать больше об этих возможностях, мы рекомендуем посмотреть Developing World" (https://oreil.ly/csz6p), че TinyML в Кении. "TinyML and the отличный доклад Пита Уордена на встре­ Как мы видели в разд. "Конфиденциальность" ранее в этой главе, ИИ периферий­ ных устройств также создает возможность повысить конфиденциальность пользо­ вателей. В нашем сетевом мире многие компании рассматривают пользовательские данные как ценный ресурс, который нужно извлекать и анализировать. Потребите­ лям и владельцам бизнеса часто приходится отказываться от конфиденциальности, чтобы использовать продукты ИИ, передавая свои данные в руки неизвестных третьих лиц. Благодаря ИИ периферийных устройств данным не нужно покидать устройство. Это обеспечивает более доверительные отношения между пользователем и продук­ том, сохраняя за пользователем право собственности на свои данные. Это особенно важно для продуктов, предназначенных для обслуживания уязвимых групп населе­ ния, которые могут скептически относиться к сервисам, собирающим их данные. TinyML for Developing Countries Если вас интересуют глобальные преимущества ИИ периферийных устройств, то проект TinyML for Developing Countries (ТinyML4D, https://oreil.ly/Bd2np) соз­ дает сеть исследователей и практиков, которые сосредоточены на решении про­ блем развивающегося мира с использованием ИИ периферийных устройств. Как мы увидим в следующих разделах, существует множество потенциальных ло­ вушек, которые стоят на пути создания этически корректных системы ИИ. Тем не менее технология предоставляет огромную возможность сделать мир лучше. Если вы подумываете об использовании ИИ периферийных устройств для решения проблем там, где вы живете, авторы будут рады услышать ваше мне­ ние. Мы оказали поддержку ряду успешных проектов и хотели бы рассказать о других. Оrправьте письмо авторам по адресу hello@edgeaibook.com.
46 Глава 1 Ключевые различия между ИИ периферийнь1х устройств и обычным искусственным интеллектом ИИ периферийных устройств - это подмножество обычного ИИ, поэтому многие их принципы схожи. Но существуют некоторые особенности, которые при работе с ИИ периферийных устройств следует учитывать. Разберем основные моменты. Обучение на периферийном устройстве выполняется редко Многие приложения ИИ основаны на машинном обучении. В большинстве случаев машинное обучение предполагает обучение модели делать прогнозы на основе на­ бора размеченных данных. После обучения модели ее можно использовать для вы­ вода, т. е. получения новых прогнозов на основе данных, которых она раньше не видела. Когда мы говорим об ИИ и машинном обучении периферийных устройств, мы обычно имеем в виду логический вывод. Для обучения моделей требуется гораздо больше вычислительной мощности и памяти, чем для вывода, а также размеченных наборов данных. Все эти вещи трудно найти на периферийном устройстве, где ре­ сурсов мало, а данные не обработаны и не отфильтрованы. По этой причине модели, используемые в ИИ периферийных устройств, перед раз­ вертыванием на устройствах часто обучаются с использованием относительно мощных вычислений и причесанных и размеченных (зачастую вручную) данных. Технически возможно обучать модели машинного обучения на самих периферий­ ных устройствах, но это происходит довольно редко - в основном из-за отсутст­ вия размеченных данных, необходимых для обучения и оценки. Существует два наиболее распространенных подтипа обучения на устройстве. Один из них обычно используется в таких задачах, как проверка лица или отпечат­ ков пальцев на мобильных телефонах, чтобы сопоставить набор биометрических данных с конкретным пользователем. Второй используется при профилактическом обслуживании, когда алгоритм на устройстве изучает "нормальное" состояние ма­ шины, чтобы что-то предпринять, если состояние станет ненормальным. Более подробная информация об обучении на устройстве приведена в разд. "Обучение на устройстве" главы 4. ИИ периферийнь1х устройств работает на данных датчиков Самое интересное в периферийных устройствах то, что они живут рядом с местом, где создаются данные. Зачастую периферийные устройства оснащены датчиками, связывающими их с окружающей средой. Цель развертывания ИИ периферийных устройств - разобраться в этих данных, выявить закономерности и использовать их для принятия решений. По своей природе данные датчиков обычно объемны, зашумлены и ими сложно управлять. Данные поступают с высокой частотой - потенциально многие тысячи раз в секунду. Встроенное устройство, на котором работает приложение с ИИ, вы­ нуждено собрать эти данные, обработать их, передать в какой-то алгоритм искусст-
Краткое введение в искусственный интеллект периферийных устройств 1 47 венного интеллекта и что-то предпринять в соответствии с результатами за очень короткий промежуток времени. Это серьезная проблема, особенно с учетом того, что большинство встраиваемых устройств ограничены в ресурсах и не имеют опе­ ративной памяти для хранения больших объемов данных. Необходимость обработки необработанных данных датчиков делает цифровую об­ работку сигналов важной частью большинства развертываний ИИ периферийных устройств. В любой эффективной и действенной реализации компоненты обработ­ ки сигналов и искусственного интеллекта должны быть спроектированы вместе как единая система, обеспечивающая баланс между производительностью и точностью. Многие традиционные инструменты машинного обучения и обработки данных ориентированы на табличные данные - например, финансовые отчеты компаний или обзоры потребительских товаров. Напротив, ИИ периферийных устройств предназначен для обработки постоянных потоков данных датчиков. Это означает, что для создания таких приложений требуется совершенно другой набор навыков и методов. Модели машинного обучения могут стать очень маленькими Периферийные устройства часто разрабатываются из соображений ограничений стоимости и энергопотребления. Это означает, что, как правило, они оснащены бо­ лее медленными процессорами и меньшими объемами памяти, чем персональные компьютеры или веб-серверы. Ограничения целевых устройств означают, что, когда машинное обучение исполь­ зуется для реализации ИИ периферийных устройств, модели машинного обучения должны быть довольно небольшими. В среднем микроконтроллере для хранения модели выделяется лишь около ста килобайт ПЗУ, а у некоторых устройств и того меньше. Поскольку выполнение более крупных моделей требует больше времени, медленные процессоры устройств также могут вынудить разработчиков разверты­ вать меньшие по размеру модели. Уменьшение размеров моделей требует некоторых компромиссов. Начнем с того, что более крупные модели способны лучше обучаться. Когда вы уменьшаете мо­ дель, она начинает терять часть своей способности представлять набор обучающих данных и становится менее точной. Из-за этого разработчикам, создающим встро­ енные приложения машинного обучения, приходится балансировать между разме­ ром модели и требуемой точностью. Существуют различные технологии сжатия моделей, позволяющие уменьшить их размер, чтобы они помещались на меньшем оборудовании и тратили меньше вре­ мени на вычисления. Эти технологии сжатия могут быть очень полезными, но они также влияют на точность моделей, причем иногда незаметно, но рискованно. В разд. "Сжатие и оптимизация" главы 4 мы поговорим об этих методах подробно. Но не всем приложениям требуются большие и сложные модели. Такие (большие и сложные) модели обычно связаны с задачами, подобными обработке изображе­ ний, поскольку интерпретация визуальной информации сопряжена с множеством
48 Глава 1 нюансов. Для более простых данных зачастую достаточно нескольких килобайт (или меньше) модели. Обучение на основе обратной связи ограничено Как мы увидим позже, приложения ИИ создаются посредством серии итеративных циклов обратной связи. Мы выполняем некоторую работу, измеряем производи­ тельность, а затем выясняем, как ее улучшить. Например, представим, что мы создаем фитнес-монитор, который оценивает время бега на 1О км на основе данных, собранных со своих датчиков. Для того чтобы про­ верить, хорошо ли все работает, мы можем подождать, пока вы пробежите реаль­ ные IО км, и посмотреть, верен ли прогноз. Если это нет, мы можем добавить дан­ ных в обучающий набор и попытаться обучить лучшую модель. Если у нас есть надежное подключение к Интернету, это не должно быть слишком сложно- достаточно просто загрузить данные на серверы. Но часть волшебства ИИ периферийных устройств заключается в том, что мы можем использовать ин­ теллект на устройствах с ограниченными возможностями подключения. В этом случае у нас может не быть достаточной пропускной способности для загрузки но­ вых данных обучения. Зачастую мы вообще не сможем ничего загрузить. Таким образом, в нашем рабочем процессе разработки приложений возникает большая проблема. Как мы можем убедиться, что наша система хорошо работает в реальном мире, когда доступ к ней ограничен? И как улучшить нашу систему, если собрать больше данных так сложно? Это основная тема разработки ИИ периферий­ ных устройств, и мы будем подробно рассматривать ее на протяжении всей книги. Вычисления разнообразнь1 и неоднородны Большинство серверных приложений ИИ работают на старых добрых процессорах х86 с добавлением некоторых графических процессоров GPU), (graphics processing units, которые помогают делать любые выводы глубокого обучения. Последние серверные процессоры Arm и экзотические ускорители глубокого обучения доба­ вили небольшое разнообразие (например, тензорные процессоры TPU Google), но большинство рабочих нагрузок выполняется на довольно обычном оборудовании. А вот в мире встроенных устройств существует ошеломляюще много типов устройств: ♦ микроконтроллеры, включая крошечные 8-битные чипы и модные 32-битные процессоры; ♦ устройства "система-на-кристалле" енной (system-on-chip, SoC) под управлением встро- Linux; ♦ ускорители общего назначения на основе технологии графического процессора; ♦ программируемые вентильные матрицы (FPGA); ♦ ускорители архитектуры, которые очень быстро запускают архитектуру одной модели.
Краткое введение в искусственный интеллект периферийных устройств 1 49 В каждой категории существует бесчисленное количество устройств от разных производителей, у каждого из которых есть свой уникальный набор инструментов сборки, сред программирования и вариантов интерфейса. Это многовато. Разнообразие аппаратного обеспечения означает, что для каждого конкретного слу­ чая использования, вероятно, будет несколько подходящих систем. Самое слож­ ное- выбрать из них одну! Мы будем рассматривать эту проблему на протяжении всей книги. Иногда "достаточно хорошо" - это уже достаточно Цель традиционного ИИ часто состоит в том, чтобы добиться максимально воз­ можной производительности независимо от затрат. Производственные модели глу­ бокого обучения, используемые в серверных приложениях, потенциально могут занимать гигабайты памяти, и для их быстрой работы используются вычисления мощного графического процессора. Если вычислительных мощностей достаточно, то лучше выбрать наиболее точную модель. Наряду с преимуществами ИИ периферийных устройств у них существуют и неко­ торые серьезные ограничения. Периферийные устройства обладают меньшими вы­ числительными возможностями, и зачастую приходится принимать непростые ре­ шения, связанные с компромиссом между производительностью и точностью устройства. Это проблема, но не катастрофа. Использование ИИ периферийных устройств дает невероятные преимущества, и в огромном числе случаев они легко перевешивают штраф в виде небольшого снижения точности. Даже небольшой объем интеллекта на устройстве может быть намного лучше, чем его отсутствие вообще. Наша цель состоит в том, чтобы создавать приложения, которые максимально ис­ пользуют эту "достаточно хорошую" производительность названный Аласдером Алланом "СараЬ\е ем"; ся https://oreil.ly/W4gDI). использование Computing" - подход, остроумно (вычисления "на том, что име­ Ключом к успешному выполнению этой задачи являет­ инструментов, которые помогают нам оценить производитель­ ность наших приложений в реальном мире, когда будут учтены любые потери производительности. Мы подробно рассмотрим эту тему. Инструменты и лучшие практики все еще развиваются Так как мы работаем с совершенно новой технологией, которая только начала по­ лучать массовое распространение, в ИИ периферийных устройств по-прежнему ис­ пользуются инструменты и подходы, разработанные для крупномасштабного сер­ верного ИИ. Фактически, большая часть исследований в области ИИ по-прежнему сосредоточена на построении больших моделей на гигантских наборах данных. У этого есть последствий. Во-первых, как мы увидим в главе 5, инструменты разработки из области мы часто будем использовать существующие data science и машинного обучения. Положи­ тельным моментом является то, что мы можем использовать богатую экосистему
50 Глава 1 библиотек и фреймворков, которая уже доказала свою эффективность. Однако лишь немногие из существующих инструментов отдают приоритет вещам, которые важны периферийным устройствам, например небольшим размерам моделей, эф­ фективности вычислений и возможности обучения на небольших объемах данных. Для того чтобы учесть это, нам часто приходится проделывать дополнительную работу. Во-вторых, поскольку исследования в области ИИ периферийных устройств явля­ ются довольно новыми, эта область, вероятно, будет чрезвычайно быстро эволю­ ционировать. По мере того как эта область расширяется и все больше исследовате­ лей и инженеров обращают на нее внимание, появляются новые подходы к повышению эффективности, а также лучшие практики и методы создания эффек­ тивных приложений. Обещание быстрых перемен делает ИИ периферийных уст­ ройств очень интересной областью для работы. Резюме В этой главе мы изучили терминологию, на которой строится ИИ периферийных устройств, ознакомились с удобным инструментом для рассуждения о его преиму­ ществах, выяснили, как перемещение вычислений на периферию может улучшить доступ к технологиям, а также обрисовали моменты, которые отличают ИИ пери­ ферийных устройств от традиционного ИИ. В следующей главе мы поговорим о более конкретных вещах. Вы узнаете о вариан­ тах использования, устройствах и алгоритмах, которые сегодня применяются в тех­ нологиях ии.
ГЛАВА 2 Искусственный интеллект периферийных устройств в реальном мире Теперь у нас есть базовое понимание того, что такое ИИ периферийных устройств и чем эта технология (теоретически) полезна. В следующей главе мы увидим, как эта теория работает, попадая в реальный мир. Мы начнем с изучения некоторых реальных продуктов, которые сегодня используются на практике. После этого мы рассмотрим основные области применения продуктов ИИ периферийных уст­ ройств. Наконец, мы узнаем больше об этических соображениях, необходимых для успеха любого продукта. Распространенные варианты использования ИИ периферийных устройств Как мы узнали из предыдущей главы, ИИ периферийных устройств особенно ценен для устройств с большим количеством данных датчиков, но с недостатком вычис­ лительных ресурсов или возможностей подключения. К счастью для нас, такие ус­ ловия можно найти практически повсюду. В современных городах может возникнуть ощущение, будто у нас всегда под рукой найдется розетка или Wi-Fi. Но даже при наличии сетевого подключения с высокой пропускной способностью и надежного питания ограничение связи и энергопо­ требления устройств дает огромные преимущества. Как мы видели в разд. и преимущества ИИ периферийных устройств" главы 1, "BLERP стремление к таким нуж­ ным характеристикам, как портативность, надежность, конфиденциальность и низ­ кая стоимость, может стимулировать разработку продуктов в сторону устройств, предназначенных для минимизации объема использования сети и энергопотребление. Несмотря на то что наш Интернет, казалось бы, глобальный, на планете есть мно­ жество мест, где возможности подключения или питания ограничены. На момент
52 Глава написания 2 50% суши Земли относительно не затронуто деятельностью человека (https://oreil.ly/ASced). Лишь небольшой процент поверхности планеты покрыт сотовой или беспроводной связью, и миллиарды людей не имеют надежного досту­ па к электроэнергии (https://oreil.ly/kly86). Но, помимо очевидно отдаленных регионов, даже в наиболее застроенных регионах найдется множество скрытых уголков, которые попадают в эту категорию . В наших современных промышленных цепочках поставок есть места, где обеспечивать про­ водное питание постоянного тока для встраиваемых устройств непрактично, по­ этому в этих случаях идеально подходят эффективные устройства с аккумулятор­ ным питанием (рис. Рис. 2.1 ). 2.1. На нашей планете много мест, где требуется питание от аккумулятора В то же время датчики становятся дешевле, сложнее и менее энергоемкими. Зачас­ тую даже простые встроенные устройства оснащаются высокопроизводительными датчиками , которые используются недостаточно из-за проблем с получением дан­ ных из системы для удаленной обработки. Например, представьте себе простой но­ симый фитнес-браслет, в котором используется акселерометр для подсчета шагов . Даже это незамысловатое устройство может быть оснащено чувствительным мно­ гоосным акселерометром с очень высокой частотой дискретизации, способным ре­ гистрировать самые незначительные движения. Если программное обеспечение устройства не умеет интерпретировать эти данные , большая их часть будет выбро­ шена, т. к. отправка необработанных данных на другое устройство для обработки будет слишком энергозатратной . Новые и существующие проекты Условия, подобные описанным выше , открывают практически безграничные воз­ можности для развертывания ИИ периферийных устройств. С практической точки зрения было бы полезно сгруппировать эти возможности в две категории : новые и уже существующие . Эти термины заимствованы из градостроительства. "Новым" называется проект, который реализуется на участке , который еще не застроен и все еще представляет собой зеленое поле с травой. Проект заброшенного месторожде-
Искусственный интеллект периферийных устройств в реальном мире 1 53 ния реализуется на участке, который уже разработан и может иметь некоторую су­ ществующую устаревшую инфраструктуру. В мире ИИ периферийных устройств "новыми" называют проекты, в которых аппа­ ратное и программное обеспечение разрабатываются совместно с нуля. Поскольку существующего оборудования нет, в новых проектах можно использовать новей­ шие и величайшие инновации в области вычислений и зондирования, о которых мы узнаем больше позже в этой главе. У разработчиков появляется больше свободы в разработке идеального решения для конкретного варианта использования. Напри­ мер, современные мобильные телефоны оснащены специальным оборудованием для цифровой обработки сигналов с низким энергопотреблением, чтобы они могли постоянно прослушивать нужные голосовые команды (например, "ОК, "Привет, Siri"), Google" или не разряжая аккумулятор. Аппаратное обеспечение выбирается с учетом конкретного алгоритма обнаружения слов. Напротив, проекты ИИ на существующих месторождениях начинаются с имеюще­ гося оборудования, которое изначально бьmо разработано для другой цели. Разра­ ботчики должны работать в рамках ограничений существующего оборудования, чтобы привнести в продукт возможности ИИ. Это уменьшает свободу разработчи­ ков, но позволяет избежать крупных затрат и рисков, связанных с созданием нового оборудования. Например, разработчик может добавить обнаружение слов пробуж­ дения в аудиогарнитуру Bluetooth, которая уже есть на рынке, используя запасные циклы существующего встроенного процессора устройства. Эту новую функцио­ нальность можно даже добавить к существующим устройствам с помощью обнов­ ления прошивки. Новые проекты интересны тем, что позволяют нам раздвинуть границы возможно­ го за счет сочетания новейшего аппаратного обеспечения и алгоритмов ИИ. С дру­ гой стороны, существующие проекты позволяют нам привнести новые возможно­ сти в имеющееся оборудование, радуя клиентов и максимально эффективно используя существующие разработки. Реальные продукты Лучший способ понять технологию - посмотреть, как она применяется в реальном мире. Мы все еще находимся на заре развития ИИ периферийных устройств, но все равно эта технология уже используется в огромном спектре приложений и отрас­ лей. Приведу три кратких обзора реальных систем, разработанных с использовани­ ем ИИ периферийных устройств. Возможно, ваша собственная работа тоже окажет­ ся в следующем издании этой книги! Предотвращение лесных пожаров с помощью обнаружения повреждений линий электропередачи Линии электропередачи передают электроэнергию через обширные территории ди­ кой природы, включая древние леса Европы. Отказ оборудования может потенци­ ально привести к возгоранию растительности и вызвать лесные пожары. Поскольку
Глава 54 2 существуют тысячи миль вышек и линий электропередачи, часто в очень отдален­ ных районах, электрооборудование может быть трудно контролировать. В устройстве RAM-1 компании шения этой проблемы lzoelektro (https://www.ram-center.com) для используется ИИ периферийных устройств (рис. 2.2). ре­ На­ бор датчиков контролирует условия на каждой электрической опоре, включая температуру, наклон и напряжение, и использует классификационную модель глубокого обучения (см. главу 4), чтобы определить, когда может возникнуть не­ исправность. Технические специалисты могут посетить нужное место и произве­ сти ремонт до того, как возникнет опасность возгорания. Устройство надежно сконструировано и рассчитано на эксплуатацию в экстремальных погодных усло­ виях в течение многих лет. Рис. 2.2. Устройство RAM-1 компании lzoelektro lzoelektro (https://www.ram-center.com)) (фото: Существует два основных фактора, которые делают это приложение идеальным для ИИ периферийных устройств. Во-первых, это отсутствие связи в диких местах. Пе­ редавать необработанные данные датчиков с тысяч удаленно расположенных опор в режиме реального времени было бы непомерно дорого. Элегантное решение со­ стоит в том, чтобы интерпретировать данные датчиков в источнике и передавать их только в случае прогнозирования неисправности - не более 250 Кбайт в месяц. Устройство способно понимать, какие данные достаточно важны и требуют немед­ ленного внимания, а менее важная информация будет отправляться периодически­ ми пакетными передачами . Такое избирательное общение помогает решить второй, немного неинтуитивный фактор. Хотя устройство RAM-1 установлено на опоре электропередачи, оно фак­ тически работает от аккумулятора. Это гарантирует, что оно продолжит работать даже в случае неисправности в линиях электропередачи, а также снижает стои­ мость и сложность установки. Поскольку радиопередача требует много энергии, способность RAM-1 избегать ненужной передачи помогает продлить срок службы аккумулятора. Фактически, с помощью ИИ периферийных устройств его аккумуля­ тор может работать двадцать лет.
Искусственный интеллект периферийных устройств в реальном мире Рассмотрим, как RAM-1 соответствует модели 1 55 BLERP. Пропускная способность. Возможность подключения ограничена в удаленных местах, где развернут RAM-1. Задержка. Крайне важно выявлять сбои сразу по мере их возникновения, а не ждать перио­ дической передачи данных. Экономика. Оrсутствие ненужного общения экономит деньги и означает, что устройство может работать от аккумулятора, а это снижает стоимость установки. Надежность. Возможность работы от аккумулятора повышает надежность. Конфиденциш,ьность. Для этого варианта использования не имеет значения. Защита сотрудников служб быстрого реагирования с помощью интеллектуальных носимых устройств Суть работы пожарных такова, что они часто подвергаются воздействию высоких температур, а экстремальные жаркие условия могут оказать серьезное влияние на их здоровье в долгосрочной перспективе. Фактически, по данным FEMA, основной причиной смерти пожарных при исполнении служебных обязанностей являются внезапные сердечные приступы (https://oreil.ly/lG6Hk). BioTrac Band от SlateSafety (https://oreil.ly/mA Wsl)- это носимое устройство, предназначенное для работников, например пожарных, которые подвергаются воз­ действию экстремальных условий (рис. 2.3). Рис. 2.3. BioTrac Band от SlateSafety (фото : SlateSafety (https://slatesafety.com ))
Глава 56 2 Оно представляет систему раннего предупреждения, которая может помочь преду­ предить отдельных и лиц команды о возможном перегреве и перенапряжении. BioTrac Band использует встроенную модель машинного обучения наряду с эври­ стическими алгоритмами 1 для анализа данных от нескольких датчиков, включая сигналы от тела пользователя, и прогнозирования скорой травмы. Этот интеллект сделал устройство одним из 100 лучших изобретений 2021 года по версии журнала Time (https://oreil.ly/cUy-b ). Экстремальные условия, в которых применяется BioTrac Band, делают это устрой­ ство невероятно крутым вариантом использования ИИ периферийных устройств. Анализируя данные, браслет может продолжать работать и предупреждать вла­ дельца, даже если во время чрезвычайной ситуации подключение к сети нарушает­ ся. Кроме того, возможность интерпретировать данные на устройстве означает, что можно избежать ненужной передачи данных, что экономит энергию и увеличивает срок службы аккумулятора, позволяя при этом свести к минимуму размер и вес устройства. Это также экономит затраты, а значит, устройство может быть более распространенным. Вот как браслет BioTrac соответствует модели BLERP. Пропускная способность. Возможность подключения ограничена в экстремальных условиях, где работают пожарные. Задержка. Проблемы со здоровьем критичны по времени и должны быть выявлены немед­ ленно. Эк01-ю;,1шка. Потоковая передача необработанных данных с датчиков потребует дорогостоя­ щих соединений с высокой пропускной способностью. Надежность. Устройство может продолжать предупреждать пожарных о потенциальных рис­ ках, даже если связь пропадает, и может в течение длительного времени рабо­ тать от небольшого аккумулятора. Конфиденциа·1ьность. Необработанные данные биосигналов можно хранить на устройстве, передавая только важную информацию. Изучение поведения слонов с помощью умных ошейников Из-за возросшего давления на естественную среду обитания диких слонов они все чаще вступают в контакт с людьми. Такое взаимодействие часто заканчивается для животных трагично: браконьерство или конфликты с фермерами и другими людь­ ми часто приводят к травмам и смерти. Дrтя того чтобы снизить вероятность этих 1 Мы скоро узнаем об этом в разд. "Условная логика и эвристика" главы 4.
Искусственный интеллект периферийных устройств в реальном мире 1 57 событий, работники и ученые в сфере охраны природы пытаются узнать больше о поведении слонов и типах условий, которые приводят к опасным встречам. ElephantEdge (https://oreil.ly/Hehxr) созданию ошейника слежения это проект с открытым исходным кодом по (https://oreil.ly/OHigl), дователям понять поведение слонов (рис. 2.4). призванного помочь иссле­ Ошейник, надеваемый на шею сло­ на , может дать представление о местонахождении, состоянии здоровья и активно­ сти животного на основе комбинации встроенных датчиков и моделей машинного обучения. Эти данные можно использовать для научных исследований, а также для предупреждения людей о присутствии животных, чтобы можно было избежать конфликта. Поскольку устройство прикреплено к дикому слону, замена аккумулятора- задача непростая! Технология ИИ периферийных устройств помогает минимизировать количество энергии, потребляемой устройством. Вместо передачи больших объе­ мов необработанных данных датчиков ошейник с машинным обучением способен передавать высокоуровневую информацию о деятельности животного, например о том, ходит ли оно, ест, пьет или занимается чем-то еще . Модели, позволяющие это делать, создавались сообществом гражданских ученых, работающих с общедоступ­ ными наборами данных. Рис. 2.4. Ошейник OpenCo\lar Edge устанавливается на слона, находЯщегося под действием успокоительного (фото: IRNAS (https://www.irnas.eu)) Низкие требования к пропускной способности означают, что ошейник может ис­ пользовать преимущества технологии беспроводной связи с чрезвычайно низким энергопотреблением под названием LoRa 2 . Ошейник может связываться со спутни­ ками, оборудованными LoRa, которые пролетают над областью один раз в день, отправляя сводную информацию о деятельности животного с момента последней передачи. Это означает, что система может надежно работать даже в местах, где 2 LoRa - это торговая марка. образованная от фразы "дальний радиус действия" (long range). поскольку она г1редна:значена для связи на большие расстояния с низким энергопотреблением .
58 Глава 2 отсутствует традиционная связь, а срок службы аккумулятора составляет около пя­ ти лет. Вот как OpenCollar Edge соответствует модели BLERP. Пропускная способность. Связь в местах обитания слонов ограничена; анализ на устройстве позволяет ис­ пользовать беспроводные технологии с низким энергопотреблением. Задержка. Несмотря на то что устройство передает данные только один раз в день, это происходит очень часто по сравнению с традиционными ошейниками слежения, данные с которых приходится загружать вручную. Экономика. Устройство экономит деньги, заменяя традиционные трудоемкие методы на­ блюдения за слонами. Надежность. Редкость передач означает, что аккумулятор может работать годами и делает спутниковую технологию экономически жизнеспособной, увеличивая дальность действия. Конфиденциш,ьность. Непосредственное отслеживание слонов менее навязчиво для местного населе­ ния, чем установка камер для наблюдения за активностью животных, что явля­ ется еще одним предлагаемым решением. Эти три варианта использования - лишь крупица того, что вообще возможно. В следующем разделе мы обсудим некоторые общие категории приложений высокого уровня. Типы приложений Возможности для внедрения ИИ периферийных устройств существуют во всех сферах современного мира: от тяжелой промышленности до здравоохранения, от сельского хозяйства до искусства. Возможности практически безграничны! Для простоты сгруппируем роли, которые передовые технологии ИИ играют в этих приложениях, в несколько высокоуровневых категорий: ♦ отслеживание объектов; ♦ анализ и контроль систем; ♦ анализ людей и живых существ; ♦ генерация и преобразование сигналов. Давайте пройдемся по каждой из этих категорий и поймем, в каких нам подойдет ИИ периферийных устройств.
59 Искусственный интеллект периферийных устройств в реальном мире Отслеживание объектов Вся наша цивилизация зависит от перемещения объектов из одного места в другое, будь то огромные контейнеровозы или маленькие мешочки с рисом. Это может происходить в контролируемых условиях склада, где товары осторожно переме­ щаются от места хранения к отгрузке. Это также может происходить в самых экс­ тремальных условиях, таких как движение погодных систем по поверхности планеты. Отслеживание и интерпретация состояния объектов, как искусственных, так и есте­ ственных, является ключевой областью применения ИИ периферийных устройств. Интеллектуальные датчики могут помочь закодировать состояние физического ми­ ра в форме, понятной для компьютеров, что позволит нам лучше координировать нашу деятельность. В табл. 2.1 рассматриваются варианты использования ИИ периферийных уст­ ройств, включающие отслеживание объектов. Таблица 2.1. Варианты использованИJ1 ИИ периферийных устройств Д11Я отслеживания объектов Вариант ис:поль~ования Основные датчики Мониторинг отправлений с использованием умной Акселерометр, датчик вибраций, упаковю1 Д11Я выявления повреждений во время GPS, датчик температуры, датчик транспортировки влажности Подсчет товаров на полках магазинов с помощью Машинное зрение встроен1-1ых камер, чтобы товары можно было пополнить до того, как они закончатся Анализ движения пластиковых отходов в океане Д11Я Машинное зрение их уборки Выявление и отслеживание препятствий на море, Радар чтобы помочь судам избежать столкновений Обнаружение захороненных природных ресурсов с Электромагнитные, акустические помощью геофизических датчиков датчики Подробный обзор: мониторинг поставок с помощью интеллектуальной упаковки Промышленные товары обычно преодолевают тысячи миль на пути к покупате­ лю, и не всегда доставляются в целости и сохранности. Повреждения во время транспортировки дорого обходятся предприятиям, а когда груз прибывает по­ врежденным после долгого путешествия, не всегда легко выяснить, что с ним произошло. С помощью ИИ периферийных устройств логистическая компания может при­ крепить к дорогостоящим грузам устройство, которое сможет определять, когда дорогой товар находится под угрозой повреждения. Например, если устройство
60 Глава 2 оснащено акселерометром, оно может использовать модель машинного обуче­ ния, чтобы отличать обычные удары и толчки от конкретных типов грубого обращения, которые могут привести к повреждению. Любое событие грубого об­ ращения может быть зарегистрировано вместе с отметкой времени и местополо­ жением GPS. Журналы можно загружать периодически, когда устройство находит возмож­ ность подключиться. По прибытии, если обнаруживаются какие-либо поврежде­ ния, компания может проанализировать журналы, чтобы определить время и ме­ сто, где они произошли, что позволит найти и устранить причину проблемы. Почему этот вариант использования подходит для ИИ периферийных устройств? Давайте рассмотрим его с точки зрения BLERP. Пропускная способность. Для того чтобы обнаруживать внезапные удары, данные акселерометра должны быть достаточно высокочастотными. Это затрудняет передачу с маломощных беспроводных радиостанций, которые обычно имеют низкую пропускную способность. Обрабатывая данные на устройстве, мы можем значительно снизить требования к пропускной способности. Задержка. Не является важным фактором для этого варианта использования. Экономика. Беспроводная передача данных обходится дорого, тем более что устройство может находиться в любой точке мира. Использование ИИ периферийных устройств помогает экономить данные и снижать затраты. Надежность. Отправления в пути вряд ли будут иметь надежную связь, поэтому важно, чтобы устройство могло вести журнал, даже когда оно находится вне зоны действия. Если нам не нужно хранить необработанные данные, мы можем ре­ гистрировать все интересные события в небольшом объеме памяти. Конфиденциш,ьность. Не является важным фактором для этого варианта использования. Основные преимущества отслеживания объектов При отслеживании объектов обычно используются возможности подключения и экономические преимущества ИИ периферийных устройств. В мире много объек­ тов, и они не всегда находятся в удобных местах. Дешевые периферийные датчики искусственного интеллекта с недорогими и гибкими возможностями подключения могут обеспечить высокочастотное определение пробелов в цепочке поставок, мо­ ниторинг которых в противном случае был бы слишком дорогим. Конечно, точные преимущества развертывания ИИ периферийных устройств у ка­ ждого проекта свои. Например, в системе камер наблюдения за товарами на полках
Искусственный интеллект периферийных устройств в реальном мире 1 61 магазинов ИИ периферийных устройств может использоваться для обеспечения конфиденциальности. Если бы для наблюдения за полками магазинов использова­ лись подключенные к Интернету камеры, сотрудники ощущали бы себя под посто­ янным наблюдением Большого Брата. Но система отслеживания запасов, работаю­ щая в автономном режиме и предназначенная исключительно для пользы команды магазина, могла бы стать весомым подспорьем. Анализ и управление системами Наш современный мир построен на миллионах сложных, взаимосвязанных сис­ тем - от производственных линий до транспортных сетей, от климат-контроля до умной бытовой техники. Благосостояние наших экономик тесно связано с этими системами. Сбой в производстве может стоить огромного количества времени и денег, а повышение эффективности способно привести к огромной экономии затрат и рабочей силы и снижению выбросов. Мониторинг, контроль и обслуживание сложных систем - это огромные возмож­ ности для ИИ периферийных устройств. Способность принимать быстрые и надеж­ ные решения на периферии может повысить оперативность и отказоустойчивость систем, а детальная информация о состоянии системы может помочь нам лучше планировать будущее. Некоторые варианты использования ИИ периферийных устройств, связанные с анализом и контролем систем, можно найти в табл. Таблица 2.2. 2.2. Варианты использования ИИ периферийных устройств для понимания и управления системами Вариант использования Ключевые датчики Мониторинг нефтяной вышки на наличие необходимости Акселерометр, вибрация, в техническом обслуживании во избежание простоев нагрузка, температура, звук, и уменьшения утечек и разливов зрение и многое другое Автономное управление комбайном, помогающее Зрение, GPS фермеру быстро собрать урожай Анализ и формирование транспортного потока на ожив- Зрение, магнитометр ленной автомагистрали, использование переменных огра- ничений скорости для обеспечения движения автомобилей Направление механического инструмента с помощью Акселерометр, вибрация, датчиков обратной связи нагрузка Выявление дефектных изделий на производственной Зрение линии с помощью компьютерного зрения, улучшение контроля качества и быстрое выявление проблем . Чистка ковра роботом-пылесосом: экономия времени Зрение, датчики расстояния, владельца дома касании и тока ~
62 Глава 2 Таблица 2.2 (окончание) Вариант использования Ключевые датчики Загрузка товаров на склад с помощью роботов, снижение Зрение, датчики расстояния, затрат на рабочую силу и рисков для здоровья на рабочем касаний и света месте ОбнаружеRие вторжений в компьютерные сети с помощью Сетевые журналы •• анализа трафика Оценка износа шин автомобиля на основе вибрации Акселерометр во время д~шжения • Анализ тока двигателя можно использовать для определения застревания колес робота или инстру­ ментов для очистки. •• ИИ периферийных устройств не всегда требует данных датчиков: в качестве входных данных для алгоритмов могут использоваться любые локально доступные потоки данных. Это поистине огромная категория приложений, в которую входят многие вещи, ко­ торые мы ассоциируем с нашим видением "будущего": беспилотные транспортные средства, промышленные роботы и умные фабрики. Их объединяет использование ИИ периферийных устройств для мониторинга состояния сложной системы и обес­ печения обратной связи и контроля необходимости измерений. Ключевые преимущества для анализа и управления системами Широкая категория задач автоматизированного мониторинга и контроля систем позволяет использовать большинство преимуществ ИИ периферийных устройств. Экономика и надежность особенно важны для многих вариантов использования в бизнесе, а преимущества решений с низкой пропускной способностью и малой за­ держкой - это дополнительные аргументы в тех случаях, когда в противном слу­ чае можно было бы использовать сер верную систему. Глубокое погружение: профилактическое обслуживание на нефтяной вь1wке Если какое-либо промышленное оборудование внезапно выйдет из строя, то про­ стои и нарушения процессов, которые из-за этого возникнут, могут стоить ог­ ромных денег. Иногда такие ситуации могут представлять угрозу для здоровья людей и окружающей среды. Прогностическое обслуживание - это искусство определения момента, когда система вот-вот начнет сбоить, чтобы можно было принять меры до наступления сбоя. Нефтяная скважина - невероятно сложная машина, работающая в экстремаль­ ных условиях. Из-за шаткого положения буровой установки посреди океана не­ исправности могут привести не только к дорогостоящим простоям - на карту поставлена жизнь экипажа буровой установки, а разливы нефти могут привести к загрязнению океанской среды.
Искусственный интеллект периферийных устройств в реальном мире 1 63 Используя ИИ периферийных устройств, можно будет разворачивать устройства с датчиками для мониторинга ключевых компонентов нефтяной вышки, измеряя такие характеристики, как вибрация, температура и шум. Они могут изучить "нормальное" состояние каждой части системы и построить модель того, как вы­ глядит номинальная работа. Если условия начинают отклоняться от нормальных, устройства могут предупредить группу технического обслуживания для прове­ дения дальнейшего расследования. Особо сложные системы профилактического обслуживания могут даже управлять оборудованием сами, автоматически оста­ навливая работу при обнаружении опасной ситуации. Для того чтобы понять, почему эта задача хорошо подходит для ИИ периферий­ ных устройств, мы можем использовать модель BLERP. Пропускная способность. Большинство нефтяных вышек работает на спутниковой связи, что затрудня­ ет передачу больших объемов данных датчиков от тысяч компонентов буро­ вых установок в облако. Кроме того, в ходе буровых работ появляются места с очень ограниченными возможностями подключения. Например, конец бура может находиться на глубине нескольких километров! Прогностическое обслуживание на устройстве может превратить огромный поток зашумленных данных в упрощенную последовательность событий, ко­ торую легко передать. Задержка. Платить экспертам за поездку на нефтяную вышку и проверку оборудования дорого. Это означает, что проверки проводятся нечасто, поэтому скорость выявления проблемы снижается. Благодаря постоянному мониторингу со стороны периферийной системы ИИ проблемы можно выявлять и устранять сразу же после их возникновения. Экономика. Профилактическое обслуживание позволяет сэкономить огромные суммы де­ нег, которые в противном случае могли бы быть потеряны из-за простоя. Кроме того, мониторинг с помощью интеллектуальных датчиков, оснащен­ ных искусственным интеллектом, оказывается намного дешевле, чем плата людям за опасную работу по проверке тяжелой техники. Надежность. В экстремальных морских условиях рассчитывать на надежный транспорт или связь можно не всегда. Используя ИИ периферийных устройств, можно продолжать анализировать состояние оборудования, даже если обычная рабо­ та оказывается нарушенной. Конфиденциат1ьность. Для этого варианта использования не имеет большого значения.
Глава 64 2 Анализ людей и живых существ Биологический мир сложен, запутан и изменчив. Возможность понимать происхо­ дящее и реагировать на него в режиме реального времени имеет огромное значе­ ние. В эту категорию входят ориентированные на человека технологии, такие как фитнес-часы и развивающие игрушки, а также системы мониторинга природы, сельского хозяйства и микромира. Эти приложения помогают преодолеть разрыв между биологией и технологиями, позволяя нашим строгим и постоянным компьютерным системам взаимодейство­ вать с динамичным и гибким миром жизни на Земле. По мере того, как наше пони­ мание биологии улучшается, эта область будет продолжать расти. В табл. 2.3 показаны примеры сценариев использования ИИ периферийных уст­ ройств, которые помогают людям и компьютерам понимать друг друга. Таблица 2.3. Варианты использования ИИ периферийных устройств с участием людей Вариант использования Ключевые датчики Оповещение работников в опасной среде об отсутствии у Зрение них защитного снаряжения Анализ человеческих жестов для управления Зрение,акселерометр,радар видеоигрой Выявление ухудшения состояния здоровья пациента Биосигналы, медицинское интенсивной терапии и уведомление фельдшера оборудование Распознавание проникновения в дом и предупреждение Зрение, звук, акселерометр, властей магнитные датчики Классификация физической активности с помощью датчи- Акселерометр, ков в умных часах ние пульса Распознавание голосовых команд пользователя и управле- Аудиодатчики GPS, измере- ние устройством Подсчет количества людей, ожидающих на автобусной Зрение остановке Предупреждение водителя, когда он засыпает за рулем Зрение автомобиля Наш мир наполнен растениями, животными и другими живыми существами. В табл. 2.4 показаны примеры вариантов использования ИИ периферийных устройств, позволяющие разобраться в них.
Искусственный интеллект периферийных устройств в реальном мире Таблица 2.4. Варианты 1 65 использования ИИ перифериliных устройств с участием живых существ Вариант использования Ключевые датчики Информирование исследователей о том, что дикая приро- Зрение, звук да, представляющая интерес, обнаружена с помощью удаленной камеры наблюдения Диагностика болезней сельскохозяйственных культур Зрение, датчик летучих в отдаленных сельских регионах без покрытия сотовой органических соединений связи Акустический Распознавание звуков, издаваемых морскими млекопитающими, для отслеживания их движений и анализа поведения Тепловизор, зрение Предупреждение жителей деревни о приближающемся слоне, чтобы избежать конфликта между людьми и животными Классификация поведения сельскохозяйственных живот- Акселерометр ных с использованием умного ошейника для оценки состояния здоровья Идеальное приготовление еды благодаря мониторингу и Зрение, датчик температуры, управлению кухонным прибором, оснащенным датчиками датчик летучих органических u• соединении • Датчики летучих органических соединений (volatile organic compound, VOC) могут обнаруживать различные типы газов. Ключевь1е преимущества дпя анализа людей и живых существ В большой области приложений, связанных с людьми и живыми существами, за­ действуются все аспекты модели BLERP. Тем не менее это категория, где конфи­ денциальность может быть особенно важна. Существует множество приложений, которые технически осуществимы с использованием серверного ИИ, но становятся социально приемлемыми только тогда, когда выполняются на устройстве. Самый распространенный пример как Siri от Арр\е или Google - цифровые персональные помощники, такие Ассистент от Google. Как обсуждалось ранее, личные помощники используют модели на устройстве, постоянно прослушивая ключевые слова. Только после обнаружения такого слова звук передается в облако. Без ком­ понента на устройстве помощнику пришлось бы постоянно передавать поставщику услуг весь аудиопоток. Это совершенно расходится с ожиданиями большинства людей в отношении конфиденциальности. Перенося функциональность на устройства и избегая передачи данных, мы откры­ ваем огромные возможности, особенно в сфере машинного зрения, для которого до недавнего времени требовались большие модели, которые можно было запускать только в облаке.
66 Глава 2 Глубокое погружение: наблюдение за редкими экземплярами дикой природь1 с помощью камер Следовая камера, или фотоловушка, это особый тип камеры, предназначен­ - ный для наблюдения за дикой природой. У нее прочный, защищенный от атмо­ сферных воздействий корпус, аккумулятор большой емкости и датчик движения. Камера смотрит на звериные тропы и автоматически делает снимки всякий раз, когда обнаруживает движение. Исследователи, наблюдающие за конкретными видами, устанавливают фотоло­ вушки в отдаленных местах и оставляют их на долгие месяцы. Затем они загру­ жают фотографии с камеры и используют их, чтобы лучше понять поведение ис­ следуемого вида. Например, они могут попытаться оценить, сколько особей существует. У фотоловушек есть несколько существенных проблем, требующих много вре­ мени и денег. • На большинстве фотографий нужного животного нет. Вместо этого камера срабатывает на нецелевые виды или случайные движения в поле зрения. • Из-за большого количества ложных срабатываний отправлять уведомления о фото по сети было бы бесполезно. Вместо этого исследователи отправляются в удаленное место, чтобы забрать сохраненные фотографии. Это чрезвычайно дорого и может привести к потере данных, если карта памяти заполнится, а также к ненужным поездкам, если ничего интересного сфотографировать не удастся. • Исследователям приходится просматривать тысячи бесполезных фотографий, чтобы найти из них единицы полезных. Камеры-ловушки с ИИ периферийных устройств можно оснастить моделями машинного зрения с глубоким обучением, способными идентифицировать целе­ вые виды и отбрасывать изображения, где нужный вид не изображен. Это озна­ чает, что исследователям больше не придется беспокоиться о заполнении карт памяти бесполезными изображениями. Более того, это означает, что камеры по­ тенциально могут быть оснащены маломощными или сотовыми радиопередатчи­ ками, которые позволят им сообщать о наблюдениях за животными без необхо­ димости выезда специалиста. Это может значительно снизить стоимость исследования и увеличить объем потенциально выполнимой научной работы. Модель BLERP может точно сказать нам, почему это приложение отлично под­ ходит для ИИ периферийных устройств. Пропускная способность. Фотоловушки часто размещаются в отдаленных районах с плохой связью - возможно, единственным вариантом являются дорогие спутники с низкой пропускной способностью. С помощью ИИ периферийных устройств количе­ ство сделанных фотографий можно сократить настолько, чтобы можно было передать их все.
Искусственный интеллект периферийных устройств в реальном мире 1 67 Задержка. Без ИИ периферийных устройств задержка, связанная с отправкой исследова­ теля для сбора фотографий с фотоловушек, может измеряться месяцами! Ра­ диосвязь и передовой ИИ позволяют сразу анализировать фотографии и по­ лучать полезную информацию без необходимости ждать. Экономика. Огсутствие необходимости в выездах экономит большие суммы денег. То же самое можно сказать и об отказе от ненужного использования дорогих спут­ никовых радиостанций. Надежность. Если ненужные фотографии можно выбросить, карта памяти будет запол­ няться дольше. Конфиденциш~ьность. Камера с ИИ может удалять фотографии людей, сохраняя их конфиденциаль­ ность (например, местных жителей или туристов). Преобразование сигналов С точки зрения компьютера наш мир состоит из сигналов: временнь1х рядов пока­ заний датчиков, каждый из которых описывает небольшую часть ситуации или ок­ ружающей среды. Рассмотренные выше категории приложений в основном ориен­ тированы на интерпретацию этих сигналов и соответствующее реагирование на них. Обрабатываются данные от одного или нескольких датчиков, и создается про­ стой выходной сигнал, который либо облегчает интерпретацию человеком, либо может использоваться в качестве управляющего сигнала для автоматизированной системы. Эта последняя категория немного отличается от других. Иногда вместо преобразо­ вания необработанного сигнала в мгновенное решение мы просто хотим преобра­ зовать один сигнал в другой (табл. ботка сигнш,ов" главы 1, 2.5). Как обсуждалось в разд. "Цифровая обра­ цифровая обработка сигналов является важной частью встроенных приложений. В вариантах использования, которые идут гораздо дальше традиционного конвейера DSP, преобразование является конечной целью, а не по­ бочным эффектом. Таблица 2.5. Варианты использования ИИ периферийных устройств для преобразования сигналов Вариант использования Тип сигнала Фильтрация фонового шума для улучшения качества звонков на мобильном Аудио телефоне Удаление шума с фотографий, снятых на камеру смартфона Зрение
68 Глава 2 Таблица 2.S (окончание) Вариант использования Тип сигнала Создание музыки Д)lЯ аккомпанирования музыканту во время занятий Аудио Размытие фона видеопотока во время удаленной рабочей встречи Зрение Генерация реалистичной человеческой речи из текста Аудио Перевод одной письменной речи на другую с помощью камеры смартфона Зрение,текст Повышение частоты дискретизации звука с низким разрешением, чтобы он Аудио лучше звучал для человеческого уха Сжатие видео с использованием глубокого обучения, чтобы его можно Видео было передавать по медленной сети Создание текстового представления изображения Д)lЯ слабовидящих Аудио Транскрипция разговорного разговора в текст Д)lЯ удобства ведения заметок Аудио Использование данных от дешевых датчиков для моделирования выходных сигналов дорогого датчика Временная последовательность Ключевые преимущества преобразования сигналов Поскольку цифровые сигналы изменяются во времени, приложения в этой области, как правило, работают лучше в условиях низкой задержки, предоставляемой ИИ периферийных устройств. Пропускная способность также особенно важна, по­ скольку требуется доступ к исходному сигналу. Для передачи преобразованного сигнала часто требуется такая же пропускная способность, а может, и б6льшая. Глубокое погружение: размь1тие фона на удаленных встречах С ростом распространенности удаленной работы и видеоконференций сотрудни­ кам пришлось привыкать к тому, что их домашнее пространство стало не таким уж и личным. Для того чтобы обеспечить некоторую конфиденциальность, во многих инструментах для видеоконференций появилась функция размытия фона видеопотока, при этом изображение человека на видео остается нетронутым. Эти инструменты основаны на методе сегментации, который использует модели глубокого обучения для идентификации пикселов в потоке видео, принадлежа­ щих к той или иной категории. В данном случае модель обучается различать че­ ловека и фоновый пейзаж. Входными данными является необработанный поток видео с камеры. На выходе получается поток видео с тем же разрешением, но с размытыми фоновыми пикселами, что не дает разглядеть фон. Для сохранения конфиденциальности важно, чтобы этот метод использовал ИИ периферийных устройств, иначе неразмытое видео будет передаваться ку да-то в сеть. Вместо этого сегментация и размытие выполняются на устройстве перед передачей данных.
Искусственный интеллект периферийных устройств в реальном мире Вот как этот вариант использования описывается с помощью модели 1 69 BLERP. Пропускная способность. Преобразование лучше всего работает в случае, если оно происходит с исход­ ным видеопотоком высокого разрешения, а не со сжатой версией с низким разрешением, которая может содержать визуальные артефакты. Часто пере­ дать видео высокого разрешения оказывается невозможно, поэтому преобра­ зование необходимо выполнять на устройстве. Задержка. Выполнение преобразования на удаленном сервере может добавить дополни­ тельную задержку по сравнению с прямой отправкой видеопотока одноранго­ вому узлу. Выполнение преобразования на устройстве устраняет этот шаг. Экономика. Дешевле выполнить необходимые вычисления на устройстве, отправляющем видео, а не в облаке, где за это придется платить поставщику услуг. Надежность. Если в качестве посредника выступает облачный сервер, конвейер потокового видео становится более сложным, и в нем появляется больше точек отказа. Обработка на устройстве упрощает конвейер и снижает вероятность сбоя. Конфиденциш,ьность. Когда данные преобразуются на устройстве, пользователь может быть уверен, что никто никогда не увидит исходное видео. Еще одно интересное применение для преобразования данных - идея виртуш,ьно­ го датчика. В некоторых ситуациях инженерные или финансовые ограничения мо­ гут помешать вам оснастить устройство всеми необходимыми датчиками. Напри­ мер, вам нужен высокоточный датчик, который оказывается слишком дорог для промышленного использования. Для того чтобы обойти эту проблему, возможно, удастся создать виртуальный дат­ чик - искусственный поток данных, который выдает сигналы, почти не уступаю­ щие реальным в качестве. Для этого алгоритм ИИ периферийных устройств может обрабатывать другие сигналы (например, объединять показания нескольких более дешевых датчиков) и пытаться реконструировать сигнал нужного датчика на осно­ ве содержащейся в них информации. Например, при монокулярной оценке глубины (https://oreil.ly/LMBbU) модель обучается оценивать расстояние до объектов с помощью простого датчика изобра­ жения. Обычно для этого требуется более дорогое решение, например стереоско­ пическая камера или лазерный датчик расстояния. Мы рассмотрели четыре высокоуровневые категории, в которые можно сгруппиро­ вать большинство периферийных приложений ИИ. По мере развития ИИ перифе­ рийных устройств мы увидим еще больше потенциальных вариантов использова-
70 Глава 2 ния. Но технологическая осуществимость еще не делает идею автоматически хо­ рошей. В следующем разделе мы поговорим о важности ответственного проектиро­ вания и узнаем о некоторых подводных камнях, которые могут привести к тому, что передовые приложения ИИ принесут больше вреда, чем пользы. Ответственное создание приложений В первой части этой главы мы рассмотрели некоторые наиболее интересные потен­ циальные применения ИИ периферийных устройств, а в следующей главе мы зало­ жим основу для анализа проблем и принятия решения о том, можно ли решать их с помощью ИИ периферийных устройств. Как говорилось в разд. "Ответственность, этичность и эффективность искус­ ственного интеллекта" во введении, крайне важно на каждом этапе пути любого проекта анализировать и проверять, что его разработка и использование выполня­ ются с должной ответственностью. Это не какой-то формальный процесс, когда мы радостно тыкаем в какие-то галочки в соглашениях, а затем продолжаем нашу ра­ боту. Плохо спроектированные технологические продукты могут стать катастро­ фой, разрушающей жизни и карьеры конечных пользователей продуктов, предпри­ ятий, их продающих, и создающих их разработчиков. Примером тому является (https://oreil.ly/UMkXa). подразделение беспилотных автомобилей Uber Компания по совместному использованию автомобилей начала агрессивную кампанию по разработке беспилотного автомобиля, наняв све­ тил отрасли и инвестировав в разработку миллиарды долларов. Компания так спе­ шила проверить систему на реальных улицах, что некорректные процедуры безо­ пасности и неэффективное программное обеспечение привели к трагической гибели пешехода: Эта катастрофа привела к закрытию программы беспилотных автомобилей Uber, увольнению сотен сотрудников и срочной продаже подразделе­ ния беспилотных автомобилей другому бизнесу3. Создание беспилотного автомобиля, если все будет сделано правильно, может при­ вести к повышению безопасности дорог и сокращению выбросов. Звучит как бла­ городная миссия. Но сложная среда ИИ периферийных устройств полна потенци­ альных ловушек, преодолеть которые оказывается сложно. Если принять во внимание эти риски, технологический проект с благими намерениями может стать смертельно опасным минным полем. В случае с Uber беспилотный автомобиль стал жертвой отказов систем машинного обучения: он был неспособен понимать ситуации, не встречавшиеся в его обучаю­ щих данных. По данным Национального совета по безопасности на транспорте, у беспилотного автомобиля 3 Uber не было "способности классифицировать объект как Глава подразделения Энтони Левандовски позже был приговорен к восемнадцати месяцам тюрем­ ного заключения за кражу интеллектуальной собственности, что позволяет предположить, что эти­ ческие проблемы у них были не единичны.
Искусственный интеллект периферийных устройств в реальном мире пешехода, если этот объект не находился рядом с пешеходным 1 71 переходом" (https://oreil.ly/A-URg). Существует много факторов, которые способствуют таким катастрофическим сбо­ ям. Со стороны разработчиков это некомпетентность и халатность в выводе беспи­ лотного автомобиля на дороги общего пользования, когда он не прошел проверку на способность справляться даже с самыми обычными ситуациями. В случае с Uber это привело непосредственно к гибели человека и краху подразделения компании. Мы можем предположить, что команда, создавшая программное обеспечение для беспилотных автомобилей Uber, состояла из умных и способных людей, ведь их набирали как лучших в своем деле. Так как же получается, что способные люди при создании и внедрении технологий упускают из виду очевидное? К сожалению, правда заключается в том, что хорошо создавать технологии трудно, а еще трудно решать сложные проблемы с помощью технологий, которые по своей природе не смотрят на задачу со всех сторон. Помимо фундаментальных техниче­ ских проблем, вы как профессионал обязаны знать пределы своей технологии, тща­ тельно изучать свои процессы, безжалостно критиковать свою работу и быть гото­ выми закрыть проект, если кажется, что он идет не так, как надо. Продукт, который непреднамеренно причиняет вред людям, - это плохой продукт, какой бы блестя­ щей ни была команда, которая его разработала. В деловой среде вы можете бороться с организационной инерцией, которая хочет скорее выдать продукт на рынок, а не обеспечить его безопасность. Но вы всегда должны помнить, что, если вы пренебрегаете своими профессиональными обязан­ ностям, в конечном итоге ваши средства к существованию, репутация и свобода окажутся под угрозой. Хуже того, вы можете создать продукт, который разрушит жизни других, и будете сожалеть об этом до конца своих дней. Ответственный дизайн и этика искусственного интеллекта Ответственный дизайн имеет решающее значение для создания эффективных про­ дуктов. Для того чтобы уделить е.му достаточно внимания, авторы пригласw~и для написания следующего раздела Вибке (Туссен) Хутири (https:llwieb ketoussaint.com), научного сотрудника лаборатории киберфизического интеллекта Делфтского технического университета. Вибке проводит междисциплинарные исследования на стыке прикладного машинного обучения и граничных вычислений, уделяя особое внимание разработке надежных систем машинного обучения для /оТ. Повлекшие ущерб сбои ИИ, как описано ранее в этой главе, сделали этику ИИ важ­ ным фактором для большинства компаний, интегрирующих ИИ в свои продукты. Для разработчиков этика важна, но зачастую оказывается сложно понять, что такое этика и как ее применять на практике. Тщательное изучение ценностей, лежащих в основе процесса разработки продукта (см. следующую врезку), позволяет объеди­ нить этику и разработку ИИ периферийных устройств. Взяв за основу ценности, можно перейти к практике ответственного проектирования.
Глава 72 2 Ценности в дизайне продукта Продукты неотделимы от контекста, в котором они используются. Эrо означает, что продукт хорош только в том случае, если он полезен для выполнения своей задачи. Конечно, продукты иногда используются для неожиданных альтернатив­ ных целей, выходящих за рамки первоначально запланированного дизайна. Од­ нако для разработчика очень рискованная затея надеяться на непредсказуемое перепрофилирование вместо того, чтобы изначально правильно все спроектиро­ вать. На самом деле продукты редко бывают исключительно полезными. Полез­ ность - это лишь самый минимум того, что пользователи ожидают от продукта. В зависимости от контекста продукты также должны быть безопасными в ис­ пользовании, долговечными, иметь низкие производственные и эксплуатацион­ ные затраты, а также не образовывать вредные отходы на протяжении всего про­ изводства, эксплуатации и после утилизации. И это лишь часть нефутщио11а1ьных требований (т. е. требований, которые не влияют на техниче­ скую производительность), которые столь же важны для успеха продукта, сколь и технические характеристики. Работа разработчиков сложна, поскольку требования бывают взаимоисключаю­ щими и требуют компромиссов. Нахождение и определение приоритетов этих компромиссов - это и есть самая суть проектирования. Обычно люди выбирают компромиссы, исходя из своих ценностей. Такие ценности, как устойчивое раз­ витие, демократия, безопасность, конфиденциальность или равенство, - это принципы, которые вы применяете, часто неосознанно, для принятия решений в своей жизни ( например, если конфиденциальность является одной из ваших ос­ новных ценностей, вам захочется узнать о преимуществах ИИ, потому что вы не хотите, чтобы ваши личные данные достались третьим лицам). Вполне естественно, что разработчики привносят свои ценности в процесс про­ ектирования ИИ периферийных устройств. Но здесь есть большой нюанс. Цен­ ности индивидуальны, и у каждого народа и культуры они свои. Таким образом, вы не можете полагаться на собственную эвристику принятия решений или на точку зрения схожих с вами по духу команд, пытаясь создать успешный продукт, отвечающий потребностям самых разных пользователей. Важно организовать процесс достижения консенсуса относительно того, как и какие ценности долж­ ны определять ваши решения в проектировании, и он должен стать частью вашей работы. Эrот раздел представляет собой лишь тизер, а узнать больше о проектировании с учетом ценностей можно в работе "Design for Values - An Introduction" (Ьttps://oreil.ly/Y7BHu) Делфтского технического университета. Для ответственного проектирования разработчику нужно знать пределы своих "строительных" материалов и владеть инструментами. Более того, ему необходимо оценивать, соответствует ли продукт желаемому набору функциональных и не-
Искусственный интеллект периферийных устройств в реальном мире 1 73 функциональных требований. Именно здесь машинное обучение отличается от лю­ бого другого аппаратного или программного приложения, которые вы разрабаты­ вали ранее. В машинном обучении данные - это одновременно и "кирпичики", и "термометр". Для ИИ периферийных устройств это вырождается в интересные вещи. Данные - это ваши "кирпичики". Для моделей машинного обучения в ИИ перифе­ рийных устройств данные являются строительными блоками. Качество ваших дан­ ных влияет на качество вашего продукта. Проще говоря, если чего-то нет в обу­ чающих данных, предсказать это не получится. Если что-то недостаточно представлено в обучающих данных, прогноз будет ненадежным. Если чего-то слишком много в обучающих данных, оно будет прогнозироваться чаще остально­ го. Анализируя представление данных, важно учитывать распределение подгрупп по целевым меткам, а не только представление подгрупп. Также важно следить за качеством целевых меток в подгруппах, поскольку неправильно размеченные обу­ чающие данные повлияют на качество ваших моделей. Данные - это ваш "термометр". Если обучающие данные оценочные данные - - это кирпичики, то это "термометр", измеряющий качество модели. Использова­ ние наборов оценочных данных, которые не отражают сценарии вашего приложе­ ния, похоже на использование некалиброванного термометра для измерения темпе­ ратуры. Важно иметь высококачественные оценочные данные. В статистике для работы с небольшими выборками требуется особый подход. Общие метрики, ис­ пользуемые для оценки моделей ML, предполагают достаточную репрезентатив­ ность выборки. Для оценочных данных важно, чтобы все категории меток были достаточно представлены, чтобы оценка была статистически значимой. Если кате­ гория оценивается не по всем целевым меткам, пределы моделей неизвестны. Использование данных для построения и оценки моделей имеет множество послед­ ствий. Например, данные являются историческими и представляют прошлое, а не будущее. Данные представляют собой лишь снимок меняющегося мира. Данные зависят от места, где они собираются, и от объекта, который данные описывают. Все это означает, что данные являются лишь выборочными и никогда не бывают полными. Неполные данные являются основной причиной предвзятости и дискри­ минации в сфере ИИ, которая причиняет вред людям и порождает скандалы. В главе 7 мы углубимся в наборы данных и объясним все эти концепции с нуля. Важные концепции ответственного дизайна Приведем некоторые из важнейших терминов ответственного проектирования, используемых в вопросах справедливости машинного обучения. Предвзятость. В самом общем смысле предвзятость означает искажение точки зрения. В ал­ горитмических системах, таких как ИИ, предвзятость также описывает систе­ му, регулярно производящую результаты, которые благоприятствуют одним и предвзято относятся к другим группам или категориям. Предвзятость не обя­ зательно относится к людям. Если ваше приложение не ориентировано на оп­ ределенную группу или категорию, предвзятость - это, как правило, плохо.
74 Глава 2 Дискриминация. Дискриминация - это результаты процессов принятия различных решений в пользу разных людей на основе каких-то чувствительных атрибутов. Закон дает формальные определения того, какие атрибуты в каких приложениях ох­ раняются. Чувствительные атрибуты также можно определить неформально, исходя из того, что сообщество или общество считает достойным защиты в целях обеспечения равенства. Справедливость. Справедливость - самое сложное для определения понятие, ведь для него не существует универсальной формулировки. Напротив, справедливость во мно­ гом зависит от контекста, от типа приложения и его контекста, рисков и вре­ да, которые могут возникнуть в результате неудачи, а также ценностей заин­ тересованных сторон. Люди часто ценят справедливость наряду с другими ценностями, такими как равенство и инклюзивность. Предвзятость может привести к несправедливости, и многие люди считают дискриминацию не­ справедливой. Для того чтобы смягчить предвзятость, избежать дискриминации и оценить потен­ циальную несправедливость, вам необходимо понять контекст, в котором будет использоваться ваш дизайн: ♦ Кто и как будет использовать ваш дизайн? ♦ Какой пробел заполняет ваш дизайн? ♦ В каких условиях среды будет работать ваш дизайн? ♦ Есть ли злоумышленники, которые могут попытаться нарушить работу вашего продукта? ♦ Что может случиться, если ваш дизайн будет работать не так, как задумано? Вы же не будете создавать ИИ периферийных устройств из кирпичей необожжен­ ной глины в городе, где 200 дней в году идет дождь? Внимательно ли вы учли кон­ текст и собрали обучающие данные, позволяющие построить структуру, подходя­ щую для окружающей среды? Тщательно ли откалиброван термометр ваших оценочных данных? Подведем итог этому краткому введению в ответственный дизайн и этику ИИ. От­ ветственный разработчик - это такой человек, который умеет использовать свои инструменты для придания материалам формы, которая заполняет пустоту, ко­ торую заинтересованные стороны хотят заполнить в соответствии с ценностя­ ми, согласованными всеми, кого затрагивает проект. Легко перейти к ответственному проектированию. Вы должны знать пределы своих данных и пределы своих моделей. Поговорите с людьми, которые будут использовать ваш продукт. Если из этого раздела вы можете сделать только один вывод, то он должен быть таким: KUDOs (Know Your Data, Obviously - очевид-
Искусственный интеллект периферийных устройств в реальном мире но, знайте свои данные) 1 75 слава тем, кто разрабатывает ответственный ИИ пери­ - ферийных устройств. - Вибке (Туссен) Хутири, Делфтский технический университет Черные ящики и предвзятость Существует два аспекта ИИ периферийных устройств, которые на практике под­ талкивают его к вредительству: черные ящики и предвзятость. Термин "черный ящик" - это метафора системы, непрозрачной для анализа и по­ нимания. Данные поступают, решения принимаются, но внутренние процессы, ко­ торые приводят к этим решениям, остаются непостижимыми. Это распространен­ ная критика современного ИИ, особенно моделей глубокого обучения, которые, как известно, тру дно анализировать. Некоторые алгоритмы, например случайные леса, довольно легко интерпретировать - если у вас есть доступ к модели, вы можете прочитать ее внутреннюю структуру, чтобы понять, почему она принимает те или иные решения. Но на устройстве дела обстоят совсем по-другому. Периферийные устройства часто по сути своей невидимы. Они призваны сливаться с фоном искусственной среды, встроены в здания, товары, транспортные средства и игрушки. Это буквально черные ящики. Их содержимое невидимо и часто защище­ но уровнями безопасности, не позволяющей разобраться в них подробнее. Как только алгоритм ИИ, каким бы простым он ни был, развертывается на перифе­ рийном устройстве, он становится черным ящиком для всех, кто его использует. А если устройство используется в реальных условиях, отличных от тех, которые предполагали его первоначальные разработчики, даже они могут не иметь пред­ ставления о том, почему оно ведет себя именно так. Опасность может быть разной, в зависимости от того, кто вы. Пользователи уст­ ройства - люди, которые его купили и установили, - теперь полагаются на сис­ тему, которую они до конца не понимают. Они могут доверять устройству в приня­ тии правильных решений, но у них нет никаких гарантий, что это доверие оправдано. В примере с беспилотным автомобилем Uber водитель-испытатель должен был иметь возможность вмешаться в случае опасности. Но в конечном счете человек­ оператор не может надежно компенсировать неисправность автоматизированной системы, независимо от того, как хорошо он обучен. Полагаться на вмешательство человека во избежание трагедии в эксперименте было безответственным проект­ ным решением. Пешеход - невинный прохожий, случайно перешедший дорогу, также стал жерт­ вой черного ящика модели. Если бы пешеходов предупредили, что приближаю­ щийся автомобиль - это лишь ненадежный прототип беспилотного автомобиля, они бы дважды подумали, прежде чем переходить дорогу. Но периферийный ИИ, спрятанный внутри обычного автомобиля, не выдал никакого предупреждения. У пешехода не было оснований предполагать, что автомобиль будет вести себя как-то отлично от автомобилей, управляемых человеком.
76 Глава 2 Наконец, черный ящик ИИ периферийных устройств создает риск для разработчи­ ков. Например, представьте, что для наблюдения за популяцией инвазивных видов используется камера-ловушка с искусственным интеллектом. Может оказаться, что камера выдает много ложноотрицательных результатов, т. к. неудачно распознает каждое третье инвазивное животное, проходящее мимо нее. Если камера-ловушка установлена в удаленном месте, проверить соответствие выходных данных камеры реальности может оказаться невозможным. Исследователи получат заниженную оценку популяции животных, но даже не поймут этого, поскольку исходных дан­ ных может не существовать. В отличие от серверного ИИ, который можно развертывать и мониторить вместе с обрабатываемыми им данными, ИИ периферийных устройств часто развертывается в ситуациях, когда сбор необработанных данных невозможен. На практике это оз­ начает, что иногда у разработчиков нет прямого способа оценить правильность ра­ боты приложения, когда оно уже функционирует в полевых условиях. На практике исследователи, занимающиеся сохранением природы, решают эту ди­ лемму, сохраняя все сделанные фотографии и выполняя ручную проверку по мере заполнения карты памяти, пока не будет понятно, что системе можно доверять, но это требует времени и денег. Если не существует эквивалентного механизма для мониторинга приложения или его невозможно реализовать в рамках имеющегося бюджета, ответственное развертывание приложения может оказаться невозможным. Черные ящики и объяснимость Противоположностью системы "черный ящик" является объяснимая система. Некоторые алгоритмы ИИ более объяснимы, чем другие, как мы увидим в разд. "Классическое машинное обучение" главы 4. Даже системы, в которых ис­ пользуются относительно непрозрачные алгоритмы, можно спроектировать та­ ким образом, чтобы сделать их более объяснимыми, хотя ценой этому может быть снижение производительности или увеличение сложности. У каждого при­ ложения будет свой компромисс. У некоторых проектов объяснимость все чаще становится юридическим требо­ ванием 4 . Стоит разузнать, следует ли вам соблюдать подобные нормы в вашей правовой среде. Опасность черных ящиков усугубляется опасностью предвзятости. Предвзятость в ИИ периферийных устройств приводит к тому, что система начинает работать с моделью, некорректно отражающей реальный мир. В системах весьма вероятно возникновение предвзятости, если разработчики не обращают внимания на хорошо известные ее источники. Перечислим наиболее распространенные источники пред­ взятости. 4 Как описано в статье Адриана Бибала и др. "Влияние законодательных требований на объяснимость в машинном обучении" (lmpact of Legal Requirements on Explainabllity in Machine Learning // arXiv. 2020 (https://oreil.ly/jNZ6m)).
Искусственный интеллект периферийных устройств в реальном мире 1 77 Человеческая предвзятость. У людей есть предвзятость, связанная с определенным мировоззрением, сфор­ мированным их опытом (например, разработчик не понимает, что пешеходы мо­ гут пренебрегать правилами дорожного движения 5 ). Предвзятость данных. Наборы данных отражают процесс сбора данных, а не реальность (т. е. набор данных может содержать только примеры людей, переходящих улицу на пеше­ ходном переходе). Алгоритмическая предвзятость. Все алгоритмы ИИ имеют врожденные ограничения 6 , и выбор и настройка алго­ ритма могут привести к предвзятости (т. е. выбранный алгоритм может неэф­ фективно работать с небольшими, тусклыми объектами, такими как далекоиду­ щие пешеходы в темное время суток). Предвзятость тестирования. Поскольку реальное тестирование сложно и дорого, оно часто охватывает толь­ ко общие случаи, что приводит к предвзятому тестированию (т. е. проведение исчерпывающего тестирования на искусственном тестовом наборе обходится дорого, и разработчики хотели сократить сценарий, не протестировав критиче­ ский сценарий). В системах ИИ избежать предвзятости сложно. У нас этот термин ассоциируется больше с преднамеренными формами дискриминации (такими как сексизм при найме сотрудника на работу), в технологических проектах это чаще всего происхо­ дит из-за непонимания контекста задачи, что затем усугубляется ограниченностью ресурсов. Для того чтобы смягчить предвзятость, команде разработчиков необходимы по­ мощь экспертов в предметной области, тщательно собранный набор данных (даже если он не совсем точно отражает условия реального мира), алгоритм, соответст­ вующий задаче, и достаточный бюджет для тестирования в реальных условиях. На самом деле многие команды разработчиков обращают на это внимание, только столкнувшись с дорогостоящими неудачами, связанными с предвзятостью. В сочетании с черным ящиком систем ИИ предвзятость создает рискованную ситуа­ цию. Как мы говорили ранее, пользователи, скорее всего, предполагают, что система работает. Они полагаются на правильную, безопасную и разумную эксплуатацию продукта. Не имея возможности проверить механизм его работы, они не могут про­ верить это предположение самостоятельно. Ответственность за удовлетворение ожи­ даний пользователей и работу с ними полностью лежит на разработчиках. 5 Переход улицы за пределами пешеходного перехода запрещен во многих частях США, где прово­ дился эксперимент 6 Uber. Модели машинного обучения обладают свойством, известным как индуктивная предвзятость (https://oreil.lyffiRok), которое отражает внутренние предположения модели о том, как устроен мир. Это индуктивное смещение необходимо для работы моделей, поэтому выбор подходящей модели очень важен.
78 Глава 2 В успешном проекте ИИ должны учитываться известные ограничения и должна обеспечиваться необходимая структура для защиты пользователей и общественно­ сти от потенциального провала. Команда, разрабатывающая продукт, должна опре­ делить параметры, в которых будет функционировать продукт, и убедиться, что пользователи знают об этих параметрах. В ходе прочтения этой книги мы изучим структуру, обеспечивающую такую осве­ домленность и позволяющую тормозить проекты, которые небезопасно выпускать в свет. Это непрерывный процесс, который должен продолжаться от первых кон­ цептов и до конца жизни продукта. Многие проекты тонут в этической трясине, когда вскрывается их истинная эффективность, а некоторые проекты просто непра­ вильны с самого начала. Технологии, которые вредят, а не помогают В современном мире стали широко распространенными системы наблюдения, и общественность бьmа вынуждена смириться с тем, что их везде понаставили, нико­ го не спросив. Применение ИИ для наблюдения - сложная тема. Хотя ИИ перифе­ рийных устройств потенциально может использоваться для сохранения конфиден­ циальности, его с тем же успехом можно уличить в нарушении прав человека. В ноябре дения 2019 года было обнаружено, что крупный поставщик камер видеонаблю­ Hikvision продавал камеру наблюдения, предназначенную для классифика­ ции расы людей (https://oreil.ly/06M6r). В то время как эксперимент Uber с беспилотным вождением привел к трагедии, вы­ званной плохой инженерией, технология расового профилирования Hikvisio11 явля­ ется (с точки зрения авторов этой книги, которые верят в демократическое общест­ во, личную свободу и равенство для всех) в корне неправильной. Эта система, если работает идеально, навязывает социальную предвзятость в отно­ шении определенной подгруппы людей. Предвзятость системы нельзя ограничить, ведь в данном случае это часть дизайна. Столь явные нарушения моральных ожиданий могут показаться очевидными, но человеческая психология - наивность, высокомерие или жадность - позволяет группе умных людей легко пересекать моральные границы, не задумываясь о вреде, который они могут причинить. Одним из примеров этого является сервис HireVue. В целях снижения затрат на прием рекрутов на работу компании используют про­ дукт HireVue для анализа записанных видео, в которых кандидаты отвечают на конкретные вопросы. Компания утверждает, что использует алгоритмы ИИ для оценки вероятности успеха кандидата на определенной должности. Разработчики HireVue по наивности не учли влияние на работу продукта предвзя­ тости человека, данных, алгоритмов и тестирования. Их продукт, созданный для использования аудиовизуальной информации при принятии решений о найме, неизбежно учитывал голос, акцент и внешний вид кандидатов. Порожденный этой системой явный риск дискриминации привел к судебному иску и негативной
Искусственный интеллект периферийных устройств в реальном мире реакции общественности, в результате чего ся от функций своего продукта и HireVue провести 1 79 пришлось частично отказать­ сторонний аудит алгоритмов (https://oreil.ly/R7Dy3). Еще один аспект, который следует учитывать, заключается в том, что технология ИИ периферийных устройств может использоваться клиентами для сторонних, не заложенных в продукт целей, и эти цели могут противоречить этике. Например, рассмотрим камеру-ловушку с ИИ, предназначенную для обнаружения исчезающих видов. Несмотря на то что фотоловушка предназначена для научных исследований, браконьеры могут легко использовать ее как инструмент для обнаружения живот­ ных, которых они хотят поймать и продать на черном рынке. При разработке при­ ложения важно учитывать эти потенциальные возможности использования "не по назначению", поскольку риск может быть настолько высок, что будет перевеши­ вать потенциальные преимущества продукта. Цена неосторожности Технологии, использующие ИИ, часто бывают предназначены для глубокой инте­ грации в наш мир и влияют на повседневное взаимодействие с нашими домами, местами работы, предприятиями, правительствами и друг другом. Это означает, что отказ этих систем может иметь для людей глубокие последствия. В этой книге мы не сможем полноценно обсудить множество вариантов такого влияния, но приведем несколько примеров. Нарушения по неосторожности. Медицинское оборудование может ставить пациентам неправильный диагноз, что влияет на процесс лечения. Оборудование для наблюдения может использовать закон против одних групп людей в большей степени, чем против других, что приведет к неравному право­ судию. Обучающие игрушки могут оказаться для некоторых. детей более эффективны­ ми, чем для других, что ограничивает доступ к возможностям обучения. Устройства безопасности могут выйти из строя из-за отсутствия испытаний при участии различных групп пользователей, что приведет к телесным повре­ ждениям. Незащищенные устройства могут быть взломаны преступниками, способствуя совершению преступлений. Умышленные этические нарушения. Повсеместное наблюдение с помощью ИИ может повлиять на личную конфи­ денциальность. Умные датчики могут быть использованы браконьерами для об­ наружения находящихся под угрозой исчезновения диких животных. Оружие, дополненное передовым искусственным интеллектом, может увеличить количество смертей в конфликтах и нарушить глобальный баланс сил.
80 Глава 2 Смягчение социального вреда Структура, которую мы приводим в этой книге, побудит вас у дел ять в процессе разработки время тому, чтобы понять социальные последствия вашего продукта и принять на основе ваших выводов решение о том, "годен" он или "не годен". От­ ветственный дизайн очень зависит от контекста, и смягчение общественного вреда должно осуществляться систематически и постоянно, чтобы вы не сбились с пра­ вильного пути. Лучшая практика создания ответсrвенных приложений ИИ - собрать команду разработчиков с разнообразными взглядами как на технические вопросы, так и на житейские. Человеческие предубеждения усиливают технические предубеждения, и у разнородной команды меньше шансов на то, что в коллективном мировоззрении останутся "слепые пятна". Если у вас небольшая команда, важно выделить время и деньги на разнообразие, а также обратиться к более широкому сообществу, чтобы найти в нем людей, готовых оценить ваши идеи и высказать по ним свои точки зрения. Психологическая безопасность и этический ИИ Проницательность команды имеет решающее значение для выявления потенци­ ального вреда, поэтому очень важно, чтобы каждый член команды чувствовал, что у него есть возможность высказаться и сделать так, чтобы его голос был ус­ лышан на протяжении всего процесса разработки. Даже в лучших рабочих усло­ виях сотрудникам бывает рискованно высказываться, если они боятся, что их мнение может поставить их в невыгодное положение. Например, представьте себе сотру дни ка, который замечает в продукте потенци­ альный риск, но думает, что о нем нельзя упоминать, т. к. не решается сорвать важный проект. А на самом деле сотрудник может сэкономить время, деньги и сохранить репутацию компании, указав на важную проблему. Но если сотрудник боится потенциального негативного влияния на свою карьеру, репутацию или моральный дух команды, он может решить ничего не говорить, пока не станет СЛИШКОМ ПОЗДНО. Психологическая безопасность - это ощущение возможности высказываться и обсуждать проблемы, не опасаясь негативных последствий. Она, наряду с куль­ турой, которая подчеркивает важность этики в ИИ, является необходимым усло­ вием для создания успешных проектов ИИ. Некоторые ценные ресурсы по этой теме описаны в разд. "Разнообразие" главы 5. Оценить "этичность" системы невозможно 7 • Вместо этого необходимо понять цен­ ности, лежащие в основе создания системы, что это за ценности, кому они принад­ лежат и в каком контексте они должны применяться. Это осознание позволяет нам превращать работу в полезные продукты, приносящие пользу, а не вред. 7 Тр-эвис Лакруа, Александра Саша Луччиони "Металические перспективы сравнительного анализа этики ИИ" (LaCroix Т., Luccioni 2022 (https://oreil.ly/RS4p 1)). А. S. Metaethical Perspectives оп ·вenchmarking' AI Ethics // arXiv. -
1 81 Искусственный интеллект периферийных устройств в реальном мире Существуют различные компании и службы, которые помогают командам ответст­ венно вести процесс разработки ИИ или проверять существующие приложения на предмет потенциального вреда. Если вы обеспокоены вопросами злонамеренного использования вашей работы "не по назначению", то дпя вас найдутся даже закон­ ные инструменты. Лицензии ResponsiЬ\e Al (RAIL, https://www.licenses.ai) - это технологические лицензии, призванные помочь разработчикам ограничить закон­ ное использование продуктов ИИ во вредоносных приложениях. Прикрепляя к своему продукту дпя предотвращения его RAIL, разработчики создают себе правовую основу неправильного использования в определенном списке приложений, регулируемом и расширяемом самим разработчиком. Например, часто по умолчанию бывают запрещены наблюдение, прогнозирование преступлений и создание фальшивых фотографий. Конечно, это помогает предотвратить этическое использование со стороны организаций, которые соблюдают юридические согла­ шения. Наконец, существует множество бесплатных высококачественных 01тайн-ресур­ сов, с помощью которых вы можете узнать больше об этичном и ответственном ИИ и оценить свою работу. Для начала приведем краткий список: ♦ руководство Беркли Хааса "Mitigating Вias in Artificial Intelligeпce" (https://oreil.ly/8uXGZ); ♦ рекомендуемые Google ♦ ресурсы методы ответственного ИИ Microsoft по ответственному (https://oreil.ly/ZOvEm); искусственному интеллекту ♦ инструментарий ответственного ИИ от ♦ исследование (https://oreil.ly/SBP-3); PwC (https://oreil.ly/zZllN); Google Brain "People + Al Research (PAIR)" (Ьttps://oreil.ly/bco24). Мы также рекомендуем прочитать работу "Principled Artificial Intelligeпce: Mapping Consensus in Ethical and Rights-Based Approaches to Principles for AI", где приведен подробный общий обзор текущих подходов к принципам ИИ (Ьttps://oreil.ly/8BM54) (https://oreil.ly/8BM54). Резюме В этой главе мы подробно узнали, как ИИ периферийных устройств вписывается в наш мир. Мы рассмотрели основные варианты использования, ключевые преиму­ щества и важные этические соображения, которые необходимо учитывать. Теперь углубимся в технические детали. В следующей главе мы узнаем о техноло­ гии, обеспечивающей работу ИИ периферийных устройств.

ГЛАВА 3 Аппаратное обеспечение для искусственного интеллекта периферийных устройств Пришло время познакомиться с устройствами, алгоритмами и методами оптимиза­ ции, которые используются в приложениях ИИ. В этой главе приведен широкий обзор наиболее важных технических элементов в этой области. К концу главы в вашем арсенале будут строительные блоки, необходимые для начала высокоуров­ невоrо планирования продукта ИИ периферийных устройств. Датчики, сигналы и источники данных Датчики - это электронные компоненты, которые позволяют устройствам изме­ рять окружающую среду и обнаруживать действия человека. Они варьируются от чрезвычайно простых (старые надежные переключатели и переменные резисторы) до умопомрачительно сложных (технология LIDAR (light detection and ranging) и тепловизионные камеры). Датчики предоставляют нашим ИИ периферийных уст­ ройств потоки данных, используемые для принятия решений. Помимо датчиков, существуют и другие источники данных, к которым устройства могут подключиться. Это могут быть журналы цифровых устройств, сетевые паке­ ты и радиопередачи. Несмотря на иное происхождение, эти вторичные потоки дан­ ных могут быть столь же интересными, как и источники информации для алгорит­ мов ии. Различные датчики предоставляют данные в разных форматах. В приложениях ИИ периферийных устройств обычно встречаются несколько форматов данных. Их можно обобщить следующим образом. Временные ряды. Данные временнь1х рядов - это изменение одного или нескольких значений с течением времени. Временной ряд может содержать несколько значений от од­ ного и того же физического датчика - например, один компонент датчика мо-
84 Глава 3 жет выдавать данные температуры и влажности. Данные временньrх рядов часто собираются путем опроса датчика с определенной частотой, например опреде­ ленное количество раз в секунду, в результате чего генерируется сигнал. Перио­ дичность опроса называется частотой дискретизации или просто частотой. Довольно часто показания (известные как выборки) собираются с постоянной частотой, поэтому временной интервал между двумя выборками всегда один и тот же. Другие временнь1е ряды могут быть апериодическими, т. е. данные собираются не с постоянной скоростью. Это бывает в случаях, если датчик обнаруживает определенные события - например, датчик приближения, который переключа­ ет сигнал, когда что-то приближается на определенное расстояние. В этом слу­ чае принято фиксировать точное время, когда произошло событие, а также само показание датчика. Временной ряд может представлять сводную информацию. Например, времен­ ной ряд может содержать информацию о количестве раз, когда что-то происхо­ дило в течение интервала с момента последнего значения. Данные временнь1х рядов - это наиболее распространенная форма данных дат­ чиков для ИИ периферийных устройств. Это особенно интересно, поскольку помимо значений датчика сигнал включает в себя информацию о времени полу­ чения значений. Это дает полезную информацию о том, как меняется ситуация. Помимо полезной информации о времени, данные временнь1х рядов ценны по­ тому, что они содержат несколько показаний одного и того же датчика, что сни­ жает влияние разовых аномальных показаний. Типичной частоты для временного ряда не существует - это может быть и одна выборка, а может и миллионы выборок в секунду. Аудиосигналы. - это особый случай данных временнь1х рядов, представляющий собой колебания звуковых волн при их распространении по воздуху. Обычно Ау диосигналы они захватываются с очень высокой частотой ку слух - - тысячи раз в секунду. Посколь­ это человеческое чувство, огромное количество исследований и раз­ работок было направлено на изобретения, упрощающие работу с аудиоданными на периферийных устройствах. К таким технологиям относятся специальные алгоритмы обработки сигналов, упрощающие обработку аудиоданных, которые в необработанном виде обычно захватываются с чрезвычайно высокой частотой. Как мы увидим позже, задача обработки ау диосигнала настолько распространена, что во многих аппаратных средствах есть встроенные функции для ее эффективного выполнения. Одно из наиболее распространенных применений обработки звука с использова­ нием ИИ - распознавание и классификация речи. При этом звук даже не обяза­ тельно должен находиться в диапазоне человеческого слуха. Датчики, исполь­ зуемые периферийными устройствами ИИ, потенциально могут захватывать ультразвуковые (выше, чем слышимы человеком) и инфразвуковые данные (ни­ же, чем слышимы человеком).
1 85 Аппаратное обеспечение для искусственного интеллекта периферийных устройств Изображение. Изображения - это измерения, выполненные датчиком, фиксирующим всю сцену, а не одну точку. В некоторых датчиках, например камерах, используется массив крошечных элементов для захвата данных со всей сцены за один раз. Другие датчики, такие как LIDAR, создают изображение, механически переме­ щая один сенсорный элемент по сцене в течение определенного периода времени. У изображений бывает два или более измерений. Обычно их можно рассматри­ вать как сетку пикселов, где значение каждого пиксела представляет собой не­ которое свойство сцены в соответствующей точке пространства. Базовый при­ мер этого принципа показан на рис . 3.1 слева. Размер сетки (например, 96 х 96 пикселов) называется разрешением изображения. Пиксел может иметь несколько значений, или каналов. Например, у черно­ белого изображения каждый пиксел имеет только одно значение, обозначающее, насколько светлым или темным пиксел является. У цветного изображения мо­ жет быть три значения на пиксел (в модели RGB), соответствующих трем цве­ там (красному, синему и зеленому), смешение которых составляет любой другой цвет видимого спектра. Эта структура показана на рис. Рис. а справа - 3.1. Слева 3.1 справа . показаны пикселы одноканального изображения, структура трехканального изображения, например фотографии RGB Типичное представление изображений в виде п-мерной сетки означает, что они содержат пространственную информацию об относительной близости различ­ ных аспектов сцены друг к другу. Эта информация чрезвычайно ценна для по­ нимания того, что находится на сцене. Существуют целые классы алгоритмов обработки изображений и компьютерного зрения, которые используют эту ин­ формацию. Изображения не обязательно должны содержать данные о видимом свете или о свете вообще . Это может быть инфракрасный свет (часто используемый для из­ мерения температуры частей сцены), время полета (в случае LIDAR, который измеряет, сколько времени требуется свету, чтобы достичь каждой части сцены) или даже радиоволны (данные, собранные радиотелескопом или на экране радара). Видео. С технической точки зрения, видео нь1х рядов Видео - - - еще один особый случай данных времен­ заслуживает отдельной категории из-за своей особой полезности. это последовательность изображений, каждое из которых представляет собой снимок сцены в определенный момент времени. Как временной ряд, видео имеет частоту дискретизации, хотя в случае видео ее обычно называют частотой
Глава З 86 кадров, поскольку каждое отдельное изображение в последовательности называ­ ется кадром. Видео - очень богатый формат: оно содержит как пространственную информа­ цию (внутри каждого кадра), так и временную информацию (между кадрами). Такое богатство означает, что видео обычно занимает много памяти, поэтому требует более мощных вычислительных устройств. Как представлены значения? Во всех описанных ранее категориях показания отдельных датчиков представ­ ляются с использованием отдельных числовых значений. Например, временной ряд представляет собой последовательность отдельных показаний, а изображе­ ние сетку, состоящую из отдельных показаний. - Каждое показание представляет собой число и может быть представлено на ком­ пьютере множеством различных способов. Например, рассмотрим числовые ти­ пы, используемые для представления данных датчиков в С++: ( 1 бит): число с двумя возможными значениями; • логическое значение • 8-битное целое число: число с • 16-битное целое число: число с 256 возможными значениями; 65 536 возможными значениями; • 32-битное число с плавающей точкой 1 : может представлять широкий диапазон чисел до семи десятичных знаков, вплоть до 3,4028235 х 1038 . Изменяя числовой тип, используемый для представления значения, разработчики могут пожертвовать числовой точностью ради уменьшения использования памя­ ти и сложности вычислений. Типы датчиков и сигналов На рынке существуют тысячи различных типов датчиков. Хороший способ сгруппиро­ вать их ность - по их модальности. По данным Университета Карнеги-Меллон, модаль­ это то, как что-то происходит или переживается (https://oreil.ly/WaiBM). С человеческой точки зрения наши чувства зрения, слуха и осязания имеют разные модальности. Не существует строго определенного списка модальностей датчиков, и более удач­ ные описания в разных отраслях и областях применения свои. В следующем разде­ ле мы рассмотрим некоторые группы, которые имеют смысл с широкой точки зре­ ния ИИ: ♦ акустика и вибрация; ♦ визуальные данные и сцена; ♦ движение и положение; 1 Согласно описанию стандарта IEEE 754 (https://oreil.ly/oGntJz).
Аппаратное обеспечение для искусственного интеллекта периферийных устройств ♦ силовое и тактильное воздействие; ♦ оптические, электромагнитные и радиационные датчики; ♦ экологические, биологические и химические датчики . 1 67 Существует также множество несенсорных источников данных, доступных для пе­ риферийных устройств, - мы их тоже рассмотрим. Акустика и вибрация Способность "слышать" вибрации позволяет периферийным устройствам с ИИ об­ наруживать движения, вибрации, а также общение человека и животного на рас­ стоянии. Это делается с помощью акустических датчиков, которые измеряют эффект вибраций, распространяющихся через среду, от воздуха (в случае микрофо­ нов, как на рис. 3.2) до воды (гидрофоны) или даже земли (геофоны и сейсмомет­ ры) . Некоторые датчики вибрации разработаны специально для использования с тяжелым промышленным оборудованием. Рис. 3.2. 3D-модель микрофона для микроэлектромеханических систем (МЭМС) поверхностного монтажа, который можно найти во многих современных продуктах Акустический датчик обычно предоставляет временной ряд, который описывает изменение давления в среде. Акустические сигналы содержат информацию на раз­ ных частотах - например, высокие и низкие ноты голоса певца. Акустические дат­ чики обычно работают в определенном диапазоне частот и могут не иметь линей­ ного отклика на частоты даже внутри этого диапазона. Помимо нелинейной частотной характеристики, способность акустических датчи­ ков улавливать высокие частоты зависит от их частоты дискретизации. Для точного захвата высокочастотного сигнала акустический датчик должен иметь достаточно высокую частоту дискретизации. При создании передового приложения искусст­ венного интеллекта для акустических сигналов важно понимать свойства сигнала, который пытаетесь измерить, и выбрать подходящее оборудование.
88 Глава 3 Визуальные данные и сцена Приложениям ИИ периферийных устройств часто приходится пассивно анализиро­ вать окружающий пейзаж, не прикасаясь к нему. Наиболее распространенными датчиками, используемыми для этой задачи, являются датчики изображений: от крошечных камер с низким энергопотреблением (как показано на рис . 3.3) до сверхвысококачественных многомегапиксельных датчиков. Как мы говорили ранее, изображения, полученные от датчиков изображения, представляются в виде масси­ вов значений пикселов. Рис. 3.3. Крошечный датчик изображения в форм-факторе, пригодном для использования во встроенном устройстве Датчики юображения улавливают свет с помощью сетки сенсорных элементов. В камере свет от сцены фокусируется на датчике с помощью линзы. Область, кото­ рую может отобразить камера, называется полем зрения и зависит от размера объ­ ектива и датчика изображения. Приведем типовые характеристики датчиков изображения. Цветовые ка11алы. В диапазоне видимого света датчики обычно могут собирать черно-белые или цветные данные (красный, зеленый и_синий, или RGB). Спектра7ь11ый отклик. Длины волн света, к которым чувствителен датчик изображения, могут превы­ шать диапазон человеческого зрения. Это может быть даже инфракрасное излу­ чение, позволяющее тепловизорам "видеть" тепло. Размер nиh·села. Более крупные датчики могут улавливать больше света на пиксел, что увеличи­ вает их чувствительность. Разреи,е11ие датчика. Чем больше элементов на датчике, тем более мелкие детали он сможет улавливать.
Аппаратное обеспечение для искусственного интеллекта периферийных устройств 1 89 Частота кадров. Частота, с которой датчик может захватывать изображение, обычно в кадрах в секунду. Поскольку иногда требуется освещение сцены, датчики изображения обычно идут в паре с излучателями света - как в видимом, так и в невидимом диапазоне. На­ пример, инфракрасный светодиод можно использовать в паре с чувствительной к инфракрасному излучению камерой для освещения темных сцен светом, не види­ мым для людей и животных. Датчики большего размера и с более высоким разрешением обычно требуют боль­ ше энергии. Датчики высокого разрешения генерируют большие объемы данных, которые может быть сложно обработать на небольших периферийных устройствах. Существует относительно новый вид датчиков изображения - камеры событий - который работает немного по-другому. Вместо того чтобы захватывать все поле зрения с определенной частотой, каждый пиксел камеры индивидуально реагирует на изменения яркости, но не посылает сигналы, если на сцене ничего не происхо­ дит. В результате получается временной ряд изменений отдельных пикселов, кото­ рый периферийным устройствам оказывается проще обработать, чем большую по­ следовательность полных кадров. Еще один интересный тип датчика изображения это датчик изображения дальне­ - го действия. Такие датчики позволяют устройствам представлять окружение в трех измерениях - часто путем излучения света и измерения времени, за которое он возвращается, т. е. "времени полета". Распространенная технология датчиков вре­ мени пролета известна как LIDAR. Датчики LIDAR сканируют местность лазерным лучом, измеряя, какая часть света отражается обратно на датчик. Это позволяет им визуализировать область в трех измерениях, как показано на рис. Рис. 3.4. Это изображение из набора данных (https://pandaset.org), LIDAR с 3.4. открытым исходным кодом на котором показано типичное "облако точек" PandaSet LIDAR, где каждая точка в 3D-визуализации представляет расстояние, измеренное лазером . На фото в правом верхнем углу показана та же сцена, снятая камерой
90 Глава З LIDAR и другие измеряющие время полета датчики обычно намного крупнее, сложнее, дороже и энергозатратнее, чем стандартные датчики изображения. Боль­ шие объемы данных, которые они генерируют, сложно обрабатывать и хранить на периферийных устройствах, что также ограничивает их полезность. Технология LIDAR обычно используется для картографирования окружающей среды, в том числе для помощи беспилотным транспортным средствам. Технология радара, или радиообнаружения и измерения дальности, также иногда применяется в периферийных устройствах для определения положения окружаю­ щих объектов в трех измерениях, причем даже на большом расстоянии. Как и LIDAR, эта технология сложна и энергозатратна, но, если того требует задача, тоже является хорошим вариантом. Движение и положение Иногда периферийным устройствам с ИИ требуется понимать, где они находятся и куда они могут направиться. К счастью, существует масса различных типов датчи­ ков, помогающих решить эту задачу. Их великое множество: от самых простых (механические датчики наклона) до самых сложных (спутниковая GPS- система глобального позиционирования). Обобщает их то, что они позволяют устройствам измерять свое положение и скорость движения. Ниже приведен список типичных датчиков движения и положения для периферий­ ных приложений искусственного интеллекта. Датчик наклона. Механический переключатель, который включается или выключается в зависи­ мости от его ориентации. Очень дешевый и простой в использовании. Акселерометр. Измеряет ускорение (изменение скорости с течением времени) объекта по одной или нескольким осям, часто с высокой частотой. Акселерометры - это словно швейцарские ножи в задачах определения движения, используемые для всего: от распознавания характерных движений во время спортивных занятий (в умных часах) до измерения вибраций промышленного оборудования (при профилакти­ ческом обслуживании). Они также всегда знают, где низ и верх, благодаря гра­ витации. Гироскоп. Измеряет скорость вращения объекта. Часто используются в сочетании с акселе­ рометром для получения изображения движения объекта в трехмерном про­ странстве. Поворотный WlU линейный энкодер. Измеряет точное положение вала или оси поворотного или линейного механиз­ ма (например, положение головки струйного принтера). Часто используется в робототехнике для определения положения колес, конечностей и других под­ вижных элементов роботов.
Аппаратное обеспечение для искусственного интеллекта периферийных устройств 1 91 Время полета. Датчик, в котором для измерения расстояния от датчика до любого объекта, на­ ходящегося непосредственно в его прямой видимости, используется электро­ магнитное излучение (свет или радио). Системы локации реального времени (real-time locating systems, RTLS). Системы, в которых используется несколько приемопередатчиков в фиксиро­ ванных местах вокруг здания или объекта для отслеживания положения отдель­ ных объектов, таких как поддоны на складе. Инерционный измерительный блок (inertial measurement unit, /МИ). Система, в которой используется несколько датчиков для приблизительного оп­ ределения текущего положения устройства на основе его движения, измеренно­ го по внутренней системе отсчета (в отличие от использования внешних сигна­ лов, таких как GPS). Глобальная система позиционирования (global positioning system, GPS). Пассивная система, которая использует радиосигналы спутников для определе­ ния местоположения устройства на расстоянии до нескольких метров. Требуется прямая видимость от устройства до нескольких спутников. Движение и положение обычно представляются как временной ряд показаний дат­ чиков. Разнообразие датчиков в этой категории позволяет подобрать варианты для любого бюджета и требований энергопотребления. Как правило, чем больше уве­ ренности в абсолютном положении требуется, тем больше затрат и сложности. Физическое и тактильное воздействие Силовые и тактильные датчики - от переключателей до тензодатчиков - помогают периферийным устройствам с ИИ измерять физическое состояние окружающей сре­ ды. Они могут быть полезны для облегчения взаимодействия с пользователем, анали­ за течения жидкостей и газов или измерения механической нагрузки на объект. Ниже приведены типичные силовые и тактильные датчики. Кнопки и переключатели. Традиционные переключатели используются как простые кнопки для взаимо­ действия с человеком, но также служат датчиками, выдающими двоичный сиг­ нал, указывающий, когда устройство с чем-то сталкивается. Емкостные сенсорные датчики. Измеряют степень прикосновения к поверхности проводящего объекта, напри­ мер человеческого пальца. На основе таких датчиков работают современные сенсорные экраны. Датчики растяжения и изгиба. Измеряют степень деформации объекта, что может быть интересно для обнару­ жения повреЖдений объектов и для создания тактильных устройств человече­ ского интерфейса.
92 Глава З Тензодатчики. Измеряют точную величину приложенной к ним физической нагрузки. Они бы­ вают самых разных размеров: от крошечных (полезных для измерения веса не­ больших предметов) до гигантских (для измерения деформации мостов и небо­ скребов). Датчики потока. Предназначены для измерения скорости потока жидкостей и газов, например воды в трубе. Датчики давления. Используются для измерения давления газа или жидкости либо в окружающей среде (например, атмосферное давление), либо внутри системы (например, внутри автомобильной шины). Силовые и тактильные датчики обычно просты, потребляют мало энергии и с ними легко работать. Их измерения легко представить в виде временнь1х рядов. Они осо­ бенно полезны при создании тактильных пользовательских интерфейсов или при обнаружении ударов робота (или другого подвижного устройства) о препятствия. Оптические, электромагнитные и радиационные В эту категорию входят датчики, предназначенные для измерения электромагнит­ ного излучения, магнитных полей и высокоэнергетических частиц, а также основ­ ных электрических свойств, таких как ток и напряжение. Звучит экзотически, но к этой категории относятся и простые вещи, такие как датчики цвета. Ниже приведены типичные оптические, электромагнитные и радиационные датчики. Фотодатчик. Категория датчиков, которые обнаруживают свет различной длины, как види­ мый, так и невидимый для человеческого глаза. Это может быть полезно в раз­ личных задачах: от измерения уровня окружающего освещения до обнаружения разрыва луча света. Датчик цвета. Такие датчики используются для точного измерения цвета поверхности, что мо­ жет быть полезно для распознавания различных типов объектов. Спектроскопический датчик. Состоит из фотодатчиков и измеряет, как световые волны различной длины по­ глощаются и отражаются теми или иными материалами, что дает передовой сис­ теме искусственного интеллекта представление об их составе. Магнитометр. Измеряет силу и направление магнитных полей. Одним из видов магнитометра является цифровой компас, который может указывать направление на север.
Аппаратное обеспечение для искусственного интеллекта периферийных устройств 1 93 Индуктивный датчик приближения. Использует электромагнитное поле для обнаружения расположенных поблизо­ сти металлов. Обычно применяется для обнаружения транспортных средств в задачах мониторинга дорожного движения. Датчик электромагнитного поля (ЭДС). Измеряет силу электромагнитных полей. Это могут быть случайные выбросы, излучаемые, например, промышленным оборудованием, а могут быть полезные сигналы радиопередатчиков. Датчик тока. Измеряет силу тока, протекающего через проводник. Это может быть полезно при мониторинге промышленного оборудования, поскольку колебания тока мо­ гут предоставить информацию о функционировании оборудования. Датчик напря.:ж:ения. Измеряет значение напряжения на объекте. Полупроводниковый детектор. Измеряет ионизирующее излучение, состоящее из чрезвычайно быстро движу­ щихся частиц, обычно образующихся в результате распада радиоактивных ве­ ществ. Как и многие другие датчики, датчики этой категории обычно выдают временнь,е ряды результатов измерений. Описанные здесь датчики можно применять для на­ блюдения за окружающей средой, но также они могут быть полезны в устройствах, где они обнаруживают выбросы, преднамеренно создаваемые устройством. Напри­ мер, фотодатчик можно соединить с излучателем света на другой стороне коридо­ ра, чтобы фиксировать перемещение по нему. Экологические, биологические и химические датчики Это довольно нечеткая категория, в которую входит множество различных типов датчиков. Экологические, биологические и химические датчики позволяют пери­ ферийным устройствам с ИИ определять состав окружающего мира. Приведем не­ которые распространенные их виды. Датчик температуры. Измеряет температуру либо самого устройства, либо удаленного источника ин­ фракрасного излучения. Датчик газа. Существует множество различных датчиков для измерения концентрации раз­ личных газов. К этой категории относятся датчики влажности (которые измеря­ ют водяной пар), датчики летучих органических соединений compound, VOC), (volatile organic которые измеряют ряд распространенных органических со­ единений, и датчики углекислого газа.
94 Глава З Датчик твердых частиц. Измеряет концентрацию мельчайших частиц в образце воздуха и обычно ис­ пользуется для мониторинга уровня загрязнения. Датчик биосигналов. Измеряет широкий спектр сигналов, присутствующих в телах живых существ, например измерение электрической активности человеческого сердца (электро­ кардиография) и мозга (электроэнцефалография). Химический датчик. Существует множество различных датчиков, предназначенных для измерения наличия или концентрации определенных химических веществ. Эта категория датчиков обычно выдает данные в виде временньrх рядов. Из-за не­ обходимости химического и физического взаимодействия с окружающей средой иногда с ними может быть сложно работать. Например, часто требуется выполнить калибровку по известным концентрациям химических веществ, а иногда датчикам требуется некоторое время прогрева, после которого они начнут правильно считы­ вать показания. Датчики окружающей среды часто изнашиваются со временем и требуют замены. Другие сигналы Помимо сбора сигналов из физического мира, многие периферийные устройства с ИИ имеют доступ к большому количеству виртуальных данных. Их можно грубо разделить на две группы: интроспективные данные о состоянии самого устройства и экстраспективные данные о системах и сетях, к которым подключено устройство. У устройства могут быть различные типы внутреннего состояния. Журналы устройства. Они отслеживают жизненный цикл устройства с момента его включения. Жур­ налы содержат информацию о самых разных вещах: изменениях конфигурации, рабочем цикле, прерываниях, ошибках или обо всем, что вы решите в них запи­ сывать. Использование внутренних ресурсов. Сюда могут входить доступная память, энергопотребление, тактовая частота, ресурсы операционной системы и использование периферийных устройств. Коммуникации. Устройство могут отслеживать свои физические соединения, радиосвязь, сете­ вую конфигурацию и активность, а также данные о потреблении энергии. Внутренние датчики. Некоторые устройства имеют внутренние датчики; например, у многих уст­ ройств вида "система-на-кристалле" есть датчик температуры для мониторинга собственного процессора.
Аппаратное обеспечение для искусственного интеллекта периферийных устройств 1 95 Одним из интересных способов использования интроспективных данных является сохранение срока службы аккумулятора. Литиевые аккумуляторы теряют ем­ кость, если постоянно подключены к сети и заряжены на избежать этой проблемы, в рийных устройств, iPhone известная (https://oreil.ly/rWJbA). 100%. Для того чтобы от Арр\е используется функция ИИ перифе­ как оптимизировающя зарядка аккумулятора В ней применяется модель машинного обучения на уст­ ройстве, которая изучает процедуру зарядки пользователя, а затем использует эту модель, чтобы минимизировать время зарядки аккумулятора, при этом поддержи­ вая высокий уровень заряда, когда это необходимо пользователю. Экстроспективные потоки данных, поступающие извне устройства, могут быть чрезвычайно насыщены информацией. Приведем некоторые возможные источники. Данные из связанных систем. Периферийные устройства искусственного интеллекта обычно развертываются в сети, а данные, пересылаемые соседними устройствами, могут использоваться в качестве входных данных для алгоритмов ИИ. Например, шлюз loT может ис­ пользовать ИИ периферийных устройств для обработки и принятия решений на основе данных, собранных узлами. Удаленные команды. Периферийное устройство искусственного интеллекта может получать команды управления от другой системы или пользователя. Например, пользователь дрона может запросить его перемещение в определенную координату в трехмерном пространстве. Данные из АР/. Периферийное устройство искусственного интеллекта может запрашивать дан­ ные с удаленных серверов для использования в своих алгоритмах. Например, домашняя система отопления, оснащенная ИИ периферийных устройств, может запрашивать данные прогноза погоды через онлайн-АРI и использовать эту ин­ формацию, чтобы решить, когда включать отопление. Сетевые данные. Сюда могут относиться структура сети, информация о маршрутизации, сетевая активность и даже содержимое пакетов данных. В некоторых наиболее интересных периферийных системах искусственного интел­ лекта все эти виды данных используются вместе. Представьте себе систему агро­ технолоrий, которая помогает фермеру заботиться об урожае. В системе могут быть удаленные датчики в полях, соединения с важными онлайн-источниками дан­ ных (например, данных о погоде или ценах на удобрения) и интерфейс управления, используемый фермером. Будучи системой ИИ периферийных устройств, она по­ тенциально могла бы работать без подключения к Интернету, но при наличии тако­ вого она могла бы использовать ценную информацию. В более сложных архитектурах ИИ периферийных устройств также прекрасно соче­ тается с ИИ на стороне сервера - мы узнаем об этом больше позже в данной главе.
Глава 96 3 Процессоры для ИИ периферийных устройств Одной из наиболее интересных частей ИИ периферийных устройств является об­ ширный и постоянно растущий набор аппаратного обеспечения, которое приложе­ ния могут использовать. В этом разделе мы рассмотрим высокоуровневые катего­ рии обору давания и узнаем, почему каждая из них подходит для определенной ниши. Мы являемся свидетелями кембрийского взрыва периферийных устройств с ИИ, поэтому с момента публикации этой книги и до момента вашего чтения их станет еще больше. Благодаря широкому спектру устройств от дешевых микроконтролле­ ров с низким энергопотреблением (так называемые устройства с "тонкой перифе­ рией") до молниеносных ускорителей на базе графического процессора и перифе­ рийных серверов (известных как "толстая периферия"), разработчики могут найти оборудование, которое идеально подходит практически для любого применения. Аппаратная архитектура ИИ периферийных устройств Архитектура аппаратной системы другом. На рис . 3.5 - это способ соединения компонентов друг с показана типичная аппаратная архитектура периферийного уст­ ройства. Периферийные устройства Постоянная память Используется для хранения программ, настроек .... 11 собранных данных Процессор приложений Выполняет логику приложений Встроенные сопроцессоры Быстрое и эффективное вычисление • .... Дискретные сопроцессоры Быстрое, эффективное вычисление специфических задач, расположены на отдельном чипе для специфических задач (например, линейной алгебры) Оперативная память Используется для хранения состояния во время выполнения программы Датчики Периферия Измеряют свойства физического мира и кодируют Цифровые и аналоговые ++ Рис. интерфейсы, используемые для связи с другими устройствами их в электрические сигналы 3.5. .... Сетевое оборудование Связь с другими через стандартные методы Архитектура периферийного устройства Сердцем устройства является процессор пршюжений. Это процессор общего назна­ чения, который координирует работу приложения и по умолчанию запускает все алгоритмы и логику.
Аппаратное обеспечение для искусственного интеллекта периферийных устройств 1 97 Зачастую у процессора бывают встроенные сопроцессоры: встроенное дополни­ тельное оборудование, высокоэффективно выполняющее определенные вычисле­ ния. Например, у многих процессоров есть встроенный блок операций с плавающей точкой (floating-point unit, FPU), предназначенный Д11Я быстрого выполнения вы­ числений с плавающей точкой. Микроконтроллеры среднего и высокого класса все чаще оснащаются встроенным оборудованием, способным ускорять функции, важ­ ные для ИИ периферийных устройств, такие как цифровая обработка сигналов и линейная алгебра. У процессора приложения также есть энергозависимая память (например, ОЗУ), которая используется во время выполнения программы. Но, кроме нее, также часто имеется дополнительная оперативная память, внешняя по отношению к самому процессору и расположенная на отдельном чипе. На кристалле и вне кристалла Компьютерная система обычно состоит из интегральных схем (ИС), которые, в свою очередь, состоят из кремниевых чипов, прикрепленных к печатной плате (printed circuit board, РСВ). Например, процессор приложений представляет со­ бой микросхему. Кремниевый чип состоит из кусочка кремния, на котором вы­ гравированы сложные узоры, составляющие процессор. Этот кусок кремния на­ зывается кристаллом. В разговорах о процессоре и других компонентах, с которыми он интегрируется, часто можно услышать термины "на кристалле" и "вне кpucmarma". Встроенные компоненты расположены на том же кристалле, что и сам процессор, тогда как внешние компоненты расположены на отдельных микросхемах, подключенных к той же печатной плате. Поскольку встроенные компоненты физически расположены ближе к основному процессору, они обычно работают быстрее и более энергоэффективны, т. к. для передачи данных между ними требуется меньше времени и энергии. Однако чем больше предметов расположено на одном кристалле, тем больше он должен быть, а большие кристаллы, как правило, дороги и энергозатратны. В конструкции встраиваемого оборудования приходится поддерживать баланс между тем, что включено в кристалл и что находится за его пределами. Напри­ мер, если эффективность имеет высший приоритет, возможно, имеет смысл вы­ брать процессор со встроенными функциями. Если важнее стоимость, возможно, лучшим решением будет вариант "вне кристалла". Во многих конструкциях используются как встроенные, так и внешние компо­ ненты. Например, у системы может быть небольшой объем встроенной опера­ тивной памяти для выполнения программ в сочетании с больши:v~ объемом внешней оперативной памяти, используемой для буферизации свежеполученных данных датчиков, ожидающих обработки.
Глава 98 ОЗУ 3 это очень быстрая память, но она потребляет много энергии, и содержимое - ОЗУ теряется при выключении устройства. Она дорога и занимает много места на плате, поэтому зачастую ее ресурс очень ограничен. Прикладной процессор подключен к энергонезависимой памяти, также называемой ПЗУ (постоянное запоминающее устройство) или флеш-памятью2, которая анало­ гичным образом может располагаться либо на кристалле, либо вне кристалла (на рис. 3.5 она изображена вне кристалла). Энергонезависимая память используется для хранения данных, которые меняются редко и которые необходимо сохранять при выключении системы. К таким данным относятся программное обеспечение, пользовательская конфигурация и модели машинного обучения. Чтение и запись в эту память выполняются медленно. Во многих конструкциях также бывают дискретные сопроцессоры. Подобно интег­ рированным сопроцессорам, они существуют для быстрого и эффективного выпол­ нения математических вычислений для конкретных целей. В отличие от интегриро­ ванных сопроцессоров, они расположены за пределами кристалла. Они могут быть гораздо более мощными (и энергоемкими), чем процессор приложений: например, маломощная SoC (system-on-chip- система на кристалле) может сочетаться с мощным графическим процессором. Периферийные устройства процессора обеспечивают его интерфейс с остальным миром посредством различных стандартов 3 . Чаще всего для подключения перифе­ рийных устройств используются датчики и сетевое оборудование. Микроконтроллерь1 и процессоры цифровых сигналов Можно уверенно сказать, что микроконтроллеры являются основой нашего совре­ менного мира. Речь идет о крошечных недорогих компьютерах, которые оживляют все - от автомобильных двигателей до умных приборов. Микроконтроллеры про­ изводятся в ошеломляющих объемах; прогнозировалось, что в продано 26,89 млрд (https://oreil.ly/d4КPy) - 2022 году их будет это три с половиной штуки на каж­ дого человека на планете. Микроконтроллерь1 М~кроконтроллеры часто называют MCU - аббревиатура от microcontroller Untt. Микроконтроллеры обычно используются для одноцелевых приложений, например для управления каким-либо устройством. Это означает, что они могут быть намно- 2 Хотя флеш-память можно перепрограммировать, в контексте встроенных устройств ее все равно называют ПЗУ. 3 Периферийные интерфейсы, такие как GPIO, 12С, SPI и UART, - это важная для проектирования аппаратного обеспечения тема, но она не является предметом этой книги. Большинство современных встроенных процессоров имеют достойную поддержку периферийных интерфейсов.
Аппаратное обеспечение для искусственного интеллекта периферийных устройств го проще, чем компьютеры других типов, на которых запускаются разные 1 99 про­ граммы; например, у них обычно нет операционной системы. Вместо этого их программное обеспечение (или прошивка) запускается непосред­ ственно на аппаратном обеспечении и выполняет низкоуровневые инструкции, не­ обходимые для управления любыми периферийными устройствами 4 . Из-за этого разработка программного обеспечения для микроконтроллеров может быть весьма сложной задачей, но зато у разработчиков появляется гораздо больше контроля над процессами, происходящими при выполнении программы. Одной из отличительных особенностей микроконтроллеров является то, что боль­ шинство их компонентов реализовано на одном кристалле кремния - и в этом сек­ рет их относительно низкой стоимости. Помимо процессора, микроконтроллер обычно оснащен флеш-памятью (для хранения программ и других полезных дан­ ных}, оперативной памятью (для хранения состояния во время выполнения про­ граммы) и различными технологиями для связи с другими устройствами (напри­ мер, датчиками) с помощью цифровых или аналоговых сигналов. Мир микроконтроллеров невероятно разнообразен. Одна из причин, по которой они так ценны, заключается в том, что множество их вариантов позволяет подоб­ рать решение для любой мыслимой ситуации. Для целей этой книги мы разделим их на три основные категории: бюджетные микроконтроллеры, высокопроизводи­ тельные микроконтроллеры и цифровые сигнальные процессоры. Бюджетные микроконтроллеры Многие микроконтроллеры разработаны специально с учетом низкой стоимости, небольшого размера и энерrоэффективности. Взамен этому их вычислительные ре­ сурсы и возможности ограничены. Приведем некоторые типичные характеристики: ♦ архитектура от 4 до 16 бит; ♦ тактовая частота <100 МГц; ♦ от 2 до 64 Кбайт флеш-памяти; ♦ от 64 байт до 2 Кбайт ОЗУ; ♦ цифровой вход и выход; ♦ потребляемый ток: от единиц до десятков миллиампер при напряжении~ 1,5-5 В в рабочем режиме и единиц микроампер во время сна и ожидания входного сиг­ нала; ♦ стоимость: один-два доллара за штуку оптом. Об электропитании Количество энергии, потребляемой микроконтроллером, зависит от многих фак­ торов, большинство из которых подвластно разработчикам. В числе прочего, вы 4 Еще одна хара~rrеристика встроенного ПО заключается в том, что, в отличие от операционноl! системы, встроенное ПО обычно не предназначено для изменения конечным пользователем.
100 Глава З можете снизить энергопотребление, запуская процессор на пониженной скоро­ сти, отключая ненужные функции, когда они не используются, и переводя весь микроконтроллер в режим ожидания, когда он не обрабатывает данные. Эта гибкость в сочетании с общим разнообразием рынка микроконтроллеров за­ трудняет точный анализ энергопотребления. Если вы проектируете систему в ус­ ловиях жестких ограничений по мощности, вам необходимо выполнять оценку и измерение энергопотребления оборудования самостоятельно. Многие сегодняшние бюджетные микроконтроллеры основаны на конструкциях, придуманных еще в 1980-х годах 5 . Такие микроконтроллеры чрезвычайно распро­ странены во многих отраслях. У бюджетных микроконтроллеров есть некоторые существенные недостатки, когда речь заходит про ИИ периферийных устройств. Поскольку им не хватает памяти и вычислительных ресурсов, они не очень подходят для работы с большими объема­ ми данных или для задач сложной обработки сигналов. Обычно в них не бывает готовой аппаратной реализации арифметики с плавающей точкой, а это означает, что вычисления с применением рациональных чисел могут оказаться невероятно медленными. Это ограничивает типы алгоритмов ИИ, которые можно запускать на таких контроллерах. В определенных областях преимущества бюджетных микроконтроллеров играют на руку: высоконадежные автомобильные и медицинские устройства, а также недорогие приборы, гаджеты и инфраструктура. Одним из популярных бюджетных микрокон­ троллеров является 8-битная платформа А VR Atmel (https://oreil.ly/Вuwcj). Несмот­ ря на огромную важность таких микроконтроллеров, их вычислительные ограниче­ ния означают, что в задачах ИИ периферийных устройств их, вероятно, не у дастся использовать. Тем не менее, как мы упоминали в первом разделе книги, программы ИИ перифе­ рийных устройств не всегда должны быть сложными с точки зрения вычислений. Бюджетные микроконтроллеры прекрасно способны выполнять сложную условную логику, и для решения задачи этого зачастую бывает достаточно. Они также могут объединяться в сеть периферийных устройств с ИИ: например, низкопроизводи­ тельный микроконтроллер может собирать данные датчиков и пересылать их на более сложное устройство для принятия решений. Высокопроизводительные микроконтроллеры На другом конце спектра микроконтроллеров находятся самые мощные микрокон­ троллеры, обладающие достаточной вычислительной мощностью, чтобы составить конкуренцию старому персональному компьютеру 1990-х годов. Во многих случа­ ях им даже у дается сохранять высокую энергоэффективность. 5 Микроконтроллер lntel 8051 (https://oreil.ly/5DV2e) был вnервые разработан в 1980 году и используется до сих пор.
Аппаратное обеспечение для искусственного интеллекта периферийных устройств 1 101 Типичные характеристики таких микроконтроллеров: ♦ 32-битная архитектура; ♦ тактовая частота < l ООО МГц; ♦ от 16 Кбайт до 2 Мбайт флеш-памяти; ♦ от 2 Кбайт до 1 Мбайт ОЗУ; ♦ дополнительная аппаратная поддержка для более быстрых вычислений; ♦ модуль вычислений с плавающей точкой (FPU); ♦ инструкции с одной командой и множеством данных (single instruction, multiple data, SIMD); ♦ дополнительные ядра процессора; ♦ цифровой и аналоговый ввод и вывод; ♦ потребляемый ток: от единиц до десятков миллиампер при ~ 1,5-5 В, микроам- перы во время сна; ♦ стоимость: от единиц до десятков долларов за штуку. Высокопроизводительные микроконтроллеры работают быстрее благодаря более высокой тактовой частоте и 32-битной архитектуре6 . Кроме того, у многих моделей микроконтроллеров есть аппаратная поддержка некоторых фокусов, повышающих скорость вычислений. Одна из таких фишек под названием SIMD позволяет про­ цессору выполнять несколько вычислений параллельно, что может быть чрезвы­ чайно полезно при запуске приложений обработки сигналов и машинного обуче­ ния, требующих большого количества вычислений. Все чаще высокопроизводительные микроконтроллеры разрабатываются с учетом периферийных приложений с ИИ. Поставщики обычно предлагают программное обеспечение и библиотеки, которые помогают оптимизировать код ИИ периферий­ ных устройств для эффективного выполнения на устройстве. Еще одним большим преимуществом является тенденция к увеличению объема флеш-памяти и опера­ тивной памяти, что очень полезно для манипулирования данными и хранения больших моделей машинного обучения. Высокопроизводительные микроконтроллеры используются в огромном спектре задач: от датчиков и loT до цифровых гаджетов, интеллектуальных приборов и но­ симых устройств. На момент написания они представляют собой золотую середину с точки зрения стоимости, энергопотребления и вычислительных возможностей в задачах машинного обучения встраиваемых систем. У них достаточно мощности для эффективной работы с моделями глубокого обучения, включая модели, кото­ рые могут обрабатывать визуальную информацию, но достаточно просты, чтобы их можно было очень дешево встроить в широкий спектр приложений. 6 32-битный процессор может за раз обрабатывать вдвое больше данных, чем 16-битный. Эrо озна­ чает, что данные могут обрабатываться быстрее. Он также поддерживает больший объем оперативной памяти.
102 Глава З Чрезвычайно популярньi (https://oreil.ly/nuhBH), микроконтроллеры например на базе ядер Arm Cortex-M Nordic nRF52840 (https://oreil.ly/uZfax) и SТМicroelectronics STM32H743VI (https://oreil.ly/SGkdC). пулярные варианты, основанные на архитектуре RISC-V например Expressif ESP32 (https://oreil.ly/OzsLd}. Существуют также по­ (https://oreil.ly/YpН2r), Поскольку ИИ периферийных устройств становится все более важной вещью, все чаще встречается сочетание высокопроизводительных микроконтроллеров общего назначения рабочих со специальными сопроцессорами, нагрузок глубокого обучения. Мы предназначенными для ускорения расскажем об этом подробнее в разд. "Ускорители глубокого обучения" далее в этой главе. О производительности Среднестатистический микроконтроллер высокого класса может обраба­ тывать звук с использованием глубокого обучения практически в реальном времени и видео с низким разрешением примерно по кадру в секунду. Цифровые сигнальные процессоры Интересная подкатеrория: (DSP) это специальные микроконтроллеры, разрабо­ DSP - танные для высокоэффективного преобразования цифровых сигналов. Их архитек­ тура предназначена не для вычислений общего назначения, а для максимально быстрого выполнения определенных алгоритмов и математических операций, включая такие вещи, как умножение-накопление и преобразования Фурье, с кото­ рыми мы столкнемся в главе 4. По счастливой случайности многие из этих математических операций очень полез­ ны в ИИ периферийных устройств как в части обработки данных, так и для запуска моделей машинного обучения. Эго делает достатком DSP DSP весьма ценным инструментом. Не­ является то, что они не предназначены для вычислений общего на­ значения, поэтому могут не подходить для выполнения программ, не связанных с ИИ периферийных устройств. Современные высокопроизводительные микроконтроллеры часто обладают неко­ торыми функциями DSP, такими как инструкции SIMD, которые могут помочь уве­ личить пропускную способность для задач обработки сигналов. Некоторые из них так и называются "контроллерами цифровых сигналов", что подчеркивает эти функции. Тем не менее DSP отнюдь не бесполезны. Например, у многих смартфо­ нов с голосовыми помощниками (например, Google Ассистент) есть чип DSP, по­ зволяющий постоянно использовать модель определения ключевых слов без ущер­ ба для времени автономной работы. Гетерогенные вычисления Разработчики аппаратного обеспечения не обязаны выбирать для конкретного приложения один конкретный микроконтроллер. На самом деле довольно часто
1 103 Аппаратное обеспечение для искусственного интеллекта периферийных устройств несколько микропроцессоров объединяются в одном продукте. Например, в пе­ риферийном устройстве с ИИ может быть небольшой маломощный микрокон­ троллер для выполнения основных операций, а также большой мощный микро­ контроллер, который время от времени используется для обработки сигналов и задач машинного обучения. Такой подход называется гетерогенными вычислениями, и он становится все бо­ лее важным в ИИ периферийных устройств, поскольку обеспечивает настоящий параллелизм - возможность выполнять более одной задачи одновременно. Одна из самых больших проблем при использовании гетерогенных вычислений решить, как разделить вычислительную нагрузку между двумя - это процессорами, чтобы максимизировать эффективность. Если вам удастся правильно сделать, на­ града не заставит себя ждать. Некоторые архитектуры для периферийных приложений ИИ, например те, в ко­ торых используются каскадные модели (см. разд. "Каскадный поток" главы 8), особенно хорошо подходят для гетерогенных вычислений. Рост популярности ускорителей глубокого обучения (см. разд. "Ускорители глубокого обучения" да­ лее в этой главе) делает эту концепцию все более важной. Система на кристалле Следующий по распространенности тип периферийных устройств ва "система-на-кристалле" (system-on-chip, SoC). - это устройст­ Если микроконтроллер представ­ ляет собой урезанную, оптимизированную версию компьютера, из которой убрано все лишнее, устройства SoC представляют собой попытку втиснуть всю функцио­ нальность всей традиционной компьютерной системы в один чип. В отличие от микроконтроллеров, программное обеспечение которых напрямую взаимодействует с оборудованием, устройства SoC работают под управлением тра­ диционных операционных систем, которые абстрагируют большую часть аппарат­ ного обеспечения, чтобы разработчики могли полностью сосредоточиться на напи­ сании кода приложения. Разработчики моrут использовать те же инструменты и среды, что и для обычных серверных и настольных приложений, включая языки высокого уровня, такие как Python (современные микроконтроллеры обычно про­ граммируются на С или С++). Цена за эту простоту использования SoC, - две издержки: эффективность и сложность. как правило, намного менее энергоэффективны, чем микроконтроллеры, что ограничивает области их применения. Они по-прежнему на порядок более эффек­ тивны, чем традиционные компьютерные системы с отдельными периферийными устройствами, но в плане минимизации энергопотребления далеко не так хороши, как микроконтроллеры. Дополнительное потребление энергии может также при­ вести к проблемам с рассеянием тепла. Дополнительная сложность, связанная с операционной системой, также ложится на устройства SoC тяжелым бременем. Поскольку вместе с приложением разработчи-
Глава З 104 ка выполняется огромное количество кода ОС, надежность в полевых условиях становится труднее гарантировать. SoC, как правило, намного мощнее микроконтроллеров и имеют гораздо больше функций. Их типовые характеристики: ♦ 64-битная архитектура; ♦ тактовая частота> 1 ГГц; ♦ несколько ядер процессора; ♦ внешняя оперативная память и флеш-память (обычно несколько гигабайт); ♦ блок обработки 2D- или 3D-графики; ♦ беспроводная сеть; ♦ высокопроизводительный цифровой ввод и вывод; ♦ потребление тока: сотни миллиампер при ~5 В; ♦ стоимость: десятки долларов за единицу. Характеристики производительности Средняя SoC может обрабатывать аудио и видео высокого разрешения с использованием глубокого обучения практически в реальном времени . . Несмотря на то что SoC гораздо менее эффективны, чем микроконтроллеры, они совершили революционный прорыв. С ними можно использовать функционал мощного компьютера общего назначения в чрезвычайно малом форм-факторе. В современном мире системы на кристалле широко распространены - на них рабо­ тают наши мобильные телефоны, телевизоры, автомобильные медиасистемы, про­ мышленное оборудование, системы безопасности, шлюзы IoT и многое другое, че­ му нужно много вычислительной мощности в небольшом корпусе. Мощность, гибкость и простота использования таких систем делают их особенно ценными для ИИ периферийных устройств. Разработчики могут использовать зна­ комые инструменты для разработки приложений, работающих на SoC, и у них дос­ таточно памяти и вычислительной мощности для запуска сложных алгоритмов, та­ ких как относительно большие модели глубокого обучения. Существует очень мало типов алгоритмов ИИ периферийных устройств, которые не будут работать на Простота использования делает SoC SoC. отличным выбором для создания прототипов приложений искусственного интеллекта, даже если в конечном счете планируется переход на более дешевое или более эффективное оборудование. К хорошо известным (https://oreil.ly/bOVa-) и продуктам Broadcom относятся SoC ВСМ58712 Qualcomm (https://oreil.ly/ZbqES), Sпapdragon который ис­ пользуется в плате разработки Raspberтy (см. врезку ''Платы и устройства" да­ лее в этой главе). Многие популярные основаны на процессорных ядрах Cortex-A (https://oreil.ly/GyNNz). Pi SoC Arm
Аппаратное обеспечение для искусственного интеллекта периферийных устройств Встроеннь1й ОС Linux 1 105 Linux стала очень часто использоваться в устройствах SoC. Это систе­ ма с открытым исходным кодом, а это означает, что ее можно использо­ вать бесплатно и с широкой поддержкой сообщества. Возможность ис­ пользовать знакомые инструменты разработки для со встроенными системами Linux для UNIX облегчает работу тех, у кого есть опыт работы с UNIX. Ускорители глубокого обучения И микроконтроллеры, и значения - SoC обычно представляют собой компьютеры общего на­ они спроектированы для максимальной гибкости. Однако если вы го­ товы пожертвовать некоторой гибкостью, можно спроектировать интегральные схемы, которые выполняют определенные операции экстремально быстро. С появлением во встраиваемых устройствах глубокого обучения (см. разд. "Глубо­ кое обучение" главы 4) компании, производящие полупроводники, начали произво­ дить ускорители, которые можно сочетать с микроконтроллерами и SoC, что по­ зволяет быстрее и эффективнее запускать модели глубокого обучения. Математика глубокого обучения основана на линейной алгебре, поэтому ускорители глубокого обучения, также известные как нейронные процессоры (neural processing unit, NPU), берут на себя задачу эффективного выполнения линейной алгебры. Существуют различные типы ускорителей глубокого обучения, у каждого из кото­ рых свои компромиссы между энергопотреблением. На одном конце спектра нахо­ дятся устройства вроде Syпtiaпt NDPIOx (https://oreil.ly/XDxoQ), у которых есть аппаратная реализация конкретных архитекrур моделей глубокого обучения (под­ робнее о них мы узнаем позже) и которые могут работать быстро с невероятно низ­ ким энергопотреблением. Поскольку сам алгоритм встроен в микросхему, эти уст­ ройства не очень гибки, но могут быть чрезвычайно эффективны. На другом конце спектра находятся устройства, основанные на технологии графи­ ческих процессоров (graphics processing unit, GPU), такие как Jetson от Nvidia Coral от Google (https://coral.ai/products), характери­ (https://oreil.ly/МVga8) и зующиеся огромной гибкостью и способностью запускать практически любые мо­ дели глубокого обучения. Платой за такую гибкость является слабая энерrоэффек­ тивность. Ну а в середине спектра находится множество различных типов устройств с раз­ ной степенью гибкости (https://oreil.ly/Y9ZeL) или и эффективности, Ethos-U55 от Arm таких как NDP120 от Syntiant (https://oreil.ly/КS_Dv). В некоторых типах ускорителей используются альтернативы традиционной мате­ матики глубокого обучения. Например, нейроморфный процессор BrainChip (https://oreil.ly/Jgalv) использует разд. "Сжатие и оптимизация" главы 4) импульсные Akida компании нейронные сети (см. для достижения уникального набора ком­ промиссов, включая более высокую энерrоэффективность.
106 Глава З Характеристики производительности Ускорители глубокого обучения, как правило, чрезвычайно быстры и вы­ дают достаточную вычислительную мощность для обработки аудио и ви­ део в реальном времени. Некоторые устройства могут даже обрабатывать несколько потоков параллельно. Как правило, ускорители глубокого обучения работают в паре либо с микрокон­ троллерами, либо с SoC. Обычный процессор выполняет логику приложения, а ус­ коритель берет на себя рабочую нагрузку глубокого обучения. Многие разработки объединяют микропроцессор и ускоритель в одном корпусе и предоставляют спе­ циальные инструменты, помогающие разработчикам разделить задачи между ними. Ранние ускорители глубокого обучения предоставляли очень мало свободы выбора в отношении типов поддерживаемых моделей глубокого обучения, но по мере раз­ вития отрасли гибкость устройств тоже растет. Мы все еще находимся в начале пу­ ти, поэтому со временем можно ожидать больших успехов и повышения эффектив­ ности. В долгосрочной перспективе появятся невероятно эффективные и производительные устройства, способные годами выполнять задачи обработки ви­ део в реальном времени или языковой транскрипции от маленького аккумулятора. FPGAиASIC Для получения максимальной производительности и эффективности можно разра­ ботать собственную схему процессора. Это сложно, времязатратно и дорого, а зна­ чит, к этому нельзя относиться легкомысленно, но для некоторых приложений это может иметь смысл. Программируемые вентильные матрицы (field-programmaЫe gate аттауs, FPGA) представляют собой кремниевые интегральные схемы, которые можно при необхо­ димости перепрограммировать для реализации индивидуальных аппаратных проек­ тов. Они позволяют инженерам создавать собственную конструкцию процессора, максимально эффективно реализующую определенный алгоритм, а затем загружать его на устройство для развертывания. Эти проекты создаются с использованием специальных языков программирования, ного обеспечения, или называемых языками Интегральные схемы специального назначения ASIC) описания аппарат­ HDL (hardware description languages). (application-specific integrated circuit, представляют собой интегральные схемы, адаптированные для конкретных приложений. В отличие от FPGA, их нельзя перепрограммировать - их логика на­ ASIC, предназначен­ Himax (https://oreil.ly/ol4bv), всегда записана прямо в кремний. Вы можете купить готовые ные для конкретных целей, например WE-1 Plus от или разработать собственные. Разработка с использованием пользованием ASIC, FPGA оказывается существенно дешевле, чем с ис­ но стоимость и энергопотребление каждого устройства оказы­ ваются выше. Компании обычно используют FPGA для прототипов или небольших
Аппаратное обеспечение для искусственного интеллекта периферийных устройств производственных партий, а на создание ASIC ASIC- 1 107 для больших объемов. Инженерные затраты делают их недоступными для большинства компаний. Инструменты разработки FPGA становятся проще в использовании и доступнее, но пока еще остаются относительно нишевым вариантом в сфере ИИ периферийных устройств. Исследователи работают над инструментами, способными автоматиче­ ски преобразовывать модели глубокого обучения в эффективные реализации поэтому вполне вероятно, что FPGA FPGA, со временем будут играть все более важную роль в ИИ периферийных устройств. Приведем несколько интересных проектов в космосе на момент публикации: ♦ Google CFU Playground (https://oreil.ly/Fhf-9), который помогает разработчикам создавать ускорители глубокого обучения с использованием ♦ Tensil.ai (https://www.tensil.ai), паратный генератор для FPGA. FPGA; компилятор моделей машинного обучения и ап­ Плать1 и устройства Процессор сам по себе бесполезен - его необходимо установить на плату вместе с другими компонентами, составляющими полноценное устройство - блоком питания, датчиками и периферийными устройствами, а также разъемами. В большинстве массово производимых периферийных устройств с ИИ использу­ ются специальные печатные платы, разработанные под конкретную задачу. Поскольку разработка и производство этих нестандартных плат требуют време­ ни, большая часть начального проектирования выполняется с помощью платы разработки. Это готовые к использованию устройства, продаваемые производи­ телями аппаратного обеспечения, которые оснащены определенным процессо­ ром и всем необходимым для подключения к нему и разработки программного обеспечения (рис. 3.6). Такие платы позволяют инженерам встраиваемых систем оценивать различные процессоры для конкретного варианта использования и быстро создавать прото­ типы. Вычислительные требования алгоритмов ИИ периферийных устройств означают, что выбор аппаратного обеспечения и алгоритма тесно связаны, что делает отла­ дочные платы чрезвычайно ценными. Имея под рукой несколько плат разработ­ ки, разработчики могут быстро протестировать свои алгоритмы на реальных процессорах и найти идеальный баланс между производительностью, энергопо­ треблением и стоимостью. Хотя традиционно они использовались только на ранних стадиях прототипиро­ вания, некоторые производители осознали потенциальные преимущества плат разработки и в промышленном применении. Если вы производите небольшую партию оборудования, возможно, вам не стоит тратить дополнительные средства и время на разработку специальной печатной платы, которая будет экономичной только в том случае, если будет производиться достаточно массово. Вместо этого
Глава 108 3 вы можете использовать заранее разработанную платформу, например Portenta (https://oreil.ly/_ezK6), Arduino оснащенную микроконтроллером и гибким набо­ ром входов и выходов, которые позволяют легко интегрировать ее в другие сис­ темы. Рис. 3.6. На типичной отладочной плате есть процессор, источник питания, входные и выходные контакты, разъемы и часто несколько датчиков, которые подключены к процессору и готовы к использованию Такие типы устройств бывают и для (https://www.raspberrypi.com) SoC, и ускорителей: например, Raspberry Pi производит ряд полностью интегрированных од­ ноплатных компьютеров SoC и ускорителей (single board computer, SBC; рис. 3.7) на основе мощных Jetson от Nvidia (https://oreil.ly/tO-.j), которые позволяют разработчикам быстро запускать код на аппаратном ускорителе. Для многих из этих платформ есть ряд совместимых устройств, поэтому вы можете создавать прототипы с помощью одноплатного компьютера, а затем развертывать их в сис­ теме на модуле (system on modu\e, SOM), предназначенной для интеграции в ва­ ше собственное оборудование, ничего не меняя в коде. Платы для разработки обычно представляют собой голые печатные платы без какого-либо корпуса, поэтому использовать их в полевых условиях без допол­ нительного проектирования не удастся. Если вам нужно полностью готовое устройство, производители loT размещают SoC в прочных корпусах со стан­ дартными портами ввода-вывода, сетевым оборудованием и источником пита­ ния. Они могут быть довольно дорогими, но зато позволяют сэкономить время и деньги по сравнению с проектированием и делия. изготовлением полноценного из­
Аппаратное обеспечение для искусственного интеллекта периферийных устройств Рис. 3.7. 109 Одноплатный компьютер включает в себя процессор, память, блок питания, входные и выходные разъемы, сетевые интерфейсы и все остальное - просто "включай и работай" Самым распространенным типом готовых периферийных устройств искусствен­ ного интеллекта на сегодняшний день является смартфон. Существуют целые книги по интеграции ИИ в приложения для смартфонов, например, книга Ло­ уренса Морони "Искусственный интеллект и машинное обучение для разработки на устройстве"7, поэтому мы не будем здесь затрагивать эту тему. В нашу задачу входит также использование микроконтроллеров и DSP для управления конкрет­ ными функциями смартфонов, например цифровыми помощниками , которые просыпаются при обнаружении определенных ключевых слов . Помимо встроенного ИИ периферийных устройств, смартфоны могут быть удобным инструментом для разработчиков, создающих прототипы приложений. Поскольку они питаются от аккумулятора и отлично поддерживают подключе­ ния к сети , они могут быть полезны для сбора исходных данных или тестирова­ ния ранних версий моделей машинного обучения на начальных этапах разработ­ ки, когда требуется доказательство реализуемости. Граничные серверы На противоположном от индивидуально разрабатываемых микросхем конце спек­ тра находится обычное серверное оборудование (то же самое, что может быть раз­ вернуто в центре обработки данных), но развернутое на периферийном устройстве. На этих мощных компьютерах работают полнофункциональные серверные опера­ ционные системы (обычно Linux или Windows), и с ними можно обращаться так же, как с любым другим облачным сервером. Ускорение, необходимое для ИИ, на таких устройствах, как правило, реализовано с помощью графических процессоров. 7 Moroney L. AI and Machine Leaming for On-Device Development. - O' Reilly, 2021. - 326 р.
110 Глава З Некоторые граничные серверы продаются в более прочном корпусе, подходящем для промышленных условий (например, в заводских цехах), по сравнению с их ана­ логами в центрах обработки данных. Мощь граничных серверов означает, что мы получаем преимущества облачных вы­ числений, сохраняя при этом безопасность, конфиденциальность и удобство хране­ ния данных на месте. В некоторых приложениях такие серверы позволяют полу­ чить лучшее из обоих миров- высокопроизводительное оборудование, низкую задержку, снижение риска утечки данных и экономное использование полосы про­ пускания. Еще одним преимуществом граничных серверов является то, что их можно рас­ сматривать как еще одну часть стандартной ИТ-инфраструктуры. Это означает, что они могут аккуратно вписаться в процедуры и набор навыков существующего ИТ • отдела. Фактически, еще совсем недавно все коммерческие вычисления выполня­ лись с помощью локальных серверов. То есть раньше граничные вычисления были нормой для любого бизнеса. У граничных серверов есть два основных недостатка: они потребляют огромное количество энергии и очень громоздкие. Если вам нужны большие объемы вычис­ лительных ресурсов, расположе1-_1ные под рукой, эти компромиссы могут того сто­ ить. Но обычно серверы размещаются в определенных местах, вроде здан11й и фаб­ рик, где есть свободное место и надежный источник питания. Если полноразмерные граничные серверы кажутся излишними для вашего прило­ жения (а это, вероятно, так и есть), системы на кристалле бой отличный компромисс. Благодаря использованию Linux представляют со­ Linux ИТ-отдел может обра­ щаться с такими серверами как с любым другим сервером, но они доступны в миниатюрных, энергоэффективных формах. Архитектуры с множеством устройств Приложения ИИ периферийных устройств не всегда реализуются непосредственно на устройствах, на которых размещены реальные датчики. Иногда имеет смысл ис­ пользовать архитектуру с несколькими устройствами. Например, в датчиках в пар­ ке транспортных поддонов может использоваться маломощная радиосвязь для пе­ редачи данных обратно на шлюзовое устройство, установленное в грузовике. Шлюз с меньшими ограничениями на энергопотребление и возможностью анализа данных с нескольких поддонов может запускать сложную логику ИИ периферийных уст­ ройств, которая принимает решения на основе данных. На рис. 3.8 показано, как это может выглядеть. Все становится еще интереснее, если используются гетерогенные вычисления (см. врезку "Гетерогенные вычисления" ранее в этой главе). Одно устройство может содержать процессоры приложения, а другой - нескольких типов: например, один для выполнения кода для выполнения алгоритмов машинного обучения. Полная система может состоять из множества устройств, у некоторых из них по несколько процессоров, которые собирают и обрабатывают данные в разных точках, в зави-
Аппаратное обеспечение для искусственного интеллекта периферийных устройств симости от того, какие принципы 111 BLERP нам нужно соблюсти. В таких решениях также могут использоваться облачные вычисления . 1. Датчики на транспортировочных поддонах 2. Установленный на грузовике пограничный шлюз ИИ передают данные по маломощному радиоканалу получает и обрабатывает данные З . При обнаружении проблемы грузовик передает данные на склад Рис. 3.8. Обычно в архитектуру входит несколько устройств Отличным примером архитектуры такого типа является умная колонка с голосовым помощником. Обычно в них используется как минимум два процессора. Первый это маломощный, постоянно включенный чип, который использует DSP - и модель машинного обучения для прослушивания слов пробуждения , не потребляя слиш­ ком много энергии . Второй - это прикладной процессор, который активируется постоянно включен­ ным чипом при обнаружении ключевых слов. Процессор приложения использует более сложную модель, пытаясь отловить любые ложные срабатывания, прошед­ шие мимо постоянно включенного чипа. Вместе эти два процессора могут иденти­ фицировать слова пробуждения , не нарушая конфиденциальность пользователя пу­ тем потоковой передачи частных разговоров в облако. После подтверждения слова пробуждения процессор приложения передает аудио на облачный сервер, который выполняет распознавание речи и обработку естественного языка, чтобы выдать соответствующий ответ. Общий алгоритм показан на рис . 3.9. При проектировании системы не бойтесь рассмотреть возможность использования нескольких устройств, что позволяет решить некоторые компромиссы, связанные с различными типами устройств .
Глава 112 3 .._, ,,- ,.- Умный микрофон Процессор приложений Процессор с низким электропотреблением Настроен на определение ключевых С/1ОВ, мало ложноотрицательных резу11ыаrов, Обычно бездействует, f+ Облачный веб-сервис I 1 1 1 1 1 Расшифровывает аудио, выполняет обработку языка, ~ просыпается в случае обнаружения ключевого слова много ложноположите11ьных 1 1 1 1 генерирует ответ и интегрируется с другими сервисами 3.9. Процессор с низким энергопотреблением стремится уловить как можно больше потенциальных ключевых слов. Процессор приложения просыпается и анализирует возможные совпадения, а также вызывает облачный веб-сервис, если таковой найден Рис. Рассмотрим некоторые распространенные ситуации, когда это может быть полезно. ♦ Мониторинг большого количества отдельных объектов: эта задача может ока­ заться дорогостоящей, если на каждом объекте используется высокопроизводи­ тельное оборудование с поддержкой ИИ. ♦ Снижение энергопотребления: датчики питаются от аккумуляторов и должны работать долгое время . ♦ Защита конфиденциальности: отправка данных непосредственно на большое устройство или облачный сервер может нарушить нормы конфиденциальности. ♦ Интеграция с устаревшим оборудованием: существующие датчики или шлюзы могут быть дополнены периферийными устройствами искусственного интеллек­ та без необходимости замены. Устройства и рабочие нагрузки Важно понимать, на что способны устройства каждого типа. В табл. 3.1 приведен краткий справочник, который можно использовать, чтобы определить, какие типы устройств способны обрабатывать те или иные типы данных. Здесь указан уровень поддержки каждого типа данных на данном устройстве: полная поддержка, ограни­ ченная поддержка или отсутствие поддержки. Однако имейте в виду, все эти категории широки, а каждое отдельное устройство уни­ кально. Не все высокопроизводительные микроконтроллеры одинаковы. Также стоит отметить, что положение дел быстро меняется, и таблица может быстро устареть! Таблица Тип устройства Низко- Высоко- частотный частотный Аудио- И зоб раже- И зоб раже- данные ние низ- ние высо- кого разре- кого разре- шения шении временной временной Бюджетный MCU ряд ряд Ограни- Ограни- ченная ченная 3.1. Типы данных и устройства Нет Нет Нет Видео Нет
Аппаратное обеспечение для искусственного интеллекта периферийных устройств Таблица Тип устройства Низко- Высоко- частотный частотный Высокопроизво- 3.1 Аудио- Изображе- Изображе- данные иие низ- ние высо- временной временной кого разре- кого разре- ряд ряд шения шения Полная Полный Полный Полный дительный мик- 1 113 (окончание) Видео Ограни- Ограни- ченное ченная Полная Ограни- роконтроллер Высокопроизво- Полная Полная Полная Полная дительный мик- ченная роконтроллер с ускорителем DSP Полная Полная Полная Полная Ограни- Ограни- ченная ченная SoC Полная Полная Полная Полная Полная Полная SoC с ускорите- Полная Полная Полная Полная Полная Полная FPGA/ASIC Полная Полная Полная Полная Полная Полная Граничный Полная Полная Полная Полная Полная Полная Полная Полная Полная Полная Полная Полная лем сервер Облако Резюме В этой главе мы рассмотрели ключевое оборудование, на котором размещается ИИ периферийных устройств, и датчики, которые обеспечивают его данными. В сле­ дующей главе мы узнаем об алгоритмах, благодаря которым это работает.

ГЛАВА 4 Алгоритмы для искусственного интеллекта периферийных устройств Существует две основные категории алгоритмов, важных для ИИ периферийных устройств: конструирование признаков и искусственный интеллект. У обоих типов есть множество подкатегорий, и в этой главе мы собираемся рассмотреть их. Наша цель - предоставить обзор каждого типа алгоритмов с инженерной точки зрения, рассмотрев их типичное использование, сильные и слабые стороны, а также пригодность для развертывания на периферийных устройствах. Это должно дать вам отправную точку при планировании реальных проектов, о которых мы погово­ рим в следующих главах. Конструирование признаков В науке о данных конструирование признаков- это процесс превращения необра­ ботанных данных во входные данные, которые можно передать в статистические инструменты, применяемые нами для описания и моделирования ситуаций и про­ цессов. Конструирование признаков предполагает использование вашего опыта в предметной области, чтобы понять, какие части необработанных данных содержат соответствующую информацию, а затем извлечение этого сигнала из окружающего шума. С точки зрения ИИ периферийных устройств, конструирование признаков - это преобразование необработанных данных датчиков в полезную информацию. Чем лучше выполнено конструирование признаков, тем легче жизнь алгоритмов ИИ, которые пытаются их интерпретировать. При работе с данными датчиков при кон­ струировании признаков используются алгоритмы цифровой обработки сигналов. Сюда также может входить разделение данных на управляемые фрагменты.
116 Глава4 Работа с потоками данных Как мы видели, большинство датчиков выдают данные временнь1х рядов. Цель пе­ риферийного приложения с ИИ - взять эти потоки данных временнь,х рядов и ра­ зобраться в них. Самый распространенный способ управления потоками - разбить временной ряд на фрагменты, часто называемые окнами, а затем анализировать эти фрагменты по одному 1. В резу льтате получается временной ряд резу ль татов, которые можно ин­ терпретировать, чтобы понять, что происходит. На рис. 4.1 показано, как окно из­ влекается из потока данных. 1. Берется окно потока данных Алгоритм Результат Алгоритм Результат 2. Это окно обрабатывается алгоритмом 3. Производится последовательность таких результатов Рис. 4. 1. Временной ряд часто разбивается на фрагменты, называемые окнами, которые анализируются по одному 1 Фрагменты промежуток . могут быть дискретными, перекрывающимися или даже отстоять друг от друга через
Алгоритмы для искусственного интеллекта периферийных устройств Для обработки одного фрагмента данных требуется определенное время - 117 можно считать это время задержкой нашей системы. Она определяет, как часто мы можем брать и обрабатывать очередное окно данных. Скорость, с которой мы можем за­ хватывать и обрабатывать данные, называется частотой кадров системы и часто выражается в количестве окон, которые система обрабатывает за секунду. Кадры могут быть последовательными или перекрываться, как показано на рис. 1секунда, 3 кадра в секунду (последовательные) Рис. 4.2. 4.2. 1секунда, 4кадра в секунду (перекрытие) В зависимости от частоты кадров окна потенциально могут перекрываться. Дпя данных, содержащих события, такое перекрытие желательно, поскольку оно увеличивает вероятность того, что все событие попадет в окно, а не будет прервано Чем меньше задержка, тем больше окон данных можно проанализировать за опре­ деленный период времени . Чем больше данных удастся проанализировать, тем на­ дежнее результаты. Например, представьте, что мы используем модель машинного обучения для распознавания команды. Если окна расположены слишком далеко друг от друга, мы можем пропустить важные части произнесенной команды и не сможем ее распознать (рис. 4.3). f....______. Пропущено Рис. 4.3. Пропущено Пропущено Если частота кадров слишком низкая, некоторые части сигнала не будут обработаны; если вы пытаетесь обнаружить кратковременные события, это может означать, что некоторые события пропущены Выбор размера окна - это важно. Чем больше окно, тем больше времени требуется для обработки данных внутри него. Однако окна большего размера содержат боль­ ше информации о сигнале, а это означает, что они могут облегчить жизнь исполь­ зуемым алгоритмам обработки сигналов и искусственного интеллекта. При разра­ ботке системы важно учитывать компромисс между размером окна и частотой кадров. Как мы увидим позже, существует множество различных алгоритмов ИИ, и неко­ торые из них более чувствительны к размеру окна, некоторые алгоритмы ( обычно - менее. Некоторые те, которые сохраняют кое-какие данные о прошедшем сигна­ ле) могут хорошо работать с очень маленькими размерами окон, в то время как другим для правильного анализа сигнала требуются большие размеры окон. Выбор
118 Глава4 алгоритма также влияет на задержку, которая тоже ограничивает размер окна. По­ лучается сложная система компромиссов между размером окна, задержкой и выбо­ ром алгоритма. В видеоданных окна тоже существуют. В этом случае каждое "окно" видео пред­ ставляет собой определенное количество неподвижных изображений - обычно одно, но некоторые алгоритмы ИИ потенциально могут анализировать несколько изображений одновременно. Более сложные методы работы с потоками данных относятся к области цифровой обработки сигналов. Эти методы можно комбинировать с разделением на окна для генерации данных, которые будут использоваться в алгоритмах ИИ. Алгоритмы цифровой обработки сигналов Существуют сотни различных алгоритмов обработки сигналов, позволяющих анали­ зировать сигналы, генерируемые датчиками. В этом разделе мы рассмотрим некото­ рые алгоритмы DSP, которые наиболее важны для ИИ периферийных устройств. Передискретизация У всех сигналов временнь1х рядов есть некоторая частота дискретизации (или про­ сто частота), часто измеряемая количеством выборок данных в секунду (герц, Гц). Частоту дискретизации сигнала часто бывает необходимо изменить. Например, вы можете захотеть снизить скорость сигнала (понижающая дискретизация), если он генерирует данные быстрее, чем вы успеваете их обрабатывать. С другой стороны, вам может потребоваться увеличить частоту сигнала (повышающая дискретиза­ ция), чтобы сигнал можно было удобно анализировать вместе с другим сигналом, имеющим более высокую частоту. Понижающая дискретизация работает путем "отбрасывания" некоторых точек дан­ ных для достижения целевой частоты. Например, если вы отбросите каждый второй кадр сигнала частотой 1О Гц (1 О выборок в секунду), он станет сигналом частотой 5 Гц. Однако из-за явления, называемого наложением спектров, снижение частоты та­ ким образом может привести к искажению выходного сигнала. Дr~я того чтобы спра­ виться с проблемой, из сигналов необходимо удалить некоторую высокочастотную информацию, прежде чем они будут подвергнуты субдискретизации. Это достигает­ ся с помощью фильтра нижних частот, описанного в следующем разделе. Повышающая дискретизация работает противоположным образом: для увеличения частоты сигнала создаются и добавляются новые точки данных. Например, если в сигнал частотой частотой 20 IО Гц после каждой точки вставить еще одну, он станет сигналом с Гц. Самое сложное - понять, что именно вставить! Невозможно уз­ нать, что на самом деле происходило в период между двумя выборками, но ддя приблизительного заполнения пустот можно использовать метод, известный как интерполяция. Разрешение изображений также можно повышать и понижать, как и частоту в видео. В данном случае увеличивается или уменьшается пространственное разрешение
Алгоритмы для искусственного интеллекта периферийных устройств 119 (пикселов на изображение). Как и передискретизация временнь1х рядов, изменение размера изображений также требует методов сглаживания или интерполяции. Важны как повышающая, так и понижающая дискретизация, но понижающая дис­ кретизация чаще встречается в ИИ периферийных устройств. Обычно датчики вы­ дают выходной сигнал с заданной частотой, оставляя разработчику право понижать дискретизацию и получать частоту, которая лучше всего подходит для остальной части их конвейера обработки сигналов. Для периферийных приложений с ИИ повышающая дискретизация в основном по­ лезна в случаях, когда требуется объединить два сигнала с разными частотами в один временной ряд. Однако этого также можно достичь за счет понижения часто­ ты дискретизации более высокочастотного сигнала, что в вычислительном отноше­ нии может оказаться дешевле. Изменение размера и обрезка изображений Разные модели датчиков изображений производят изображения разных размеров и форм, а алгоритмам ИИ периферийных устройств (такие как модели машинного зрения с глубоким обучением) часто требуются изображения конкретных разме­ ров. Обрезка и изменение размера обычно используются для обеспечения совмес­ тимости изображений с моделями, и для этого может выполняться как понижение, так и повышение разрешения, а также удаление фрагментов изображения. Подгонка по короткой стороне (обрезка) Подгонка по длинной стороне Исходное изображение Рис. 4.4. Сплющивание Три разных способа подгонки прямоугольного изображения под требуемую квадратную форму
120 На рис. Глава 4.4 4 показаны некоторые распространенные способы изменения размера и обрезки изображений в соответствии с требуемой формой ввода. Фильтрация Цифровой фильтр- это функция, применяемая к сигналу временного ряда и опреде­ ленным обра:юм преобразующая его. Существует множество различных типов фильт­ ров, и они могут быть очень полезны при подготовке данных для алгоритмов ИИ. Фильтры нижних частот предназначены для пропускания низкочастотных элемен­ тов сигнала и удаления высокочастотных элементов. Частота среза фильтра­ это частота, за пределами которой высокочастотные сигналы преобразуются, а частотная характеристика описывает, насколько сильным будет преобразование. Фильтры верхних частот - это то же самое, только наоборот: они пропускают час­ тоты выше частоты среза и ослабляют (уменьшают) частоты ниже. Полосовой фильтр объединяет эти два параметра, пропуская частоты внутри определенной полосы, но ослабляя частоты за ее пределами. Цель фильтрации в ИИ периферийных устройств - изолировать полезные части сигнала, избавившись от компонентов, которые не способствуют решению пробле­ мы. Например, в приложении для распознавания речи можно использовать полосо­ вой фильтр, пропускающий частоты в нормальном диапазоне человеческой речи Гц до 8 кГц) и игнорирующий информацию на других частотах. Это может ( от 125 помочь модели машинного обучения заниматься задачей распознавания речи, не отвлекаясь на другую информацию в сигнале. Фильтрация шума Все сигналы от датчиков содержат некоторый уровень шума: случайные колеба­ ния данных, которые происходят из-за небольших неточностей измерений. Фо­ новый шум в аудиозаписях или точки на фотографиях, сделанных цифровой ка­ мерой ночью, являются типичными примерами шума. Если шум присутствует на определенных частотах, что бывает довольно часто, фильтры могут быть очень полезны для его устранения. Это может облегчить не­ которым алгоритмам ИИ интерпретацию сигналов. Однако некоторые типы ал­ горитмов, например модели глубокого обучения, естественным образом способ­ ны справляться с шумом, поэтому не всегда необходимо его фильтровать. Фильтры можно применять к данным любого типа. Например, если к изображению применяется фильтр нижних частот, он оказывает эффект размытия или сглажива­ ния. Если к тому же изображению применить фильтр верхних частот, он "подчерк­ нет" детали. Одним из типов фильтра нижних частот является фильтр скользящего среднего. Он вычисляет скользящее среднее значений в определенном окне временного ряда. Помимо сглаживания данных, это приводит к тому, что одно значение содержит информацию из широкого диапазона времени.
Алгоритмы для искусственного интеллекта периферийных устройств 121 Если вычислить и сложить несколько скользящих средних с разной длиной окна, мгновенный снимок сигнала (содержащий несколько разных скользящих средних) будет содержать информацию об изменениях сигнала в окне времени и ряде раз­ личных частот. Это может быть полезно в конструировании признаков, поскольку означает, что алгоритм ИИ может наблюдать широкий временной интервал, ис­ пользуя относительно небольшое количество точек данных. Фильтрация многих - чрезвычайно распространенная операция обработки сигналов. Во встроенных процессорах есть аппаратная поддержка некоторых типов фильтрации, что снижает задержку и потребление энергии. Спектральный анализ Сигнал временного ряда находится во временной области, т. е. он представляет собой изменение набора переменных с течением времени. Используя некоторые распро­ страненные математические инструменты, можно преобразовать сигнал временно­ го ряда в частотную область. Значения, полученные в результате преобразования, описывают, какая часть сигнала лежит в той или иной полосе в диапазоне частот - спектре. Разделив сигнал на несколько тонких окон и затем преобразовав каждое окно в час­ тотную область, как показано на рис . 4.5, можно создать карту того, как частота сигнала изменяется с течением времени. Эта карта, или спектрограмма, служит очень эффективным исходным материалом для моделей машинного обучения. Рис. 4.5. Один и тот же аудиофрагмент, представленный в виде сигнала во временной области (вверху) и спектрограммы в частотной области (внизу) Спектрограммы обычно используются в реальных приложениях, особенно в облас­ ти обработки аудио. Разделение данных на оконные диапазоны частот позволяет интерпретировать их относительно небольшими и простыми моделями 2 . Также че- 2 Одна из причин этого заключается в том, что необработанный '3Вук, показанный на рис . 4.5, состоит 44 100 точек, тогда как эквивалентная спектрограмма содержит только 3960 элементов. Уменьше­ из ние ввода означает уменьшение модели.
122 Глава 4 ловек может визуально отличить одно слово от другого, глядя на спектрограммы, а некоторые люди даже научились их читать. Существует множество алгоритмов, позволяющих преобразовать сигнал из вре­ менной области в частотную область, но наиболее распространенным является пре­ образование Фурье. Это очень часто используемая операция, и для ее выполнения на встроенных устройствах часто существует аппаратная поддержка (или, по край­ ней мере, оптимизированные реализации). Существует огромное количество алгоритмов и методик цифровой обработки сиг­ налов и анализа временньrх рядов, и это крупные области инженерии и исследова­ ния. Приведем пару замечательных ресурсов по этим темам: ♦ Стивен В. Смит "Цифровая обработка сигналов. Практическое руководство для инженеров и научных работников" (Smith S. W. The Scientist and Engineer's Guide to Digital Signa\ Processing. - Califomia Technical, 1997; https://oreil.ly/joOUJ); ♦ Эйлин Нильсен "Практический анализ временнь,х рядов" Series Analysis. - О' Reilly, (Niels А. Practical Time 2019; https://oreil.ly/NoZrs ). Обнаружение признаков на изображении Множество алгоритмов обработки сигналов посвящено задаче извлечения полез­ ных признаков 3 из изображений. Их традиционно называют алгоритмами компью­ терного зрения. Приведем некоторые распространенные примеры. Обнаружение краев. Используется для определения границ объектов на изображении (рис. Рис. 4.6. 4.6). Алгоритмы обнаружения краев находят границы между областями разного цвета или интенсивности 3 В задаче обработки изображений признаком называется определенная часть информации об изображении. например положение конкретных визуальных структур. На страниuе Википедии под названием "Feature (computer vision)" (https://oreil.ly/-EC-T) перечислены многие распространенные признаки изображений.
Алгоритмы для искусственного интеллекта периферийных устройств 1 123 Обнаружение углов. Используется для поиска на изображении точек, имеющих интересную двумер­ ную струкrуру. Обнаружение областей. Используется для определения областей изображения, имеющих что-то общее. Обнаружение гребней. Используется для определения кривых на изображении. Обнаружение признаков превращает большое беспорядочное изображение в более компактное представление присутствующих в нем визуальных струкrур. Это по­ тенциально может облегчить жизнь любым алгоритмам ИИ, которым дальше пред­ стоит работать с этими данными. Обнаружение признаков не всегда необходимо. Обычно модели глубокого обуче­ ния способны находить собственные способы извлечения признаков, что снижает полезность предварительной обработки. Но все равно обнаружение признаков по­ прежнему часто выполняется при интерпретации данных изображения с использо­ ванием других типов алгоритмов ИИ. Проект OpenCV (https://opencv.org) предоставляет набор библиотек для обнаруже­ ния признаков (и других задач обработки изображений), которые будут работать на большинстве устройств SoC. Дllя микроконтроллеров OpenMV (https://openmv.io) есть библиотека реализаций алгоритмов обнаружения признака с открытым исход­ ным кодом, а также аппаратное обеспечение, предназначенное для их запуска. Объединение признаков и датчиков Ничто не мешает вам объединить несколько различных признаков и сигналов и сделать их входными данными для алгоритмов ИИ. Например, вы можете рассчи­ тать несколько скользящих средних временного ряда по нескольким различным окнам и передать их в модель машинного обучения совместно. Жестких правил rут не существует, поэтому не стесняйтесь экспериментировать и проявлять творче­ ский подход к делению данных. В следующих главах мы заложим некоторую осно­ ву для экспериментов. Объединение датчиков - это нечто большее, чем объединение признаков в одном сигнале, а именно, объединение данных от нескольких датчиков. Например, фит­ нес-трекер с ИИ может объединять информацию от акселерометра, гироскопа и датчика сердечного ритма, пытаясь определить, каким видом спорта занимается пользователь. В более сложном сценарии ИИ периферийных устройств датчики даже не обяза­ тельно интегрировать с одним и тем же устройством. Представьте себе интеллекrу­ альную систему климат-контроля, которая использует датчики темпераrуры и при­ сутствия людей, установленные по всему зданию, для оптимизации использования кондиционера.
124 Глава 4 Существует три категории объединения датчиков. Дополнительный. Когда несколько датчиков объединяются для обеспечения более полного пони­ мания ситуации, чем это было бы возможно с помощью одного датчика - на­ пример, различные датчики на нашем гипотетическом фитнес-трекере. Конкурентный. Когда несколько датчиков измеряют одно и то же, чтобы снизить вероятность ошибок в измерениях - например, несколько резервных датчиков контролиру­ ют температуру критической части оборудования. Кооперативный. Когда информация от нескольких датчиков объединяется для создания сигнала, который иначе получить было бы нельзя - например, две камеры создают сте­ реоизображение, содержащее информацию о глубине. Проблема, связанная с объединением датчиков, заключается в том, как объединить несколько сигналов, которые могут возникать даже с разной скоростью. Вам следу­ ет учитывать следующее: 1. Выравнивание сигналов во времени. Для многих алгоритмов важно, чтобы все сигналы, которые мы собираемся объединить, дискретизировались с одной и той же частотой, и чтобы в итоговых значениях бьmи представлены одновременные измерения. Этого можно достичь посредством передискретизации - например, повышающей дискретизации низкочастотного сигнала так, чтобы он имел ту же частоту, что и высокочастотный сигнал, с которым он объединяется. 2. Масштабирование сигналов. Очень важно, чтобы значения сигналов находились в одном масштабе, для того чтобы сигнал с обычно большими значениями не подавлял сигнал с обычно меньшими значениями. 3. Численное объединение сигналов. Его можно выполнить с помощью простых математических операций (сложение, умножение или усреднение) или посред­ ством более сложных алгоритмов, таких как фильтр Калмана (описанный ниже), или просто путем объединения данных и передачи их в алгоритм в виде одной матрицы. Выполнять объединение датчиков можно до или после других этапов конструиро­ вания признаков. Произвольный пример: если вы намереваетесь объединить два временнь1х ряда, можете сначала выполнить низкочастотный проход по одному из них, затем масштабировать их до одного и того же масштаба, объединить сигналы путем усреднения и преобразования объединенных значений в частотную область. Не бойтесь экспериментировать! Масштабирование признаков Поток данных от датчика может иметь широкий диапазон значений. Например, если датчик возвращает результаты измерений в виде 16-битных целых чисел без знака, их значение может находиться в диапазоне от О до 65 535.
Алгоритмы для искусственного интеллекта периферийных устройств 125 Такие большие диапазоны могут усложнить работу некоторых алгоритмов ИИ. Например, моделям глубокого обучения будет трудно обучаться, если их вход­ ные значения слишком велики. Кроме того, может быть сложно получить хорошие результаты от моделей ма­ шинного обучения при передаче признаков, значения которых имеют совершен­ но разные масштабы. Большие значения перевешивают меньшие, что снижает выгоду от наличия нескольких входных признаков. Это тоже проблема, которую при слиянии датчиков нужно решить. Для того чтобы обойти эту проблему, рекомендуется масштабировать входные данные перед их объединением или отправкой в алгоритмы ИИ. Распространен­ ный способ сделать это называется нормализацией. Существует несколько разно­ видностей нормализации. В самом простом случае, известном как изменение масштаба, вы определяете максимальное и минимальное значения для опреде­ ленной функции в репрезентативной выборке входных данных (обычно с ис­ пользованием обучающих данных, если вы работаете с моделями машинного обучения). Затем вы можете рассчитать нормализованные значения, используя следующую формулу: нормализованное_значение = (необработанное_значение Получается значение от О до 1, - = минимум)/ (максимум - минимум) которое можно будет удобно сравнивать и ком­ бинировать с другими нормализованными значениями в том же масштабе. Существуют и другие методы масштабирования, такие как нормализация средне­ го и стандартизация. Почитать об этом можно в статье на Википедии "Feature Scaling" (bttps://oreil.ly/hhzyc). Следует отметить, что значения, с которыми вы сталкиваетесь в реальном мире, могут оказаться в диапазоне, отличном от диапазона обучающих данных. Для то­ го чтобы избежать проблем, следует обрезать данные, выходящие за рамки ожи­ даемого диапазона. Теперь у нас есть серьезные инструменты для обработки данных. В следующем разделе мы рассмотрим алгоритмы ИИ, которые помогут нам их понять. Алгоритмы искусственного интеллекта Существует два подхода к алгоритмам ИИ. Один из них основан на функциональ­ ности: для чего они предназначены? Другой основан на реализации: как они рабо­ тают? Оба аспекта важны. Функциональность имеет решающее значение для при­ ложения, которое вы пытаетесь создать, а реализация важна, когда встает вопрос об ограничениях, к которым обычно относятся набор данных и используемое для раз­ вертывания устройство.
Глава 126 4 Типы алгоритмов по функциональности Сперва давайте рассмотрим наиболее важные типы алгоритмов с функциональной точки зрения . Сопоставление проблемы с типом алгоритма называется фреймин­ гом, и мы углубимся в эту тему в главе 6. Классификация Алгоритмы классификации пытаются решить проблему различения разных типов, или классов, объектов. Примеры: ♦ фитнес-трекер с акселерометром, позволяющий отличить ходьбу от бега; ♦ система безопасности с датчиком изображения, определяющая, есть ли в комна­ те человек; ♦ исследовательские камеры в дикой природе, классифицирующие четыре разных вида животных . На рис. 4. 7 показан классификатор, на основе данных акселерометра определяю­ щий, стоит погрузчик или движется. Возможные метки: [ i.dle, l'lovi.ng] i.dle: 96%, l'lovi.ng : 4% i.dle : 2%, l'lovi.ng : 98% Рис. 4.7. Классификатор обычно выводит распределение вероятностей для всех возможных классов В зависимости от задачи классификацию можно разделить на несколько категорий . Бинарная классификация . Входные данные принадлежат одному из двух классов. Мультиклассовая классификация. Входные данные принадлежат одному из более чем двух классов. Многозначная классификация . Входные данные принадлежат нулю или любому другому количеству классов. Наиболее распространенными формами классификации являются бинарная и муль­ тиклассовая . В этих типах классификации вам всегда потребуются как минимум два класса. Даже если вас волнует только одна вещь (например, наличие человека в комнате), вам также нужен класс, в который входит все, что вас не волнует (напри­ мер, комнаты, в которых нет людей). Многозначная классификация встречается сравнительно редко.
Алгоритмы для искусственного интеллекта периферийных устройств 127 Регрессия Алгоритмы регрессии выводят цифры . Примеры: ♦ умный термостат, который предсказывает температуру за час; ♦ виртуальные весы, оценивающие массу продукта с помощью камеры; ♦ виртуальный датчик, который оценивает скорость вращения двигателя по звуку. Виртуальные датчики, как в двух последних примерах, представляют собой осо­ бенно интересный случай регрессии. Они могут использовать доступные данные датчиков для прогнозирования измерений других типов датчиков, фактически не требуя их реального наличия. Обнаружение и сегментация объектов Алгоритмы обнаружения объектов берут изображение или видео и определяют расположение конкретных объектов на них, часто рисуя вокруг них ограничиваю­ щие рамки. Они сочетают в себе классификацию и регрессию, идентифицируя кон­ кретные типы объектов и предсказывая их числовые координаты, как показано на рис. 4.8. Рис. 4.8. Типовой результат работы для моделей обнаружения объектов состоит из ограничивающих рамок, нарисованных вокруг обнаруженных объектов, с метрикой достоверности Для определенных типов объектов существуют специализированные алгоритмы обнаружения. Например, модели оценки позы предназначены для распознавания частей человеческого тела и определения их местоположения на изображении, как показано на рис. 4.9. Алгоритмы сегментации аналогичны алгоритмам обнаружения объектов, но клас­ сифицируют изображения на уровне пикселов. В результате получается карта сег­ ментации, как показано на рис. данных их содержимым. 4.1 О, которая пытается пометить области входных
Глава 128 Рис. 4.9. Для 4 оценки позы определяются ключевые точки на теле человека, положение которых можно использовать в качестве входных данных для других процессов Рис. 4. 10. Данная уличная сцена размечена картой сегментации. Различные области , например люди и дорожное покрытие, раскрашены разными оттенками. Алгоритм сегментации должен предсказать , какие пикселы какому типу объекта принадлежат Приведем несколько примеров использования обнаружения и сегментации объектов : ♦ фермерский монитор, который использует камеры для подсчета количества жи­ вотных на поле; ♦ домашняя фитнес-система, генерирующая обратную связь о физической форме пользователя во время тренировки ; ♦ промышленная камера, измеряющая степень заполнения контейнера продуктом. Обнаружение аномалий Алгоритмы обнаружения аномалий распознают отклонения сигнала от нормально­ го поведения. Они полезны во многих приложениях: ♦ промышленная система профилактического обслуживания, которая может опре­ делить момент, когда двигатель начал выходить из строя, по потребляемому току ;
Алгоритмы для искусственного интеллекта периферийных устройств 129 ♦ робот-пылесос, который может определять движение по необычной поверхности с помощью акселерометра; ♦ следящая камера, определяющая, когда мимо нее проходит неизвестное животное. Алгоритмы обнаружения аномалий очень полезны в задачах профилактического обслуживания. Кроме того, они полезны в сочетании с моделями машинного обу­ чения. Многие модели машинного обучения будут давать некорректные и случай­ ные результаты, получив входные данные, которых нет в обучающем наборе. Для того чтобы избежать этого, модель машинного обучения можно объединить с алгоритмом обнаружения аномалий, который сообщает ей, когда что-то идет не так, и тогда ложные результаты можно отбросить. Некоторые типы моделей также можно откалибровать так, чтобы их выходные данные представляли истинное распределение вероятностей, анализируя которое, можно определить неуверен­ ность модели. Кластеризация Алгоритмы кластеризации пытаются сгруппировать входные данные по некоторо­ му сходству и распознают случаи, когда входные данные не похожи на то, с чем модель имела дело раньше. Они часто используются, когда периферийному устрой­ ству искусственного интеллекта необходимо обучаться прямо в боевоi1 среде, в том числе для приложений обнаружения аномалий. Примеры: ♦ голосовой помощник, который распознает голоса своих пользователей; ♦ приложение для прогнозного обслуживания, которое изучает "нормальное" со­ стояние работы и учится обнаруживать отклонения от него; ♦ торговый автомат, который может рекомендовать напитки на основе предыду­ щего выбора пользователя. Алгоритм кластеризации может либо изучать свои кластеры на лету (после развер­ тывания), либо использовать заранее настроенные кластеры. Уменьшение размерности Алгоритмы уменьшения размерности принимают сигнал и создают его представле­ ние, содержащее такую же информацию, но в гораздо меньшем объеме памяти. По­ сле этого представления двух сигналов можно легко сравнить друг с другом. При­ ведем несколько примеров: ♦ сжатие звука, чтобы удешевить его передачу с удаленного устройства; ♦ распознавание отпечатков пальцев, определяющее, что отпечаток принадлежит владельцу устройства; ♦ распознавание отдельных лиц в видеопотоке. Уменьшение размерности, как правило, используется не само по себе, а в комбина­ ции с другими алгоритмами ИИ. Например, его можно использовать в сочетании с алгоритмом кластеризации для идентификации схожих сигналов в сложных типах данных, таких как аудио и видео.
Глава 130 4 Преобразование Алгоритмы преобразования принимают один сигнал и выводят другой. Приведем некоторые примеры: ♦ наушники с шумоподавлением, которые определяют в сигнале определенные шумы и удаляют их; ♦ автомобильная камера заднего вида, которая улучшает изображение в темноте или во время дождя; ♦ устройство распознавания речи, которое принимает аудиосиrнал и выводит его транскрипцию. Входные и выходные данные алгоритмов преобразования могут сильно различать­ ся по виду. В случае транскрипции входным сигналом является поток ау диодан­ ных, а выходным - последовательность слов. Комбинирование алrоритмов , Ничего не мешает комбинировать разные типы алгоритмов в одном при­ ложении. Позже в этом разделе мы рассмотрим методы объединения алrо- • - - ритмов (см. разд. "Комбинирование алгоритмов" далее в этой главе). Типы алгоритмов по реализации Классификация алгоритмов по функциональности помогает нам понять, для чего они используются, но с инженерной точки зрения важно также понимать, как они реализуются. После десятилетий исследований в области информатики появились сотни различных методов построения алгоритма классификации. У каждого метода есть свои уникальные сильные и слабые стороны, которые усугубляются ограниче­ ниями, налагаемыми периферийным оборудованием с ИИ. В следующем разделе мы рассмотрим наиболее важные способы реализации алго­ ритмов ИИ. Имейте в виду, что это не исчерпывающий список - мы говорим про ИИ периферийных устройств, поэтому речь пойдет о технологиях, которые хорошо работают именно на устройствах. Условная логика и эвристика Самый простой тип алгоритмов ИИ основан на условной логике: простых операто­ рах tf, результатом которых являются решения. Вернемся к фрагменту кода, кото­ рый мы рассмотрели в разд. "Искусственный интеллект" главы current_speed = 10 # dtstance_frOP1_wall = 50 # seconds_to_stop = З # 1: В мемрах в секунду В мемрах Нинu№Льное время в секундах, # необходимое для ос,юновки а8/90Юбuля safety_buffer =1 # Запас npoчнocfllU до нажамия на ,юрмоз в секундах
Алгоритмы для искусственного интеллекта периферийных устройств 131 # Г/одсчем времени до сl'/Оl/кновения в секундах seconds_unttl_cгash # = dtstance_frOl'l_wall / cuггent_speed АКl'luвируем мормоза, если есмь вероRl'lносмь аварии if seconds_unttl_crash < seconds_to_stop + safety_buffeг: applyBгakes() Этот простой алгоритм выполняет базовые вычисления, используя некоторые за­ данные человеком значения (second_to_stop и т. д.), и решает, следует ли тормозить. Считается ли это искусственным интеллектом? Этот вопрос может породить жар­ кие дискуссии, но ответ - однозначно да4. Общепринятое понимание искусственного интеллекта заключается в том, что мы создаем машины, способные думать как люди. Но инженерное определение гораздо более реалистично: ИИ позволяет компьютерам выполнять задачи, которые обычно требуют человеческого интеллекта. В данном примере управление тормозами ав­ томобиля во избежание столкновения определенно требует человеческого интел­ лекта. Двадцать лет назад такую систему сочли бы невероятно крутой, но в совре­ менных автомобилях автоматическое торможение - обычное дело. Прежде чем смеяться над тем, что операторы tf могут считаться искусст­ венным интеллектом, следует вспомнить, что деревья решений - одна из самых популярных и эффективных категорий алгоритмов машинного обу­ чения - как раз и состоят из операторов "если". Сегодня даже модели глу­ бокого обучения можно реализовать в виде бинарных нейронных сетей, которые, по сути, представляют собой условную логику. Интеллект исхо­ дит из приложения, а не из реализации! Условная логика, реализованная в нашем алгоритме торможения автомобиля, на самом деле является реализацией задачи классификации. Учитывая входные дан­ ные (скорость автомобиля и расстояние от стены), алгоритм классифицирует си­ туацию на один из двух типов: безопасная ситуация или возможная авария. У слов­ ная логика является естественной реализацией выходные данные по природе категориальны - классификации, оператор tf поскольку ее дает нам либо один, либо другой результат. Условная логика связана с идеей эвристики. Эвристика - это созданное вручную правило, которое можно применить к ситуации, чтобы помочь ее проанализировать или отреагировать на нее. Например, в алгоритме торможения автомобиля исполь­ зуется эвристика, согласно которой, если до удара о стену осталось менее четырех секунд, автомобилю следует затормозить. Эвристики разрабатываются людьми с использованием знаний предметной облас­ ти. Эти знания предметной области могут быть выведены на данных, собранных в 4 Существует хорошо задокумешированный феномен, известный как "эффект ИИ" (https://oreil.ly/hcR8Q): когда исследователи ИИ находят способ заставить компьютер выполнять задачу, критики перестают относить лу задачу к разряду "интеллекrуальных".
132 Глава 4 реальных ситуациях. В этом отношении наш, казалось бы, простой алгоритм тор­ можения автомобиля на самом деле может отражать глубокое и хорошо изученное понимание реального мира. Возможно, значение seconds_to_stop было получено по результатам краш-тестов стоимостью в миллионы долларов и подобрано идеально. На таком примере легко увидеть, как даже оператор if может содержать в себе зна­ чительный объем человеческого интеллекта и знаний, собранный и преобразован­ ный в простой и элегантный фрагмент кода. Наш пример с торможением автомобиля очень прост, но в сочетании с обработкой сигналов условная логика позволяет принимать весьма сложные решения. Напри­ мер, представьте, что вы создаете систему профилактического обслуживания, предназначенную для оповещения рабочих о состоянии промышленного оборудо­ вания в зависимости от звуков, которые оно издает. Возможно, машина издает ха­ рактерный пронзительный вой, когда вот-вот сломается. Если мы захватим звук и преобразуем его в частотную область с помощью преобразования Фурье, можно использовать простой оператор if, чтобы определить, издает ли оборудование тот самый звук, и сообщить об этом работникам. Помимо операторов tf, можно использовать более сложную логику для интерпре­ тации ситуаций на основе известных правил. Например, в промышленной машине может использоваться запрограммированный вручную алгоритм, позволяющий из­ бежать повреждений за счет изменения скорости на основе измерений внутренней температуры и давления. Алгоритм может измерять температуру и давление и на­ прямую рассчитывать число оборотов в минуту, используя человеческие знания, отраженные в коде. Если это подходит для вашей ситуации, то условная логика и другие написанные вручную алгоритмы могут оказаться невероятно успешными. Их легко понимать, отлаживать и тестировать. Рисков неопределенного поведения в данном случае нет: код разветвляется либо в одну, либо в другую сторону, и все пути выполнения можно проверить с помощью автоматических тестов. Алгоритм работает невероят­ но быстро и будет работать на любом устройстве, которое можно вообразить. У эвристик есть два основных недостатка. Во-первых, для их разработки могут по­ требоваться значительные знания в предметной области и опыт программирования. Знания в предметной области есть не всегда - например, у небольшой компании может не хватить ресурсов для проведения дорогостоящих исследований, необхо­ димых для понимания фундаментальных математических правил, лежащих в осно­ ве системы. Кроме того, даже при наличии знаний в предметной области не у каж­ дого разработчика хватит опыта, необходимого для разработки и реализации эвристического алгоритма в виде эффективного кода. Второй большой недостаток - это ситуация комбинаторного взрыва. Чем боль­ ше переменных определяет ситуацию, тем сложнее становится промоделировать ее с помощью традиционных компьютерных алгоритмов. Хорошим примером этой проблемы является игра в шахматы: в игре так много фигур и возможных ходов, что для принятия решения о том, что делать дальше, потребуется огромное количество вычислений. Даже самые продвинутые шахматные компьютеры, по-
Алгоритмы для искусственного интеллекта периферийных устройств 133 строенные с использованием условной логики, легко обыгрываются опытными игроками-людьми. Некоторые проблемы ИИ периферийных устройств гораздо сложнее, чем игры в шахматы. Например, представьте, что вы пытаетесь написать от руки условную логику, определяющую, что изображено на картинке - апельсин или банан. Для некоторых изображений можно добиться успеха с помощью пары уловок ("желтый означает банан, оранжевый означает апельсин"), но добиться обобщения для более сложных случаев будет непросто. Хорошее практическое правило для закодированной вручную логики заключается в том, что чем с большим количеством значений данных вы работаете, тем труднее будет получить удовлетворительное решение. К счастью, существует множество алгоритмов, которые могут использоваться, когда написанный вручную код не сра­ батывает. Классическое машинное обучение Машинное обучение - это особый подход к созданию алгоритмов. Если эвристи­ ческие алгоритмы создаются путем ручного кодирования логики на основе извест­ ных правил, то алгоритмы машинного обучения открывают собственные правила, исследуя большие объемы данных. Приведенное ниже описание, взятое из книги "TinyML", познакомит с основными идеями машинного обучения: "Для того чтобы создать программу машинного обучения, программист вводит дан­ ные в специальный алгоритм и позволяет ему обнаружить правила самостоятельно. Это означает, что мы, программисты, можем создавать программы, которые делают прогнозы на основе сложных данных, не разбираясь во всей их сложности самостоя­ тельно. Алгоритм машинного обучения строит модель системы на основе предос­ тавленных нами данных посредством процесса, который мы называем обучением. Модель представляет собой разновидность компьютерной программы. Мы пропус­ каем данные через эту модель, чтобы получить прогноз, и этот процесс называется логическим выводом". -Уорден П., Ситунаяке Д. TinyML (O'Reily, 2019) Алгоритмы машинного обучения могут выполнять все функциональные задачи, описанные ранее в этой главе, от классификации до преобразования. Ключевым требованием для использования машинного обучения является наличие набора данных. Это большой объем данных, обычно собираемых в реальных условиях, ко­ торый используется для обучения модели. Обычно данные, необходимые для обучения модели машинного обучения, собира­ ются в процессе разработки и агрегируются из максимально возможного количест­ ва источников. Как мы увидим в последующих главах, большой и разнообразный набор данных имеет решающее значение для работы с ИИ периферийных уст­ ройств, особенно с машинным обучением.
134 Глава 4 Поскольку для машинного обучения нужны большие наборы данных, а обучение модели машинного обучения требует больших вычислительных затрат, часть обу­ чения обычно происходит до развертывания, а логические выводы выполняются на периферийном устройстве. Конечно, можно обучать модели машинного обучения прямо на устройстве, но недостаток данных в сочетании со скромными вычисли­ тельными мощностями усложняет эту задачу. В ИИ периферийных устройств существует два основных способа работы с набо­ рами данных машинного обучения. Обучение с учителем. В этом случае набор данных размечается экспертом, что помогает алгоритму машинного обучения понять его. Обучение без учителя. В этом случае алгоритм идентифицирует структуры данных без помощи человека. У машинного обучения есть серьезный недостаток, связанный с набором данных. Алгоритмы ML полностью зависят от обучающих данных, и из них понимают, как реагировать на входные данные. Пока алгоритм получает входные данные, анало­ гичные обучающим данным, он должен работать хорошо. Однако если алгоритм получает входные данные, которые значительно отличаются от обучающих данных (данные-вне-распределения.), он может произвести совершенно бесполезные ре­ зультаты. Сложность заключается в том, что не существует очевидного способа определить по выходным данным, попадают они в распределение или нет. Это означает, что всегда существует риск того, что модель дает бесполезные прогнозы. Основная за­ дача при работе с машинным обучением - избежать этой проблемы. Существует множество различных типов алгоритмов машинного обучения. Клас­ сическое машинное обучение охватывает подавляющее большинство из них, ис­ пользуемых на практике, за исключением глубокого обучения. (которое мы рассмот­ рим в следующем разделе). Интерпретируемость и объяснимость Когда модель машинного обучения делает прогноз, нам бы хотелось понять, по­ чему она сделала именно этот прогноз, а не другой. Свойство принимать понят­ ные человеку решения называется интерпретируемостью или объяснимостью. Некоторые алгоритмы машинного обучения более интерпретируемы, чем другие. Важно это или нет, зависит от вашего варианта использования. Например, если модель машинного обучения используется для постановки медицинского диагно­ за, врачи могут ей не доверять, если она не может объяснить свои прогнозы. С интерпретируемыми алгоритмами легче работать, поскольку их легко отлажи­ вать - если они выдают неправильный результат, вы можете сразу понять, в чем дело, и попытаться устранить эту проблему.
Алгоритмы для искусственного интеллекта периферийных устройств 135 Ниже приведены некоторые из наиболее полезных типов классических алгоритмов машинного обучения для ИИ периферийных устройств. В названии указано, к ка­ кому типу они относятся - с учителем или без него. Регрессионный анализ (с учителем). Изучает математические взаимосвязи между входными и выходными данными для прогнозирования непрерывного значения. Этот алгоритм легко обучается, быстро работает, требует мало данных и легко интерпретируется, но может изу­ чать только простые системы. Логистическая регрессия (с учителем). Логистическая регрессия, ориентированная на классификацию, изучает взаимо­ связь между входными значениями и категориями выходных данных. Этот алго­ ритм применяется для относительно простых систем. Машина опорных векторов (с учителем). Использует сложную математику для изучения гораздо более сложных взаимо­ связей, чем базовый регрессионный анализ. Нижие требования к данным и бы­ строта запуска позволяют изучать сложные системы, но их трудно обучать, и они имеют низкую интерпретируемость. Деревья решений и случайные леса (с учителем). Используют итерационный процесс для создания серии операторов i.f, которые прогнозируют выходную категорию или значение. Алгоритм легко обучается, быстро работает, легко интерпретируется, может изучать сложные системы, но может потребовать большого количества обучающих данных. Фильтр Калмана (с учителем). Прогнозирует следующую точку данных на основе истории измерений. Может учитывать несколько переменных для повышения точности. Часто обучается на устройствах, требует мало данных, быстро работает, легко интерпретируется, но может моделировать только относительно простые системы. Ближайшие соседи (без учителя). Классифицирует данные, основываясь на том, насколько они похожи на уже из­ вестные точки данных. Часто обучается на устройстве, требует мало данных, легко интерпретируется, но может моделировать только относительно простые системы и может медленно работать с большим количеством точек данных. Кластеризация (без учителя). Учится группировать входные данные по сходству, но не требует меток. Часто обучается на устройстве, требует мало данных, быстро запускается, легко ин­ терпретируется, но может моделировать только относительно простые системы. Классические алгоритмы машинного обучения - это очень крутой набор инстру­ ментов для интерпретации результатов вашего конвейера конструирования призна­ ков и принятия решений на основе данных. Они охватывают диапазон от высоко­ эффективных до очень гибких и могут выполнять множество функциональных
136 Глава 4 задач. Еще одним важным их преимуществом является то, что они, как правило, очень объяснимы: легко понять, как именно алгоритм принимает решение. В зави­ симости от алгоритма, требования к данным могут быть довольно низкими (для глубокого обучения обычно требуются очень большие наборы данных). Большой ассортимент классических алгоритмов машинного обучения (их букваль­ но сотни) является одновременно благословением и проклятием для ИИ перифе­ рийных устройств. С одной стороны, существуют алгоритмы, хорошо подходящие для множества различных ситуаций, что позволяет выбрать более удачный для ва­ шей конкретной задачи. С другой стороны, исследование большого множества ал­ горитмов может оказаться сложной задачей. Хотя такие библиотеки, как scikit-leam (https://oreil.ly/EI2МV), позволяют легко опробовать множество различных алгоритмов, существуют целое искусство и нау­ ка, позволяющие настроить каждый из них для оптимальной работы и интерпрети­ ровать результаты. Кроме того, если требуется выполнить развертывание на мик­ роконтроллере, вам, реализацию алгоритма возможно, - придется написать собственную эффективную готовых версий с открытым исходным кодом пока не так уж много. Основным недостатком классических алгоритмов машинного обучения является то, что они имеют относительно низкий потолок сложности систем, которые они спо­ собны моделировать. Это означает, что для получения наилучших результатов их часто приходится сочетать со сложным конструированием признаков, что может быть непросто с точки зрения проектирования и дорого с точки зрения вычислений. Даже с учетом конструирования признаков существуют задачи, например класси­ фикация данных изображений, где классические алгоритмы машинного обучения просто не работают. Тем не менее классические алгоритмы машинного обучения представляют собой фантастический набор инструментов для принятия решений на устройстве. Но там, где возникают ограничения, на помощь приходит глубокое обучение. Глубокое обучение Глубокое обучение - это тип машинного обучения, ориентированный на нейрон­ ные сети. Они оказались настолько эффективным инструментом, что глубокое обу­ чение превратилось в гигантскую область, и глубокие нейронные сети применяют­ ся во многих типах приложений. В этой книге основное внимание уделяется важным свойствам алгоритмов глубокого обучения с инженерной точки зрения. Базовая механика глубо­ кого обучения интересна, но для создания ИИ периферийных устройств она не требуется. Используя современные инструменты, любой инженер может развертывать модели глубокого обучения, не имея формального опыта в области машинного обучения. В дальнейших главах мы расскажем об инструментах, которые вам пригодятся.
Алгоритмы для искусственного интеллекта периферийных устройств 1 137 Глубокое обучение следует тем же принципам, что и классическое машинное обу­ чение. Для обучения модели используется набор данных, а затем эrу модель можно реализовать на устройстве для выполнения вывода. В модели нет ничего волшебно­ го - это просто комбинация алгоритма и набора чисел, которые подаются в нее вместе с входными данными модели для получения желаемого результата. Числа в модели называются весами или параметрами и генерируются в процессе обучения. Нейронной сетью называют метод объединения входных данных и пара­ метров модели образом, схожим с тем, как соединяются нейроны в мозге животно­ го друг с другом. Многие из самых умопомрачительных достижений в области разработки ИИ, кото­ рые мы видели за последнее десятилетие, основывались на моделях глубокого обу­ чения. Рассмотрим некоторые популярные примеры. ♦ AlphaGo (https://oreil.ly/ynНNq) - компьютерная программа, которая с помощью глубокого обучения сумела победить лучших игроков в го (https://oreil.ly/LZOWt), древнюю игру, которая когда-то считалась невозможной для компьютеров. ♦ GPT-3 (https://oreil.ly/fADs3)- модель, которая может генерировать письмен­ ный язык, неотличимый от человеческого письма. ♦ Управление термоядерным реактором (https://oreil.ly/7r9_S), в котором глубо­ кое обучение используется для управления формой плазмы внутри термоядер­ ного реактора. ♦ DALL•E (https://oreil.ly/GwSgq)- модель, которая может создавать реалистич­ ные изображения и абстрактное искусство на основе текстовых запросов. ♦ GitHub Copilot (https://copilot.github.com) - программное обеспечение, которое помогает разработчикам программного обеспечения в автоматическом написа­ нии кода. Помимо всяких развлекательных штук, глубокое обучение превосходно справляет­ ся со всеми задачами рассмотренных ранее алгоритмов (см. разд. "Типы ш,горит­ _wов по функционш,ьности" ранее в этой главе). Он оказался гибким, адаптируемым и невероятно полезным инструментом, позволяющим компьютерам понимать мир и влиять на него. Модели глубокого обучения эффективны, потому что они работают как универ­ сш,ьные аппроксuматоры функций. Математически доказано, что если вы можете описать что-то как непрерывную функцию, сеть глубокого обучения сможет это смоделировать (https://oreil.ly/4xX1m). По сути, это означает, что для любого набора данных, где есть различные входные и желаемые выходные данные, существует модель глубокого обучения, которая может преобразовать одно в другое. Удивительное следствие этой способности за­ ключается в том, что модели глубокого обучения в процессе обучения учатся само­ стоятельно выполнять конструирование признаков. Если для интерпретации данных
Глава 138 4 требуется специальное преобразование, модель глубокого обучения потенциально может научиться выполнять его. Это не делает конструирование признаков уста­ ревшей методикой, но определенно облегчает разработчику задачу "сделать все правильно". Причина, по которой модели глубокого обучения так хорошо аппроксимируют функции, заключается в том, что у них может быть очень большое количество па­ раметров. При добавлении параметра модель становится чуть более гибкой, что позволяет ей описывать немного более сложную функцию. Из этого свойства следуют два недостатка моделей глубокого обучения. Во-первых, поиск идеальных значений всех этих параметров - сложный процесс. Он включает в себя обучение модели с большим количеством данных. Данные часто являются редким и ценным ресурсом, который достается трудно и дорого, что может стать серьезным препятствием. К счастью, существует множество методов, которые мо­ гут помочь максимально эффективно работать в условиях ограниченности данных, и мы рассмотрим их позже в книге. Второй существенный недостаток - риск переобучения. Переобучение возникает, когда модель машинного обучения слишком хорошо изучает набор данных. Вместо моделирования общих правил, которые позволяют произвести выход из входа, мо­ дель просто полностью запоминает набор данных. Это означает, что модель будет плохо работать с данными, которых раньше не видела. Переобучение - рискованная ситуация для всех моделей машинного обучения, но особенно сильно оно сказывается на моделях глубокого обучения, поскольку у них может быть очень много параметров. Каждый дополнительный параметр предос­ тавляет модели немного больше возможностей для запоминания своего набора данных. Существует множество различных типов моделей глубокого обучения. Приведем некоторые из наиболее важных для ИИ периферийных устройств типов. Полносвязные модели. Самый простой тип модели глубокого обучения. Полносвязные модели состоят из множества идущих друг за другом слоев нейронов. Входные данные полно­ связной модели подаются непосредственно в виде длинной серии чисел. Полно­ связные модели способны изучать любые признаки, но они в большинстве слу­ чаев не учитывают пространственные отношения входных данных (например, какие значения на входных данных находятся рядом друг с другом). Для встроенных устройств это означает, что они хорошо работают для дискрет­ ных значений (например, если входные объекты представляют собой набор ста­ тистических данных о временном ряде), но хуже работают с необработанными временнь1ми рядами или данными изображений. Полносвязные модели очень хорошо поддерживаются встроенными устройст­ вами, и для них существует много аппаратных и программных оптимизаций.
Алгоритмы для искусственного интеллекта периферийных устройств 139 Сверточные модели. Сверточные модели предназначены для использования пространственной ин­ формации, заложенной во входных данных. Например, они могут научиться распознавать определенные формы на изображениях или струюуры сигналов в полученных от датчиков данных временнь1х рядов. Это делает их чрезвычайно полезными во встроенных приложениях, поскольку пространственная информа­ ция важна для многих сигналов, с которыми нам приходится работать. Как и полносвязные модели, сверточные модели очень хорошо поддерживаются на встроенных устройствах. Модели последовательностей. Модели последовательностей изначально были созданы для работы с последова­ тельностями данных, такими как сигналы временнь,х рядов или естественный язык. Дтlя того чтобы модель могла распознавать долгосрочные закономерности во временнь1х рядах, в ней может использоваться некоторая внутренняя "память". Оказывается, модели последовательностей очень гибки, и появляется все боль­ ше свидетельств того, что они могут быть очень эффективны при обработке лю­ бых сигналов, для которых важна пространственная информация. Многие счи­ тают, что однажды они придут на смену сверточным моделям. Модели последовательностей в настоящее время не так хорошо поддерживаются на встроенных устройствах, как сверточные и полностью связные модели. Су­ ществует несколько библиотек с открытым исходным кодом с их оптимизиро­ ванной реализацией. Но эта нехватка поддержки связана скорее с инерцией, а не с техническими ограничениями, поэтому в ближайшие пару лет ситуация, ско­ рее всего, изменится. Модель встраивания. Модель встраивания - это предварительно обученная модель глубокого обуче­ ния, предназначенная для уменьшения размерности: она принимает объемные беспорядочные входные данные и представляет их как меньший набор чисел, описывающий их в определенном контексте. Они работают так же, как алгоритм обработки сигналов, т. е. генерируют признаки, которые могут быть интерпре­ тированы другой моделью ML. Существуют модели встраивания для многих задач: от обработки изображений (преобразование большого беспорядочного изображения в числовое описание его содержимого) до распознавания речи (преобразование необработанного зву­ ка в числовое описание звуков голоса внутри него). Наиболее распространенным применением моделей встраивания является трансферное обучение, которое позволяет уменьшить объем данных, необходи­ мых для обучения модели. Позже мы узнаем об этом методе больше. Модели встраивания могут быть полносвязными, сверточными или моделями последовательностей, поэтому их поддержка на встроенных устройствах разли­ чается, но сверточные модели встраивания наиболее распространены.
140 Глава 4 Архитектуры моделей Модели глубокого обучения являются гибкими и модульными - они состоят из слоев и операций, которые можно совмещать и комбинировать бесконечным ко­ личеством способов. Различные конфигурации этих компонентов называются архитектурами, и было разработано множество архитектур, оптимизированных для разных задач. Ссыл­ ки на архитектуры моделей глубокого обучения часто встречаются в статьях в Интернете и научной литературе. Приведем заслуживающие внимания архитектуры для ИИ периферийных уст­ ройств: • MobileNet и EfficientNet - семейства архитектур, предназначенных для эф­ фективной работы на мобильных устройствах; • YOLO - семейство архитектур, предназначенных для обнаружения объектов; преобразователи • - семейство архитектур, предназначенных для преобразо­ вания последовательностей данных. Модели глубокого обучения стали использоваться в периферийных устройствах с ИИ лишь в последние годы. Поскольку они зачастую довольно велики и требуют значительных вычислительных ресурсов, именно появление высокопроизводитель­ ных микроконтроллеров и однокристальных систем с относительно мощными про­ цессорами и большими объемами ПЗУ и ОЗУ обусловило прорыв в этой области. Можно запустить небольшую модель глубокого обучения, используя всего не­ сколько килобайт памяти, но моделям, которые выполняют более сложные зада­ чи - от классификации звука до обнаружения объектов, - требуются как мини­ мум десятки или сотни килобайт. Это уже впечатляет, поскольку традиционные модели машинного обучения на сто­ роне сервера могут иметь размер от десятков мегабайт до нескольких терабайт. Ис­ пользуя грамотную оптимизацию и ограничивая область применения, можно сде­ лать встроенные модели гораздо меньше - и вскоре мы представим некоторые из таких методов. Существуют различные способы запуска модели глубокого обучения на встроен­ ном устройстве. Рассмотрим их кратко. Интерпретаторы. Интерпретаторы глубокого обучения, такие как троллеров (https://oreil.ly/4Q7xN), Tensorflow Lite для микрокон­ выполняют модель, которая хранится в виде файла, "на лету". Они гибки и просты в работе, но требуют некоторых затрат вычислительных ресурсов и памяти и не поддерживают все типы моделей. Генерация кода. Инструменты генерации кода, такие как EON (https://oreil.ly/SmT-s), берут обу­ ченную модель глубокого обучения и превращают ее в оптимизированный ис-
141 Алгоритмы для искусственного интеллекта периферийных устройств ходный код. Этот подход более эффективен, чем интерпретатор, а код удобен для чтения человеком, поэтому его можно отлаживать. Однако метод по-преж­ нему не поддерживает все возможные типы моделей. KoмnWlяmopы. Компиляторы глубокого обучения, такие как microTVM (https://oreil.ly/OJTaR), берут обученную модель и генерируют оптимизированный байт-код, который можно добавлять во встроенные приложения. Генерируемая ими реализация может быть очень эффективной, но ее не так легко отлаживать и поддерживать, как реальный исходный код. Компиляторы могут поддерживать типы моделей, которые явно не поддерживаются интерпретаторами и генерацией кода. По­ ставщики встроенных устройств обычно предоставляют собственные интерпре­ таторы или компиляторы, помогающие запускать модели глубокого обучения на их обору давании. Ручное кодирование. Сеть глубокого обучения можно реализовать, вручную написав код с использо­ ванием значений параметров из обученной модели. Это сложный и тру доем кий процесс, но он позволяет полностью контролировать оптимизацию и поддержи­ вает любой тип модели. Среда для развертывания моделей глубокого обучения у сильно различается. Поскольку SoC SoC и микроконтроллеров работают под управлением полноценных со­ временных операционных систем, они также поддерживают большинство инстру­ ментов, которые используются для запуска моделей глубокого обучения на серве­ рах. Это означает, что на SoC Linux можно запустить практически любой тип модели. Однако задержка модели будет варьироваться в зависимости от архитекту­ ры модели и процессора SoC. Существуют также интерпретаторы, разработанные специально для устройств Например, TensorF\ow Lite (https://oreil.ly/pNsSW) SoC. предоставляет инструменты, позволяющие более эффективно запускать модели глубокого обучения на SoC - обычно тех, которые используются в смартфонах. Сюда входят оптимизированные реализации операций глубокого обучения, в которых используются функции, дос­ тупные в некоторых SoC, SoC, например графических процессорах. в которые интегрированы ускорители глубокого обучения, стоят несколько в стороне. Обычно поставщик оборудования предоставляет специальный компилятор или интерпретатор, который позволяет модели использовать аппаратное ускорение. Но, как правило, ускоряются лишь определенные операции, поэтому степень уско­ рения зависит от архитектуры модели. Поскольку на микроконтроллерах нет полноценных операционных систем, стан­ дартных инструментов для запуска моделей глубокого обучения на них тоже нет. Вместо этого существуют платформы вроде TensorF\ow Lite для микроконтролле­ ров, которые обеспечивают базовую поддержку моделей. Они, как правило, немно­ го отстают от стандартных инструментов с точки зрения поддержки оператора, т. е. не поддерживают некоторые архитектуры моделей.
Глава 142 ~ 4 Оператор1:,1 и ядра В машинном обучении периферийных устройств оператор, или ядро, представляет собой реализацию определенной математической операции, используемой для запуска модели глубокого обучения. Это перегруженные термины, имеющие разные значения в других областях, в том числе в глу­ боком обучении. Типичные высокопроизводительные микроконтроллеры оснащены аппаратными функциями, такими как SIМD-инструкции, которые значительно улучшают произ­ водительность моделей глубокого обучения. В TensorFlow Lite для микроконтрол­ леров есть оптимизированные реализации операторов, использующих эти инструк­ ции, для нескольких поставщиков. Как и в случае с SoC, производители аппаратных ускорителей на базе микроконтроллеров часто предоставляют специ­ альные компиляторы или интерпретаторы, которые позволяют запускать на их обо­ ру давании модели. Основными преимуществами глубокого обучения являются его гибкость, снижение требований к конструированию признаков и возможность использовать большие объемы данных благодаря большому количеству параметров моделей. Глубокое обучение примечательно своей способностью аппроксимировать сложные системы, выходя за рамки простого прогнозирования, что позволяет ему выполнять такие задачи, как создание новых произведений искусства и точное распознавание объек­ тов на изображениях. Глубокое обучение предоставляет большую свободу, и ис­ следователи лишь в самом начале пути изучения его потенциала. Основными недостатками глубокого обучения являются высокие требования к дан­ ным, склонность к переобучению, относительно большой размер и вычислительная сложность моделей глубокого обучения, а также сложность процесса обучения. Кроме того, модели глубокого обучения может быть сложно интерпретировать - иногда бывает непросто объяснить, почему они делают одни прогнозы лучше, а другие хуже. Но существуют инструменты и методы, которые помогают смягчить большинство этих недостатков. Почему не всегда стоит использовать глубокое обучение? Раз глубокое обучение настолько эффективно, то зачем нам вообще какие-либо другие алгоритмы машинного обучения? Глубокое обучение - это мощный инструмент общего назначения, способный моделировать практически любую взаимосвязь между входными и выходными переменными. Но то, что оно мо­ жет все, не значит, что оно во всем лучше. В зависимости от ситуации класси­ ческие алгоритмы ML могут превзойти глубокое обучение по следующим па­ раметрам. Объяснимость (explainabllity). Ничто не сравнится с интерпретируемостью дерева решений, если оно подхо­ дит для вашей задачи.
Алгоритмы для искусственного интеллекта периферийных усrройсrв Эффективность 143 (efficiency). Классические алгоритмы машинного обучения обычно гораздо проще в вы­ числительном смысле, чем модели глубокого обучения. Переносимость (portabllity). Поскольку классические алгоритмы машинного обучения проще, их можно применять на самых простых устройствах (например, на бюджетных микро­ контроллерах). Эффективность (ejfectiveness). Некоторые классические алгоритмы в определенных ситуациях работают лучше, чем глубокое обучение, особенно когда имеется мало данных. Обучение на устройстве (on-device training). Сложно выполнять глубокое обучение на устройстве, а некоторые классиче­ ские алгоритмы легко обучить в полевых условиях. Все зависит от вашего конкретного варианта использования. Тем не менее если нужно было бы выбрать только один метод разработки алгоритмов ИИ, то, веро­ ятно, имело бы смысл выбрать глубокое обучение. Комбинирование алгоритмов В одном периферийном приложении с ИИ может использоваться несколько раз­ личных типов алгоритмов. Рассмотрим несколько типичных способов это сделать. Ансатwблu. Ансамбль - это набор моделей машинного обучения, которым подаются одни и те же входные данные. Для принятия решения их результаты математически объединяются. Поскольку у каждой модели ML есть свои сильные и слабые сто­ роны, ансамбль моделей часто оказывается более точен, чем его составные час­ ти. Недостатком ансамблей является дополнительная сложность, затраты памяти и вычислительные ресурсы, необходимые для хранения и запуска нескольких моделей. Каскады. Каскад это набор моделей машинного обучения, выполняемых последова­ - тельно. Например, в мобильном телефоне со встроенным цифровым помощни­ ком постоянно работает небольшая и легкая модель, обнаруживающая признаки человеческой речи. Как только речь обнаруживается, активируется более круп­ ная и более затратная в вычислительном отношении модель, определяющая, что именно было сказано. Каскады - отличный способ экономии энергии, поскольку они позволяют из­ бежать ненужных вычислений. В гетерогенной вычислительной среде, где есть несколько типов процессоров, отдельные пускаться на разных процессорах. компоненты каскада могут даже за­
Глава 144 4 Извлекатели признаков. Как мы узнали ранее, модели встраивания принимают многомерные входные данные, например изображения, и преобразуют его в набор чисел, описывающих его содержимое. Выходные данные модели встраивания могут быть переданы в другую модель, предназначенную для прогнозирования на основе уже этого описания. В этом случае модель встраивания используется в качестве извлека­ теля признаков. Если используется предварительно обученная модель встраивания, этот метод, известный как трансферное обучение, может значительно сократить объем дан­ ных, необходимых для обучения модели. Вместо того чтобы учиться интерпретировать исходные многомерные входные данные, модели достаточно научиться интерпретировать простые выходные данные, возвращаемые извлекателем признаков. Например, представьте, что вы хотите научить модель распознавать разные ви­ ды птиц по фотографиям. Вместо того чтобы обучать всю модель с нуля, вы мо­ жете использовать в качестве входных данных для вашей модели выходные данные предварительно обученного извлекателя признаков. Это может сокра­ тить объем данных и время обучения, необходимое для получения хороших ре­ зультатов. Многие предварительно обученные извлекатели признаков глубокого обучения доступны по лицензиям с открытым исходным кодом. Они обычно используют­ ся для задач, связанных с изображениями, поскольку для предварительного обу­ чения доступны большие общедоступные наборы данных изображений. Мультимодальные модели. Мультимодальная модель - это единая модель, которая одновременно прини­ мает входные данные нескольких типов. Например, мультимодальная модель может одновременно принимать ау диоданные и показания акселерометра. Этот метод можно применять в качестве механизма объединения датчиков, используя одну модель для объединения разнородных типов данных. Алгоритмы постобработки На периферийных устройствах с ИИ мы обычно работаем с потоками данных, на­ пример с непрерывными временнь1ми рядами аудио. Когда мы запускаем алгоритм ИИ на этом потоке данных, он создает второй временной ряд, который представля­ ет результаты работы алгоритма с течением времени. Возникает проблема. Как нам интерпретировать этот второй временной ряд для принятия решения? Например, представьте, что мы анализируем аудио, чтобы поймать нужное ключевое слово, а затем активировать некоторые функции продук­ та. На самом деле мы хотим знать, в какой момент прозвучало ключевое слово, не так ли? К сожалению, временнь,е ряды результатов вывода для этой цели не идеальны. Во­ первых, они содержат множество событий, среди которых нужного слова нет. Для
Алгоритмы для искусственного интеллекта периферийных устройств 1 145 того чтобы избавиться от лишнего, мы можем игнорировать данные. для которых уверенность в наличии ключевого слова ниже определенного порога. Во-вторых, модель может случайно (и кратковременно) обнаруживать ключевое слово, хотя на самом деле оно не было произнесено. Нам нужно отфильтровать эти случаи, чтобы очистить вывод. Это эквивалентно использованию фильтра нижних частот для временного ряда. Наконец, вместо того чтобы каждый раз сообщать нам, когда было произнесено ключевое слово, необработанный временной ряд с заданной частотой сообщает, было ли оно произнесено в данный момент. Это означает, что нам нужно выпол­ нить некоторую фильтрацию вывода, чтобы получить действительно нужную ин­ формацию. После очистки необработанного получается сигнал, который сообщает нам, когда было обнаружено ключевое слово. Этот сигнал можно использовать в логике наше­ го приложения для управления устройством. Подобная постобработка чрезвычайно распространена в периферийных приложе­ ниях с ИИ. Конкретный используемый алгоритм постобработки и его определен­ ные параметры, например пороги сравнения, могут определяться в каждом кретном случае. Такие инструменты, как калибровщик производительности lmpulse (описанный во врезке "Кш~ибровка производительности" главы 10), кон­ Edge позво­ ляют разработчикам автоматизировать поиск идеального алгоритма постобработки для своей задачи. Безопасный дизайн В периферийном приложении с ИИ много чего может пойти не так, поэтому очень важно, чтобы у вас всегда были предусмотрены меры защиты от непредвиденных проблем. Например, представьте себе камеру в дикой природе, которая с помощью модели глубокого обучения определяет, когда было сфотографировано интересующее нас животное, и загружает его изображение через спутниковое соединение. При нор­ мальной работе устройство может отправлять несколько фотографий в день, что не требует больших затрат на передачу данных. Но в полевых условиях физические проблемы камеры, такие как грязь или отраже­ ния на объективе, могут привести к тому, что получаемые ею изображения будут сильно отличаться от изображений в исходном наборе обучающих данных. Эти изображения могут привести к непредсказуемому поведению моде.,и глубокого обучения, из-за чего модель начнет постоянно сообщать о присутствии интере­ сующего животного. Ложные срабатывания, связанные с получением незнакомых входных данных, мо­ гут привести к передачи через спутниковое соединение сотен изображений. Камера не только станет бесполезной, но и потенциально может потребовать больших за­ трат на передачу данных.
146 Глава 4 В реальных приложениях невозможно избежать повреждений датчиков или неожи­ данного поведения алгоритмов. Вместо этого важно, чтобы ваше приложение было отказоустойчивым. Это означает, что в случае сбоя части системы приложение ми­ нимизирует ущерб. Как лучше добиться этого - зависит от ситуации. В случае с камерой было бы ра­ зумно установить ограничение скорости, которое срабатывает, если камера загру­ жает слишком много фотографий. А в другом случае было бы лучше полностью отключить систему, чтобы не рисковать возможным ущербом. Создание отказоустойчивых приложений - важная часть ответственного ИИ и хо­ рошей разработки в целом. Этому вопросу следует уделить внимание в самом на­ чале любого проекта. Оптимизация периферийнь1х устройств В моделях машинного обучения, особенно в моделях глубокого обучения, часто существует компромисс между тем, насколько хорошо модель выполняет свою за­ дачу, и тем, сколько памяти и вычислительной мощности она требует. Этот компромисс чрезвычайно важен для ИИ периферийных устройств. Перифе­ рийным устройствам свойственны вычислительные ограничения. Они предназна­ чены для минимизации затрат и энергопотребления, а не для максимизации вычис­ лительных ресурсов. В то же время ожидается, что они будут работать с данными датчиков в реальном времени, причем с высокой частотой, и так же в реальном времени реагировать на события в потоке данных. Более крупные модели машинного обучения, как правило, лучше справляются со сложными задачами, поскольку у них больше мощности, что полезно для изучения сложных взаимосвязей между входными и выходными данными. Эта мощность оз­ начает, что модели может потребоваться больше ПЗУ и ОЗУ, а также больше вре­ мени на выполнение вычислений. Увеличение времени вычислений приводит к увеличению энергопотребления, как мы узнаем в подразд. "Рабочий разд. "Вычислительная и аппаратная производительность" главы цикл" 1О. Поиск правильного баланса между производительностью задачи и производитель­ ностью вычислений важен в любом приложении. Здесь приходится жонглировать ограничениями. С одной стороны, существует минимальный стандарт выполнения конкретной задачи. С другой стороны, выбор обору давания создает жесткие огра­ ничения на память, задержку и энергопотребление. Поиск этого компромисса - одна из сложных, но увлекательных частей разработ­ ки ИИ периферийных устройств. Это отчасти делает данную область уникальной и объясняет, почему инструменты для таких вещей, как ем в разд. "Автоматизированное машинное обучение AutoML (о которых мы узна­ (AutoML)" главы 5), необхо­ димо перепроектировать для ИИ периферийных устройств. Приведем некоторые факторы, которые могут помочь нам минимизировать требо­ вания к вычислительным ресурсам и одновременно повысить производительность задач.
Алгоритмы для искусственного интеллекта периферийных устройств 1 147 Вь1бор алгоритма У всех алгоритмов ИИ периферийных устройств свой уникальный профиль исполь­ зования памяти и вычислительная сложность. Ограничения вашего целевого обору­ дования должны определять ваш выбор алгоритма. Обычно классические алгоритмы машинного обучения меньше и эффективнее алгоритмов глубокого обучения. Однако, как правило, алгоритмы конструирования признаков требуют больше вы­ числений, чем любой другой, что делает выбор между классическим машинным обучением и глубоким обучением менее важным. Исключением из этого правила является анализ данных изображений, в котором обычно требуется не очень много конструирования признаков, но зато нужны большие модели глубокого обучения. Приведем несколько распространенных способов уменьшить задержку и объем па­ мяти, необходимые для выбранного вами алгоритма: ♦ уменьшить сложность конструирования признаков - чем больше математики, тем больше задержка; ♦ уменьшить объем данных, поступающих в алгоритм ИИ; ♦ использовать классическое машинное обучение вместо глубокого обучения; ♦ выбирать между конструированием признаков и моделью машинного обучения в зависимости от того, что из них более эффективно работает на вашем уст­ ройстве; ♦ уменьшить размер (количество весов и слоев) моделей глубокого обучения; ♦ выбирать типы моделей, которые поддерживаются ускорителем на вашем устройстве. Сжатие и оптимизация Существует множество методов оптимизации, предназначенных для уменьшения объема данных и вычислений, необходимых для конкретного алгоритма. Приведем некоторые из наиболее важных типов. Квантование. Один из способов уменьшить объем памяти и вычислений, требуемых алгорит­ мом или моделью, - это уменьшить точность его числовых представлений. Как упоминалось во врезке "Как представлены значения?" главы 3, существует мно­ жество различных способов представления чисел в вычислениях, и некоторые из них имеют большую точность, чем другие. Квантование - это процесс получения набора значений и уменьшения их точ­ ности при сохранении важной информации, которую они содержат. Его можно выполнять как для алгоритмов обработки сигналов, так и для моделей ML. Осо­ бенно оно полезно для моделей глубокого обучения, в которых по умолчанию используются 32-битные веса с плавающей точкой. Сократив веса до 8-битных целых чисел, вы можете уменьшить ра.1мер модели вчетверо, и обычно без осо­ бого снижения точности.
148 Глава 4 Еще одним преимуществом квантования является то, что код для выполнения целочисленных вычислений быстрее и более переносим, чем код для вычисле­ ний с плавающей точкой. Это означает, что квантование приводит к значитель­ ному ускорению на многих устройствах, а алгоритмы квантования будут рабо­ тать на устройствах, не умеющих работать с числами с плавающей точкой. Квантование - это оптимизация с потерями, т. е. обычно оно снижает произво­ дительность алгоритма. В моделях ML это снижение можно смягчить за счет обучения с более низкой точностью, чтобы модель научилась компенсировать одно другим. Слияние операторов. При слиянии операторов алгоритм, располагающий информацией о вычислени­ ях, используется для проверки операторов, которые применяются при запуске модели глубокого обучения. Когда определенные группы операторов использу­ ются вместе, их можно заменить одной объединенной реализацией, оптимизиро­ ванной для получения максимальной эффективности. Объединение операторов - это метод без потерь: он повышает производитель­ ность вычислений, не вызывая снижения производительности задачи. Недостат­ ком является то, что объединенные реализации существуют только для опреде­ ленных комбинаций операторов, поэтому их влияние во многом зависит от архитектуры модели. Усечение. У сечение - это метод с потерями, применяемый во время обучения модели глубокого обучения. Он заставляет многие веса модели иметь нулевое значение, создавая так называемую разреженную модель. Теоретически это должно обес­ печить более быстрые вычисления, поскольку любое умножение на нулевой вес неизменно приведет к нулю. Однако на данный момент существует очень мало периферийного аппаратного и программного обеспечения с ИИ, способного получить выгоду из этого метода. Ситуация изменится в течение следующих нескольких лет, но на данный момент основное преимущество усечения состоит в том, что разреженные модели легче сжимать из-за их больших блоков с одинаковыми значениями. Это полезно, ко­ гда модели необходимо передавать по сети. Дистилляция знаний. Дистилляция знаний - это еще один метод обучения глубокому обучению с по­ терями, который позволяет большой модели "учителя" помочь обучить мень­ шую модель "ученика" воспроизводить свою функциональность. В этом методе используется тот факт, что веса модели глубокого обучения обычно имеют большую избыточность, а это означает, что можно найти эквивалентную модель, которая меньше по размеру, но работает почти так же хорошо. Процесс дистилляции знаний - это немного трудоемкий процесс, поэтому он еще не стал общепринятым методом, но, вероятно, в ближайшие несколько лет он станет лучшей практикой.
Алгоритмы для искусственного интеллекта периферийных устройств Бинарные нейронные сети (Ьiпаrу BNN - 1 149 neural networks, BNN). это модели глубокого обучения, в которых каждый вес представляет со­ бой одно двоичное число. Поскольку бинарная арифметика на компьютерах вы­ полняется очень быстро, бинарные нейронные сети могут быть очень эффектив­ ными в работе. Однако это относительно новая технология, и инструменты для обучения и выполнения выводов с их помощью еще не получили широкого рас­ пространения. Бинаризация аналогична квантованию и, следовательно, является методом с потерями. Пиковые нейронные сети (spiking neural networks, SNN). Пиковая нейронная сеть - это искусственная нейронная сеть, в которой сигна­ лы, передаваемые через сеть, имеют временную составляющую. Будучи "нейро­ морфными" системами, они напоминают рабоrу биологических нейронов. У них свои компромиссы по сравнению с традиционными моделями глубокого обуче­ ния, и они обеспечивают улучшенную производительность и эффективность в некоторых задачах. Но для достижения этих преимуществ им требуется специа­ лизированное оборудование (в виде ускорителя). SNN можно либо обучать напрямую, либо создавать на основе традиционной модели глубокого обучения в процессе преобразования. Этот процесс может по­ рождать потери. У сжатия модели есть два основных недостатка. Во-первых, для запуска сжатых моделей часто требуется специальное программное обеспечение, оборудование или их комбинация. Это может ограничить количество устройств, на которых сжаrую модель можно развернуть. Второй недостаток более опасен. Характер сжатия с потерями часто приводит к незначительному ухудшению прогнозных характеристик модели, которое бывает трудно обнаружить. Снижение точности может привести к тому, что модель будет работать хорошо в обычных случаях, но потеряет производительность в "длинном хвосте" редко встречающихся входных данных. Эта проблема может усилить предвзятости, присущие наборам данных и алгорит­ мам. Например, если набор данных, собранный для обучения носимого медицин­ ского устройства на базе машинного обучения, содержит меньше примеров от лю­ дей из групп меньшинств, сжатие модели может привести к снижению производительности у людей из этих групп. Поскольку их меньшинство, влияние на общую точность модели может быть трудно обнаружить. Поэтому чрезвычайно важно оценивать производительность вашей системы во всех подгруппах вашего набора данных (см. разд. "Сбор метаданных" главы 7). На эrу тему есть две превосходные научные статьи исследователя Сары Хукер и соавт. Одна из них - "Что забывают сжатые глубокие нейронные сети?" (Hooker S. et а\. What Do Compressed Deep Neural Networks Forget?; https://oreil.ly/v3Bvl), а другая - "Характеристика смещения в сжатых моделях" (Hooker S. et а\. Characterising Bias in Compressed Models; https://oreil.lyN_cTk).
150 Глава 4 Обучение на устройстве В подавляющем большинстве случаев модели машинного обучения, используе­ мые в ИИ периферийных устройств, обучаются еще до развертывания на устрой­ стве. Обучение требует больших объемов данных, обычно размеченных, а также значительной вычислительной мощности - эквивалент сотен или тысяч выводов на каждую точку данных. Это ограничивает полезность обучения на устройстве, поскольку по своей природе приложения ИИ сталкиваются с серьезными ограни­ чениями в объеме памяти, вычислениях, энергопотреблении и сетевых возможно­ стях. Тем не менее существует несколько сценариев, в которых обучение на устройстве имеет смысл. Приведем обзор. Прогностическое обслуживание. Типичным примером обучения на устройстве является профилактическое об­ служивание машины с целью определить, нормально ли она функционирует. Небольшую модель на устройстве можно обучить с помощью данных, отра­ жающих "нормальное" состояние. Если сигналы машины начинают отклоняться от эталона, приложение может это заметить и принять меры. Этот вариант использования возможен только в том случае, если можно предпо­ ложить, что аномальные сигналы редки и что машина, скорее всего, почти все­ гда работает нормально. Это позволяет устройству помечать собранные им дан­ ные воображаемой меткой "нормально". Если бы аномальные состояния были обычным явлением, было бы невозможно делать предположения о состоянии в любой данный момент. Персонш,изация. Другой пример, когда обучение на устройстве имеет смысл, - это ситуация, ко­ гда пользователя намеренно просят определить метки. Например, в некоторых смартфонах используется распознавание лиц. Когда пользователь настраивает устройство, ему предлагается зарегистрировать изображения своего лица. На устройстве сохраняется числовое представление изображения лица. В таких приложениях, как правило, используют тщательно разработанные моде­ ли встраивания, которые преобразуют необработанные данные в компактные числовые представления их содержимого. Встраивания устроены таким обра­ зом, что евклидово расстояние между двумя вложениями 5 соответствует сходст­ ву между ними. В нашем примере с распознаванием лиц это позволяет легко оп­ ределить, соответствует ли новое лицо представлениям, сохраненным во время настройки: вычисляется расстояние между новым лицом и зарегистрированным лицом, и если оно достаточно мало, то лица считаются одинаковыми. 5 Встраивание можно рассматривать как координату в многомерном пространстве. Евклидово - по расстояние между двумя координатами. расстояние между двумя встраиваниями
Алrоритмь1 для искусственного интеллекта периферийных устройств 1 151 Эта форма персонализации хорошо работает, поскольку алгоритм, используе­ мый для определения сходства встраивания, обь1чно прост - это либо расчет расстояния, либо алгоритм ближайших соседей. Модель встраивания выполнила всю тяжелую работу. Неявная ассоциация. Еще один пример обучения на устройстве ции. Например, Battery Charging когда метки доступны по ассоциа­ - функции управления аккумулятором, такие от Apple (https://oreil.ly/OzgdM), как Optimized обучают модели на устройст­ ве прогнозировать, в какое время пользователь скорее всего будет использовать свое устройство. Один из способов сделать это - вания определенное выводить вероятность использования в обучить модель прогнозиро­ время, учитывая журнал использования за предыдущие несколько часов. В этом случае обучающие данные собираются и размечаются на одном устрой­ стве. Журналы использования собираются в фоновом режиме, а метки приме­ няются в соответствии с некоторыми показателями (например, был ли активиро­ ван экран). Неявная ассоциация между временем и содержимым журнала позволяет размечать данные. Затем можно обучить простую модель. Федеративное обучение. Одним из препятствий для обучения на устройстве является отсутствие обу­ чающих данных. Кроме того, данные на устройстве часто являются конфиден­ циальными, и пользователям не нравится их передача. Федеративное обуче­ ние это способ - обучения моделей распределенным образом на многих устройствах с сохранением конфиденциальности. Вместо передачи необрабо­ танных данных между устройствами (или между устройством и центральным сервером) передаются частично обученные модели. Частично обученные модели можно объединить и распределить обратно по устройствам, как только они бу­ дут готовы. Федеративное обучение часто кажется хорошей идеей, поскольку оно дает мо­ делям возможность учиться и совершенствоваться в полевых условиях. Но у не­ го тоже есть серьезные ограничения. Оно требует больших вычислительных за­ трат и передачи больших объемов данных, что противоречит основным преимуществам ИИ периферийных устройств. Процесс обучения очень сложен и требует наличия компонентов как на устройстве, так и на стороне сервера, что увеличивает риск проекта. Поскольку данные не хранятся глобально, невозможно проверить, хорошо ли работает обученная модель после развертывания. Тот факт, что модели загру­ жаются с локальных устройств, представляет собой вектор для атак на систему безопасности. Наконец, что важнее всего, это не решает проблему меток. При отсутствии размеченных данных федеративное обучение бесполезно.
152 Глава 4 Обновления по беспроводной сети. Хотя на самом деле это не метод обучения на устройстве, наиболее распростра­ ненным способом обновления моделей в полевых условиях является обновление по беспроводной сети. Новую модель можно обучить в лаборатории, используя данные, собранные в полевых условиях, и распространить на устройства через обновления прошивки. Этому методу требуется доступ к сети, и он не решает проблему получения по­ меченных данных, но это наиболее распространенный способ поддерживать ак­ туальность моделей с течением времени. Резюме Вы узнали о ключевых алгоритмах ИИ, которые делают возможным ИИ перифе­ рийных устройств, а также об оборудовании, которое их запускает. В следующей главе мы рассмотрим инструменты и навыки, необходимые для того, чтобы собрать все воедино.
ГЛАВА 5 Инструментарий и экспертиза Рабочий процесс разработки ИИ периферийных устройств сопряжен с множеством высокотехнологичных задач, и в большинстве проектов для работы потребуются навыки и опыт команды экспертов. Первый раздел этой главы представляет собой руководство по созданию команды, с которой вы превратите ваши идеи в реальность. Даже если проект еще находится на ранней стадии, полезно понять, какие навыки будут вам важны, а также пробле­ мы, с которыми вы можете столкнуться. Целью искусственного интеллекта являет­ ся автоматизация человеческого понимания, поэтому очень важно, чтобы понима­ ние в команде было правильным. Во второй части главы, начиная с разд. "Арсенал инструментов", я помогу вам ос­ воить ключевые технические инструменты для работы с периферийным ИИ. Если вы еще находитесь на ранней стадии разработки продукта, возможно, вам захочется бегло рассмотреть некоторые детали, а затем использовать эту главу в качестве справочника, когда у вас возникнут более конкретн·ые идеи, с которыми вы начнете работать. Сбор команды для ИИ периферийных устройств ИИ периферийных устройств - это по-настоящему полноценная технология. В ней используются знания из самых разных областей: от физических свойств полупро­ водниковой электроники до проектирования архитектур высокого уровня, охваты­ вающих и устройства, и облачные технологии. Для этого требуются знания в самых передовых подходах к ИИ и машинному обучению, а также серьезнейшие навыки разработки встроенного программного обеспечения. Здесь используется вся исто­ рия информатики и электротехники, изложенная от начала до конца. Никто в мире не обладает глубокими знаниями во всех областях ИИ периферийных устройств. Вместо этого люди, работающие в самом центре этой области, собирают сети экспертов, к которым можно обратиться за пониманием других частей голово­ ломки. Если вы создаете продукт с ИИ периферийных устройств, возможно, вам придется сделать то же самое для себя.
154 Глава 5 Лучшая команда для ИИ периферийных устройств - это команда, обладающая обширными междисциплинарными знаниями, непосредственным опытом работы в проблемной области и умеющая комфортно работать в итеративном процессе раз­ работки. На данный момент лучшие продукты созданы командами, имеющими не­ посредственный опыт решения поставленной проблемы: они взяли имеющиеся у них знания и использовали их для разработки своего передового продукта на базе ИИ. Не обязательно иметь экспертов во всех областях ИИ периферийных устройств в одной команде. По минимуму, вероятно, нужны две роли: ♦ эксперт в предметной области, обладающий глубоким пониманием проблемы, которую необходимо решить; ♦ инженер по встраиваемым системам с опытом разработки для устройств, подобных целевому. Ничего не мешает одному человеку выполнять обе эти роли. Однако, не имея опы­ та работы с машинным обучением или другими алгоритмами ИИ, им придется ра­ ботать на комплексных платформах, предназначенных для помощи экспертам, не связанным с машинным обучением, в процессе создания алгоритмов. Если вы разработчик-одиночка без опыта разработки встраиваемых сис­ тем, вы можете прокачать свои навыки, создав на целевом оборудовании несколько проектов, не связанных с ИИ. Для простоты вы можете рас­ смотреть возможность использования аппаратного обеспечения уровня SoC, поскольку разработка под встроенный Linux намного проще, чем раз- работка на "голое железо". Если вы используете комплексную платформу ИИ, развернуть свою модель не составит труда. Большое значение могут иметь решительность и умение импровизировать: мы видели множество ученых-исследователей, которые создавали собст­ венное оборудование на базе ИИ, имея скромные стартовые навыки. Хотя многие проблемы можно решить силами минимальной команды, для проблем посложнее и работы потребуется побольше. В оставшейся части этой главы мы опишем потенциально важные роли и обязанности, которые, мы надеемся, дадут вам представление о том, что нужно вашей собственной команде. Мы также рас­ смотрим проблемы найма сотрудников на проекты ИИ периферийных устройств. Экспертиза в предметной области Экспертиза в предметной области, о которой мы подробно узнаем в разд. "Наборы данных и экспертные знания предметной области" главы 7, безусловно, является наиболее важным компонентом вашей команды. Если у вас нет ничего, кроме опы­ та в предметной области и бюджета, вы все равно можете нанять разработчиков и создать продукт. Но если никто в команде не имеет глубокого понимания пробле­ мы, то и решить ее, вероятно, не получится. На самом деле есть шанс, что вы в ко­ нечном итоге вообще ринетесь решать не ту проблему или создадите решение, ко­ торое никому не нужно.
Инструментарий и эксперт1,1за 155 Сложно создать какой-либо качественный продукт без опыта в предметной облас­ ти, но использовать ИИ в таком случае вообще практически невозможно. Цель ИИ периферийных устройств - превратить экспертные знания в программное обеспе­ чение и использовать его для автоматизации процесса. Как мы узнали ранее в кни­ ге, интеллект означает "знать, что и когда делать". Но как мы можем построить та­ кую систему, если сами этого не знаем? Если вы сами не являетесь экспертом в предметной области, ваша первая задача найти его. Ваша вторая задача - - заставить его проверить решение, которое вы планируете создать. Вот некоторые вопросы, которые им следует задать: ♦ Действительно ли существует проблема, которую вы хотите решить? ♦ Если она существует, стоит ли ее решать? ♦ Существует ли у проблемы уже созданное решение? ♦ Поможет ли предлагаемое вами решение решить проблему? ♦ Возможно ли реализовать предлагаемое вами решение? ♦ Если вы создадите свое решение, захочет ли кто-нибудь из специалистов его купить? Мы надеемся, что вы сможете задать кому-нибудь эти вопросы, не платя слишком много денег: это основные вопросы, о которых задумался бы любой настоящий эксперт в предметной области, если бы вы предложили ему работу. Вам следует внимательно слушать ответы эксперта, даже если вы с ним не согласны. Если на­ стоящий эксперт говорит вам, что ваша идея не очень хороша, вероятно, в этом есть доля правды. Экспертиза в предметной области должна лежать в основе вашей организации и быть частью вашей основной команды. Ваши эксперты будут вовлечены в столь многие аспекты проекта, что быть второстепенными участниками у них просто не получится. Тем не менее в идеале экспертные знания в предметной области долж­ ны присутствовать на каждом уровне вашей организации. Например, в дополнение к вашему основному опыту у вас могут быть инженеры, члены совета директоров и консультанты, имеющие опыт работы в соответствующей области. Их совокупное понимание поможет вашей команде предвидеть и снизить риски. Если вы не можете найти человека с необходимым опытом, не стоит даже начинать проект. Просто невозможно работать этично, если у вас нет соответствующих зна­ ний. Возможно, ваш проект нарушает какое-то золотое правило в этой области, а вы об этом и не узнаете. Недопустимо тестировать функциональные возможности на ваших клиентах, если их не оценил эксперт, как ясно видно на рис. 5.1. Устано­ вить обратную связь с устройствами на местах настолько сложно, что вы, скорее всего, даже не поймете, когда что-то пойдет не так. Если вы действительно убеждены, что ваша идея хороша, возможно, вам придется потратить некоторое время на развитие своих навыков и приобретение собственно­ го необходимого опыта самостоятельно.
Глава 156 5 А Whole Mars Catalo• W' @WholeMarsBlog ls there anyone in the Вау Area with а child who can run in front of my car on Full Self-Driving Beta to make а point? 1promise I won't run them over ... (will disengage if needed) (this is а serious request) 2 13 РМ Aug 9. 2022 Tw,tter for 51 R&twcE'ts Рис. 5.1. 160 Quote Twe~ts Мае 645 L1!1:es Тестировать продукт на клиентах -ужасная идея (Twitter, 2022; https://oreil.ly/jl6HJ) 1 Разнообразие Помимо знаний в предметной области, еще одним важным качеством, к которому должна стремиться ваша команда, является разнообразие. Как мы обсуждали в разд. "Смягчение социального вреда" главы альных проблем - 2, одна из лучших мер защиты от соци­ это создание команды с разнообразными точками зрения . Может быть полезно рассматривать разнообразие рабочих мест с точки зрения че­ тырех основных областей 2 . Внутреннее разнообразие. Отражает то, с чем человек родился и не выбирал для себя. К таким областям относится возраст, национальность, раса, этническая принадлежность, физиче­ ские способности и типы личности. Внешнее разнообразие. Это то, что мы приобретаем по пути, либо под влиянием внешних факторов, ли­ бо в результате сознательного выбора. В качестве примера можно привести со­ циально-экономический статус, жизненный опыт, образование, личные интере­ сы, семейный статус, местоположение и религиозные убеждения. Организационное разнообразие. Связано с ролью человека внутри организации . Это может быть место работы, должность, уровень в иерархии, уровень оплаты, стаж или статус занятости. Разнообразие мировоззрения. Это то, как люди по-разному видят мир. В мировоззрение входят такие вещи, как этические рамки, политические убеждения, религиозные убеждения, личная философия и общий взгляд на жизнь. 1 Текст на рисунке : "А нет в Вау Area желающих пробежать перед моей машиной на тестовом беспи­ лотном режиме, чтобы собрать данные? Обещаю не переехать ... (при необходимости выключу) . (И да, я серьезно)". 2 См . статью "Каковы 4 типа разнообразия?" (What Аге the 4 Types of Diversity? (https://oreil.ly/SQ- P9)) для получения дополнительной информации о четырех основных областях .
Инструментарий и экспертиза 1 157 Благодаря различиям в этих четырех областях у каждого человека появляется уни­ кальный опыт, который делает его точку зрения такой же уникальной. Уникальная точка зрения означает, что разные люди будут видеть одну и 1)' же сиrуацию по­ разному. Для команды, создающей технологические продукты, разнообразие точек зрения невероятно ценно, поскольку оно позволяет организации рассматривать проблему и предлагаемые решения с множества разных сторон. Разнообразие дает значительное преимущество перед компаниями, которым его не хватает. Оно помогает лучше распознавать все нюансы в каждой конкретной си­ rуации, что существенно поможет вам при определении пространства возможных решений. Вероятно, чей-то личный опыт воплотится в удивительную идею, о кото­ рой никто другой бы и не подумал. Что еще более важно, разнообразные точки зрения могут помочь вам выявить в ва­ шем продукте проблемы. Например, оказывается, что разные люди неосознанно предлагают различные критерии для оценки производительности вашего продукта. Человеку с детьми, вероятно, будет важно, чтобы продукт хорошо вписывался в семейную жизнь, а человек с ограниченными физическими возможностями с боль­ шей вероятностью будет думать о досrупности. Это не означает, что члены вашей команды заменяют экспертов в этих областях. Если у человека есть инвалидность, это не означает, что он автоматически стано­ вится экспертом по досrупности. У него может не быть ни желания, ни квалифика­ ции занимать эту должность. Однако сам факт наличия в команде разных точек зрения, как мы надеемся, приведет к тому, что команда с большей вероятностью рассмотрит необходимость привлечения эксперта по досrупности. Недостаточно просто собрать разнообразную команду: людям должно быть ком­ фортно делиться своими идеями, а остальная часть компании должна их слушать. О том, как создать такую среду, в этой книге мы говорить не будем, но на Э1)' тему имеется множество литераrуры. безопасность от Начать можно с введения в психологическую Goog\e (https://oreil.ly/rZYFL). Компания обнаружила, что коман­ ды, в которых люди могут уверенно высказываться, гораздо более эффективны (https://oreil.ly/2LD_i). Другая важная идея заключается в том, что вы должны также смотреть на проблему с точки зрения всей компании. Помимо людей, непосредственно работающих над продуктом, вам следует собирать отзывы от всех, кого только можно - от руково­ дителей до работников начального уровня. Это поможет вам избежать слепых пя­ тен в понимании вещей. Во многих крупных технологических компаниях сотру д­ никам предлагается принять участие в тестировании новых продуктов, которые все еще находятся в разработке3, что позволяет командам разработчиков получить дос1)'П к ценной информации со всей компании. Как и все процессы в итеративной разработке, этот процесс заключается в создании циклов обратной связи, которые постепенно будут помогать вам создавать продукт. 3 Это часть стратегии, известной как "экспериментальное тестирование", описанной в разд. "Тести­ рование в реШ1ьных условиях" главы 1О.
глава 158 5 Необходимо создавать системы, позволяющие собирать точки зрения вашей разно­ образной команды на самых ранних этапах, когда проект находится лишь на уровне идеи. Одной команде не всегда удается учесть все необходимое разнообразие точек зре­ ния. Например, вам может потребоваться мнение о продукте маленьких детей, ко­ торым ваша компания вряд ли будет платить! Один из способов учесть такие точки зрения - выделить бюджет для проведения фокус-групп с такими людьми на про­ тяжении всего проекта. Еще один способ расширить понимание - найти разнообразную группу консуль­ тантов, которые могут помочь вам в принятии решений. Создание совета консуль­ тантов, имеющих опыт в ключевых областях и разнообразно представленных, - это мощный метод, помогающий вам принимать правильные решения. Консультан­ ты могут выступать в качестве совета наблюдателей, который поможет вам понять, движетесь ли вы к целям или отклоняетесь от курса. Независимо от того, сколь велика ваша команда, вы должны неустанно добиваться обратной связи от людей, которых ваш продукт касается, - а это самая разнооб­ разная группа из всех. Цена разнообразия Стоит отметить, что разнообразие не дается бесплатно. Помимо практических затрат на компенсацию людям за их время, разнообразным командам труднее достигать согласия по таким вопросам, как ценности и цели. Руководство проекта должно быть к этому готово и, возможно, ему придется принять некоторые решения, по которым полного согласия достичь не удалось. Важно документировать обоснование любых решений, а также любые несоглас­ ные мнения, чтобы команда могла отслеживать принимаемые решения и вносить в них улучшения. Если у вас возникают фундаментальные разногласия по какому-то конкретному вопросу, это может быть признаком значительного риска. Заинтересованнь1е стороны Заинтересованными сторонами вашего проекта являются все люди и сообщества, которых ваш продукт может коснуться. Сюда входят люди в вашей компании, ваши клиенты, конечные пользователи вашей системы и все, на кого она может повли­ ять - как прямо, так и косвенно. Для того чтобы система была эффективной и никому не вредила, необходимо учи­ тывать потребности и ценности заинтересованных сторон. Например, если ваша система будет взаимодействовать с представителями общественности, важно, что­ бы они считались заинтересованными сторонами, а проект разрабатывался с учетом их интересов.
Инструментарий и экспертиза Лучший способ понять потребности и ценности заинтересованных сторон - 159 спро­ сить их напрямую. И делать это следует на протяжении всего вашего рабочего про­ цесса разработки, от идеи до окончания жизненного цикла. Определить заинтересованные стороны можно с помощью хорошо зарекомендовав­ шего себя инструмента под названием stakeholder mapping (https://oreil.ly/t7Gv0). Важно, чтобы в вашей команде был человек, знакомый с этим процессом. Роли и обязанности Для создания продукта требуется множество людей, и в следующем разделе этой главы мы опишем некоторые необходимые команде роли. Вашему проекту могут потребоваться роли, здесь не описанные. Это лишь наиболее распространенные из них, которые непосредственно участвуют в рабочем процессе ИИ периферийных устройств. Не нужно нанимать на каждую роль отдельного человека. Вполне возмож­ но, что один и тот же человек будет исполнять в проекте несколько ролей, а на ранних этапах вообще один человек может быть и швец, и жнец, и на дуде игрец. Для простоты понимания разделим роли по типам. Знания и понимание Роли в этой категории имеют решающее значение для понимания проблемы и пра­ вильного ее решения. Эксперт в предметной области. Главную роль в пьесе играет эксперт предметной области, обладающий глубо­ ким пониманием области проекта. Если работа менеджера по продукту состоит в том, чтобы понять, как проект вписывается в окружающий контекст (напри­ мер, в рынок), эксперт в предметной области - это человек, понимающий си­ туацию с научной точки зрения. Например, для проекта промышленной автома­ тизации может потребоваться эксперт в соответствующих процессах, а для проекта в области здравоохранения - промышленных эксперт в смежных об­ ластях медицины и биологии. Эксперт по этике и справедливости. Эксперт по этике и справедливости необходим для того, чтобы избежать оши­ бок, которые часто приводят к созданию вредных или неэффективных продук­ тов. Таким экспертам необходимо четкое понимание технологий, которые будут использоваться для решения проблемы, понимание типов возможных ошибок и процессов, которым необходимо следовать. Экспертиза в предметной области также важна, поскольку этические проблемы могут быть специфичными для конкретной предметной области.
160 Глава 5 Планирование и исполнение Люди, занимающие эти должности, нужны для направления проекта по правильно­ му пути на пути от идеи до выпуска на рынок и долгосрочной поддержки. Менеджер по продукту. Менеджер по продукту отвечает за принятие решений о продукте: каким он должен быть, что должен делать и кому служить. Его работа - глубоко понять проблему и рынок, а также работать с техническими специалистами над разра­ боткой и внедрением эффективного решения. Он руководит процессом, сплетая из нитей процессов и задач продукт, соответствующий требованиям. Менеджер проекта. Роль менеджера проекта предполагает координацию выполнения сложных задач группами людей. Например, менеджер проекта может организовать сбор набора данных, который будет использоваться для создания продукта. Менеджер программы. Менеджеры программ координируют стратегии высокого уровня, состоящие из нескольких проектов. Например, компания, планирующая внедрить ИИ перифе­ рийных устройств в несколько частей своего бизнеса для экономии средств, мо­ жет задействовать менеджера программы для координации этого процесса. Разработка алгоритма Люди на этих ролях занимаются исследованием наборов данных и разработкой ал­ горитмов, а также механизмами оценки создаваемой системы. Эту работу все чаще могут выполнять неопытные пользователи, применяющие готовые платформы, но всегда полезно иметь солидный опыт, который позволяет избегать ошибок новичков. Специалист по данным (data science). Специалист по данным отвечает за сбор, поддержку и понимание данных, ле­ жащих в основе проекта с ИИ периферийных устройств. У него есть навыки очистки, анализа и конструирования признаков из данных. Эта роль часто под­ разумевает выполнение задач по машинному обучению, но также это могут быть две отдельные роли. Инженер DSP. Инженер DSP разрабатывает и реализует алгоритмы DSP. Обычно такие люди сильны как в разработке алгоритмов, так и в низкоуровневом программирова­ нии. DSP чрезвычайно важен в большинстве проектов ИИ периферийных уст­ ройств, за исключением тех, где используются глубокое обучение с данными изображений, поскольку изображения обычно подаются в систему без особой обработки. Специалист по .wашинному обучению. Специалисты по машинному обучению коротают часы за решением задач с по­ мощью ML. Специалист по машинному обучению попытается сформулировать
Инструментарий и экспертиза 1 161 задачу с точки зрения различных типов алгоритмов обучения. Затем он работает с набором данных, пьrrаясь разработать алгоритмы, решающие проблему. Ключе­ вая часть этой роли заключается в определении того, каким образом оценивать ал­ горитмы и их производительность как в лабораторных, так и в полевых условиях. В проекте ИИ периферийных устройств инженеры работают в тесной связке, поскольку DSP DSP и специалисты по ML представляет собой сложную форму конструирования признаков, а она является ключевой частью рабочего процесса машинного обучения. Разработка продукта Люди, занимающие эти роли, ведут разработку самого продукта. Они создают ап­ паратное обеспечение и код приложения, а также реализуют алгоритм так, чтобы он эффективно работал на устройстве. Инженер по аппаратному обеспечению. Инженер по аппаратному обеспечению проектирует аппаратное обеспечение, на котором работает продукт. В такой проект входят как датчики, которые собира­ ют необработанные данные, так и процессоры, которые пытаются их осмыслить, а также конструкция и компоновка печатных плат. Инженерам аппаратного обеспечения крайне важно тесно сотрущ1ичать с теми, кто занимается разработкой алгоритмов, чтобы аппаратное обеспечение и алго­ ритмы поддерживали друг друга. Здесь речь идет о тесном и взаимовыгодном сотрудничестве: разработка алгоритма должна основываться на аrtпаратных ог­ раничениях, а разработка аппаратного обеспечения - на разработке алгоритма. Инженер по программному обеспечению (ПО) встраиваемых систем. Инженеры по ПО встраиваемых систем пишут низкоуровневый код, который "оживляет" аппаратное обеспечение. Их код должен взаимодействовать с датчи­ ками, запускать алгоритмы и интерпретировать их выходные данные для приня­ тия решений. Они реализуют само встраиваемое приложение. Инженер по ML встраиваемых cucme,u. Некоторые инженеры встраиваемого ПО уделяют особое внимание машинному обучению. Их задача - обеспечить максимально эффективную работу алгорит­ мов машинного обучения на конкретном оборудовании. Они могут иметь глубо­ кие знания математики, лежащей в основе машинного обучения, а также опыт низкоуровневой оптимизации программного обеспечения. Они не обязательно являются экспертами в области науки о данных могут обучать простые модели (data science), хотя, вероятно, ML. Это совершенно новая роль, но вместе с развитием ИИ периферийных устройств ее распространенность растет. Промышленный дизайнер. Промышленный дизайнер создает физический дизайн продукта. Это актуально для ИИ периферийных устройств, поскольку физически многие аспекты сбора данных с датчиков определяются дизайном: перемещение датчика в другое ме-
162 Глава 5 сто в продукте может полностью изменить выдаваемый им результат и мгновен­ но сделать набор данных бесполезным. Это означает, что между промышленным дизайном, электроникой и разработкой алгоритмов должна быть тесная связь. Инженер-программист. Во многих проектах требуется разработка ПО, не связанного непосредственно с устройством. Например, во многих проектах ИИ периферийных устройств есть серверный компонент. Написание бекэнд-кода требует не таких навыков, как в разработке встроенных приложений, поэтому нужен разработчик с другим опытом. Техническое обслуживание Эти вспомогательные роли помогают обеспечить бесперебойную техническую сто­ рону процесса разработки и управлять инструментами, которые обеспечивают про­ дуктивность и безопасность команды. Инженер MLOps. Инженер MLOps отвечает за создание и поддержку решений пользуются остальной командой. По сути, это роль MLOps, которые ис­ DevOps (https://oreil.ly/kEFI-), но она требует глубокого понимания процессов и требований рабочего процесса ИИ периферийных устройств. Специалист по безопасности. Отвечает за потребности в безопасности команды, ее данных и производимых продуктов. Это одновременно и консультативная роль (помогает другим понять, как обеспечить безопасность в том, что они делают), и проактивная роль, обес­ печивающая принятие мер, которые помогают снизить риск безопасности. Тестировщик. Эта роль помогает разрабатывать и реализовывать планы тестирования, которые проверяют продукт, позволяя команде понять, соответствует ли продукт своим проектным целям. Подробнее об обеспечении качества см. в разд. "Тестиро­ вание в реальных условиях" главы 10. Найм в сфере ИИ периферийных устройств Серьезная проблема разработки ИИ периферийных устройств заключается в том, что это очень новая область, и в ней не так много людей с опытом работы. На мо­ мент написания почти невозможно нанять инженера, имеющего опыт работы с пе­ риферийным ИИ. В мире, вероятно, их всего несколько сотен, и большинство из них все еще работают над своими первыми проектами в области ИИ периферийных устройств и еще не имели достаточно серьезного опыта работы в сфере, чтобы по­ рываться ку да-то бежать. К счастью, новизна области также означает, что даже у самых опытных инженеров будет преимущество всего в пару лет. Недавние достижения в области инструмен­ тов ИИ, особенно комплексные платформы, значительно снизили порог вхождения. При приеме на работу в области ИИ периферийных устройств существует два ос-
Инструментарий и экспертиза 1 163 новных направления, где требуются очень специфические знания: разработка алго­ ритмов и разработка встраиваемых систем. В случае разработки алгоритмов вы, скорее всего, будете искать специалистов в области науки о данных и специалистов по машинному обучению. Некоторые спе­ циалисты имеют опыт прикладной инженерии и решении практических задач в данной сфере. У других может быть более академический опыт, связанный с иссле­ дованием принципов, лежащих в основе машинного обучения, и изобретением но­ вых методов. У практиков-прикладников будет больше опыта в постановке проблем, что очень важно для ИИ периферийных устройств. Это делает их желанными сотрудниками, особенно если их нанимают индивидуально. Тем не менее академические исследо­ ватели все равно полезны в проектах ИИ периферийных устройств. У них меньше шансов приобрести опыт работы в типичной среде разработки ПО, и для освоения этого дела может потребоваться больше времени. С другой стороны, их легче на­ нять, чем практиков-прикладников, т. к. их просто больше. Исследования ML сильно отличаются от прикладного ML, и некоторым исследователям ML может быть скучно регулярно применять существую­ щие методы, а не пытаться придумать новые. Важно, чтобы кандидаты понимали, каковы ожидания от той или иноn должности, чтобы избежать ' разочарования с обеих сторон. Одна из трудностей заключается в том, что мало у кого из людей, занимающихся наукой о данных и машинным обучением, есть большой опыт работы с данными датчиков. Зрение знакомо всем, звук - в меньшей степени, а данные датчиков временнь1х рядов, вероятно, останутся загадкой для большинства практиков: хотя анализ временнь1х рядов широко распространен в науке о данных, обычно они не похожи на высокочастотные временнь,е ряды, которые производятся электронными датчиками. К счастью, рабочие процессы и набор инструментов у инженеров таковым, имеющимся в арсенале практиков ML, DSP аналогичны DSP) уже явля­ и они (инженеры ются экспертами в разработке функций для данных датчиков. Навыки и опыт ин­ женеров DSP позволяют им без труда изучать машинное обучение встраиваемых устройств, поэтому одним из потенциальных способов является найм инженеров DSP и обучение их основам машинного обучения. Команде, состоящей как из ин­ женеров DSP, так и из практиков ML, будет гораздо легче, чем без кого-то из них. В инженерии встраиваемых систем другие проблемы. Хотя работа с интерпретато­ рами глубокого обучения (или кодом, сгенерированным компилятором глубокого обучения) часто является встраиваемых систем просто вопросом иногда приходится интеграции библиотек, копаться во внутренних инженерам компонентах, чrобы выяснить, что идет не так. В этих случаях некоторые знания и понимание глубокого обучения определенно пригодятся. Инженеры по встраиваемым систе­ мам также могут оказаться ответственными за обременительную задачу преобразо­ вания модели в соответствующую форму для использования на устройстве, что оп­ ределенно проще при наличии некоторых знаний в области машинного обучения.
164 Глава 5 Еще одна распространенная задача инженеров по встраиваемым системам - реа­ лизация классических моделей машинного обучения в программном обеспечении. Для этого пока не существует хорошей встроенной библиотеки С++, но их перенос обычно не составляет труда: существуют эталонные реализации на языках более высокого уровня, которые просты для понимания. К сожалению, найти инженера по встраиваемым системам со знаниями в области машинного обучения на какое-то время будет непросто. Тем не менее комплексные платформы значительно упрощают задачу, и со временем число опытных инжене­ ров по машинному обучению встраиваемых систем будет расти. На данный момент это не должно мешать работе: компетентный инженер по встраиваемым системам способен без особых проблем изучить современные инструменты. Изучение навыков в сфере ИИ периферийных устройств За последние несколько лет появилось несколько отличных ресурсов для изучения ИИ периферийных устройств. Как и в большинстве областей, здесь есть две сторо­ ны: теория и практика. Теория будет наиболее интересна тем, кто хочет внести свой вклад в развитие этой области, а практический контент более полезен тем, кто хочет создавать продукты. Предупреждение: тут главное не погрязнуть. Многие люди, желающие создавать продукты искусственного интеллекта, застревают в процессе обучения, т. к. зале­ зают в каждую кроличью нору, как только ее находят, вместо того чтобы прини­ маться за проект. Реальность такова, что это огромная область, и вы никогда не сможете изучить ее всю. Ориентируйтесь на действие, узнайте достаточно, чтобы сделать следующий шаг, а затем снова вернитесь к оценке. Для создания успешных аппаратных продуктов нужны команды, поэтому определите минимум, который вам нужно знать, а затем привлеките к работе экспертов. Вот наши главные рекомендации как по практическому, так и по теоретическому содержанию. Практика В последних трех главах этой книги, начиная с главы 11, подробно описывается процесс работы с ИИ периферийных устройств на примере трех реальных сценари­ ев использования: мониторинг дикой природы, обеспечение качества продуктов питания и работа с потребительскими товарами Справившись с этим, можете почитать еще кое-что. Introduction to Embedded Machine Learning (курс Coursera, https://oreiLly/ouQyM). Онлайн-курс с хорошими отзывами, представляющий собой практическое вве­ дение в предмет. Computer Vision with Embedded Machine Learning (курс Coursera, https:lloreiL/y/LgjmК). Продолжение первого курса, ориентированное конкретно на задачи компьютер­ ного зрения.
Инструментарий и экспертиза Applied Machine Learning (ТinyML) for Sca/e (курс 1 165 HarvardX, https:/loreiLly/jX-ml). Из этой замечательной коллекции вы получите прикладные навыки и общие знания, необходимые для работы с машинным обучением встраиваемых систем. Йодиче Джан Марко "ТinyML. Книга рецептов 1,4. Практическая книга с полезными "рецептами", на примере которых описывают­ ся различные концепции машинного обучения встраиваемых систем. Пит Уорден, Дениэл Ситунаяке "ТinyML ,,5. Практическое введение в машинное обучение встраиваемых систем на микро­ контроллерах с примерами на TensorFlow Lite для микроконтроллеров. Хьюен Чип "Проектирование систем машинного обучения',6. Восхитительная книга о рабочем процессе разработки машинного обучения, ориентированная на серверные приложения, но по-прежнему очень актуальная. Уайт Элеция "Создание встраиваемых систем" 7. Лучшее практическое введение в разработку встраиваемых систем. Теория Эти материалы предназначены для людей, которые хотят глубже погрузиться в теорию машинного обучения встраиваемых систем. Их изучение не является обяза­ тельным условием для успешной разработки продукта, поэтому не бойтесь что-то пропустить и не теряйтесь в кроличьей норе обучения 8 . Тiпу Machine Learning (ТiпуМL - Этот набор курсов (TinyML) for Scale, курс пересекается HarvardX,· https:lloreiL/y/cZoLK). с курсом Applied Tiny Machine Leaming о котором говорилось ранее, но начинается с простейших основ, которые могут быть не нужны, если вы хотите приступить к созданию как можно быстрее. Стивен В. Смит "Цифровая обработка сигналов. Практическое руководство для инженеров и научных работников"9. По-настоящему полное руководство по цифровой обработке сигналов, доступ­ ное бесплатно и в виде книги в твердом переплете. Хороший ресурс для любого инженера, не связанного с ритмами DSP, который планирует серьезно работать с алго­ DSP. Iodice Gian М. TinyML Cookbook. - Packt, 2022. - 344 р. (https://oreil.ly/Q_Eto). Warden Р., Situnayake D. TinyML. - O'Reily, 2019. - 506 р. (https://tinymlbook.com/. 6 Huyen С. Designing Machine Leaming Systems. -O'Reily, 2022. - 386 р. (https://oreil.ly/aY4lv). 7 White Е. Making Embedded Systems. - O'Reily, 2011. - 325 р. (https://oreil.ly/BQG6z). 8 Помните, лучшиlt способ учиться это созидать! Не попадайтесь в распространенную ловушку, 4 5 думая, что сначала вам нужно выучить всю теорию. Эта область развивается так быстро, что изучить всю теорию все равно не выйдет. Smith S. W. The Scientist and Engineer's Guide to Digital Signal Processing. - California Technical, 1997 (https://oreil.ly/Oir2V). 9
Глава 166 5 Орельен Жерон "Прикладное машинное обучение с помощью ТensorFlow "10. Scikit-Learn, Keras и Прекрасное введение в практические концепции и навыки машинного обучения. Хороший ресурс для любого инженера, который не занимается машинным обу­ чением постоянно, но планирует поработать с МL-алгоритмами. Франсуа Шолле "Глубокое обучение на Python"11 . Еще одно невероятное введение в машинное обучение, отдельно посвященное алгоритмам глубокого обучения. ТinyML Foundation (канш~ УоиТиЬе, TinyML Foundation https://oreilly/AdXwm). регулярно проводит презентации по встроенному машинно­ му обучению. Обычно это сугубо технические материалы, где рассказывается о передовых достижениях исследований и разработок. ТinyML papers and projects (репозиторий GitHub, https://oreil.ly/PJYbW). Репозиторий представляет собой кладезь документов и ресурсов, связанных с этой областью. Арсенал инструментов История ИИ периферийных устройств - это история инструментов. Если говорить о базовых технологиях, то большинство основных компонентов, необходимых для внедрения ИИ в периферийные устройства, существуют уже десять лет или более. Но эти технологии от мощных встроенных процессоров до моделей глубокого обучения - по первости требуют длительного и сложного изучения. Однако со временем в нашей глобальной технологической экосистеме появляются инструменты, позволяющие снизить сложность и повысить удобство использова­ ния даже самых навороченных технологий. Богатое сочетание свободно распро­ страняемых и коммерческих библиотек, фреймворков и продуктов привело к тому, что ИИ периферийных устройств стал доступен даже средней руки инженеру по встраиваемым системам. Большая часть этой работы была проделана за последние два-три года с использо­ ванием таких библиотек, как TensorFlow Lite для микроконтроллеров и платформ комплексной разработки, таких как Edge lmpulse (https://edgeimpulse.com) 13 , которые перевели технологию за черту, отде­ (https://oreil.ly/oowo5) 12 лявшую ее от массового внедрения. 10 Geron А. Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow. O'Reilly, 2022. 861 р. (https://oreil.ly/tI02J). 11 Chollet F. Deep Learning with Python. - Manning, 2021. - 504 р. (https://oreil.ly/G7qW4). 12 Основана Питом Уорденом, тогда работавшим в Google, который любезно написал предисловие к этой книге. 13 Она настолько впечатлила авторов этой книги, что мы оставили работу в Google и Апn, чтобы приехать и поработать на ней.
Инструментарий и экспертиза 1 167 В следующих разделах мы рассмотрим инструменты, которые, по нашему мнению, наиболее важны для ИИ периферийных устройств. У спешные команды должны хотя бы поверхностно быть знакомы с ними всеми. Комплексные платформь1 Комплексные платформы разработки для ИИ периферийных устройств включа­ ют в себя множество описанных в следующем разделе инструментов, обеспечи­ вают автоматическую интеграцию между ними, а также продуманный целостный дизайн, предназначенный специально для проектов в этой сфере. Они могут зна­ чительно облегчить вам жизнь, делая разработку намного быстрее и менее рис­ кованной, а также помогая вам не утонуть в океане незнакомых инструментов. Комплексные платформы описаны в разд. "Комплексные платформы для ИИ пе­ риферийных устройств" дш,ее в этой главе. Хотя иметь базовое представление об инструментах низкого уровня полезно, желательно начать с комплексной платформы, а пытаться "развернуть собственную" имеет смысл только тогда, ко­ гда платформа не полностью соответствует вашим потребностям. В этом случае лучшие комплексные платформы будут интегрироваться с другими стандартны­ ми инструментами отрасли, позволяя вам расширить их функциональность, не теряя при этом преимуществ. Программная инженерия Большая часть ИИ периферийных устройств связана с разработкой программного обеспечения, поэтому невероятно важно использовать современные инструменты разработки ПО. Перечислим некоторые ключевые фигуры на этом поле. Операционные системы Используемую операционную систему (ОС) важно учитывать как во время разра­ ботки, так и во время развертывания. В процессе разработки выбранная вами ОС будет определять, насколько легко вам будет работать с чрезвычайно разнообраз­ ным набором программных инструментов, составляющих экосистему ИИ перифе­ рийных устройств. И здесь находится точка пересечения двух разных подходов. В разработке встраиваемых систем исторически принято использовать Windows, и некоторые инструменты написаны с учетом этого предположения. Напротив, инст­ рументы обработки данных и машинного обучения обычно лучше всего подходят для UNIХ-совместимых сред, таких как Linux или macOS. Но на практике это не является большой проблемой. Не обязательно, чтобы каждый член команды умел использовать все инструменты: например, инженер по машин­ ному обучению может обучать и оптимизировать модели с помощью Linux, а затем Windows. передавать их инженеру по встраиваемым системам, который работает с Существует также Windows Subsystem множество для инструментов для смешанных Linux (https://oreil.lyNYaE6). сред, например Кроме того, более поздние
Глава 168 5 наборы инструментов обычно нормально работают в средах по встроенным системам все равно предпочитают Вся команда Edge Impulse, UNIX, Windows хотя инженеры как знакомую среду. включая инженеров встраиваемых систем и машинного обучения, использует комбинацию виртуальных машин и macOS Linux. В задачах развертывания операционные системы иногда используются на самих Linux (урезанные дист­ SoC), либо операционные сис­ (real-time operating systems, RTOS), которые представляют периферийных устройствах. Обычно это либо встроенный рибутивы Liпux, скомпилированные для работы на темы реального времени собой специальные встроенные ОС, предназначенные для работы на минимальных ресурсах. Оба этих варианта, а также вариант вообще без ОС 14 (чаще всего у мик­ роконтроллеров так и бывает) полностью совместимы с ИИ периферийных уст­ ройств. Языки программирования и языки сценариев Два наиболее важных ройств - это Python языка программирования для периферийных уст­ ИИ и С++. В настоящее время в подавляющем большинстве слу­ чаев предпочтительным языком для машинного обучения является огромному даря математических количеству и научных Python благо­ вычислительных библиотек с открытым исходным кодом и почти абсолютному его принятию со­ обществом исследователей машинного обучения. Поскольку Python также пре­ красен и в задачах общей разработки программного обеспечения, он превосходит более специфические языки, такие как R15 . Два самых важных в машинном обу­ чении фреймворка TensorF\ow и PyTorch написаны на Python, как и другие крутые инструменты, которые мы изучим в разд. "Библиотеки математических и науч­ ных вычислеиuй" далее в этой главе. У Python есть свои особенности, но именно этот язык лучше всего подходит для разработки передовых алгоритмов ИИ машинного обучения до - от DSP. С++ (произносится как "Си-плюс-плюс") повсеместно используется в современной разработке встроенного ПО. Хотя некоторые встроенные платформы поддержива­ ют только С (он проще, чем С++, и во многом похож на него), высокопроизводи­ тельные встраиваемые устройства, которые обычно используются для ИИ перифе­ рийных устройств, как правило, программируются на С++. В экосистеме С++ существует множество инструментов и библиотек, которые могут облегчить разра­ ботку, и это весьма удачно, поскольку для большинства систем на базе микрокон­ троллеров только этот язык и подходит. С++ - это язык низкого уровня, позволяющий получить огромный контроль над аппаратной частью системы. Для того чтобы написать хороший код на С++, требу­ ется опытный инженер, но код будет работать намного быстрее, чем его эквива­ лент, написанный на языке более высокого уровня, таком как 14 15 Python. Такие систе.'.lы еще называют "на голом железе". Популярный язык статистических вычислений, который обычно используется только в задачах анализа данных.
Инструментарий и экспертиза 169 Интересно отметить, что большая часть сложной математики, выполняе­ мой библиотеками С++: код Python Python, на самом деле "под капотом" реализована на используется просто как удобная оболочка. Так разработ­ чики получают лучшее из обоих миров. В процессе разработки вы, вероятно, будете также использовать языки сценариев, такие как оболочка сложных Bash. инструментов и Они применяются для объединения и автоматизации сценариев, которые помогают создавать приложения и развертывать их на устройствах. Если говорить о целевых платформах, то при работе с микроконтроллерами вы мо­ жете почти всегда использовать С++. SoC, на которых работают полноценные опе­ рационные системы, зачастую гораздо более гибки, и на них можно выполнять код на языках высокого уровня, таких как Python. Минус тут в том, что они намного дороже и потребляют гораздо больше энергии, чем устройства меньшего размера. Поскольку для большинства целей требуется С++, любые алгоритмы, разработан­ ные на языках более высокого уровня (например, Python), вам потребуется порти­ ровать на него. Далее я опишу некоторые инструменты, которые упрощают эту за­ дачу, но простой она будет не всегда. Управление зависимостями Современное программное обеспечение обычно имеет множество зависимостей, и разработка ИИ выводит это на новый уровень. Инструментам обработки данных и машинного обучения часто требуется до абсурдного много дополнительных сто­ ронних библиотек. У становив серьезную платформу глубокого обучения, такую как TensorF\ow, вы можете использовать все, от веб-серверов до баз данных. Во встраиваемой системе все становится сложнее, поскольку алгоритмам обработ­ ки сигналов и машинного обучения обычно нужны сложные и оптимизированные библиотеки математических вычислений. Кроме того, компиляция и развертывание встроенного кода С++ часто требуют наличия на компьютере огромного количест­ ва зависимостей. Все эти зависимости могут стать настоящим кошмаром, и управление ими действи­ тельно является одной из самых сложных задач разработки ИИ периферийных уст­ ройств. Существуют различные методы, упрощающие эту задачу: от контейнериза­ ции (см. разд. "Контейнеризация" далее в этой главе) до управления средой для конкретного языка. В Python один из самых полезных инструментов poetry.org). Он нужен для того, чтобы упростить u называется Poetry (https://python- процесс определения, установки и изоляции зависимостеи в нескольких средах на одном компьютере 16 Т . акже к числу важных инструментов относятся системы управления пакетами для конкретной ОС, 16 Наиболее распространенными инструментами управления зависимостями Python являются pip (https://oreil.ly/tv_wO) и Conda (https://conda.io); Poetry - относительная новинка, но ее насто­ ятельно рекомендуется использовать.
170 такие Глава как 5 aptitude (https://oreil.ly/aCqln; macOS). DeЬian GNU/Linux) и Homebrew (https://Ьrew.sh; Один из худших моментов управления зависимостями возникает при попытке объ­ единить различные части системы. Например, модель, обученная на одной версии платформы глубокого обучения, может быть несовместима со структурой вывода, выпущенной немного позже. Поэтому чрезвычайно важно проводить комплексное тестирование систем на самых ранних этапах процесса разработки, чтобы избежать неприятных сюрпризов в дальнейшем. Контейнеризация Контейнеризация - это использование методов уровня ОС для запуска программ­ ного обеспечения внутри изолированных сред, называемых контейнерами. Изнут­ ри контейнер выглядит совершенно не так, как машина, на которой он запущен. Он может иметь другую операционную систему и зависимости, а также ограниченный доступ к системным ресурсам. В ИИ периферийных устройств есть множество наборов инструментов, используе­ мых для самых разных задач: от машинного обучения до разработки встраиваемых систем. Эти наборы инструментов часто имеют взаимно несовместимые зависимо­ сти. Например, двум цепочкам инструментов могут потребоваться совершенно раз­ ные версии языкового интерпретатора. Контейнеризация - мощный инструмент, позволяющий этим несовместимым цепочкам инструментов счастливо сосущество­ вать бок о бок на одной машине. Контейнеры обычно не имеют состояния и обладают высокой переносимостью. Это означает, что вы можете рассматривать всю тщательно настроенную машину, опи­ санную специальным синтаксисом, как программу командной строки, выполняю­ щую конкретную задачу. Контейнеры можно объединять для выполнения полезной работы, и их легко запускать на разных машинах в распределенной вычислитель­ ной среде. Контейнеры также можно запускать на встроенных устройствах, обычно во встро­ енном Linux на SoC. Это может быть интересным способом упаковки вашего про­ граммного обеспечения и его зависимостей для распространения, но он не обхо­ дится без некоторых накладных расходов. для контейнеризации Docker ис­ обычно Docker (https://www.docker.com) и Kubernetes (https://kubernetes.io). для запуска пользуется локально на рабочей станции разработки, а Kubemetes Наиболее популярные инструменты кластеров контейнеров в распределенной вычислительной инфраструктуре. Распределенные вычисления Распределенные вычисления - это концепция запуска различных процессов на разных машинах, потенциально расположенных в любой точке мира и связанных друг с другом через Интернет. Это более гибкий подход к вычислениям, чем ис­ пользование одиночных мощных мейнфреймов и суперкомпьютеров, и этот архи­ тектурный стиль лежит в основе большинства современных вычислений.
Инструментарий и экспертиза 1 171 Распределенные вычисления важны для развития ИИ по многим причинам. Во­ первых, ИИ периферийных устройств - это и есть пример распределенных вычис­ лений! Вычисления выполняются на периферии, где создаются данные, а результа­ ты либо используются локально, либо передаются по сети. Во-вторых, управление наборами данных, разработка алгоритмов и обучение моде­ лей машинного обучения могут требовать больших затрат вычислительных ресур­ сов и ресурсов хранения. Поэтому для этих задач хорошо подходят распределенные вычисления. Например, для обучения моделей глубокого обучения обычно арен­ дуют высокопроизводительный удаленный сервер, а не покупают мощную машину в офис. Задача организации и управления распределенной вычислительной инфраструк­ турой называется оркестровкой. Существует множество инструментов оркестровки с открытым исходным кодом, предназначенных для различных задач. (bttps://www.kubeflow.org)- Kubeflow это платформа оркестровки, предназначенная для выполнения машинного обучения на нескольких машинах. Облачные провайдеры Такие компании, как Amazon Web Services (https://aws.amazon.com), Google Cloud (https://cloud.google.com) и Microsoft Azure (https://oreil.ly/zXZeB), предоставляют распределенные вычислительные ресурсы каждому, кто готов за них заплатить. Этот тип распределенных вычислений известен как "облачные вычисления", по­ скольку на схемах компьютерных сетей обычно используется символ облака, кото­ рым обозначаются ресурсы, расположенные за пределами локальной сети. Большинство сайтов в мире размещено у облачных провайдеров. Они сами зани­ маются оборудованием и конфигурацией сети, позволяя разработчикам сосредото­ читься на создании приложений, а не на возне с серверами. Они активно использу­ ют контейнеризацию, что позволяет запускать множество рабочих нагрузок бок о бок в одной инфраструктуре. В проектах ИИ периферийных устройств облачные вычисления обычно используюг­ ся для хранения наборов данных, обучения моделей машинного обучения и реализа­ ции серверной части, с которой периферийные устройства обмениваются данными. В некоторых случаях, например в разд. ''Каскадирование в облачный сервис" главы 8, алгоритмы ИИ, работающие на облачных серверах, взаимодействуют в унисон с ал­ горитмами на периферийных устройствах, создавая в итоге рабочий сервис. Работа с данными Данные являются ключевым компонентом ИИ периферийных устройств, и сущест­ вует множество инструментов для сбора, хранения и обработки данных. Сбор данных Сбор данных с полевых устройств может оказаться затруднительным, поскольку в удаленных точках часто бывают проблемы с Интернетом. Существует два полез-
172 Глава 5 ных инструмента - регистраторы данных бильного широкополосного доступа Регистраторы данных - (https://oreil.ly/0Tl46) (https://oreil.ly/xlOeZ). и модемы мо­ это небольшие устройства, предназначенные для сбора и регистрации данных, собранных датчиками в полевых условиях. Как правило, у них большой объем постоянной памяти для сбора показаний датчиков, и они могут питаться от аккумулятора или подключаться к постоянному источнику питания. Преимущество использования регистратора данных заключается в том, что вы мо­ жете начать сбор данных еще до того, как возьметесь проектировать и создавать какое-либо собственное оборудование. Недостатком является то, что данные необ­ ходимо собирать вручную, физически подключаясь к регистратору. Модемы мобильного широкополосного доступа обеспечивают беспроводное под­ ключение к Интернету, обычно через сотовые сети, хотя также существуют и спут­ никовые соединения. Потенциально они могут передавать данные практически из любой точки мира, хотя возможность подключения зависит от местной доступно­ сти и условий. За счет них обеспечивается доступность данных в любой момент. Однако скорость передачи данных может быть довольно высокой, а беспроводная связь потребляет много энергии, поэтому ее использование возможно не всегда. Управление устройствами loT Существует множество платформ для связи с устройствами IoT, управления их ра­ ботой и сбора данных с них. Их использование обычно предполагает интеграцию библиотек или API во встроенное программное обеспечение. Затем программное обеспечение подключается к облачному серверу, который вы можете использовать для управления устройством. Эти платформы могут быть удобны для сбора данных с датчиков, особенно в уже существующих объектах, где какое-то программное обеспечение для управления устройствами уже используется. Хранение и управление данными Когда вы соберете набор данных, вам понадобится место для его хранения. Это мо­ гут быть и простые текстовые файлы на жестком диске, и сложные вещи, например база данных временнь1х рядов, разработанная специально для хранения и запроса данных временнь1х рядов. Мы рассмотрим некоторые варианты в разд. ''Хранение и извлечение данных" главы 7. Разные решения для хранения данных предназначены для различных целей. Неко­ торые из них заточены под быстрый запрос данных в режиме реального времени, а другие предназначены для обеспечения максимальной защиты от потери данных. В приложениях ИИ периферийных устройств обычно работают с "пакетами" данных, поэтому производительность, как правило, не является самым важным фактором. Вместо этого лучше найти простое решение, которое соответствует типу собирае­ мых вами данных.
Инструментарий и экспертиза 1 173 Наборы данных ИИ довольно часто хранятся в файловой системе вообще без ка­ кой-либо базы данных. Файловые системы предназначены для такого типа данных, и для эффективного управления ими могут быть полезны инструменты файловой системы, Python вроде командной строки UNIX. В экосистему научных вычислений входит множество инструментов, которые отлично подходят для чтения данных с диска и помогают исследовать и визуализировать их. Не обязательно иметь сложную базу данных, но хранение данных в правильном формате по-прежнему важно. Как мы узнаем в разд. "Форматирование" главы 7, сами показания датчиков должны храниться в эффективном и компактном двоич­ CBOR (https://cbor.io), NPY (https://oreil.ly/FdGWo) или, TFRecord (https://oreil.ly/SHZPO), который специально разработан для ном формате, таком как возможно, обеспечения высокой производительности в машинном обучении. Метаданные по­ казаний должны храниться в отдельных файлах (так называемых файлах манифе­ ста) или в простой базе данных. Такое отделение данных от метаданных позволяет эффективно исследовать наборы данных и манипулировать ими, не загружая в па­ мять огромные файлы. Конвейеры данных Конвейер данных - это процесс, который принимает необработанные данные и преобразует их для использования в задаче, например обучения модели машинного обучения. Именно так инженеры данных автоматизируют такие операции, как очи­ стка и обработка данных. Типичный конвейер данных может брать необработанные данные датчиков, фильтровать их, объединять с другими данными и записывать в правильный формат для обучения модели машинного обучения. Существует множество инструментов для определения конвейеров данных, неко­ торые из них сложнее, чем другие. Конвейеры данных ИИ периферийных уст­ ройств, как правило, включают очень большие объемы относительно простых дан­ ных, поэтому следует избегать инструментов, предназначенных для работы со структурированными данными (например, данными, хранящимися в реляционных базах данных). Вместо возможности составить запрос лучше ищите высокую про­ пускную способность и достаточную гибкость для запуска произвольных алгорит­ мов обработки сигналов. У многих облачных провайдеров есть средства для запуска конвейеров данных в их инфраструктуре распределенных вычислений. Некоторые комплексные платформы для ИИ периферийных устройств основаны на конвейерах и разработаны специ­ ально с учетом характеристик данных датчиков. Разработка алгоритма Разработка алгоритмов - это место, где сосредоточена большая часть сложности инструментов. Существует невообразимое множество программного обеспечения, которое поможет в этом процессе. Некоторые программы подходят для ИИ пери­ ферийных устройств лучше, чем другие.
174 Глава 5 Библиотеки математических и научных вычислений Сообщество Python произвело на свет чудесные средства разработки программного обеспечения в виде различных библиотек с открытым исходным кодом для выпол­ нения математических вычислений и численного анализа. Приведем некоторые наиболее важные. NumPy (https:/lnumpy.org). NumPy позиционирует себя как "фундаментальный пакет для научных вычисле­ ний на Python", и это не преувеличение. Эта библиотека представляет высоко­ производительную основу для большинства числовых вычислений на основе Python и имеет замечательный API, который позволяет легко и просто выпол­ нять спожные операции с большими массивами чисел. Формат файла NPY - удобный способ хранения данных датчиков. pandas (https:llpandas.pydata.org). Pandas - это то же самое, что NumPy для массивов, только для таблиц данных. В ней реализован волшебно интуитивный синтаксис для запроса и преобразова­ ния любой информации, которую можно представить в виде строк и столбцов. Pandas работает с NumPy, поэтому вы можете использовать ее для изучения данных с датчиков. Работа будет двигаться супербыстро. SciPy (https:llscipy.org). SciPy - это набор быстрых реализаций алгоритмов, необходимых для научных вычислений. Библиотека активно используется при разработке алгоритмов DSP, а также лежит "под капотом" у многих других инструментов. scikit-learn (https://scikit-learn.orglstahle). Библиотека scikit-learn, созданная с использованием NumPy и SciPy, - это ог­ ромная библиотека реализаций алгоритмов машинного обучения, а также инст­ рументов, необходимых для анализа обработанных данных и оценки их произ­ водительности. Ее API разработан таким образом, что вы можете взаимозаменяемо соединять ее различные компоненты, легко сравнивать и ком­ бинировать различные алгоритмы. Это "золотой стандарт" классического ма­ шинного обучения в Python, а его инструменты обработки и оценки данных час­ то используются даже при обучении моделей глубокого обучения на других платформах. Визуализация данных При работе с данными важна визуализация, особенно когда данные представляют собой цифровые сигналы. Графики и диаграммы позволяют нам представлять и интерпретировать числовую информацию, которая в противном случае была бы непонятна. В экосистеме Python есть несколько фантастических библиотек для ви­ зуализации данных. С ними может быть довольно сложно разобраться, особенно если вы хотите настроить нечто похитрее стандартных графиков, но, как только вы освоитесь с ними, числа мигом превратятся в красивое представление.
Инструментарий и экспертиза 1 175 - это Matplotlib (https://matplotlib.org) Seaborn (https://seaborn.pydata.org). Matplotlib предоставляет миллион различных Две наиболее распространенные библиотеки и способов создания визуализации данных . Ее обычно используют для создания графи­ ков в научных публикациях. Ее синтаксис может показаться сложноватым, но он на­ столько популярен, что обычно легко найти в Интернете ответы на любые вопросы. Seaborn построена на основе например создание Matplotlib и призвана облегчить некоторые сложности, привлекательных рис. 5.2, без блужданий боты с Pandas. в сложных API. визуализаций, подобных показанной на Она создана сnециально для удобства ра­ ,,,. sepal_leni;ith ♦:, . ,., :,,,! .. •epel_wldth 1 , 11111 • peta1_1ength ,..... petal wldth .... , ,. ····••" specles ♦ selosa ♦ verslcolor ♦ vlrglnlca 4 volue Рис. 5.2. На этом графике показаны диапазоны и средние значения дnя различных столбцов в наборе данных. Это одна из визуализаций в галерее примеров Seaborn (https://oreil.ly/uPOIO) Seaborn и Matplotlib производят изображения, но некоторые библиотеки визуализа­ Plotly (https://plotly.com/python), создают интерактивные визуали­ ции, такие как зации, которые можно исследовать динамически. Интерактивные вычислительные среды В разработке ИИ периферийных устройств фигурирует множество исследований, выходящих за рамки рутинной разработки программного обеспечения . Исследова­ ние данных, цифровая обработка сигналов и машинное обучение - у всех этих этапов есть рабочий процесс, в котором требуется проба разных идей и быстрая визуализация результатов. Для этой цели существуют различные интерактивные среды. Вместо того чтобы просто запускать сценарий и записывать результаты в файл или создавать целое
Глава 176 5 веб-приложение только для визуального выражения информации, можно использо­ вать интерактивные вычислительные среды, в которых код и визуализация сущест­ вуют бок о бок в одном и том же редакторе. Самая важная интерактивная среда для кода (https://jupyter.org). Python называется Внутри блокнота вы можете писать и Jupyter Notebook запускать код Python, а выходные данные будут отображаться рядом. Это могут быть любые визуализации, которые вы создаете с помощью таких библиотек, как рис. Matplotlib, как показано на 5.3 . Dataset 1. Generate Data The code the follo\•,•1ng cell w,H generate in :: rt...,.,."t r Sд.' t; оа .J''P / ~,r а set о "" raпdor•) х ·~·alue-s. ca!o.ilate therr s1ne ,•alues, and d1splay th~m on il graph. tr ... D~ES " l.':00 o"t ,.,~~~ .r f ,,,,,,, ) di • й :: (' t.;. 1", лн- 1 . е,., , tf..J~ 1 ~~r- (v."'P r i- r. .tt . 1J х_ ""'lu~s " np.rar,dOl'.untf~r-l'I', lо,~ .. .ь, t: f! ~!,,~i' high~,<~rr~th.pi, .. i:e ... S4.",PlES .ast;p~~ 1t,~ ,, ,lt"~ 1~ Qu(l'.QI?' f{' f Ч·. ',.1 _,,. ):. 1 ~ 1,,вlu~>} np.l"'ando1r.•,huffl..,~11: tc- ~ , t:~p di.,, ~ ,а."'с. ;_ ·alues "np stnp•_;,alu~s,.as,:;-~ n;,.float: 11 ;:) ll ,:11 tt ;>,о •" ,и da-t,J plt.plvt.>._v11lue~, plt sho .. ) 11t> у tJ ч~ ,·-,luC"-", t, ~t ... ~ ) 1, J 00 OJS о,о 02, ООО О 21 -О 10 -о 71 -1 со Рис. '-т--~-~-~---~-~ 5.3. Скриншот блокнота Jupyter, где показана смесь форматированного текста, кода и вывода кода. Этот блокнот взят из примера в "Hello World" TensorFlow Lite для микроконтроллеров (https://oreil.ly/a976F) Этот инструмент позволяет создавать интерактивные живые документы, содержа­ щие как реализацию алгоритмов, так и результаты их выполнения . Это и хороший интерактивный инструмент для экспериментов, и документальное свидетельство проделанной вами работы. Как правило, вы экспериментируете с алгоритмами в блокноте, пока не найдете лучший вариант, а затем переносите уже отлаженный код в обычные сценарии Python. Jupyter можно запускать локально, но существуют также облачные среды на базе Jupyter. Один из них - Google Colab (https://oreil.ly/eA4Mb), а другое - Amazon
Инструментарий и экспертиза 1 177 Оба варианта можно использовать бесплатно, а SageMaker (https://oreil.ly/GxOs-). за дополнительную плату вы получите дополнительные вычислительные ресурсы. Еще одной распространенной средой для интерактивных вычислений является МА TLAB (https://oreil.ly/NJ7Pr), которая сочетает в себе аналогичную интерак­ тивную среду с собственным языком программирования. Она широко распростра­ нена в научных кругах и инженерном деле, но, поскольку это коммерческий про­ дукт с закрытым исходным кодом, лицензия на который стоит денег, он менее популярен среди разработчиков программного обеспечения. Вполне вероятно, что люди, имеющие опыт работы в области электротехники, включая инженеров DSP, знакомы с МА TLAB. Существует даже интерактивная среда, разработанная специально для ИИ перифе­ рийных устройств. OpenMV IDE (https://oreil.ly/fO..KB) - это продукт с открытым OpenMV для поддержки разработки прило­ исходным кодом, созданный командой жений компьютерного зрения. Он упрощает тестирование и реализацию алгоритмов, интерпретирующих визуальную информацию, которые впоследствии можно будет развернуть как на оборудовании OpenMV, так и на других устройствах. Ope11MV JDE уникальна тем, что ее можно подключить к аппаратному устройству, оснащенному камерой, и выводить результаты работы алгоритмов в реальном времени. Цифровая обработка сигналов Разработка алгоритма обычно выполняется на DSP использовать любую среду, но обычно инженеры Python или МА TLAB. Можно DSP отдают предпочтение какой­ то одной. В SciPy, пре­ доставляющий реализацию множества важных алгоритмов DSP. В МА TLAB вам бу­ дут полезны наборы инструментов обработки сигналов (https://oreil.ly/X8umU) и обработки изображений (https://oreil.ly/MYpwC). Python есть модуль scipy.signal (https://oreil.ly/UwJsO) из библиотеки В МА TLAB имеется несколько хороших инструментов с графическим интерфей­ сом, за счет которых можно разработать алгоритм, поменьше прибегая к програм­ мированию, но зато Python напрямую совместим с цепочками инструментов, ис­ пользуемыми для обучения моделей машинного обучения, а еще он бесплатный. Все более популярным (https://www.octave.org), третьим вариантом является продукт GNU Octave разработанный как бесплатная альтернатива МА TLAB с открытым исходным кодом. Фреймворки глубокого обучения В экосистеме инструментов глубокого обучения доминируют два чрезвычайно попу­ лярных фреймворка с открьгrым исходным кодом, написанных для Pytlюn: TensorF\ow (https://tensorflow.org), созданный Google, и PyTorch (https://pytorch.org), созданный Meta 17 . Оба фреймворка возникли как внутренние системы для обучения моделей глубокого обучения, и обе отражают приоритеты своих создателей. 17 В те времена известная как Facebook (обе признаны экстремистскими организациями в РФ).
Глава 178 5 Фреймворки глубокого обучения отличаются от типичных программных библиотек (таких как NumPy или scikit-learn) тем, что в них под одной крышей спрятано мно­ TensorF\ow и PyTorch входят системы для определения и машинного обучения (пример 5.1 ), обработки данных, коорди­ жество инструментов. В обучения моделей нации распределенных систем, развертывания на различных типах вычислений и многого другого . ............ ,,,,,. ,,,............. ,,,,,,,, ............... ,,,,,,,, ............................. ,,,,,,,,, ........................................................................................................... ,.......................................... ........................ ! Лример 5.1. Простая арх"тектура модели глубокого обучения, определенная ! с помощью Кегаs, API высокого уровня TensorFlow : i .............................................................. . ,..................... ........................................................................................................................................................................ . ,................ : :,,, frOl'I tensorfl.ow.keras.l'IOClets viport Sequenttal frOl'I tensorf\.ow.keras.tayers i.J,ipoгt Dense # Определение архuf'lекмуры модели rюdel = Sequenttal() rюdel.add(Dense(untts=64, rюdel.add(Dense(untts=10, # acttvatton='relu')) acttvatton='soft111ax')) Насмройка процесса обучения rюdel.cOP1ptle(loss='categortcal_crossentropy', optt.111t.zer='sgd', P1etrtcs=('accuracy']) # Обучение модели rюdel.fit(x_tгatn, y_train, epochs=S, Ьatch_st.ze=32) # Оценка модели loss_and_P1etrtcs = rюdel.evaluate(x_test, y_test, batch_stze=128) История обоих инструментов привела к тому, что формой для промышленности, а PyTorch - TensorF\ow стал основной плат­ предпочтительным инструментом для исследователей глубокого обучения 18. Во многом это связано с тем, что в экосисте­ ме TensorFlow имеется больше возможностей для развертывания моделей, и это особенно актуально для ИИ периферийных устройств. На момент написания большинство инструментов для оптимизации моделей, по­ вышения эффективности и их развертывания на периферийных устройствах были написаны с учетом интеграции с экосистемой В TensorF\ow и PyTorch TensorF\ow. используются форматы хранения моделей, и хотя между ними существуют преобразования, выполнить их непросто 19 . Эrо означает, что 18 История и сравнение двух фреймворков весьма Иlffересны, и в блоrе AssemЬ\yAI (https://oreil.ly/6c6ta) можно прочитать отличную краткую выжимку из нее. 19 На самом деле, это может стать настоящим кошмаром даже для самых опытных разработчиков.
Инструментарий и экспертиза 1 179 большинство инженеров машинного обучения, работающих в области ИИ перифе­ рийных устройств, в настоящее время используют TensorF\ow. Поскольку исследователи выбирают PyTorch, многие новейшие архитеК'I)'рЫ моделей PyTorch. Это может разочаровать отраслевых раз­ используют TensorFlow. К счастью, большинство исследова­ поначалу появляются в формате работчиков, которые телей, занимающихся созданием маловесных и более эффективных моделей, под­ ходящих для периферийного развертывания, работают в экосистеме TensorFlow. Сильнее всего несовместимость моделей сказывается на задачах визуального обна­ ружения объектов, поскольку обучающий код для моделей обнаружения объектов обычно сложен и тру дно переносится из одной среды в другую. На момент написания TensorFlow - это лучший выбор платформы для разработки ИИ периферийных устройств. Разработчики, использующие PyTorch, при попытке развернуть свои модели столкнутся со сложным и ненадежным процессом преобра­ зования. Интересно посмотреть, как ситуация будет меняться по мере развития эко­ системы PyTorch. Сжатие и оптимизация модели Для периферийных устройств обычно требуются небольшие эффективные модели, особенно в контексте глубокого обучения, где количество параметров и вычисли­ тельные требования могут быстро масштабироваться. В разд. "Сжатие и оптими­ зация" главы 4 мы узнали о различных методах повышения производительности моделей. Некоторые из них применяются во время обучения, а другие позднее. Инструменты сжатия и оптимизации обычно идут в комплекте с фреймворками или предоставляются поставщиками оборудования, если это самое оборудование поддерживает TensorFlow Lite определенные оптимизации. Конвертер стал фактическим стандартом для объединения операторов (https://oreil.ly/PSVHY) и базового квантования, а формат фaWia модели TensorFlow Lite уже почти стал от­ раслевым стандартом 20 . TensorFlow Model Optimization Toolkit (https://oreil.ly/ASl_h) предоставляет набор инструментов с открытым исходным кодом, которые охваты­ вают другие типы оптимизации и сжатия. Стоит помнить, что в большинстве подходов к оптимизации также требуются спе­ циальные инструменты на этапе производства вывода, которые будут рассмотрены позже во врезке "Вывод и оптимизация модели" далее в этой главе. На момент на­ писания лучше всего поддерживается квантование с 8-битным квантованным опе­ ратором. Другие методы поддерживаются хуже, а разреженность - и вовсе пыль в глаза: звучит впечатляюще, но в настоящее время очень мало оборудования, кото­ рое ее поддерживает. Отслеживание экспериментов Разработка алгоритма - это итеративный исследовательский процесс, и в ходе проекта вы, вероятно, будете сотни или тысячи раз пытаться получить нечто хоро- 20 Используются и другие форматы, например ONNX (https://onnx.ai). но формат TensorF\ow Lite. безусловно, является самым популярным.
180 Глава 5 шо работающее. Важно сохранять научный подход, тестируя идеи системно, а не просто внося случайные изменения и надеясь на лучшее. Дrlя этого вам понадобит­ ся какая-то система отслеживания экспериментов. В типичный эксперимент входит взятие определенного набора выборок данных, применение определенного алгоритма DSP, использование функций для обучения модели машинного обучения с уникальным набором гиперпараметров, а затем тес­ тирование модели на стандартном наборе тестовых данных. Переменных тут мно­ го: это и сами выборки, и алгоритм DSP, и модель, и ее параметры. Инструменты отслеживания экспериментов предназначены для ведения журнала того, какие эксперименты проводятся, как настроены их переменные и каковы ре­ зультаты. Они пытаются организовать то, что в противном случае выглядело бы как ненадежный, неформальный процесс ведения записей в блокноте, когда вы ста­ раетесь все записать и ничего не упустить. Инструменты отслеживания экспери­ ментов также могут хранить артефакты, полученные в результате экспериментов: сценарии обучения, наборы данных и обученные модели. Они помогают понять и воспроизвести вашу работу на более позднем этапе. Инструменты отслеживания экспериментов доступны как в виде пакетов с открытым исходным кодом, так и в виде размещенных на хостинге коммерческих продуктов. Одним из самых простых вариантов является TensorBoard (https://oreil.ly/nOaGP), официальная часть экосистемы TensorFlow 21 . TensorBoard имеет простой веб­ интерфейс для визуализации и сравнения журналов, собранных во время обучения моделей, а также предоставляет другие крутые инструменты для оптимизации и отладки обучающего кода. Он полезен для отслеживания базовых экспериментов, хотя он не предназначен для постоянного хранилища данных на всем сроке жизни проекта и не поможет вам, если вы проводите слишком много испытаний. Более сложный вариант с открытым исходным кодом - MLflow (https://mlflow.org). Это сложное веб-приложение, поддерживаемое базой данных, которое может от­ слеживать эксперименты, хранить обученные модели и упаковывать код обработки данных, чтобы эксперименты можно было легко воспроизвести. Этот вариант луч­ ше подходит для долгосрочного использования, чем TensorBoard, и его можно масштабировать для отслеживания многих тысяч экспериментов. В нем нет таких средств оптимизации и отладки, как в TensorBoard, который все еще предпочти­ тельнее для повышения вычислительной производительности обучения. Существует множество коммерческих продуктов, помогающих отслеживать экспери­ менты. Примечательным вариантом является которого простой API Weights & Biases (https://wandb.ai/site), у и хорошо продуманный веб-интерфейс (наряду со многими функциями, соответствующими категории разд. "Операции машинного обучения MLOps, которую мы рассмотрим в (MLOps)" далее в этой главе). Приятным преимуществом коммерческих инструментов является то, что вам не нужно разме­ щать их в собственной инфраструктуре. Достаточно вносить абонентскую плату, а вопросы настройки, обслуживания и безопасности будет решать кто-то другой. 21 TensorBoard работает как с TensorFlow, так и с PyTorch.
1 181 Инструментарий и экспертиза Автоматизированное машинное обучение (AutoML) Начав отслеживать эксперименты с помощью программного обеспечения, вы легко перейдете и к их проведению из программного обеспечения. Инструменты AutoML предназначены для автоматизации процесса итеративного исследования простран­ ства проектирования. При имеющемся наборе данных и некоторых ограничениях они позволяют планировать эксперименты для проверки различных комбинаций переменных, пытаясь найти лучшую модель или алгоритм. Этот процесс называется оптимизацией гиперпара.метров22 и представляет собой очень эффективный способ поиска лучшей модели для заданного набора данных. Существует множество различных алгоритмов, которые управляют оптимизацией гиперпараметров: от простого поиска по сетке (где по очереди проверяется каждая возможная комбинация переменных) до Hyperband (https://oreil.ly/OOeNa), именованных алгоритмов, целью которых является таких как интеллектуальное управление процессом с максимальной эффективностью. AutoML - это не волшебная палочка, которая решит все ваши проблемы. Для того чтобы сформулировать проблему и правильно настроить пространство проектиро­ вания, без знаний в предметной области по-прежнему не обойтись. Зато AutoML может исключить из машинного обучения уrадайку и утомительную работу. Эrот метод дает возможность автоматизировать пробы и ошибки, позволяя вам сосредо­ точиться на более продуктивных задачах. Некоторые системы AutoML просто принимают пространство проектирования в качестве входных данных и выводят список экспериментов, а другие по смыслу приближаются к миру MLOps (см. разд. "Операции машинного обучения (MLOps),, далее в этой главе) путем организации процесса проведения экспериментов с по­ мощью распределенных вычислений. Особенно сложной разновидностью является поиск по нейронной архитектуре AutoML (neural architecture search, NAS), в кото­ ром машинное обучение выступает частью исследования пространства проектиро­ вания. Если говорить конкретнее, мы рекомендуем Ray Tune (https://oreil.ly/8eGs9) - по­ пулярную платформу с открытым исходным кодом для настройки rиперпарамет­ ров, способную организовать задачу оптимизации rиперпараметров в распределен­ ной инфраструктуре. Sweeps Ьу Weights & Biases (https://oreil.ly/-tRCq) - это коммерческий размещаемый в сети продукт, который помогает организовывать эксперименты на вашем оборудовании. Методика AutoML особенно эффективна в ИИ периферийных устройств. Эrо свя­ зано с тем, что модели, предназначенные для периферийных устройств, обычно невелики и быстро обучаются, что позволяет легко опробовать множество раз­ личных вариантов. Это тоже особенно важно, поскольку в области ИИ перифе­ рийных устройств оптимизируется не только точность модели. Задача состоит в том, чтобы найти самые маленькие, самые быстрые и самые энергоемкие модели из возможных. 22 Или настройка rиперпараметров.
182 Глава 5 Типичные инструменты AutoML не учитывают плексные платформы ИИ, которые делают это 23 . Операции машинного обучения эти вещи, но существуют ком­ (MLOps) Рабочий процесс машинного обучения состоит из множества компонентов, а MLOps- это искусство и наука, посвященная тому, как уследить за ними всеми. В эту область входит множество инструментов, которые мы рассмотрели в этой гла­ ве, от систем хранения данных до отслеживания экспериментов и AutoML. Будучи инженером на проекте машинного обучения, вы уже работаете с MLOps, осознаете вы это или нет. Даже в самых простых проектах отслеживание набора данных, сценариев обучения и лучшей на данный момент модели может оказаться непростой задачей. В более сложных проектах, где все компоненты постоянно раз­ виваются в результате обратной связи, без эффективных инструментов контроли­ ровать происходящее может оказаться практически невозможным. Конвейеры машинного обучения Одной из важнейших частей решения MLOps является возможность определять и запускать конвейеры машинного обучения. Конвейер машинного обучения - это скриптовый процесс, который принимает данные, применяет к ним преобразова­ ния (включая обработку сигналов или конструирование признаков), использует их для обучения модели машинного обучения и оценивает результаты. Эrо расшире­ ние конвейера данных, в котором также есть элементы машинного обучения. Первые эксперименты часто проводятся в блокноте или в локальных сценариях, но, когда вы хотите автоматизировать 11роцесс обучения модели, начинается оп­ ределение формального конвейера. Например, конвейеры упрощают проведение повторных экспериментов для проверки различных гиперпараметров, и они удобны в случаях, когда вы постоянно добавляете свежие данные и хотите авто­ матически обучать и сравнивать новые модели. Простейшие конвейеры машинного обучения реализуются с использованием языков сценариев Python или Bash и запускаются на одной машине. Более слож­ ные конвейеры могут быть спроектированы для работы в распределенной инфра­ структуре, а для повышения производительности в них могут быть параллельные этапы. В сложных конвейерах машинного обучения обычно используется кон­ тейнеризация (см. разд. "Контейнеризация" ранее в этой главе): каждый шаг конвейера может находиться в отдельном контейнере, содержащем все необхо­ димые зависимости, и контейнеры вызываются один за другим. Система MLOps может быть построена из отдельных компонентов: вы можете вы­ брать инструмент для управления набором данных, инструмент для отслеживания 23 Представлено в разд. "Комплексные платформы для ИИ периферийных устройств" далее в этой главе.
Инструментарий и экспертиза 1 183 экспериментов и инструмент для хранения лучших моделей. Также часто исполь­ зуются комплексные фреймворки, в которых есть все этапы процесса. Также воз­ можно использовать сочетание комплексных фреймворков и отдельных инстру­ ментов, соответствующих вашим потребностям. MLOps - это большая область, охватывающая множество категорий инструмен­ тов, включая те, которые мы видели ранее в этой главе. На веб-сайте (отличный сайт, чтобы почитать о следующие задачи 24 : MLOps) говорится, что MLOps ml-ops.org включает в себя ♦ инженерия данных; ♦ управление версиями данных, моделей машинного обучения и кода; ♦ конвейеры непрерывной интеграции и непрерывной доставки; ♦ автоматизация развертываний и экспериментов; ♦ оценка производительности модели; ♦ мониторинг моделей в производстве. Поскольку ИИ периферийных устройств MLOps - это новая область, большинство систем разрабатываются с учетом того, что модели будут "обслуживаться" веб­ сервисами, а не развертываться на периферийных устройствах. Из-за уникального характера разработки ИИ периферийных устройств возникает несколько дополни­ тельных задач, в том числе: ♦ сбор данных с устройств и датчиков; ♦ цифровая обработка сигналов и алгоритмы на основе правил; • оценка производительности на устроистве V 25 ; ♦ сжатие и оптимизация модели; ♦ преобразование и компиляция для поддержки периферийных устройств; ♦ отслеживание используемых версий моделей. MLOps можно представить как "стек": набор программных инструментов, совмест­ ная работа которых обеспечивает разработку, развертывание и обслуживание пе­ риферийной системы ИИ. Компания MLOps (https://oreil.ly/МКaon): MLOps сочетаются друг с стека Valohai разработала идею шаблона стека диаграммы, показывающей, как все компоненты другом. Исходный шаблон стека построен в кон­ тексте сервер ной стороны, но на рис. 5.4 показана идея, адаптированная для ма­ шинного обучения периферийных устройств. В ходе разработки ваш стек постепенно собирается из различных программных компонентов. Но можно воспользоваться и комплексной платформой работанной специально для ИИ периферийных устройств, MLOps, раз­ как мы увидим в разд. "Комплексные платформы для ИИ периферийных устройств" дш~ее в этой главе. 24 В разделе State ofMLOps (https://oreil.ly/aGKfQ) 11а сайте ml-ops.org. 2s Включая как качество модели. так и вычислитслh11ую 11роюводительность.
Глава 184 5 Получение данных и разработка алгоритма Получение Эксперименты Анализ данных данных Разработка и мониторинг Обучение и AutoMl Сжатие Конвейер Конвейер ML DSP и оптимизация модели Оценка мониторинг и компиляция на устройстве 5.4. Производственный Преобразование производительности Рис. Управ11ение устройствами loТ Шаблон стека дгrя машинного обучения периферийных устройств. Вам понадобится решение дгrя каждого блока и, возможно, для некоторых других, в зависимости от конкретного варианта использования MLOps - это слишком обширная тема для того, чтобы ее полностью охватить в книге об ИИ периферийных устройств . Если вы хотите копнуть глубже, мы реко­ мендуем следующие ресурсы MLOps - с оговоркой, что большая часть материалов по написана с ориентиром на серверные модели, а не ИИ периферийных уст­ ройств: ♦ сайт ♦ ♦ ml-ops.org; MLOps" (Treveil М. lntroducing MLOps. O'Reily, 2020; https://oreil.ly/Ycq8b); введение в MLOps в Google Cloud (https://oreil.ly/dng28)- отличная техниче­ Марк Тревел и др. "Введение в ская статья. Запуск алгоритмов на устройстве Для разработки алгоритмов и моделей обучения требуется один набор инструмен­ тов, а для их эффективного запуска на устройстве - другой. К числу таких инст­ рументов относятся как библиотеки С++ общего назначения, так и высокоэффек­ тивные реалюации, оптимизированные под конкретные аппаратные архитектуры . Математические и DSР-библиотеки Существуют различные реализации общих математических операций, в которых имеется функциональность как для алгоритмов DSP, так и для операций глубокого обучения. Реализация этих фундаментальных алгоритмов с нуля заняла бы много времени.
Инструментарий и экспертиза 1 185 Некоторые известные примеры: ♦ быстрые преобразования Фурье, широко используемые в лиотеки КISS FFT (https://oreil.ly/ВPyFI) и ♦ библиотеки умножения матриц, такие как DSP, например FFTW (https://www.fftw.org); биб­ gemmlowp (https://oreil.ly/6hCG3) и ruy (https://oreil.ly/WSrv4). У аппаратных устройств часто бывают функции для улучшения производительно­ сти распространенных алгоритмов. Они доступны в библиотеках для конкретного оборудования, например в библиотеке CMSIS DSP (https://oreil.ly/PkVwj), в кото­ DSP для Cortex-A. рой есть оптимизированные реализации многих популярных алгоритмов оборудования Arm Cortex-M и Существуют аналогичные оптимизированные реализации для ядер глубокого обу­ чения, например программная библиотека эквиваленты существуют во включая микроконтроллеры и многих SoC. Их CMSIS NN (https://oreil.ly/dLOXy). современных процессорных архитектурах, При выборе оборудования вам следует изучить наличие оптимизированных ядер, поскольку они могут существенно (в 10-100 раз) снизить задержку во время работы. Вь~вод машинного обучения Один из способов выполнить логический вывод на периферийном устройстве - написать специальную программу, реализующую конкретную модель глубокого обучения в коде, вручную оптимизированном под целевую архитектуру. Но такая реализация потребует много времени и не будет гибкой: вы не сможете повторно использовать свой код в новых приложениях или на другом оборудовании, а если вы внесете какие-либо изменения в модель, вам придется менять всю программу. Разработчики придумали несколько решений этой проблемы 26 . Наиболее распро­ странены следующие подходы. Интерпретаторы. Интерпретатор (или среда выполнения)- это программа, которая читает файл, описывающий модель, включая ее операции и параметры, а затем использует набор заранее написанных операторов для последовательного выполнения опе­ раций модели. Интерпретаторы очень гибки: с их помощью можно использовать несколько идентичных строк кода для запуска любой модели. Компромисс за­ ключается в том, что процесс чтения и интерпретации влечет за собой некото­ рые операционные накладные расходы, превышающие необходимые для работы модели. Интерпретаторы потребляют дополнительные ресурсы ОЗУ, ПЗУ и ЦП. Два самых распространенных интерпретатора принадлежат экосистеме TensorFlow Lite (https://oreil.ly/vc3-p) изначально бьm разработан для мобиль­ ных телефонов, но работает на многих популярных микроконтроллеров 26 TensorFlow. (https://oreil.ly/OHQ9a) SoC, а TensorFlow Lite для хорошо работает на микроконтрол- У Пита Уордсна сеть отличная запись в блоге (https://oreil.ly/UbDtm), в которой описываются технические проблемы в этоi! области.
Глава 186 лерах и 5 DSP. Оба они реализованы на С++, но в есть АРl-интерфейсы Python и Java. TensorF\ow Lite для удобства В них обоих используются объединение операторов и квантование, обеспечиваемые преобразователем TensorF\ow Lite (https://oreil.ly/_ ry R8). Ядра, используемые интерпретаторами, можно переключать в зависимости от целевого устройства, поэтому можно по возможности применять высокоэффек­ тивные оптимизированные ядра. Ядра для нескольких распространенных уст­ ройств и архитектур можно без труда найти. KoмnWIЯmopы генерации кода. Работающий на подходе, основанном на генерации кода, компилятор принимает в качестве входных данных файл модели и преобразует его в программу, кото­ рая эту модель реализует. Для поддержки операторов в программе используется библиотека заранее написанных операторов, которые вызываются в правильном порядке с соответствующими параметрами. В подходе с генерацией кода есть масса преимуществ интерпретатора, но боль­ шая часть накладных расходов, связанных с самим интерпретатором, устраняет­ ся. При генерации кода можно даже использовать широкий набор заранее напи­ санных операторов, созданных для интерпретаторов: например, EON компании Edge lmpu\se (https://oreil.ly/GN5oT) TensorFlow Lite для микроконтроллеров. компилятор совместим с ядрами КомnW1Яторы байт-кода. Компилятор, ориентированный на конкретное устройство, может напрямую сге­ нерировать байт-код, реализующий модель, попутно применяя оптимизацию под это устройство. В результате получается высокоэффективная реализация, в которой используются все функции повышения производительности, имеющие­ ся на кристалле. Например, компилятор нейронных сетей TENSAI Flow компа­ Synaptics (https://oreil.ly/1 bP6V) предназначен для компиляции моделей для развертывания в процессорах ИИ Synaptics Katana Edge. нии Виртуальные машины. Большим недостатком подхода с использованием компилятора байт-кода явля­ ется то, что для каждого целевого устройства необходимо писать новый компи­ лятор, а это сложная задача. Для того чтобы обойти эту проблему, в некоторых компиляторах используется так называемая виртуальная машина: слой абстрак­ ции, который находится непосредственно над аппаратным обеспечением и пре­ доставляет инструкции, соответствующие различным возможностям процессора низкого уровня. Слой абстракции немного снижает эффективность, но его преимущества могут перевесить недостатки, хотя виртуальную машину все равно придется портиро­ вать на новые процессоры. (https://tvm.apache.org), Этот подход применяется в Apache TVM где также используется среда выполнения на устройст­ ве, которая позволяет итеративно тестировать различные реализации в поисках наиболее эффективной.
Инструментарий и экспертиза 1 187 Язык описания аппаратного обеспечения. Недавно появилась мода на использование специальных компиляторов для соз­ дания языка описания аппаратного обеспечения HDL)- кода, (hardware description language, описывающего архитектуру процессора и используемого для про­ граммирования FPGA и ASIC. С помощью этих методов можно реализовать мо­ дель непосредственно в аппаратном обеспечении, и этот подход может оказаться чрезвычайно эффективным. CFU Playground (https://oreil.ly/SzHbP) инструменты с открытым исходным и Tensil (https://www.tensil.ai) - кодом, предназначенные для это упрощения разработки пользовательских ускорителей с использованием этого подхода. Альтернативные методы. Некоторые чипы-ускорители программируются с помощью систем, выходящих за рамки обычного процесса написания и компиляции кода. Например, у неко­ торых чипов с аппаратной реализацией ядер нейронных сетей есть интерфейс, через который веса модели записываются непосредственно в специальный бу­ фер памяти, отделенный от кода приложения. Вь~вод и оптимизация модели Оптимизация ядер для высокой производительности на конкретных устройствах отличается от оптимизации модели методом сжатия или другими методами. Для оптимизации модели, как правило, требуется поддержка ядра, а иногда и аппа­ ратного обеспечения. Например, для запуска квантовой модели должны быть доступны ядра, совмес­ тимые с заданным уровнем квантования. Модели, квантованной до 8-битной це­ лочисленной точности, нужно ядро, поддерживающее ее, и то же самое справед­ ливо для других уровней квантования. Фактически, для каждого типа данных требуются определенные ядра, будь то int8, uint8, int16 и т. д. То же самое относится и к другим методам оптимизации. Например, усечение производит модели с большой степенью разреженности: в них много нулей. Са­ мо по себе во время выполнения это не имеет никакого значения - модель должна запускаться с использованием специальных ядер или оборудования, под­ держивающего разреженность для сокращения времени вычислений. Эти ядра и оборудование еще не стали доступны широкой публике, поэтому в полевых ус­ ловиях усечение не слишком полезно. Обучение на устройстве Как мы узнали из разд. "Обучение на устройстве" главы 4, требования к данным и вычислениям для обучения глубокому обучению означают, что обучение на уст­ ройстве имеет ограниченную полезность. В большинстве случаев "обучение на уст­ ройстве" подразумевает простой подход, где выполняется вычисление расстояния
188 Глава 5 между векторами встраивания, например при определении совпадения вложений двух отпечатков пальцев. Реальное глубокое обучение на периферийном устройстве выполняется очень ред­ ко. Если у вас есть устройство с необходимым объемом памяти и вычислительной мощности (обычно это SoC или мобильный телефон), то можно использовать биб­ лиотеку TensorFlow Lite (https://oreil.ly/WDBo7), обеспечивающую ту же функ­ циональность. Остается проблема в том, что невероятно сложно понять, хорошо ли работает обу­ ченная на устройстве модель. Глубокого обучения на устройстве лучше избегать, если у вас нет для его использования веских причин 27 . Федеративное обучение все еще вызывает интерес у многих людей, но, как мы уз­ нали ранее в книге, для решения подавляющего большинства задач оно не особен­ но хорошо подходит. Кроме того, инструменты федеративного обучения все еще примитивны и экспериментальны 28 . Кроличья нора федеративного обучения завле­ кает многих путников, но в конечном итоге они просто теряют время: вероятность того, что проекту это действительно понадобится, очень мала. Однако, если вам дей­ ствительно хочется копнуть глубже, TensorFlow Federated (https://oreil.ly/6dx0r) - хороший ресурс. Разработка встроенного программного обеспечения и электроника ИИ периферийных устройств - это отрасль разработки встроенного программного обеспечения, тесно связанная с практическими дисциплинами из электротехники и электроники. В каждой из этих областей существует множество инструментов и техник, и в этой книге не хватит места, чтобы рассмотреть их все. Вместо этого мы обсудим вещи, особенно важные для разработки ИИ периферий­ ных устройств. С чистого листа Если вы создаете прототип собственного проекта ИИ, но у вас недостаточно опыта работы со встраиваемыми системами, начать можно с продуктов Arduino (https://www.arduino.cc) и Arduino Pro (https://www.arduino.cc/pro). Arduino создала встроенную среду разработки, которая достаточно проста для новичков, но при этом достаточно мощна для создания реальных при­ ложений - идеально, если вы инженер ML, только осваивающий работу с периферийными устройствами, или новичок в обеих областях. Команда Arduino с самого начала понимала потенциал движения ИИ периферийных устройств и внесла большой вклад в его развитие. 27 Пост в блоге Пита Уордена "Почему на периферийных устройствах не проводится больше трениро­ (Warden Р. Why isn't there more training on the edge? (https://oreil.ly/vo7-R)) отлично освещает вок?" эту тему. 28 Хотя со временем ситуация исправится.
Инструментарий и экспертиза 1 189 Аппаратные инструменты встраиваемых систем Разработка встроенного программного обеспечения - это сложная задача, и ее сложность происходит из природы встроенных устройств. Программное обеспече­ ние труднее отлаживать, когда оно работает на отдельном устройстве, особенно на устройстве, внутреннее состояние которого трудно определить. Встроенные про­ граммы выполняют все задачи: от базовой интеграции оборудования (обычно при­ ходится писать собственные драйверы для оборудования, такого как датчики) до сложных согласований низкоуровневых протоколов связи. Таким образом, для разработки встраиваемых систем нужны кое-какие инструмен­ ты, которые другим разработчикам программного обеспечения покажутся необыч­ ными. Несколько примеров: ♦ программаторы устройств - аппаратные средства, позволяющие разработчику загружать новые программы во встроенное устройство. Они часто бывают инди­ видуальны для устройства; ♦ отладчики аппаратные устройства, которые подключаются к встроенным - процессорам и позволяют анализировать программу во время выполнения. Они тоже индивидуальны для устройства; ♦ адаптеры USB-UART, которые отправляют и получают произвольные данные между рабочей станцией разработчика и встроенным устройством. Они универ­ сальны; ♦ мультиметры, которые измеряют напряжение, ток и сопротивление. Они могут использоваться для определения состояния встроенной схемы, когда она управ­ ляется программой; ♦ осциллографы, которые измеряют сигналы на устройстве или печатной плате, выраженные как изменение напряжения с течением времени. Эти инструменты необходимы для того, чтобы получать доступ к состояниям встроенных устройств, управлять ими и понимать их. Например, чтобы проверить правильность работы программы, вы можете заставить ее переключать конкретный вывод процессора, когда выполнение достигает определенной точки. Затем с по­ мощью мультиметра вы можете определить, был ли переключен контакт. Еще один распространенный способ связи со встроенным устройством тельный кабель (UART), - через последова­ который может отправлять и получать данные на частоте относительно низкой, но при этом достаточно высокой для передачи данных с дат­ чиков в разумные сроки. Макетные платы Встраиваемый процессор - это всего лишь кусочек песка, завернутый в пластик. Для того чтобы что-то с ним сделать, к нему необходимо подключить кучу других электронных компонентов. Как мы видели во врезке "Платы и устройства" гла­ вы 3, макетные платы (или платы разработчика) представляют собой удобные гото­ вые платформы, в которых есть и процессор, и различные входы и выходы, а также некоторые датчики.
190 Глава 5 Макетные платы предназначены для того, чтобы программист мог оценить пригод­ ность конкретного чипа для проекта и продолжить разработку программного обес­ печения, будучи уверенным в пригодности оборудования. Как только рабочая вер­ сия собственного оборудования будет готова, можно будет перейти к разработке. Исключением являются платформы быстрого прототипирования, такие как (https://www.arduino.cc/pro), Arduino Pro предназначенные для мелкосерийного производства. Макетные платы существуют у большинства семейств встраиваемых процессоров. При выборе обору давания рекомендуется приобрести несколько разных макетных плат для экспериментов. Например, вы можете попытаться запустить раннюю вер­ сию вашей модели глубокого обучения на нескольких разных платах, чтобы срав­ нить их производительность. Некоторые комплексные платформы (см. разд. "Комплексные платформы для ИИ периферийных устройств" далее в этой главе) обеспечивают глубокую интегра­ цию с макетными палатами, что позволяет вам собирать данные с их датчиков или развертывать и оценивать модели без единой строки кода. Это может быть чрезвы­ чайно полезно при разработке и тестировании. Встроенные программнь1е инструменты В сфере ИИ периферийных устройств разработка встроенного ПО обычно означает программирование на С++. Код можно писать в любом текстовом редакторе, но поставщики встраиваемых процессоров также часто предоставляют собственные интегрированные среды разработки (integrated development environment, IDE), со­ вместимые с их оборудованием и упрощающие загрузку и отладку кода. Поставщики часто предоставляют SDK, драйверы и библиотеки, которые можно использовать на их оборудовании, помогая вам пользоваться разными функциями процессора, но их качество не всегда на высоте, и часто они годятся больше для проверки концепции, а не в роли кода производственного качества. Для того чтобы уменьшить объем шаблонного кода, который вам предстоит напи­ сать, вы можете использовать операционную систему реального времени operating system, RTOS). RTOS (real-time содержит функциональность простой операционной системы, но представляет собой набор библиотечного кода, который компилирует­ ся вместе с вашей собственной программой. Затем вы можете вызывать АРI­ интерфейсы RTOS, чтобы управлять периферийными устройствами или сетевыми коммуникациями. В разработке встраиваемых систем часто используются сложные цепочки инстру­ ментов: программы и сценарии, поставляемые поставщиком оборудования и ис­ пользуемые для извлечения кода из текстового файла, превращения его в програм­ му и "заливки" на аппаратное устройство. В целом рабочий процесс выглядит так: 1. Внесение изменений в исходный код. 2. Запуск компилятора (предоставленного поставщиком процессора) и компонов­ щика, который превратит код в двоичный файл.
Инструментарий и экспертиза 1 191 3. Запуск сценария, чтобы записать код на встроенное устройство. 4. Использование последовательного соединения для связи с устройством и проверки кода. Когда ваш код выполняется на устройстве, часто бывает возможно использовать аппаратный инструмент, называемый отладчиком, чтобы проверить его на вашей машине разработки. Это позволяет выполнять отладку так, как если бы вы выпол­ няли код локально, т. е. с установкой точки останова, отслеживанием переменных и пошаговым выполнением кода. Некоторые части вашего кода будут написаны на чистом С++, и вы сможете без проблем запустить такой код на своей машине разработки, возможно, в форме мо­ дульных тестов. Но также у вас будет много кода, который интегрируется с кон­ кретными аппаратными API вашего процессора. Запустить его на машине разра­ ботки невозможно, поэтому вы можете либо глубоко вздохнуть и протестировать его чисто на устройстве, либо попытаться использовать эмулятор. Эмуляторь1 и симуляторы Эмулятор - это часть программного обеспечения, предназначенная для моделиро­ вания процессора, работающего на вашей машине разработки, чтобы вы могли вы­ полнить код встроенного ПО без его загрузки на устройство. Эмулятор никогда не будет идеально соответствовать реальному обору даванию. Например, он не обяза­ тельно будет работать с той же скоростью, что и программа на реальном обору до­ вании. Но все равно он может быть достаточно близок к реальному устройству, чтобы стать полезным инструментом. Если вам нужно определить, насколько быстро будет работать программа, напри­ мер, чтобы оценить задержку алгоритма ИИ, эмулятор позволит вам с точностью до цикла определить точное количество тактов, которые выполнятся на реальном оборудовании. Вы можете разделить это число на тактовую частоту, чтобы полу­ чить точную оценку задержки. На самом деле эмулятор работает на реальной ско­ рости, но предоставит вам информацию, необходимую для расчета. Симуляция - это использование программного обеспечения для моделирования всего устройства, включая эмулируемый процессор, а также всех других устройств, к которым оно может быть подключено, включая датчики и коммуникационное оборудование. Некоторые симуляторы могут даже представлять собой многопро­ цессорные платы или целые сети взаимосвязанных устройств. Эмуляторы бывают не у всех процессоров, но зато есть Renode (https://renode.io)- мoщнaя среда эмуляции и моделирования для многих распространенных архитек­ тур процессоров. Также существует Hardware (https://oreil.ly/iXED4), в облаке. виртуальное оборудование Arm Virtual Arm которое позволяет эмулировать процессоры
Глава 192 Встроенный 5 Linux Большинство специализированных встроенных инструментов, о которых мы упо­ минали до сих пор, предназначено для работы с микроконтроллерами и другими физическими устройствами. и периферийные серверы SoC - это совсем другая история: при достаточной вычислительной мощности и памяти для размещения полноценной операционной системы разработка на SoC гораздо больше похожа на разработку для ПК и веб-серверов. Это одно из главных преимуществ такого под­ хода: разработчикам в этом случае требуется не так уж много специализированных навыков. Типичная SoC работает под управлением дистрибутива Linux со всеми вытекаю­ щими отсюда полезными инструментами и библиотеками. Программировать можно практически на любом языке, но с теми же компромиссами, что и на любой другой платформе: языки низкого уровня, такие как С++, быстры и эффективны, тогда как языки высокого уровня, такие как Google Python, гибки и просты в использовании. предоставляет среду выполнения TensorFlow Lite (https://oreil.lyNAk82), предварительно собранную для некоторых популярных платформ, и с ее помощью вы сможете напрямую использовать в вашем приложении библиотеки пример, библиотеку SciPy и Python, на­ ее функции обработки сигналов. Для развертывания на встраиваемых устройствах на Linux может даже использо­ ваться контейнеризация: приложения могут быть упакованы в контейнеры Linux, что упрощает их установку и использование. Что касается SoC, то в производственных системах довольно часто применяются готовые платы. Существует множество поставщиков, которые разрабатывают и продают платформы на базе SoC, предназначенные для конкретных приложений. Например, вы можете купить устройства в готовом корпусе, предназначенном для промышленного применения. Для развертывания достаточно просто подключить необходимые датчики и установить приложение. Одна из проблем при работе с среду Linux, SoC заключается в том, что, несмотря на знакомую готовые пакеты есть не всегда. Возможно, для запуска приложений вам придется привыкнуть к созданию библиотек из исходного кода, а это иногда может оказаться немного утомительным. При работе с устройствами с полноценными операционными системами важно ду­ мать о безопасности. Встроенный Linux, работающий на SoC, требует такой же жест­ кой блокировки, как и любой другой компьютер в вашей сети, чтобы он не стал вектором атаки. Небезопасные устройства IoT печально известны тем, что хакеры взламывали их, а затем использовали для атак на другие системы. Автоматизированное тестирование оборудования Современные передовые методы разработки программного обеспечения поощряют использование тестов непрерывной интеграции: каждое изменение кода проверяет­ ся с помощью набора автоматических тестов. Создание автоматических тестов для встроенных приложений может оказаться затруднительным, поскольку код, взаи-
Инструментарий и экспертиза 1 193 модействующий с оборудованием, невозможно протестировать на машине разра­ ботки; его можно протестировать только на самом целевом устройстве. Но встроенное устройство легко может перейти в состояние, когда оно будет не способно выполнять тесты. Например, в случае сбоя программы перезагрузить уст­ ройство без физического взаимодействия с ним может быть невозможно. Загрузка новой прошивки тоже может потребовать физического вмешательства. Для того чтобы обойти эту проблему, разработчики создают автоматизированные системы тестирования оборудования, которые могут взаимодействовать со встро­ енными устройствами, упрощая тестирование. Эти системы представляют собой комбинацию программного и аппаратного обеспечения, которые могут выполнять такие действия, как прошивку нового кода, выключение и включение устройств между тестами и даже предоставление входных данных для портов ввода-вывода или датчиков. Автоматизированные системы тестирования оборудования обычно создаются по индивидуальному заказу. Они работают на хост-системе (возможно, на самом встроенном устройстве), подключенной к любым инструментам непрерывной инте­ грации, которые использует команда, а также к устройствам, предназначенным для запуска кода. Если необходимо протестировать интеграцию с датчиком (например, с микрофо­ ном, опознающим ключевое слово), у хост-системы даже может быть динамик, ко­ торый может выдавать ключевые слова по запросу. Комплексные платформы для ИИ периферийных устройств В идеальном мире любая команда, обладающая опытом в предмепюй области, сможет использовать свои знания в реализации ИИ периферийных устройств. Люди с глубоким пониманием различных областей, таких как здравоохранение, сельское хозяйство, производство и потребительские технологии, должны иметь возможность использовать свои знания для создания удивительных продуктов на базе ИИ. К сожалению, учитывая количество компонентов и требующих изучения вещей, процесс разработки ИИ периферийных устройств может показаться очень слож­ ным. Огромная часть рабочего процесса сосредоточена не на знаниях предметной области, а на загадочных и разносортных инженерных навыках, необходимых для создания сложного продукта, включая машинное обучение, цифровую обработку сигналов и разработку низкоуровневого программного обеспечения для встраивае­ мого оборудования. Вначале была лишь горстка технарей, по счастливой случайности обладавших все­ ми необходимыми навыками и способных работать с передовыми технологиями ИИ. Однако за последние несколько лет появилась динамичная экосистема инстру­ ментов, призванная снизить порог вхождения и дать возможность людям, не имеющим опыта в машинном обучении или встраиваемых системах, создавать но­ вые фантастические продукты.
Глава 194 5 Комплексные платформы ИИ периферийных устройств призваны помочь разработ­ чикам на протяжении всего процесса разработки приложения: сбор, управление и исследование наборов данных; выполнение конструирования признаков и цифро­ вой обработки сигналов, обучение моделей машинного обучения, алгоритмы опти­ мизации встроенного оборудования, генерация эффективного низкоуровневого ко­ да, развертывание во встраиваемых системах и оценка производительности систем на основе реальных данных. Все это обобщено на рис. Хранение нужных выборок ., ,, - - .... , ~ 1 g , ',__в_ва_ш_ем_об_л_ак_е_ \ 5.5 . Обновление ' .... _,,, ., \ I .fj, \ Вебхук Построение набора данных 5.5. Основным ,,,.-- ..... , ' Получение новых выборок Рис. I ~__,;пр_о_ши_в_ки_ _,1 I \ ,, Разработка моделей Проверка и алгоритмов модели производительности , \ J ,,, ,, I Получение новой прошивки Развертывание на любом периферийном устройстве преимуществом использования комплексной платформы является то, что в ней есть все компоненты, необходимые для создания итеративного цикла обратной связи, управляемого данными. Но наиболее гибкие платформы содержат возможности для интеграции с внешними инструментами (предоставлено Edge lmpulse Inc., с изм . ) Комплексные платформы предназначены для применения принципов MLOps к конкретному процессу создания алгоритмов, которые будут работать на встроен­ ных устройствах . Будучи высоко интегрированными инструментами, они способны облегчить процесс разработки, т. к. при их использовании тратится гораздо меньше времени на совместную работу различных частей цепочки инструментов, а целост­ ное представление всего процесса позволяет дать полезные рекомендации. Это зна­ чительно снижает риски. Например, комплексная платформа может анализировать набор данных, чтобы по­ мочь пользователю выбрать наиболее подходящий для него тип модели машинного обучения , или может предоставлять метрики производительности на устройстве, которые могут помочь разработчику выбрать алгоритм или встроенный процессор . Платформа может выполнять AutoML с целью найти наилучшую возможную ком­ бинацию обработки сигналов и модели, которая будет соответствовать конкретно-
Инструментарий и экспертиза 1 195 му устройству, в пределах максимально заданной задержки или в рамках ограни­ ченного бюджета мощности 29 • Обычно вам доступен широкий спектр готовых к развертыванию алгоритмов или архитектур, предварительно оптимизированных для различных процессоров. Платформы также могут помочь в межкомандной работе. Например, облачная пе­ риферийная платформа ИИ может выступать в качестве центрального хранилища наборов данных и артефактов рабочих процессов команды. API и настраиваемые конвейеры машинного обучения позволяют командам автоматизировать рутинные задачи: так, например, при получении новых данных можно обучать, тестировать и разворачивать новую версию модели. А визуализация и простые пользовательские интерфейсы позволяют внести свой вклад в общее дело любому члену команды, а не только тем, кто обладает знаниями в области обработки данных или навыками работы со встраиваемыми системами. Облачные платформы также позволяют разработчикам пользоваться распределен­ ными вычислениями без необходимости администрирования собственных систем. Например, обработка данных и обучение модели могут происходить на мощных облачных серверах, которыми управляет платформа, а не пользователь. Это упро­ щает процесс запуска AutoML, поскольку 5.6. эксперименты можно проводить парал­ лельно, как показано на рис. В лучших комплексных платформах особое внимание уделяется повышению жест­ кости всех циклов обратной связи в рабочем процессе ИИ периферийных уст­ ройств. Они позволяют быстро выполнять итерации, переходя от разработки к тес­ тированию и обратно с минимальными затратами. Это значительно упрощает создание успешного продукта, поскольку любые проблемы можно немедленно об­ наружить и исправить. Раньше первый запуск алгоритма на устройстве с использованием реальных дан­ ных датчиков выполнялся сложно. Некоторые комплексные платформы предостав­ ляют готовые прошивки для популярных плат разработки, позволяющие собирать данные с датчиков, а также развертывать и тестировать модели без написания кода. Это позволяет замкнуть цикл между разработкой модели и реальным тестированием. Еще одним большим преимуществом комплексных платформ является возмож­ ность удобного тестирования различного оборудования в поисках наиболее подхо­ дящего. Одну и ту же модель потенциально можно оптимизировать и развернуть на множестве микроконтроллеров, SoC и ускорителей машинного обучения за пару кликов, что позволит команде разработчиков сравнить производительность и сде­ лать правильный выбор для своего приложения. Тот же процесс, выполняемый вручную, может занять несколько недель. 29 СтатЫI Канава Ананда и др. "Черная магия в глубоком обучении: как человеческие навыки влияют на сетевое обучение" (Лnand К. Training // arXiv. ltJIИЯTh на et ol. Black Magic in Deep l,earning: How Human Skill Impacts Network 2020 (https://orell.ly/-TIS9)) показывает, что имеющийся опыт может сильно производите;1ыюсть 11ри настройке свидетсньствует о ценности и11струмс11тоn AutoML. моделей машинного обучения вручную. что
Глава 196 5 11 mfe-conv1d-1cЗ [~ 11 mfнonv2d-9c2 P(RFORMANCE ф P(RFORMANC( ( s,1,c1 J ф ■ mfcc-<onv2d-fJe PERFORМANCf (J) ■ Keyword spottlng 8 Cortex•М4f 80MHz 0 100,m 18 128k8 [;1i] 1024kB r 1 ,.,,,,, • 1211r8 {)!;Р ■ NN ! ,,. 1QlH8 .. i 1 10l4k8 10241r8 Unuиd 8DSP ■ /l;N Т Fllters ~fd StatU5 ACCURA('t' ACCURACY ACCURAC'f' а Pendin& .., 11 а Runn1ng а Completed 11 а Falled DSP type " tNPIJf ф " INl'UГ (!) - 10•)0 -~s ➔ 1000 ms INPOl - 1000'1'1S .,, .. "" .. а MFCC D 22 MFE №:twork type D 1D convolutlonal }5 rJ 2D convolutюnal ф -+ 1000rr,$ lf Vlew MFE ф - o.os "" ➔ o.os := 4() ф - oos MFCr (i) ➔ D.:J5 =Е 40 - oos -+ 00S S -10 Data set Рис. 5.6. Анализ AutoML, проведенный с использованием EON Tuner Edge lmpulse (https://oreil.ly/QPI pZ). За счет комплексной платформы оптимизация обработки сигналов и алгоритмов машинного обучения может происходить в одном месте. Сюда же входят оценки задержки на устройстве и использования памяти Экосистема ИИ построена на основе инструментов с открытым исходным кодом, а хорошие комплексные платформы позволят вам использовать их по своему усмот­ рению. Эти инструменты будут интегрироваться со стандартными отраслевыми технологиями на протяжении всего рабочего процесса и не привязываются к по­ ставщику, чтобы удержать клиента. У вас должна быть возможность легко экспор­ тировать данные, модели и обучающий код, а также создать смешанный стек MLOps, состоящий из компонентов нескольких решений. Комплексная или собственная платформа? Вам может быть интересно, что лучше: использовать комплексную платформу или собрать собственный набор инструментов из разных источников? На момент написания книги было совершенно ясно, что подавляющему большинству проек­ тов необходимы производительность, структура и интеграция рабочих процес­ сов, присущие комплексной платформе.
Инструментарий и экспертиза 1 197 Даже если вы сильны в области науки о данных, обработки сигналов или встро­ енного проектирования, процесс создания собственного набора инструментов с нуля может быть чрезвычайно трудным. В зависимости от вашей цели может оказаться, что не получается даже установить необходимые инструменты на од­ ной машине, не прибегая к контейнеризации для изоляции зависимостей. Помимо затрат на запуск, отдельные инструменты сами по себе не обеспечат не­ медленную обратную связь и плавный итеративный рабочий процесс, необходи­ мый для создания успешного проекта. Вам придется создать собственную систе­ му автоматизации между инструментами, что приведет к появлению бесчисленных сценариев и дополнительных зависимостей, которые необходимо будет отслеживать, поддерживать и масштабировать, чтобы они могли работать на пользу команды. Кроме того, комплексные платформы предоставляют рекомендации по устране­ нию "слепых зон". Почти никто не обладает всеми необходимыми навыками для самостоятельного создания приложения с ИИ периферийных устройств. Напри­ мер, человек с глубокими знаниями в предметной области вряд ли будет иметь четкое представление о том, какая архитектура модели глубокого обучения наи­ более эффективна для конкретной модели встроенного процессора. У команд, разрабатывающих комплексные платформы Д11Я ИИ периферийных устройств, ушли годы на их создание и улучшение, поэтому, хотя достаточно крупная компания и сможет создать собственную внутреннюю платформу, это потребует многомиллионных инвестиций времени и ресурсов. Очень маловеро­ ятно, что в итоге это будет иметь смысл с финансовой точки зрения, поэтому не­ которые из крупнейших компаний мира (от правительственных организаций, та­ ких как NASA, до промышленных гигантов, таких как Bosch) пользуются комплексными платформами. Самая большая проблема связана с гибкостью и открытостью. Что произойдет, если компания решит использовать комплексную платформу и ей потребуются методики (например, определенные алгоритмы), которых на этой платформе нет? К счастью, лучшие платформы уже учитывают это и предоставляют простые точки интеграции Д11Я обеспечения совместимости. К платформе легко подклю­ чить новые алгоритмы, хранилища данных, целевые устройства и методы оценки, а АРI-интерфейсы позволяют комплексным платформам переплетаться с други­ ми инструментами, включая существующие внутренние системы и альтерна­ тивные инструменты ИИ с открытым исходным кодом. Еще одна проблема - стоимость. Комплексные платформы обычно поддержи­ ваются за счет корпоративной абонентской платы, в которую входят техническая поддержка и вычислительное время, при этом у многих продуктов при опреде­ ленных условиях есть бесплатный тариф. У платформы Edge lmpulse большое активное сообщество бесплатных пользователей, которые помогают друг другу, например, делятся примерами проектов Д11Я вдохновения или в качестве техниче­ ской справки.
198 Глава 5 Если ваш бюджет скромен, для создания успешного проекта можно воспользо­ ваться и бесплатным тарифом. Если бюджет позволяет, то платформы, как пра­ вило, вполне доступны, особенно по сравнению с временнь1ми затратами на на­ стройку собственной среды и управление ею. За стоимость подписки обычно вы получаете мощный функционал, необходимый при работе с большими наборами корпоративных данных и большими командами. Учитывая абсурдную сложность цепочки инструментов ИИ периферийных уст­ ройств, мы с легкостью можем утверждать, что комплексные периферийные платформы ИИ - это лучший выбор для подавляющего большинства проектов. В редких случаях, когда вам требуется функция, которая платформой не поддер­ живается, в высококачественных платформах предусмотрена простая интеграция с внешними инструментами, поэтому вы можете взять платформу в качестве ос­ новы и расширять ее по мере необходимости. На этом этапе стоит отметить тот факт, что авторы этой книги, Дэниел и Дженни, входят в команду, которая спроектировала и разработала Edge Impulse чрезвычайно популярную комплексную программу для разработки ИИ периферийных устройств. Всегда важно относиться к рекомендаци­ (https://edgeimpulse.com), ям с долей скептицизма, если у людей, дающих эти рекомендации, есть личный ин­ терес! Естественно, мы рекомендуем комплексную платформу, ведь мы ее делаем! Надеюсь, история этой книги вселит в вас некоторую уверенность. Один из авто­ ров, Дэн, был соавтором "TinyМL" - книги, которая помогла читателям познако­ миться с областью машинного обучения встраиваемых систем. ТinyML представля­ ет процесс создания передового программного обеспечения для ИИ с использованием инструментов с открытым исходным кодом. Это руководство за­ нимает около 500 страниц, но даже оно охватывает только самые основы и рассчи­ тано на то, что читатели изучают как уровневыми инструментами Написание "TinyML" - Python, так и С++. Работа напрямую с низко­ непродуктивный путь. вдохновило обоих авторов попытаться облегчить жизнь раз­ работчикам. Дэн присоединился к Edge Impulse в качестве инженера-основателя, вдохновленный демонстрацией, в которой генеральный директор компании создал и развернул модель глубокого обучения для классификации действий в реальном времени менее чем за десять минут. Другой соавтор "ТinyML", Пит Уорден, рабо­ тает над упрощением развертывания машинного обучения за счет максимально тесной интеграции датчиков и машинного обучения. Датчики машинного обучения Создание эффективного продукта на базе ИИ требует много специальных знаний и весьма трудозатратно. Еще одна концепция, которая может облегчить вам задачу,­ это идея датчиков машинного обучения, предложенная в работе 2022 года30 за ав­ торством команды под руководством Пита У ордена. 30 Уорден П. и др. "Датчики машинного обучения" (Warden Р. Machine Leaniing Sensors // arXiv. - 2022 (https://oreil.ly/xOtDp)).
Инструментарий и экспертиза 1 199 Датчики машинного обучения спроектированы таким образом, чтобы работать с ними было так же просто, как и с обычными датчиками, но при этом с капелькой интеллекта. Например, датчик "детектор человека" может быть представлен в виде одного чипа, на котором есть датчик изображения, процессор и модель глубокого обу­ чения, которая может идентифицировать людей на изображениях. В качестве ин­ терфейса у датчика ключается на ML может иметься один цифровой контакт, который пере­ высокий уровень, когда человек обнаружен, или на низкий уровень, когда рядом никого нет. Интеграция с датчиком ML была бы намного проще, чем обучение и включение модели машинного обучения (вместе со всеми необходимыми зависимостями) во встроенное приложение, что упрощает добавление устройствам интеллекта. Компромиссом является снижение гибкости, хотя при необходимости модели можно настроить посредством интеграции с комплексными платформами. На момент написания (https://usefulsensors.com) книги продает компания Person Sensor Пита UseFul Sensors (датчик человека), небольшое устройство с низким энергопотреблением, которое может обнаруживать и опре­ делять лица людей. Более общую информацию вы можете найти сайте ML Sensors (https://mlsensors.org). Резюме 1 Мы познакомились с людьми, навыками и инструментами, необходимыми для ус- пешного проекта в области ИИ периферийных устройств. Со следующей главы мы начнем путешествие по итеративному рабочему процессу разработки, которым ре­ альные команды пользуются для создания приложений.

ГЛАВА 6 Анализ и формулировка задач В следующих пяти главах представлена дорожная карта для работы с ИИ перифе­ рийных устройств. Мы разработаем передовые методы для: ♦ обзора поставленных перед вами задач через призму ИИ периферийных уст­ ройств; ♦ создания наборов данных, позволяющих обучать модели и оценивать алгоритмы; ♦ разработки приложений, использующих передовые технологии ИИ периферий­ ных устройств; ♦ разработки эффективных приложений с помощью итеративного процесса; ♦ тестирования приложений для ИИ периферийных устройств, их развертывания и мониторинга в полевых условиях В частности, в этой главе мы начнем изучение с обзора общего рабочего процесса для проектов с ИИ периферийных устройств. Эта работа даст вам представление о том, как все будет сочетаться друг с другом. После этого мы узнаем, как оценивать проекты, чтобы убедиться, что они хорошо подходят для ИИ периферийных уст­ ройств. Затем пройдем через процесс определения того, какие типы алгоритмов и аппаратного обеспечения подходят для решения конкретной задачи, и задумаемся о планировании реализации нашего проекта. Рабочий процесс ИИ периферийных устройств Как и любой сложный инженерный проект, типичный проект в сфере ИИ перифе­ рийных устройств включает в себя несколько направлений работы, и некоторые из них выполняются параллельно. На рис. 6.1 рабочие процессы показаны в контексте. Этот процесс можно условно разделить на две части, обозначенные на диаграмме как "Изучение" и "Тестирование и итерации". Первая часть (изучение) включает в себя глубокое понимание поставленной задачи, а также оценку количества имею­ щихся ресурсов и пространства возможных решений. Здесь вы заранее определяете, чего бы вы хотели (и какого прогресса можно реально достичь).
Глава 202 6 Тестирование и итерации Изучение 1 ------т---- Приложение Исследование ______ _ ------·,._ ___ ----- ) 1 Набор данных 1 ======r-====' Начальная загрузка Алгоритмы 1 ------1..----- Постановка целей ------т----- Аппаратное обеспечение 1 1 ------. -----. Цикл обратной связи : Развертывание : Поддержка , Рис. 6.1. Рабочий процесс ИИ периферийных устройств, разделенный на этапы "Изучение" и "Тестирование и итерации" Вторая часть (тестирование и итерации) - это непрерывный процесс доработки. Он ведет вас от первоначального прототипа до готового к производству приложе­ ния. Эта часть охватывает время до и после разработки, поскольку при машинном обучении ваше приложение никогда не бывает по-настоящему законченным - оно нуждается в мониторинге, поддержке и итерациях после развертывания в полевых условиях. Постоянное совершенствование происходит параллельно во всех частях вашего проекта - приложении, наборе данных, алгоритмах и аппаратном обеспе­ чении. Важнейшей частью этого процесса будет цикл обратной связи (рис. 6.2), обеспечи­ вающий непрерывное совершенствование проекта. Чем больше будет получено данных обратной связи по различным аспектам вашего проекта, тем успешнее ока­ жется итоговый продукт . Например, результаты работы вашей модели на различ­ ных типах данных можно использовать в процессе сбора данных, что поможет вам создать разнообразный и репрезентативный набор данных, охватывающий все про­ странство потенциальных исходных данных. Сбор новых данных, Выбор алгоритма влияет Доступные типы данных основанных на проектирование определяют дизайн на производительности аппаратного - - - - приложения - - - - . . . - - - - - обеспечения - - - Набор д Аппаратное Приложение - - - - - . i данных - - - - . i лrоритмы - - - - - . i обеспечение Алгоритм выбирается в зависимости от потребностей Приложение настраивается, чтобы компенсировать выбор оборудования Доступность датчиков определяет объем собранных данных приложения Рис. 6.2. Несколько примеров возможной обратной связи между приложением, набором данных, алгоритмами и аппаратным обеспечением . Эти четыре части будут меняться и развиваться по мере реализации проекта , и любое изменение в одном аспекте должно быть отражено в другом
Анализ и формулировка задач 1 203 Мы рассмотрим весь этот рабочий процесс в следующих главах. Этапы изучения представлены в главах вание и поддержку, - 6-8, а этапы тестирования и итерации, включая разверты­ в главах 9 и 10. Основой успеха любого технологического проекта (и, пожалуй, любого проекта в целом) является задача управления рисками. Для проектов ИИ периферийных устройств характерны уникальные условия риска благодаря сочетанию аппаратного и программного обеспечения, а также зависимости от сложных алгоритмов и разработки на основе данных. На каждом этапе рабочего процесса мы узнаем, какие приемы можно ис­ пользовать, чтобы свести риск к минимуму и повысить шансы на успех. Ответственный искусственный интеллект в рабочем процессе ИИ периферийных устройств Ранее мы выяснили, что приложения ИИ особенно склонны к распространению со­ циального вреда. Существует множество типов проблем, способных привести к не­ ожиданно низкой производительности в реальном мире. Поэтому тщательный ана­ лиз потенциальных рисков и вероятности причинения ими вреда будет важнейшей частью рабочего процесса разработки ИИ периферийных устройств. Недостаточно провести одну этическую экспертизу в начале проекта или заключи­ тельную в конце. Поскольку в ходе реализации проекта будет появляться новая ин­ формация и приниматься множество решений с новыми последствиями, анализ вам рисков должен проводиться на каждом этапе, давая время на корректировку курса в случае необходимости. В этой книге мы будем размышлять об этическом дизайне на каждом этапе работы. Не стоит думать, что это необязательное дополнение - это часть основной работы по проектированию и управлению продуктом, и ее наличие необходимо для реали­ зации успешного проекта. Кошмарный сценарий для команд, работающих с ИИ периферийных устройств, заключается в том, что проблемы обнаруживаются толь­ ко после развертывания системы в производстве. Никто не хочет нести ответствен­ ность за отзыв продукции или причинение реального вреда. Учитывая социальные факторы при анализе рисков на протяжении всего процесса разработки, мы сможем максимально эффективно выявлять проблемы до того, как они дойдут до производства, и повысим качество нашей работы. Есть ли необходимость в использовании ИИ периферийных устройств в вашем случае? Искусственный интеллект и граничные вычисления - это сложные технологии, каждая из которых включает в себя целый ландшафт соображений. Работа с любым
Глава 204 6 из них предполагает компромисс между возможностями и сложностью. Для многих проектов бремя сложности может перевесить предоставляемые преимущества. Учитывая это, при любом потенциальном применении очень важно понять, стоит ли риск получаемой выгоды. Ответ в значительной степени зависит от контекста, включая такие элементы, как: ♦ специфические требования приложения; ♦ навыки создающей приложения команды; ♦ имеющиеся бюджеты на проектирование, сбор данных и долгосрочную поддержку; ♦ количество времени, отведенного на доставку. В следующих разделах мы разберем вопросы, которые необходимо задать, чтобы решить, подходит ли проект для использования технологий ИИ периферийных уст­ ройств. Эго отличная практика при начале работы, поскольку данный подход по­ зволит пролить свет и на другие весомые соображения на этапе открытия проекта. • - •• 1 Хотя попытки найти новые возможности для ИИ периферийных устройств могут быть захватывающими, важно подходить к проблемам непредвзято и • не считать, что технологическое решение . того чтобы - это правильный ответ. Вместо с самого начала пытаться вписать ИИ периферийных устройств в решение задачи, сосредоточьтесь на понимании задачи и разработке пра­ вильного решения. Это решение может включать в себя ИИ периферийных устройств, а может и не включать. Описание задачи Описание задачи - это первый шаг к тому, чтобы понять, подходит ли ИИ пери­ ферийных устройств для ее решения. Постарайтесь изложить суть задачи в не­ скольких предложениях и пунктах - кратко и лаконично. Хорошее описание должно включать: ♦ краткое описание сценария на высоком уровне, в том числе все существующие решения; ♦ существующие задачи в этой области; ♦ ограничения, которые необходимо преодолеть. Во врезке "Глубокое погружение: наблюдение за редкими экземплярами дикой при­ роды с помощью камер" главы 2 мы рассказали о возможном применении ИИ пе­ риферийных устройств для наблюдения за дикими животными и птицами. Ниже приведен пример того, как мы можем описать задачу для этого варианта. Описание задачи: фотоловуwка Краткое описание: исследователям дикой природы иногда необходимо оценить численность и активность животных в отдаленных районах. Один из способов сделать это - установить фотоловушки в малодоступных местах, чтобы следить
Анализ и формулировка задач 1 205 за определенными видами животных. Обычно в таких устройствах используется пассивный инфракрасный (passive infrared, PIR) датчик движения. Он обнаружи­ вает движение и активирует камеру, чтобы сделать снимок. Фотографии сохра­ няются на карте памяти. Исследователи периодически извлекают карту памяти и анализируют снимки. Задачи: • РIR-датчик может срабатывать на нецелевые виды или движущуюся расти­ тельность, заполняя карту памяти бесполезными фотографиями и расходуя ресурс батареи; • данные об активности животных недоступны до тех пор, пока не будет извле­ чена карта памяти и данные не будут проанализированы; • отправлять кого-то за картой памяти в удаленное место - • если карту памяти извлекать слишком редко, она заполнится, и важные дан­ тру доем ко и дорого; ные будут пропущены; • если карту памяти приходится извлекать слишком часто, то деньги уходят на командировочные расходы. Ограничения: • • фотоловушки работают от аккумуляторов и должны быть энергоэффективными; высокоскоростные соединения для передачи данных в полевых условиях сто­ ят дорого; • бюджеты на исследования, как правило, невелики. Точный формат описания проблемы не так важен, как его содержание. Зафиксировав точные задачи и ограничения, можно учесть их при оценке возможных решений. Нужно ли развертывание на периферии? На данном этапе книги мы уже хорошо знакомы с моделью, представленной в разд. "BLERP и преимущества ИИ периферийных устройств" главы 1, для выра­ жения преимуществ ИИ периферийных устройств: ♦ пропускная способность; ♦ задержка; ♦ экономика; ♦ надежность; ♦ конфиденциальность. BLERP - это идеальный инструмент, который поможет нам проанализировать описание поставленной задачи и оценить, может ли она выиграть от использования периферийной архитектуры. Хорошим способом сделать это является создание пунктов для каждого термина BLERP.
206 Глава 6 Для примера рассмотрим пропускную способность. ♦ Из-за дороговизны у фотоловушек нет доступа к большой пропускной способ­ ности. Это делает выполняемую на устройстве работу очень важной. ♦ Если бы можно было анализировать фотографии на устройстве, можно было бы отправлять полученную информацию (гораздо меньшую по объему, чем необра­ ботанные изображения) в облако. ♦ Это поможет избежать дорогостоящих поездок в поле для сбора карт памяти. Проведя мозговой штурм потенциального влияния каждого термина, мы начинаем понимать, насколько важны преимущества использования BLERP для данной про­ блемы. Когда вы закончите мозговой штурм и подведете итоги, у вас получится что-то вроде следующего анализа BLERP, взятого из врезки "Глубокое погружение: наблюдение за редкими экземплярами дикой природой с помощью камер" главы 2. ВLЕRР-анализ: фотоловуwка Пропускная способность. Фотоловушки часто устанавливаются в отдаленных районах с низким уров­ нем связи - возможно, единственным вариантом является использование до­ рогостоящих спутников с низкой пропускной способностью. С помощью ИИ периферийных устройств количество сделанных фотографий можно сокра­ тить настолько, что их можно будет передать все. Задержка. Без ИИ периферийных устройств задержка, связанная с отправкой исследова­ теля для сбора фотографий с камер-ловушек, могла бы измеряться месяцами! Благодаря ИИ периферийных устройств и маломощному радиосоединению можно мгновенно анализировать фотографии и получать полезную информа­ цию без необходимости ждать. Экономика. Отказ от поездок позволяет сэкономить значительные средства, как и отказ от ненужного использования дорогостоящего спутникового радио. Надежность. Если бесполезные фотографии можно отбросить, карта памяти будет запол­ няться дольше. Конфиденциальность. Камера с ИИ периферийных устройств может отбрасывать фотографии лю­ дей, попавших в объектив, сохраняя конфиденциальность пешеходов (напри­ мер, местных жителей или туристов). В этом случае на основе нескольких условий BLERP развертывание при помощи периферийной технологии имеет очевидные и явные преимущества. В других слу­ чаях это может быть не так очевидно: например, не все условия могут быть выгод­ ными. Это вовсе не означает, что периферийное развертывание не подходит. Если в
Анализ и формулировка задач 207 любой категории есть достаточно убедительных преимуществ, этот подход стоит рассмотреть более подробно. Решения, которые не очень подходят к периферийному подходу В некоторых ситуациях вы можете обнаружить, что ваша задача совсем не подхо­ дит для BLERP. Ниже приведен пример описания другой задачи. Описание задачи: медицинская визуализация Устройство для медицинской визуализации создает изображения, отражающие внутреннюю часть тела пациента. Специально обученные врачи используют эти изображения для медицинской диагностики определенных заболеваний. Устройство очень большое и обычно располагается в крупной больнице. После сканирования пациента устройство сохраняет изображения на жестком диске, подключенном к компьютерной сети. Для просмотра изображений необходимо использовать спе­ циальное программное обеспечение. Задачи: • диагностика заболеваний по изображениям - сложная задача, требующая медицинского образования; • если квалифицированные врачи отсутствуют, пациентам, возможно, придется ждать постановки диагноза; • врачи могут просматривать изображения только на определенных компьюте­ рах с установленным программным обеспечением для визуализации. Ограничения: • изображения представляют собой конфиденциальную информацию о пациен­ те, и она должна быть надежно защищена; • устройства для визуализации очень большие, и их невозможно перемещать; • устройства для визуализации очень дороги. Из описания ясно, что здесь есть задачи, требующие решения: людям сложно диаг­ ностировать заболевания на основе данных визуализации, а пациентам приходится ждать диагноза в зависимости от наличия оборудования или специалистов. Воз­ можно, ИИ может помочь врачам анализировать изображения. Однако нам нужно ответить на вопрос: является ли эта задача подходящей для решения с помощью граничных вычислений? Для этого давайте попробуем обдумать некоторые потен­ циальные преимущества с помощью BLERP (см. врезку далее). ВLЕRР-анализ: медицинская визуализация Пропускная способность. Не требуется. Устройства визуализации расположены в крупных больницах, где обычно есть хорошее интернет-соединение, и они уже подключены к
Глава 208 6 компьютерной сети. Нельзя получить выгоду от снижения требований к про• пускной способности. Задержка. Для пациентов было бы полезно иметь более быстрый доступ к диагнозу. Экономика. Проведение анализа с помощью ИИ позволит сократить затраты времени вра­ чей, а оно стоит дорого. Надежность. Врачи могут использовать анализ с помощью ИИ, чтобы повысить успеш­ ность диагностики. Конфиденциш,ьность. Анализ с помощью ИИ может ослабить необходимость раскрытия конфиден­ циальных данных о пациентах. На первый взгляд, эти причины звучат убедительно. Однако если копнуть глубже, становится ясно, что большинство этих преимуществ достижимы и без граничных вычислений. Поскольку устройство визуализации находится в больнице, нет ника­ ких преимуществ в проведении анализа на потенциально ограниченном по ресур­ сам "периферийном" устройстве. Вместо этого мы могли бы использовать обычный компьютер, подключенный к сети больницы или находящийся в облаке 1 . Проблемы конфиденциальности могут быть решены с помощью таких методов, как федера­ тивное обучение, без использования каких-либо инструментов, специально связан­ ных с ИИ периферийных устройств. В этом случае один факт - наличие надежного сетевого соединения - делает не­ нужным использование граничных вычислений. Но почему бы все равно не ис­ пользовать их? Есть ли разница в том, будем ли мы выполнять вычисления на пе­ риферии или нет? Недостатки граничных вычислений Хотя граничные вычисления могут принести огромную пользу, особенно в сочета­ нии с ИИ, есть несколько очень веских причин, по которым большинство вычисле­ ний за последнее десятилетие переместилось в облако. Если фреймворк BLERP не выделяет несколько очень веских причин для выполнения работы на периферии, возможно, вам лучше выполнять обработку информации на облачном сервере. Перечислим некоторые моменты, затрудняющие работу с периферийными прило­ жениями. Сложность разработки. Создавать и поддерживать встраиваемые приложения довольно сложно, особен­ но если речь идет о небольших объектах. Чем проще встроенный код, тем луч1 Хотя можно утверждать, что компьютер в больничной сети является одним из видов периферийных устройств, у многих крупных больниц есть собственные центры обработки данных, и они не под• вержены типичным ограничениям граничных вычислений.
Анализ и формулировка задач 1 209 ше. Даже если для сбора данных требуется встроенное устройство, возможно, имеет смысл упростить проектирование, разместив более сложную логику при­ ложения в облаке. Подбор персонала. Разработка встраиваемых систем требует очень специфических навыков, и если облачные приложения могут создавать и поддерживать специалисты различных инженерных специальностей, то специалистов по разработке встраиваемых сис­ тем найти сложнее. Если у вашей организации нет доступа к специалистам no разработке встроенных систем, возможно, имеет смысл снизить риск проекта, оставив вычисления в облаке. Ограниченные вычисления. Даже самые мощные периферийные устройства не могут сравнит1,ся с мощным облачным сервером, имеющим доступ к графическому процессору. Некоторые приложения требуют невозможного в полевых условиях уровня вычислений. Например, размер некоторых языковых моделей составляет гигабайты, и для достижения низкой задержки требуется графический процессор. Сложность развертывания. Если вы планируете обновлять свое приложение после его развертывания, гра­ ничные вычисления могут создать определенные проблемы. Обновление про­ шивки для периферийных устройств может быть сопряжено с риском - ства питания могут быть "заблокированы" ошибкой или отключением устрой­ в неподходящий момент. Управление версиями приложений, установленных на множестве устройств, также может стать непростой задачей. Обойти эти про­ блемы возможно, но это требует времени на разработку. Вероятно, лучше про­ сто разместить логику приложения в облаке, где ее можно будет обновлять с минимальными затратами. Расходы на аппаратное обеспечение и поддержку. Развертывание и поддержка сети периферийных устройств могут быть дорого­ стоящими. Расходы могут вырасти еще больше, если вам требуются устройства высокого класса с ускорением для рабочих нагрузок машинного обучения или специализированное оборудование, разработанное для конкретной цели. В зави­ симости от области применения, может оказаться дешевле использовать менее мощные устройства для сбора данных и отправки их в облако для обработки. Гибкость. Если требуемые рабочие нагрузки перерастут возможности периферийного обо­ рудования или приложение существенно изменится, вам может понадобиться приобрести новое оборудование для его замены. В отличие от этого, облачные рабочие нагрузки можно масштабировать и изменять одним нажатием кнопки. Безопасность. Предоставление физического доступа к реализации алгоритмов ИИ сопряжено с определенным риском для безопасности. В некоторых случаях облачные вычис­ ления могут помочь снизить риск. Подробнее о безопасности будет рассказано далее в книге.
210 Глава 6 Как описано в разд. "Архитектуры с множеством устройств" главы 3, можно разделить вычисления между периферийными устройствами и облаком. Это может быть полезным способом сочетания преимуществ каждого из них, особенно когда устройства развертываются в контролируемых средах, где есть надежное соедине­ ние и питание, скажем, в домах или на заводах. Например, умная колонка может сохранять конфиденциальность, выполняя распознавание слов для пробуждения на периферии, и при этом использовать мощные облачные серверы для запуска боль­ ших и сложных моделей транскрипции и обработки естественного языка language processing, NLP). (natural В промышленных условиях периферийная система ком­ пьютерного зрения может выявлять потенциальные производственные дефекты с очень низкой задержкой, а затем обращаться к облачной модели для точной клас­ сификации дефектов и определения соответствующих ответных действий. Есть ли необходимость в использовании машинного обучения? Как мы узнали из главы рия, алгоритмы ML 1, ИИ не всегда требует машинного обучения. Как катего­ имеют различные преимущества и недостатки, которые делают их идеальными для одних приложений, но ограниченно полезными для других. ' , • • Важно определить, подходит ли ваш сценарий использования для ранних этапах проце~са разра~отки. Проекты на основе ют существенно инои рабочии процесс - ML ML, на предполага- он повлияет на ваши сроки и , бюджет. Для решения конкретной задачи ИИ периферийных устройств обычно приходится выбирать между решением на основе машинного обучения и решением на основе правил или эвристики. В разд. "Условная логика и эвристика" главы 4 мы говорили, что системы на основе правил разрабатываются с использованием знаний о пред­ метной области. Здесь может использоваться все, что угодно: от элементарной арифметики до невероятно сложных уравнений физики. Вот несколько примеров применения эвристических алгоритмов в периферийных устройствах: ♦ чайник для воды, отключающийся, когда температура достигает точки кипения; ♦ инсулиновая помпа для диабетиков, определяющая точные дозы инсулина в за­ висимости от уровня глюкозы крови; ♦ функция помощи водителю, использующая традиционное компьютерное зрение (см. разд. "Обнаружение признаков на изображении" главы 4) для определения разметки полос движения и центрирования автомобиля между ними; ♦ автопилот, управляющий реакт11вным самолетом на международных маршрутах; ♦ системы наведения космической ракеты, отправляющейся на Марс. Каждый из этих примеров, от простых до сложных, опирается на знания о предмет­ ной области. Например, алгоритм работы инсулиновой помпы основан на знаниях о системе регулирования уровня сахара в крови человека, а система наведения кос-
Анализ и формулировка задач мической ракеты - 1 211 на знаниях физики, аэродинамики (по крайней мере, на протя­ жении определенной части пути) и характеристик управляемости аппарата. В каждом случае задействованные системы подчиняются строгим правилам. Эти правила могут быть сложными, и на их открытие могли уйти тысячи лет человече­ ской истории, но в конце концов они могут быть с приемлемой точностью описаны инженерами с помощью математических формул. Часто алгоритмы цифровой обработки сигналов используются в сочетании с систе­ мами на основе правил. Небольшая обработка позволяет реагировать на ввод с по­ мощью простых правил. Например, функция помощи водителю может использо­ вать DSP в форме обнаружения признаков изображения, чтобы уменьшить сложное изображение в набор простых векторов, представляющих разметку полосы движе­ ния. Так гораздо проще определить, куда направить машину- влево или вправо. Самое приятное в системах на основе правил то, что их пределы точно известны, а значит, можно доказать их работу. Эвристический алгоритм основан на хорошо изученной системе. Можно установить математическую корректность алгоритма относительно базовых правил, которые он призван моделировать. Это делает их надежными, заслуживающими доверия и безопасными. Если для решения вашеn задачи существует решение на основе правил, вы почти наверняка выберете его. Многие задачи можно элегантно решить с помощью правил и эвристики. и они могут оказаться гораздо проще в раз­ работке, поддержке и интерпретации. чем альтернатива в виде машинного обучения. Кроме того, в основном они гораздо менее требовательны к вычислительной мощности. ML звучит захватывающе, но использовать его рискованно, если у вас нет острой необходимости. Эвристика - это то, что помогло человеку выса­ диться на Луну; вполне вероятно, что ваша проблема проще. К сожалению, не все задачи можно решить с помощью алгоритмов на основе пра­ вил. Еще в разд. "Условная логика и эвристика" главы 4 мы познакомились с двумя их основными слабыми местами. Задачи с правилами, которые непо.wерно сложно обнаружить. Например, может потребоваться огромное количество исследований и разрабо­ ток, чтобы обнаружить систему алгоритмов, лежащую в основе сложных, за­ шумленных, высокочастотных данных с датчиков. Даже если систему можно описать математически, это может оказаться недостижимым с учетом вашего бюджета и временнь1х рамок. Задачи с большим количеством переменных. Например, для системы на основе правил может быть просто слишком много входных данных. Это общая проблема с данными изображений с невероятно вы­ сокой размерностью и при этом с сильной зашумленностью. Трудно составить уравнение, описывающее внешний вид собаки.
212 Глава 6 Для решения нетривиальных задач хорошая реализация алгоритмов на основе пра­ вил может зависеть от обширных исследований, знаний о предметной области и соответствующих инженерных навыков. Такие материалы не всегда доступны для конкретного проекта. Слабые места эвристики дают Причины для использования ML возможность проявить себя. ML В то время как системы на основе правил часто зависят от научного понимания процессов, с которыми они взаимодействуют, алгоритмы ML могут получить при­ близительное представление о взаимосвязях между переменными благодаря воз­ действию на сами данные. Это может значительно облегчить жизнь. В следующих ситуациях стоит попробо­ вать применить ML; они приведены в порядке убывания их значимости: ♦ ваша ситуация и данные слишком сложны или зашумлены, чтобы моделировать их обычными средствами; ♦ для поиска решений на основе правил потребуется слишком много фундамен­ тальных исследований; ♦ у вас нет доступа к экспертным знаниям, необходимым для внедрения системы, основанной на правилах 2 . Если вы оказались в одной из таких ситуаций, машинное обучение может оказать вам огромную помощь. В следующей врезке представлен хороший пример. Создание электронного носа lоТ-инженер Бенджамин (https://oreil.ly/f_7_8) - Кабе хотел создать электронный нос устройство, позволяющее идентифицировать предметы и вещества по характерному запаху. Его первоначальной целью было попытаться различить разные типы алкогольных напитков: водку, ром и виски (хотя, как видно на рис. 6.3, это работает для многих продуктов и напитков) . Рис. 6.3. Электронный нос Бенджамина (источник: Ыog.benjamin-cabe.com 2 (https://oreil.ly/f_7_8)) Вскоре мы увидим, что оnыт работы n предметной области nо-nрежнему имеет решающее значение ML потенциально позволяют для обучения и оценки МL-моделей . Однако подходы на основе экспертам, разбирающимся в конкретной nроб,1емной области, получать хорошие результаты . не прибегая к помощи сторонних специалистов в других областях (например. в обработке сигналов) .
Анализ и формулировка задач 1 213 У Бенджамина был доступ к дешевому газовому датчику, предназначенному для измерения уровня нескольких различных типов газов. Для того чтобы создать ал­ горитм на основе правил для возможности различения спиртных напитков, ему пришлось бы провести химический анализ различных напитков, понять их состав и на основе этого определить, какие газы следует искать. Ему также пришлось бы учитывать любые возможные в окружающей среде газы, поскольку они могут привести к ложным срабатываниям. Подобные исследования не входили в рамки его проекта. К счастью для Бенджа­ мина, он был достаточно хорошо знаком с машинным обучением, чтобы понять, что оно может помочь. Автор изобретения использовал свой газовый датчик, чтобы собрать небольшой набор выборок из нескольких различных видов напитков. Он использовал эти данные для обучения простой модели классификации машинного обучения, что­ бы определить, какие показания газа связаны с тем или иным напитком. Проект был успешным! Система Бенджамина бьmа способна различать разные типы на­ питков - вплоть до того, что позволяла отличить одну марку виски от другой. Способность машинного обучения извлекать правила из данных позволила Бенджамину реализовать успешный проект, не прибегая к химическому анализу напитков, а такое исследование могло бы занять много времени и стоить дорого. Это также позволило ему избежать написания чувствительной, настраиваемой вручную логики, необходимой для учета других газов, присутствующих в окру­ жающей среде, поскольку набор данных, собранный в реальном мире, уже учи­ тывал это. Оказывается, сложные, зашумленные данные - это очень распространенное явле­ ние. На самом деле, большинство реальных данных - это просто беспорядок! Од­ на из сильных сторон машинного обучения, особенно моделей глубокого обучения, заключается в том, что при наличии достаточного количества данных они могут научиться учитывать шум. В процессе обучения параметры модели настраиваются таким образом, чтобы отсеять шум из данных, оставив только важную информа­ цию, используемую для принятия решения. Кроме того, модели машинного обучения отлично справляются с выявлением скрытых закономерностей, существующих в обучающих данных. Невидимые для человеческого глаза или слишком сложные для создания правил вручную взаимо­ связи могут стать совершенно очевидными для моделей машинного обучения, если им предоставить достаточно обучающих данных. Эти преимущества делают ма­ шинное обучение отличным выбором, если вы столкнулись с кучей зашумленных данных, описывающих неясные взаимосвязи. Однако использование данных в ML также может быть сопряжено с определенным риском. Недостатки машинного обучения С инженерной точки зрения у машинного обучения есть три основных недостатка: требования к данным, объяснимость и предвзятость.
Глава 214 6 Хорошо известно, что современный ML в значительной степени зависит от дан­ ных3 • Дnя обучения и тестирования систем машинного обучения часто требуются большие объемы данных. Поиск необходимых данных и обеспечение их качест­ ва - это самая серьезная проблема и расходы, связанные с машинным обучением. Может показаться, что данных много. В конце концов, разве у нас нет "хранилищ" и "озер данных", заполненных десятилетиями тщательно собираемыми и регистри­ руемыми данными датчиков IoT? К сожалению, одних необработанных данных не­ достаточно. Дnя большинства современных методов машинного обучения требу­ ются помеченные данные, т. е. снабженные информацией, описывающей их значение. Эта утомительная задача часто ложится на плечи людей, что делает ее дорогостоящей и рискованной (ведь в ней легко ошибиться). Кроме того, модели машинного обучения могут разобраться лишь во встречавших­ ся им ранее ситуациях. Это делает наборы данных очень зависимыми от контекста. Модель, обученная на наборе данных, собранных с помощью определенного типа датчиков, может оказаться неэффективной при подаче данных, полученных с по­ мощью датчиков другой марки. Набор данных типичных предметов домашнего обихода из одной страны может оказаться бесполезным при попытке идентифици­ ровать предметы из другой. В настоящее время ведутся исследования, направленные на решение этих проблем, и достигнут потрясающий прогресс, но факт остается фактом: машинное обучение, как правило, требует большого количества данных. Подробнее об этом мы погово­ рим в следующей главе. Второй большой недостаток машинного обучения - объяснимость нался во врезке "Интерпретируемость и объяснимость" главы что существуют некоторые хорошо объяснимые модели ML, 4. - уже упоми­ Несмотря на то чем сложнее стано­ вится модель, тем сложнее точно определить, почему она делает те или иные пред­ сказания. Эта проблема усугубляется тем, что благодаря своему происхождению из статисти­ ки многие типы МL-моделей не дают однозначных ответов. Задайте вопрос системе на основе правил, и она даст вам хороший, твердый ответ, с четко видимой рабо­ той, и ее можно перепроверить и просмотреть. Задайте тот же вопрос модели глу­ бокого обучения, и получите нечеткое распределение вероятностей, указывающее на возможный ответ. Проследите ответ по системе, и вы столкнетесь с непостижи­ мой путаницей линейной алгебры, которая не подвластна человеческому разуму. Благодаря своей вероятностной природе МL-модели отлично подходят для работы с нечеткими ситуациями и неочевидными правилами. К сожалению, это означает, что их выходные данные обладают одними и теми же свойствами. Это может стать проблемой для многих приложений. Например, код, применяемый в устройствах безопасности в таких областях, как медицинская техника, автомобилестроение и аэрокосмическая промышленность, 3 Усилия ,ю с1тже11ию требований аJJl'оритмов MI, к данным - одно из самых важных и увлека­ теJJьных 11аr1равлс11иll исс;1сдованиll в области маши1шо1·0 обучения. .
Анализ и формулировка задач 1 215 часто должен быть доказуемо корректным (благодаря лучшим методикам и госу­ дарственному регулированию). Очень трудно соответствовать этой планке с помо­ щью вероятностной модели, внутренние правила которой можно получить только путем проб и экспериментов. Третий большой недостаток ML - предвзятость - является прямым следствием первых двух проблем. Мы сталкивались с этой проблемой еще в разд. "Черные ящики и предвзятость" главы 2. При создании МL-моделей мы полагаемся на на­ боры данных как для обучения, так и для проверки эффективности готовых моде­ лей. Наша цель- создать модель, которая будет хорошо работать в реальном ми­ ре. Однако реальный мир очень велик, и охватить все его возможные вариации в ограниченном наборе данных довольно сложно. Если набор данных включает только подмножество всех возможностей, наша мо­ дель может не справиться с остальными случаями. Хуже того, поскольку в наборе данных нет примеров других возможностей, мы не будем иметь ни малейшего представления о том, что это вообще проблема. Может показаться, что модель ра­ ботает отлично, но на самом деле у нее есть несколько серьезных проблем. Ситуация усугубляется тем, что модель даже не всегда сообщает разработчикам о своих проблемах4 . Вместо этого она просто выскажет свои предположения, кото­ рые могут оказаться катастрофически неверными. Без данных для тестирования и без простого способа проанализировать внутренние правила модели и понять, где она может отказаться функционировать, невозможно понять, что именно не так, кроме того, что наше приложение не работает. Простой пример предвзятости ML Представьте, что вы создаете систему, использующую звук для выявления неис­ правностей в промышленном оборудовании. Работая в лаборатории исследова­ ний и разработок, вы собираете большой набор данных с тысячами аудиообраз­ цов, представляющих правильную и неправильную работу. Когда вы обучаете и тестируете модель в лаборатории, она работает отлично. Но когда вы разверты­ ваете ее на заводе заказчика, система выявляет гораздо больше неисправностей, чем ожидалось. В ходе расследования вы заметили, что модель обнаруживает неисправности, ко­ гда работают соседние машины. Поскольку набор данных модели содержит только данные из вашей тихой лаборатории, модель так и не научилась учиты­ вать окружающие звуки заводского цеха. Предвзятость модели отражает лабора­ торные условия, в которых она обучалась. В реальном мире она работает не лучшим образом. Поскольку никогда нельзя надеяться на то, что в наборе данных будет представлен весь мир, погрешности неизбежны. Тем не менее можно управлять риском, тща4 Для исправления ситуации существукл методы, упомянутые в разд. "Обнару.жение аномалий" главы 4, хmя они могут быть сопряжены с дополнительным бременем слож1юсти.
Глава 216 6 тельно изучая разработанное приложение. Однако в некоторых ситуациях послед­ ствия предвзятости моrут быть настолько велики, что приложение вообще не под­ ходит для реализации ML. Ценности, которых придерживаются многие общества, не позволяют использовать ML для принятия некоторых решений, связанных с жизнью и смертью, например при использовании автономных систем вооружений. Аналогичным образом, много споров вызывает использование машинного обуче­ ния для автоматизации судебных решений, включая вынесение приговоров. Когда же следует использовать ML Есть расхожая поговорка о решении проблем: "Если у вас есть только молоток, все выглядит как гвозди". Машинное обучение гораздо интереснее, чем самый блестя­ щий молоток, и очень заманчиво попытаться использовать его повсюду. К сожале­ нию, его сложность, ограничения и присущие ему риски делают его плохим выбо­ ром во многих ситуациях. Мэт Келен, главный инженер по lmpulse, ML в компании Edge любит говорить, что "лучшее машинное обучение- это отсутствие ма­ шинного обучения". Нет ничего постыдного в использовании традиционных алгоритмов для решения задач. Как говорится в разд. "Искусственный интеллект" главы 1, интеллектушzь­ ная составляющая ИИ- это "знание того, что нужно делать в нужное время". Для ваших пользователей не имеет значения, заложены ли эти знания в виде оператора i.f или в виде модели глубокого обучения. С учетом этих аспектов можно составить контрольный список и использовать его для определения, стоит ли применять ♦ ML в вашем конкретном случае: не существует решения на основе правил, и у вас нет ресурсов для его поиска; ♦ у вас есть доступ к высококачественному набору данных или его сбор не выхо­ дит за рамки предоставляемого бюджета; ♦ систему можно разработать таким образом, чтобы использовать нечеткие, веро­ ятностные прогнозы; ♦ не необходимости объяснять точную логику, лежащую в основе решений вашей системы; ♦ система не будет подвергаться воздействиям, выходящим за рамки, отраженные в ее обучающих данных; ♦ приложение способно выдержать некоторую степень неопределенности. Модели машинного обучения никогда не бывают идеальными. Причина, по кото­ рой мы их используем, заключается в том, что по сравнению с человеческим ин­ теллектом они дешевы и хорошо масштабируются. Один из главных компромиссов заключается в том, что они могут давать сбой неинтуитивными способами. Реше­ ние об использовании ML - это как вопрос "Достаточно ли он хорош?", так и во­ прос "Сможем ли мы справиться с теми типами ошибок, которые он, скорее всего, допустит?".
Анализ и формулировка задач 1 217 Автоматизация в сравнении с аугментацией Часто бытует мнение, что машинное обучение должно использоваться для авто­ матизации задач - взять что-то, что сделал бы человек, и сделать это автомати­ чески, но дешевле. Однако несколько иной подход к решению задачи может сни­ зить некоторые риски, связанные со странными вариантами сбоев МL-моделей. Вместо того чтобы заменять человека, они могут гораздо эффективнее расши­ рять (аугментировать) его возможности. Вместо того чтобы возлагать ответст­ венность на модель, ее результаты предоставляются в качестве руководства для человека, способного объединить их со своими собственными знаниями, опытом и здравым смыслом, чтобы решить, как действовать. Доказано, что сочетание человеческого и машинного интеллекта в таких слож­ ных областях, как медицина, работает лучше, чем любой из этих методов в от­ дельности 5 . Хотя есть и некоторые риски, в том числе предвзятость автоматики (https://oreil.ly/QНD74). В тех случаях, когда люди слишком полагаются на ав­ томатизированные системы и игнорируют собственную инrуицию, аугментация может стать эффективным способом извлечения пользы из несовершенной сис­ темы. Практическое упражнение Далее приведены три сценария, потенциально требующие использования ИИ пери­ ферийных устройств. Для каждого из них придумайте описание задачи, а затем ре­ шите, имеет ли смысл применять граничные вычисления, машинное обучение или и то и другое. Возможно, вам придется провести небольшое исследование в Интер­ нете, чтобы полностью понять каждый сценарий. Сценарий 1: применение удобрений. Сельскохозяйственный производитель хочет сэкономить деньги и уменьшить воздействие на окружающую среду, применяя меньше удобрений для своих кульrур. Вместо того чтобы равномерно распылять удобрения по полю, руково­ дство компании хотело бы определить участки поля, на которых удобрения при­ несут наибольшую пользу (например, из-за различий в качестве почвы), и вно­ сить их исключительно rуда. Понять, нужны ли удобрения, можно визуально осмотрев расrущие растения. Сценарий 2: обслуживание отеля. Традиционно в отелях убирают номера в дневное время, когда гости, скорее все­ го, ушли. Однако если гость все еще находится в своем номере, он может не за­ хотеть, чтобы его беспокоили. Сеть отелей хотела бы знать, находится ли кто­ нибудь из постояльцев в том или ином номере, чтобы уборщикам не приходи­ лось сrучать в дверь и беспокоить постояльцев. 5 Как указано в статье 1:iхавик Н. rIатель и др. "Партнерство человека и машины с искусственным (Bhavik N. Patel et al. Humanmachine partnership with artificial intelligence for chest radiograph diagnosis (https://oreil.ly/147IG)). интеллектом для реН'lтс1юлоrической диагностики органов грудной клетки"
Глава 218 Сценарий 6 срок службы шин. 3: Автомобильные шины со временем изнашиваются, и не1<0торые виды износа могут указывать на механические проблемы. Этот износ обычно обнаруживает­ ся во время периодического технического обслуживания. Автопроизводители хотели бы, чтобы их автомобили автоматически определяли некоторые виды из­ носа шин, чтобы можно было выявлять проблемы как можно раньше. Ни на одно из этих заданий нет правильного или неправильного ответа - они просто дают возможность применить изученные к данному моменту методы анализа. Определение возможности реализации Итак, у вас есть идея по созданию проекта ИИ периферийных устройств? В первую очередь необходимо разобраться, насколько это осуществимо. Здесь нужно учиты­ вать множество вопросов. Возможно, для вашего проекта лучше использовать ИИ на стороне сервера, а может быть, ваше решение требует машинного обучения, но собрать набор данных не представляется возможным. А может быть, это идеальный вариант! Первый шаг - попытаться придумать идеальное решение проблемы, указанной в описании задачи. Если забыть о технологических ограничениях и мыслить на пре­ дельно высоком уровне, что бы вы хотели, чтобы делала система? i • • •••• • - Предвзятое отношение - дать нам то, к чему можно стремиться. Если ограничить поиск идей тем, что мы считаем осуществимым, можно про- Цель идеального решения ' • пустить перспективные и не очевидные на ранних этапах решения. Сохра- няя стремление к идеалу, мы не ограничиваем собственную креативность. Идеальное решение также поможет избежать соблазна использовать опре­ деленную технологию, потому что она нам очень нравится. Это очень рас­ пространенная ловушка- вы только что узнали о какой-то новой увлека­ тельной технике и искали повод попробовать ее, поэтому можете упустить из виду другой метод, способный дать лучшие результаты. Когда у нас есть идеальное решение, можно рассмотреть возможность его осущест­ вления с нескольких точек зрения: ♦ моральной: стоит ли это делать? ♦ бизнеса: есть ли в этом смысл? ♦ набора данных: есть ли необработанные материалы? ♦ технологии: можно ли это реализовать? Для того чтобы проект в целом был целесообразным, он должен соответствовать всем четырем параметрам. Давайте рассмотрим каждый из этих аспектов по от­ дельности на примере приложения. В реальном мире мы бы основывали свое иде-
Анализ и формулировка задач 1 219 альное решение на подробном описании задачи. Для того чтобы не усложнять си­ туацию, мы воспользуемся этим упрощенным утверждением. ИИ периферийнь,х устройств для системы безопасности склада Склад, заполненный ценными товарами, может стать привлекательным объектом для воров. Первый шаг к обеспечению безопасности склада круглосуточное - наблюдение за ним. Идеальным решением была бы система, хранящая данные о каждом человеке, находящемся в помещении. Система должна понимать, кто из этих людей дол­ жен там находиться, и сообщать централизованному органу о местонахождении всех остальных. Нет никаких требований, чтобы строить решение на основе ИИ или даже использо­ вать технологию. В зависимости от ситуации лучшей системой может быть коман­ да охранников-людей. В процессе исследования возможности реализации решения мы начнем определять подходящее сочетание человеческих и технологических возможностей, позволяющее решить задачу элегантным способом. Возможность реализации с моральной точки зрения Этическая экспертиза - одна из важнейших частей любого анализа возможности реализации. Проект, провалившийся из-за неучтенного технологического риска, может стоить кучу потраченных впустую денег, но ущерб от этических проблем потенциально беспределен - он может легко стоить компании репутации, вызвать карательные меры регуляторов и нанести прямой вред людям. В разд. "Ответственное создание прwюжений" главы 2 представлены некоторые этические проблемы, способные влиять на продукты ИИ. В рамках анализа воз­ можности реализации очень важно тщательно изучить и задокументировать все потенциальные этические проблемы, возникающие в результате применения ваше­ го проекта. Помимо самого продукта, важно также понимать все потенциальные риски, связанные с процессом разработки, - сбор данных, развертывание и под­ держка готового продукта. В этот процесс должны быть вовлечены все члены вашей команды под руковод­ ством экспертов по этике и предметной области. В материале из разд. "Разно­ образие" главы 5 рассказывается о том, как важно максимально увеличить количе­ ство точек зрения, из которых вы можете черпать информацию. Приведем несколько ключевых вопросов. ♦ Кому это решение может принести вред? Пример: некоторые продукты (такие как оружие с ИИ) предназначены для непосредственного причинения вреда, в то время как другие могут причинять вред косвенно w,u действия с заинтересованными сторонами-людьми. из-за небрежного взаимо­
Глава 220 6 Можно ли получить необходимые данные, не нарушая прав отдельных лиц или ♦ сообществ? Пример: некоторые наборы данных невозможно собрать без нару­ шения конфиденциальности пользователей. ♦ Можно ли протестировать продукт, не причинив вреда и не нарушив права заин­ тересованных сторон? Пример: приложение, предоставляющее медицинские ре­ комендации, может нанести вред во время тестирования, если предоставлен­ ные рекомендации не являются надежными. ♦ Были ли задокументированы потенциальные риски? Как можно смягчить их по­ следствия? Пример: каков потенциальный вред, если приложение выдает невер­ ные прогнозы? ♦ Актуально ли приложение для всех потенциальных пользователей? Пример: прwюжение для распознавания речи, связанное с безопасностью, может ока­ заться неэффективным при работе с дикторами, имеющими региональный ак­ цент. Понять, насколько возможен косвенный вред от реализации проекта, бывает очень сложно. Например, что делать, если в результате реализации проекта по созданию ИИ под угрозой окажутся рабочие места или если придется искать компромисс ме­ жду прибылью и воздействием на окружающую среду? Наличие широкого круга советников поможет вам сориентироваться во всех нюансах. Обзор возможности реализации приложения для обеспечения безопасности склада с этической точки зрения Хороший способ начать этическую экспертизу - составить список потенциаль­ ных проблем методом мозгового штурма. Ниже приведен пример мозгового штурма для нашего приложения по обеспечению безопасности склада. Это не исчерпывающий список! • Этичен ли сам продукт? Продукт может нанести вред, если он будет помечать невинных людей как подозрительных. Продукт может нанести вред, если приведет к сокращению численности команды безопасности. • Можно ли получить необходимые данные с соблюдением этических норм? Имеющиеся наборы данных могут содержать фотографии людей, не дававших согласия на обработку своих изображений. Если данные собираются на скла­ де, сотрудники могут чувствовать себя не очень комфортно, когда их вклю­ чают в список. • Можно ли проверить продукт на этичность? Ложные тревоги могут привести к ущербу, если подозрения будут вызваны у невиновного человека. Процесс тестирования может отвлечь команду безопасности и привести к возникнове­ нию проблем с безопасностью. • Актуально ли приложение для всех потенциальных пользователей? Приложе­ ние может классифицировать людей как подозрительных с разной частотой в зависимости от их внешнего вида, а не от их намерений. Приложение может оказаться сложным в использовании для не знакомых с подобными техноло­ гиями охранников.
Анализ и формулировка задач Этика - 1 221 это о людях и процессах. Один из способов снизить риск возникновения непредвиденных этических проблем - убедиться, что этическая экспертиза прово­ дится группой различных людей, представляющих различные демографические группы, включая специалистов, имеющих непосредственный опыт этической оцен­ ки систем ИИ. Помимо вашей команды, в этой группе должны быть представлены заинтересован­ ные стороны, на которых потенциально разд. "Заинтересованные стороны" главы может повлиять продукт, как описано в 5. Хотя анализ возможности реализации начинается с понимания моральной целесо­ образности, вашей долгосрочной целью должно стать обеспечение процесса непре­ рывного этического анализа в ходе составления концепции, разработки, внедрения и поддержки продукта. Работа, проделанная на этом этапе, принесет дивиденды, помогая на протяжении всего жизненного цикла продукта. Возможность реализации с точки зрения бизнеса Существует два основных способа, посредством которых организационные вопро­ сы могут повлиять на возможность реализации проекта. Во-первых, чтобы прило­ жение ИИ было успешным, оно должно приносить очевидную пользу. В контексте бизнеса это могут быть клиенты, руководители или балансовый отчет. В научном контексте это может означать, что при том же бюджете можно выполнить больше работы. В самом начале любого проекта необходимо убедиться, что предлагаемая работа в случае успеха принесет реальную пользу. Во-вторых, для организации разработка приложений ИИ сопряжена с практически­ ми ограничениями. Например, может не хватить бюджета на сбор набора данных достаточного размера для обучения эффективной МL-модели. Другие распростра­ ненные ограничения включают время, опыт и долгосрочную поддержку со стороны заинтересованных сторон. Доказательство выгоды Один из особенно эффективных способов доказать (и продемонстрировать) пре­ имущества приложения с ИИ периферийных устройств называется прототипом "Волшебник страны Оз". В сказке "Волшебник страны Оз" титулованный волшеб­ ник впервые предстает перед нами как впечатляющее сверхъестественное сущест­ во. Однако позже выясняется, что это обычный человек, скрытый за занавесом, и он управляет иллюзией дистанционно. При создании прототипа "Волшебник страны Оз" создается макет продукта ИИ. Внешне он функционален, но на самом деле его работоспособность контролируется скрытыми действиями человека. Макет продукта может быть протестирован и оп­ робован заинтересованными сторонами, что позволит людям понять, как он может работать в реальном мире, и сравнить его с другими вариантами.
222 Глава 6 Тестирование "Волшебник из страны Оз" для системы безопасности склада Для того чтобы проверить нашу концепцию безопасности склада, было разрабо­ тано базовое мобильное приложение. Охранник получает приложение и занима­ ется своим обычным патрулированием. Периодически человек-испытатель от­ правляет охраннику уведомление с целью смоделировать, что именно произойдет, если система ИИ обнаружит нарушителя. В ответ охранник начинает расследование. Он записывает время, необходимое для ответа. Последующий анализ показал, что, учитывая время реагирования, это приложе­ ние не помогает - в большом складском комплексе охраннику требуется столь­ ко времени, чтобы добраться до места, что любой вор уже давно бы ушел. Затра­ ты на разработку приложения не будут стоить того, а деньги лучше потратить на наем дополнительных охранников. Или может оказаться, что охранник способен быстро реагировать на каждую си­ туацию, а приложение с ИИ поможет улучшить его способность защищать объ­ ект. Полученные результаты помогают убедить руководство в целесообразности инвестиций. В любом случае результаты теста "Волшебник страны Оз" помогут орrа1-tизации сэкономить деньги. Приведею-1ый подход может стать очень полезной практикой. Даже без технологи­ ческой части проекта можно изучить, проанализировать и доработать пользова­ тельский опыт. Если опыт будет впечатляющим, он поможет убедить заинтересо­ ванные стороны в целесообразности проекта. Если что-то не получается даже в искусственной форме, это верный сигнал, что нужно вернуться к чертежной доске. Для того чтобы любая оценка была успешной, важно добиться согласия заинтере­ сованных сторон относительно того, что такое "хорошо". В нашем примере со складом это может означать установку минимального времени, требуемого одному охраннику для реагирования на вторжение. В ходе тестирования мы настраиваем инструментарий, помогающий отслеживать эти показатели, развертываем базовую версию приложения (например, поддельное приложение - прототип "Волшебник страны Оз"), а затем оцениваем ее. В ходе этого процесса очень важно протестировать текущее решение и предло­ женные варианты. Мы получим четкий сигнал о том, действительно ли оценивае­ мые решения выгодны. Это важно проверять на протяжении всего процесса разра­ ботки, а не только на начальном этапе. Поскольку мы установили определенный порог полезности, может даже оказаться, что текущее решение достаточно хорошо, чтобы удовлетворить заинтересованные стороны, и в этом случае организация может сэкономить деньги, не принимая ре­ шение на основе ИИ. Но если мы докажем, что польза есть, проект можно смело продолжать.
Анализ и формулировка задач 1 223 Понимание ограничений Конечно, помимо создания прототипов в стиле "Волшебник страны Оз", существу­ ет множество способов, с помощью которых организации определяют риск, возна­ граждение и выгоду новых проектов. Проекты в области ИИ ничем не отличаются от других, и убедиться в том, что ваша идея хорошо соответствует потребностям организации, будет крайне важно для обеспечения ее успеха. Частью этого процесса является определение ваших организационных ограничений и уверенность в том, что они не создадут проблем. Вот некоторые из основных ог­ раничений при разработке приложений с ИИ. Экспертиза. Несмотря на то, что разработка ИИ становится все более доступной, наличие опытных экспертов в области ИИ поможет снизить риск вашего проекта. Преж­ де чем приступить к работе, убедитесь, что необходимые навыки у вас есть. Временные рамки. Разработка ИИ - это итеративный процесс под управлением данных, и соста­ вить точную оценку времени для него еще сложнее, чем для традиционной раз­ работки программного обеспечения. Убедитесь, что у вас есть возможность пре­ дусмотреть непредвиденные обстоятельства, например, обнаружить на поздней стадии процесса, что вам нужно собрать больше данных. Бюджет. Три самые дорогие части разработки ИИ - это оплата тру да, сбор данных и тестирование в полевых условиях. Если вы частное лицо или небольшая органи­ зация, время вычислений для обучения может стать значительным, хотя обычно оно не превышает нескольких тысяч долларов, поскольку модели ИИ перифе­ рийных устройств, как правило, невелики. Долгосрочная поддержка. В главе 1О мы узнаем, что приложения ИИ нуждаются в долгосроуной поддерж­ ке, чтобы оставаться эффективными. По мере того, как мир вокруг них меняется, модели ML и жестко заданные правила необходимо обновлять и уточнять. Если ваш проект будет развернут более чем на несколько месяцев, важно знать, мо­ жет ли ваша организация позволить себе (и готова ли) поддерживать его. Вы являетесь экспертом в том, как работает ваша организация, и именно от вас за­ висит, сможет ли она поддержать будущий проект. Возможность реализации с точки зрения набора данных Наряду с технической возможностью реализации разработка приложений ИИ пе­ риферийных устройств ограничена доступными данными. Машинное обучение, как известно, требует данных, но даже подходам на основе правил, реализуемым вrуч­ ную, необходимы значительные объемы данных для разработки и тестирования 6 . Даже если вы воспроизводите известный алгоритм из учебника, вам все равно придется прогнать через него данные, чтобы убедиться, что ваше приложение полностью работоспособно.
224 Глава Сбор данных 6 - сложная, трудоемкая и дорогостоящая задача, поэтому на этапе оценки возможности реализации проекта важно понять, какие данные требуются для его реализации. Понимание целесообразности данных состоит из двух этапов: 1. Оценка необходимого для решения вашей задачи объема данных. 2. Понимание того, сможете ли вы получить достаточное количество данных. Обе эти темы подробно описаны в главе 7. Там же мы увидим, что понимание тре­ бований к данным включает в себя как исследовательскую, так и инженерную ра­ боту. Это означает, что вы не будете знать свои реальные потребности в данных, пока не вложите в проект значительное количество времени. На этом этапе можно просто иметь приблизительное представление, возможно, ос­ нованное на некоторых прецедентах, обнаруженных в ходе исследований (мы узна­ ем об этом в главе 7). Если похоже, что у вас нет достаточного количества данных, ваш проект может оказаться неосуществимым. Очень важно исключить такую ве­ роятность на ранней стадии, чтобы избежать напрасных усилий по разработке. Возможность реализации набора данных для системы безопасности склада Наше приложение для обеспечения безопасности связано с обнаружением людей на складе. Для того чтобы разобраться в требованиях к данным, полезно найти несколько похожих приложений в научной литературе. Например, при поиске в Интернете по теме обнаружения людей можно найти ссылку на материал под на­ "Visual Wake Words" (Chowdhery А., 2019; https://oreil.ly/ЬiJLy), содер­ набор данных из 1 15 ООО изображений людей в самых разных контекстах. званием жащий В литературе есть данные о том, что можно получить более 95% точности на на­ боре данных с моделью, работающей на высококачественном микроконтроллере (micro controller unit, MCU). Это дает нам хотя бы некоторую уверенность в том, что наш вариант использования может быть реализован. Кроме того, нахождение этого набора данных в открытом доступе означает, что можно использовать его для обучения нашей собственной модели. На текущем этапе этого может быть достаточно, чтобы убедить нас в том, что наш проект осуществим с точки зрения набора данных. Всегда есть риск, что что-то не сработает: например, может оказаться, что обнаружить людей на тем­ ном складе сложнее, чем в типичных условиях, представленных в наборе данных Visual Wake Words. Мы сами решаем, на какой уровень риска мы готовы пойти, и всегда можем снизить его с помощью экспериментов. Проблемы с данными - одна из главных причин провала МL-проекта, поэтому если вы видите негативные сигналы на этом этапе проверки возможности реализа­ ции проекта, не стоит просто скрещивать пальцы и надеяться на лучшее.
Анализ и формулировка задач 225 Технологическая возможность реализации В главах 3 и 4 мы подробно рассмотрели технологии, наиболее важные для ИИ пе­ риферийных устройств. Эти материалы станут отличным источником информации, когда вы попытаетесь понять, насколько осуществимы ваши идеи. Первый шаг - это сопоставление вашей идеи с концепциями и методологиями ИИ периферийных устройств. О некоторых из них рассказывается в начале книги, при­ ведем их снова. Датчики. Как вы будете собирать необходимые данные? Форматы данных. Какие сигналы будут выдавать ваши датчики? Конструирование признаков. Какие варианты обработки необработанных сигналов существуют? Процессоры. Какой объем вычислительных ресурсов вы можете себе позволить, исходя из стоимости и энергопотребления? Возможность подключения. Какие виды связи вам доступны? Типы задач. Вам нужно выполнить классификацию, регрессию или что-то еще? Решения на основе npaвwi wiu ML. Необходимо ли использовать машинное обучение или можно обойтись подхо­ дом на основе правил или эвристики? Выбор МL-алгоритма. Достаточно ли классического машинного обучения или вам нужна модель глу­ бокого обучения? Архитектуры прw~ожений. Вам потребуется одно периферийное устройство или более сложная схема? Наконец, что самое важное, вам необходимо учитывать человеческий фактор. Ва­ шим конечным решением будет система, состоящая из людей и технологий, рабо­ тающих совместно. Любые технологические решения должны рассматриваться че­ рез призму человеческих отношений. На данный момент еще слишком рано пытаться ответить на все эти вопросы окон­ чательно. Пока что имеет смысл провести мозговой штурм - начните с четырех или пяти примерных идей, но не стесняйтесь фиксировать больше, если они прихо­ дят вам в голову. Все они не обязательно должны быть полностью продуманными, но вы должны попытаться отразить элементы вышеперечисленных пунктов.
226 Глава 6 Пример в контексте безопасности склада показан в следующей врезке. Мозговой штурм идей для системы безопасности склада Даже если мы пытаемся разработать систему ИИ периферийных устройств, в большинстве случаев полезно начать с установления максимально простой базо­ вой модели. Это даст нам известную величину по ней можно будет измерять другие решения. Вам так же необходимо учитывать все существующие решения, которые вы пытаетесь заменить. Решение 1: команда безопасности. На складе работает команда обученных надежных охранников, а его размеры позволяют вести круглосуточное наблюдение за содержимым. В некоторых случаях оптимальным решением может оказаться нетехноло­ гичная базовая модель (или решение без использования ИИ). Всегда необхо­ димо быть готовыми к такому развитию событий: наша работа заключается в предоставлении ценности, а не в поиске оправдания для использования ИИ. Кроме того, поскольку применение ИИ периферийных устройств сопряжено со значительными трудностями, целесообразно подумать о возможных об­ лачных решениях. Конечно, в некоторых случаях облачного решения может и не существовать, но подумать об этом всегда стоит. Решение 2: облачный ИИ. На складе установлено множество проводных камер. Каждая из них передает видео в облако через сетевой доступ в Интернет. Облачный сервер выполняет глубокое обучение для одновременного обнаружения людей в каждом видео­ потоке и сообщает охраннику через приложение, если человек обнаружен в несанкционированном месте. Теперь у нас есть облачная система для дальнейших размышлений. Давайте по­ смотрим, что произойдет, если мы перенесем часть вычислений на периферию. Решение 3: периферийный сервер. На складе установлено множество проводных камер. Каждая из них передает видео по сети на локальный сервер. Периферийный сервер выполняет глубо­ кое обучение для обнаружения людей на каждом видеопотоке одновременно, сообщая охраннику через приложение, если человек обнаружен в несанкцио­ нированном месте. Звучит интересно! Это кажется вполне осуществимым, и, конечно, есть неко­ торые технологические преимущества, например, система больше не зависит от подключения к Интернету. Теперь давайте посмотрим, можно ли перемес­ тить еще больше вычислений на периферию. Решение 4: вычисления на устройстве. На складе установлено множество проводных камер, каждая из которых ос­ нащена высококлассным микроконтроллером (MCU). Он выполняет глубокое обучение для обнаружениj{ людей на видеопотоке камеры, сообщая охранни­ ку через приложение, если человек обнаружен в несанкционированном месте.
Анализ и формулировка задач 1 227 Помимо противопоставления периферии и облака, существует множество других направлений для поиска идей. Например, как насчет изменения типа датчика? Решение 5: вычисления на устройстве с объеди11е11ием датчиков. На складе имеется множество устройств с проводным подключением. Каждое из них оснащено множеством датчиков, включая видео-, аудио- и радарные, а также высокопроизводительным микроконтроллером. MCU использует объе­ динение датчиков для обнаружения людей, передавая сообщение охраннику через приложение, если человек обнаружен в несанкционированном месте. Теперь у нас есть пять возможных решений. У каждого из них есть свои пре­ имущества и недостатки для анализа, сравнения и обсуждения. Не всегда оче­ видно, какое решение имеет наибольший смысл. Правильный ответ зависит от всех факторов- от требований бизнеса до уровня квалификации сотрудников организации. Главное - создать портфолио идей, чтобы можно было начать изучать варианты. Формулирование задач Для того чтобы полностью изучить технологические требования к любому реше­ нию на основе ИИ, необходимо уметь сформулировать задачу с точки зрения дос­ тупных инструментов. В разд. "Типы аrzгоритмов по функционаrzьности" главы 4 мы познакомились с целым рядом полезных методов: ♦ классификация; ♦ регрессия; ♦ обнаружение и сегментация объектов; ♦ обнаружение аномалий; ♦ кластеризация; ♦ уменьшение размерности; ♦ преобразование. Для того чтобы решить любую задачу, нужно сначала разбить ее на части для рас­ смотрения их с помощью этих техник. Для решения конкретной задачи может по­ требоваться несколько методов. Например, выявление нарушителей в несанкцио­ нированных местах может включать как обнаружение объектов (для обнаружения людей), так и обнаружение аномалий (чтобы определить, когда человек ведет себя необычно, например, крадется ночью по складским проходам). Для каждой техники может потребоваться свой тип алгоритма. Например, для обнаружения объектов может потребоваться модель глубокого обучения, а для обнаружения аномалий можно использовать классическое машинное обучение. Разбив задачу при помощи этих методов, можно лучше понять требуемую вычислительную нагрузку, что по­ может в мозговом штурме решений и при выборе оборудования.
Глава 228 6 Любую конкретную задачу можно разбить (или сформулировать) множеством раз­ личных вариантов, каждый из которых имеет собственный набор технологических требований. Например, можно обнаружить нарушителей на складе с помощью уменьшения размерности - использовать модель встраивания для описания всех людей, находящихся в поле зрения, а затем сравнить их встраивания с базой дан­ ных, что позволит нам определить, когда на складе находится человек, не являю­ щийся сотрудником. Это потребует иных технологических, информационных, деловых и этических со­ ображений, чем система, основанная на обнаружении объектов. Таким образом, формулирование дает нам еще один инструмент для изучения пространства воз­ можных решений и поиска того, что соответствует нашим уникальным требованиям. Возможности устройств и выбор решений Дnя каждого проекта ИИ периферийных устройств существует бесчисленное мно­ жество вариантов аппаратного обеспечения. Например, в результате нашего мозго­ вого штурма по вопросам безопасности склада были найдены решения, реализуе­ мые с помощью MCU, периферийного сервера или в облачной среде. Каждое отдельное решение имеет свое гигантское пространство выбора аппаратного обес­ печения: например, для проекта на базе MCU необходимо выбрать аппаратуру из списка, включающего десятки поставщиков процессоров, каждый из которых пред­ лагает десятки микросхем с бесконечным количеством конфигураций. С точки зрения возможности реализации необходимо понять, какие из этих вариан­ тов аппаратного обеспечения целесообразно использовать с учетом ограничений нашей задачи, указанных в описании задачи. Сдерживающими факторами могут быть стоимость, собственный опыт, существующие системы (см. разд. "Новые и существующие проекты" главы 2) или соображения, связанные с цепочкой поста­ вок. Учет этих ограничений сужает как пространство вариантов аппаратного обес­ печения, так и пространство возможных решений. После принятия ограничений может оказаться, что подходящего решения нет. На­ пример, в существующем проекте единственное доступное оборудование может не иметь достаточно памяти для запуска модели обнаружения объектов с подходящей производительностью. В табл. 3.1 приведены справочные данные, и с их помощью вы можете понять, на­ ходится ли ваше приложение в области целесообразности использования доступных вам вариантов аппаратного обеспечения. Помните, что вы всегда можете разделить свое приложение на несколько типов устройств, если вам нужна дополнительная гибкость. Мы подробно рассмотрим этот вопрос в разд. ''Архитектурный дизайн" главы 8. Принятие окончательного решения На данном этапе была проанализирована возможность реализации проекта с точки зрения этики, бизнеса, набора данных и технологий. У нас должно быть достаточно информации, чтобы начать работу. Если ни одна из идей решения, предложенных в
229 Анализ и формулировка задач ходе мозгового штурма, не кажется нам подходящей, дальнейшие шаги должны быть следующими: 1. Обновите описание задачи, добавив новые ограничения, выявленные в процессе рассмотрения. 2. Проведите новый мозговой штурм решений, предложив новый набор возможных решений, учитывающих ваши вновь выявленные ограничения. 3. Пройдите тот же процесс анализа возможности реализации с новыми решениями. Как и во всем, что касается ИИ, процесс может быть итерационным. Возможно, вам придется повторить эти шаги несколько раз, чтобы уточнить свое понимание огра­ ничений и найти подходящее решение. Стоит запастись терпением и пересмотреть свои предположения. Скорее всего, в итоге вы получите потенциальное решение, даже если оно не совпадает с тем, что вы представляли себе в самом начале. Однако в некоторых случаях для решения поставленной задачи может просто не найтись подходящего решения на основе ИИ периферийных устройств. Если это произойдет, обратите внимание на причины. Возможно, они этические, и это при­ знак того, что проект слишком рискован с этической точки зрения, чтобы его рас­ сматривать. Кроме того, они могут быть чисто технологическими - это означает, что проект может стать осуществимым в какой-то момент, когда появятся новые аппаратные средства и технологии. В любом случае, даже если вам не удалось найти перспективное решение, процесс изучения пространства решений с точки зрения их осуществимости будет неверо­ ятно поучительным. Сейчас вы, вероятно, знакомы с областью задачи с точки зре­ ния ИИ больше, чем кто-либо другой. Если решение не проходит проверку на возможность реализации, не поддавайтесь искушению продолжать работу. Если вы доказали, что это слишком рискованно, попытки развивать проект приведут к потере времени и потенциальному ущербу. Даже знание того, что не существует разумного решения проблемы с по­ мощью ИИ периферийных устройств, станет ценной информацией - тот факт, что вы знаете об этом, является формой конкурентного преимущест­ ва. Возможно, вы увидите, как другие организации тратят время на поиски, но у вас будет уверенность в том, что их усилия не увенчаются успехом, и вы добьетесь лучших результатов, сосредоточившись на другом. Если вы дошли до этого момента и проект кажется вам осуществимым, поздравля­ ем - пора начинать воплощать его в жизнь. Планирование проекта ИИ периферийных устройств Разработка ИИ периферийных устройств - это многоэтапный процесс, включаю­ щий итерационное развитие и потенциально неограниченное количество задач (на-
230 Глава 6 пример, сбор данных, который как процесс никогда не бывает по-настоящему за­ вершенным). Учитывая это, важно сформировать план, прежде чем разрабатывать решение. В разд. "Рабочий процесс ИИ периферийных устройств" ранее в этой главе мы рассмотрели различные этапы рабочего процесса и то, как они связаны между со­ бой множеством циклов обратной связи. Эrо итеративный процесс, и вы можете тратить на каждый раздел необходимое количество времени. Два наиболее важных аспекта планирования: ♦ определение приемлемой производительности; ♦ понимание ограничений по времени и ресурсам. Определение приемлемой производительности Самым первым этапом процесса планирования должно стать установление кон­ кретных стандартов приемлемой производительности для вашей системы. Это не­ обходимо делать в сочетании с анализом заинтересованных сторон и этических ас­ пектов, поскольку недостаточно эффективная система может создать риски в этих областях. Вашей задачей в процессе разработки будет прохождение итерационного процесса до тех пор, пока не будут достигнуты поставленные цели в отношении приемлемой производительности. После того как они будут удовлетворены, ваши заинтересо­ ванные стороны смогут с уверенностью подписать проект, зная, что он работает достаточно хорошо. Цели должны быть реалистичными, достижимыми, а также их следует поставить таким образом, чтобы проект действительно принес пользу в случае их достижения. Мы познакомимся с некоторыми ключевыми показателями производительности в разд. "Полез11ые метрики" ?давы 10. Понимание ограничений по времени и ресурсам Очень важно понимать, сколько времени у вас есть и какими ресурсами вы распо­ лагаете для реализации проекта, включая денежные средства, опыт и оборудование. Оценить время разработки, как известно, очень сложно, и это особенно актуально для проектов, связанных с ИИ. Из-за итеративного характера разработки ИИ традиционная каскадная модель раз­ работки не подойдет. Вместо этого вам нужно будет понимать и управлять рисками по мере продвижения вперед. Хороший подход- стремиться к тому, чтобы как можно быстрее получить что-то полноценно работающее. Затем вы можете выполнять итерации как для всей системы, так и для отдельных ее компонентов. Ваша самая первая версия может быть прототипом "Волшебник страны Оз", использующим готовое оборудование и простую логику. Вы можете повторить этот процесс, обучив простую модель ML для замены компонента "Вол­ шебник страны Оз", а затем создав собственный дизайн аппаратного обеспечения.
Анализ и формулировка задач 1 231 На каждом этапе процесса необходимо провести сквозное тестирование всей сис­ темы, чтобы определить, соответствует ли она заявленным стандартам производи­ тельности. Преимущество такого подхода заключается в том, что вы не потратите все свое время на один этап проекта, например на обучение модели, и не отведете минимум времени на оставшуюся часть. Еще одно преимущество заключается в том, что иногда выясняется, что более простая система, чем изначально придуман­ ная, будет достаточной для достижения целей по производительности. Мы углубимся в тему планирования, когда перейдем к главе Аппаратное обеспечение - 9. это сложно Проекты, связанные с аппаратным обеспечением, сопряжены с уникальными трудностями, и зачастую важно начать процесс проектирования аппаратного обеспечения на ранних этапах одновременно с работой над программным обес­ печением. Выбрав подходящий процессор, приобретите плату разработки, чтобы как можно скорее приступить к непосредственной работе с оборудованием. Это поможет снизить риск возникновения непредвиденных трений при попытке раз­ вернуть логику на оборудовании. В связи с реалиями цепочки поставок оборудования может оказаться, что вам нужно нажать на кнопку заказа оборудования, прежде чем вы почувствуете пол­ ную уверенность в требованиях вашего приложения. Это один из основных ис­ точников риска, но он может быть неизбежным. Лучше всего с этим справиться, как можно быстрее развернув приложение на каком-либо оборудовании для раз­ работки. Большинство производителей кремния поставляют множество плат раз­ работки именно для этой цели. Если вы особенно переживаете за производительность, может быть полезно вы­ брать оборудование с некоторым избытком мощности. Это даст вам некоторый запас прочности, если требования кода вашего приложения будут недооценены. После того как вы вышли на рынок и доказали, что алгоритм работает, можно разработать вторую, более экономически выгодную, версию. Некоторые линейки процессоров даже "совместимы с платой", т. е. вы можете начать с более мощно­ го процессора, но легко заменить его более дешевой версией без каких-либо из­ менений на печатной плате. Резюме Теперь мы понимаем общий порядок работы, применяемый к проектам ИИ пери­ ферийных устройств, и научились оценивать проблемы и генерировать перспек­ тивные решения. В следующей главе мы перейдем к первой части рабочего процесса ИИ периферий­ ных устройств - сбору эффективного набора данных.

ГЛАВА 7 Как создать набор данных Набор данных - основа любого проекта ИИ периферийных устройств. С большим набором данных любая задача в рабочем процессе становится проще и менее рис­ кованной - от выбора правильного алгоритма до понимания требований к обору­ дованию и оценки реальной производительности. Наборы данных, безусловно, важны для проектов машинного обучения, где данные используются непосредственно для обучения моделей. Однако данные крайне важ­ ны даже в том случае, если ваше приложение для ИИ периферийных устройств не требует машинного обучения. Наборы данных необходимы для выбора эффектив­ ных методов обработки сигналов, разработки эвристических алгоритмов и тестиро­ вания приложений в реальных условиях. Сбор базы данных обычно становится самой сложной, трудоемкой и дорогостоя­ щей частью любого проекта ИИ периферийных устройств. Это также наиболее ве­ роятная область для совершения ужасных, трудно обнаруживаемых ошибок, спо­ собных обречь ваш проект на провал. В этой главе мы познакомимся с лучшими современными практиками создания наборов данных для ИИ периферийных уст­ ройств. Это, пожалуй, самый важный раздел данной книги. Как выглядит набор данных? Каждый набор данных состоит из множества отдельных элементов, называемых записями, каждый из которых содержит один или несколько фрагментов информа­ ции, называемых признаками. Каждый признак может представлять собой совер­ шенно разные типы данных: числа, временнь1е ряды, изображения и текст. Эта структура показана на рис. 7.1. Существует множество различных названий для этих компонентов наборов дан­ ных. Записи принято называть строками, выборками, элементами, примерами или экземплярами. Признаки также известны как столбцы или поля 1 . 1 ИмеАте в виду, что выборки на уровне набора данных - 1то не то же самое, что выборки в произ­ вольном цифровом сигнале. Одна выборка (она же запись) на уровне набора данных может содержать признак, состоящий из нескольких выборок. Как междисциплинарная область, ИИ периферийных устроАств содержит множество таких запутанных терминологических коллизий!
234 Глава 7 Запись ( Признак Признак Признак Рис. 7.1. Число) Временной ряд Изображение ) Набор данных содержит множество записей, каждая из которых может содержать множество признаков. Признаки могут относиться к различным типам данных Многие наборы данных также содержат метки, они представляют собой особый вид признаков, указывающих на желаемый результат модели, обученной на этом наборе данных. Например, класс, полученный классификатором, или ограничи­ вающие рамки, полученные моделью обнаружения объектов. Обычно наборы данных включают в себя так называемые метаданные. Это специ­ альные данные, описывающие сами данные. Например, запись может содержать метаданные, указывающие на точную модель датчика, с помощью которого были собраны ее признаки, точную дату и время получения или частоту дискретизации сигнала, составляющего один из признаков записи. Наборы данных могут храниться по-разному: в файловой системе, в базе данных, в облаке или даже в картотеке и картонных коробках. Структура набора данных часто существенно изменяется в процессе разработки. Эти изменения могут затрагивать само представление записей и признаков. Напри­ мер, представьте, что вы собираете массив данных о вибрации промышленных станков, поскольку хотите обучить классификатор различать разные рабочие со­ стояния. Для начала можно собрать данные за 24 часа с l О различных станков. В этом случае каждая запись представляет собой определенный период времени с конкретного станка. Затем можно разделить эти записи на части, разбив каждую 24-часовую за­ пись на секции, соответствующие различным операционным состояниям, и добавив соответствующие метки. Далее можно провести конструирование признаков каж­ дой записи, создавая дополнительные признаки. Их можно позже использовать в модели машинного обучения.
Как создать набор данных 1 235 Идеальный набор данных Идеальный набор данных обладает следующими свойствами. Актуальность. Ваш набор данных должен содержать информацию, полезную для решения те­ кущей задачи. Например, если вы создаете систему, использующую данные дат­ чика сердечного ритма для оценки спортивных результатов, вам понадобится набор данных, включающий как данные датчика сердечного ритма, так и неко­ торый показатель производительности. Если вы планируете использовать опре­ деленный тип датчика, обычно важно, чтобы набор данных бьm собран с помощью аналогичного устройства. Если вы пытаетесь решить задачу классификации, важно, чтобы ваш набор данных содержал дискриминативную информацию об интересующих вас классах. Репрезентативность. Для того чтобы набор данных был репрезентативным, он должен содержать ин­ формацию обо всех различных типах условий, которые могут встречаться в ре­ альном мире. Например, набор данных, используемый в приложении для мони­ торинга состояния здоровья, должен включать данные достаточно широкого круга лиц, чтобы охватить все различные типы людей, которые могут использо­ вать это приложение. Нерепрезентативные наборы данных приведут к необъек­ тивности, как описано в разд. "Черные ящики и предвзятость" главы 2. Сбалансированность. Идеальные наборы данных не только репрезентативны, но и содержат хороший бшzанс информации по всем соответствующим типам состояний. Многие типы алгоритмов машинного обучения лучше всего работают со сбалансированными наборами данных, в том числе и модели глубокого обучения. Например, в США только 10% - 76% пассажиров добираются на работу на автомобиле, и на велосипеде 2 . Если бы мы обучали модель подсчета транспорт­ ных средств, движущихся по городу, было бы важно использовать раtшое коли­ чество данных по автомобилям и велосипедам, даже несмотря на то, что велоси­ педы меньше всего участвуют в столкновениях. В противном случае модель сможет лучше определять автомобили, чем велосипеды. Это еще один распро­ страненный способ проникновения предвзятостей в вашу систему. Надежность. Идеальный набор данных отличается постоянной точностью. В нем содержится минимум ошибок, а если ошибки и есть, то они равномерно распределены по всем данным, а не сконцентрированы в определенных категориях 3 • Если в ваших данных присутствует шум (что характерно дr1я сенсорных приложений), он дол- 2 3 Со1·ласно исследованию Statista Global Consumer Survey, 2022 (https://oreil.ly/7qzc8). См. разд. "Неравномерное распределение ошибок" далее в этой главе.
Глава 236 7 жен быть того же типа и величины, что и шум, присутствующий в реальных ус­ ловиях. Например, необходимо обучить модель классификации для определения различных жанров музыки, используя набор музыкальных выборок. В нашем наборе данных важно, чтобы каждая выборка была помечена правильным жан­ ром, и чтобы выборки содержали такое же количество фонового шума, как и в реальных условиях. Хорошее форматирование. Одни и те же данные могут быть отформатированы множеством различных спо­ собов. Например, изображения могут быть представлены в бесконечном множе­ стве различных форматов, разрешений и глубины цвета. В идеальном наборе данные отформатированы так, чтобы наилучшим образом соответствовать зада­ чам, для которых вы их используете. По крайней мере, полезно, чтобы набор данных имел единообразное форматирование во всех выборках. Хорошее документирование. Очень важно понимать, откуда взялся набор данных, как он был собран и что означают все его поля. Без этой информации вы не сможете определить, соот­ ветствует ли набор данных вашим требованиям. Например, представьте, что вы хотите использовать набор данных датчиков, полученный из Интернета. Без хо­ рошей документации вы не сможете определить, насколько релевантны дан­ ные - они могут быть получены от датчиков, отличных от тех, что вы собирае­ тесь использовать. Соответствующий размер. Модель машинного обучения может узнать скрытые правила практически лю­ бой системы, если ей предоставить достаточно данных. Например, можно обу­ чить модель для определения различных типов теннисных ударов, используя данные акселерометра. Если набор данных включает только несколько выборок каждого снимка, модель может с трудом выучить общее представление о том, что характеризует каждый из них. Для обобщения может потребоваться больше выборок для каждого типа удара - чем больше, тем лучше. Однако большие наборы данных приводят к увеличению времени обучения, и с ними сложнее ра­ ботать с технической точки зрения. Кроме того, для решения разных задач тре­ буется разное количество данных, поэтому для каждого проекта существует точка убывающей отдачи от сбора дополнительных данных. Ваша цель - со­ брать достаточно данных для решения задачи. Если вы используете набор данных в основном для тестирования (а не для обу­ чения модели), можно обойтись и меньшим размером, но важно, чтобы набор данных бьm достаточно большим и сбалансированным. Как и следовало ожидать, создать набор данных, обладающий всеми этими идеаль­ ными свойствами, непросто. По мере создания набора данных вам, вероятно, при­ дется проделать определенную рабоrу, чтобы придать ему нужную форму.
Как создать набор данных ~ 1 237 Наборы данных для оценки Если для создания и тестирования системы ИИ периферийных устройств в лаборатории требуется один тип наборов данных, то для оценки ее работы в реш,ьных условиях может потребоваться другой. В главе 10 будет пред­ ставлено несколько способов оценки систем ИИ периферийных устройств и описано, как собрать нужные типы данных для решения этой задачи. Каждый проект по созданию ИИ подразумевает перенос знаний и опыта из челове­ ческой головы в компьютерную систему. Большая часть этой работы приходится на процесс создания набора данных. Его нужно проводить с осторожностью, намере­ нием и тщательным рассмотрением. Хорошая новость заключается в том, что если вы все сделаете правильно, то значительно повысите свои шансы на успех. Наборы данных и экспертные знания предметной области Эксперты в определенном домене, также известные как эксперты предметной об­ ласти (subject matter experts, SME), - это люди, обладающие глубокими знаниями о решаемой задаче. Независимо от ниши, есть люди, изучившие, испытавшие и вы­ учившие эту тему досконально. Важно рассматривать экспертизу в вашей предметной области как потенциально отличную от знаний, необходимых для работы с алгоритмами ИИ, обработки сиг­ налов, встроенной инженерии или проектирования аппаратного обеспечения. Хотя эксперт предметной области может обладать навыками и в этих сферах, тот факт, что кто-то является, скажем, экспертом в области машинного обучения, не делает его автоматически квалифицированным разработчиком систем ИИ для решения любых существующих задач. Например, представьте, что вы создаете продукт с ИИ периферийных устройств для рынка здравоохранения. Помимо инженеров по аппаратному и программному обеспечению, а также людей, разбирающихся в создании приложений искусствен­ ного интеллекта4, в вашей команде должны быть эксперты в области медицины, действительно понимающие проблему здравоохранения, которую вы пьrгаетесь решить. В противном случае вы рискуете создать продукт, работающий не так, как ожидалось. Наборы данных и эксперты в предметной области тесно связаны между собой. Ка­ ждый продукт ИИ отражает набор данных, использованных для его разработки, обучения и тестирования. Когда в продуктах используется машинное обучение, ал­ горитмы диктуются непосредственно данными. Но даже вручную созданные алго­ ритмы хороши лишь настолько, насколько хороши данные, используемые для их проверки. 4 В главе 9 мы подробнее поговорим о составе команд, необходимых для создания продуктов с пери­ ферийным ИИ.
Глава 238 7 Это означает, что результаты всего проекта зависят от качества набора данных. Бо­ лее того, единственные люди в вашей организации, обладающие достаточной ква­ лификацией для понимания этого качества, - это ваши эксперты предметной об­ ласти. Их знания о поставленной задаче должны лежать в основе создания и хранения вашего набора данных. Сколько бы талантливых специалистов по науке о данных ни было в вашей команде, их навыки будут излишними без должного по­ нимания поставленной задачи. По сути, ваш набор данных выступает в качестве основного вектора развития экс­ пертизы в области как вашего продукта, так и вашей организации. Поскольку сисrема создается на основе знаний экспертов предметной области, то в итоге получается представление их знаний в цифровой форме вания приложения - почти как интерфейс программиро­ (application programming interface, API), обеспечивающий доступ к их знаниям. Эти закодированные знания будут использоваться остальными членами вашей ко­ манды для создания приложения. Например, инженеры, работающие над вашими алгоритмами, будут использовать набор данных для их настройки или обучения, а те, кто отвечает за тестирование приложения, будут использовать его, чтобы убе­ диться, что оно хорошо работает во всех необходимых ситуациях. Все это делает крайне важным наличие у вас достаточного опыта в данной сфере. Кроме того, поскольку ваши эксперты предметной области не всегда являются экс­ пертами в создании и оценке наборов данных, вам нужно, чтобы они тесно сотру д­ ничали с членами вашей команды, обладающими навыками в сфере науки о дан­ ных. Для создания эффективного набора данных потребуется сотрудничество разных специалистов. Но что делать, если у вас нет доступа к экспертным знаниям в этой области? Оrвет откровенный и, возможно, неприятный. Если ваша команда не обладает достаточ­ ной компетенцией в проблемной области, было бы безответственно пытаться соз­ дать продукт. Вам не хватит не только знаний, чтобы создать эффективный про­ дукт, но и проницательности, чтобы понять, не создали ли вы неэффективный. Данные, этика и ответственный искусственный интеллект Качество вашего набора данных будет определять социальные последствия выпуска приложения больше, чем любой другой фактор. Как бы тщательно вы ни изучали этические вопросы, связанные с создаваемым проектом, и ни разрабатывали прило­ жение, приносящее пользу и в то же время безопасное, ограничения вашего набора данных диктуют вам возможность понять и избежать непреднамеренного вреда. С точки зрения ответственного ИИ, ваш набор данных обеспечивает две основные вещи: ♦ необработанный строительный материал для создаваемой системы алгоритмов; ♦ ваш самый мощный инструмент для понимания производительности системы.
Как создать набор данных Ваш набор данных - 1 239 это единственное детальное представление реальной ситуа­ ции, с которой должна взаимодействовать ваша система. Весь цикл обратной связи при разработке приложений опосредован им. При использовании набора данных с недостатками в качестве необработанного строительного материала вы неизменно и неизбежно столкнетесь с плохой работой системы. Хуже того, эти же недостатки повлияют на вашу способность понять или даже заметить, что система не справля­ ется со своими обязанностями. Это особенно актуально для проектов ИИ периферийных устройств, поскольку из­ за особенностей их развертывания на периферии часто бывает сложно собрать ин­ формацию о том, как они работают в полевых условиях. Ваш набор данных - единственный шанс оценить работу модели с реальной точностью. Учитывая это, очень важно, чтобы вы уделили достаточно времени этой части. Недостаточнь1й объем данных приводит к трагической смерти В разд. "Ответствеююе создание прwюжений" гJ/авы теме беспилотных автомобилей компании Uber, 2 мы узнали о сбое в сис­ приведшем к гибели пешехода. Хотя отказ в работе носил системный характер и был связан с некачественной разработкой процедур и систем безопасности, основная проблема заключалась в отсутствии адекватных данных для обучения. Приведенная далее цитата из статьи электронного издания инцидента (https://oreil.ly/p-zWi) Wired по поводу этого проиллюстрирует ситуацию: Uber, модифицированный внедо­ Volvo ХС90, находился в автономном режиме 19 минут и ехал со скоро­ стью около 40 миль в час, когда сбил 49-летнюю Элейн Херцберг, спешившуюся "В отчете говорится, что автомобиль компании рожник и переходившую дорогу с велосипедом. Радар и лидарные датчики автомобиля обнаружили Херцберг примерно за шесть секунд до аварии: сначала она была идентифицирована как неизвестный объект, затем как автомобиль, а потом как велосипед, каждый раз происходила корректировка ожидания системы относи­ тельно ее траектории движения ... Херцберг, шедшая с велосипедом с пластиковыми пакетами и двигавшаяся пер­ пендикулярно машине, вне пешеходного перехода и в плохо освещенном месте, бросила вызов системе Uber. ,,Это указывает на то, что (а) классификация не все­ гда точна, о чем все мы должны помнить, тестирования Uber, - говорит Раджкумар, - и (б) в ходе скорее всего, не было ни одного или, по крайней мере, не так много изображений пешеходов с таким профилем"". - Аариан Маршалл и Алекс Дэвис, Человеческие существа хороши в так называемом "обучении с нуля" - Wired способ­ ности распознавать и идентифицировать объекты с первого взгляда, основываясь на нашем предыдущем понимании мира. В настоящее время очень сложно соз­ дать системы ИИ, способные на это. Если бы водитель-человек увидел Элейн Херцберг, когда она переходила дорогу, он бы сразу понял, что видит человека, ведущего рядом велосипед, и мог бы немедленно затормозить.
Глава 240 7 В некоторых местах относительно редко можно увидеть человека, переводящего через дорогу велосипед, нагруженный пластиковыми пакетами, поэтому малове­ роятно, что в набор данных Uber для беспилотного вождения попадет много та­ ких случаев. Однако, как мы узнали ранее, идеальный набор данных сбалансиро­ ван - даже если ситуация встречается редко, набор данных все равно будет содержать достаточно примеров, чтобы можно было обучить модель или хотя бы оценить модель и показать, что она неэффективна в данной ситуации. Поскольку алгоритмы беспилотных автомобилей компании Uber не были спо­ собны к обучению с нуля, они полагались на свой набор данных, чтобы узнать о таких ситуациях, как переход дороги Элейн Херцберг. Но поскольку набор дан­ ных был несбалансированным, он не содержал достаточного количества приме­ ров такого типа ситуаций, чтобы модель могла научиться их распознавать. Эта трагедия подчеркивает одну из самых серьезных проблем при создании наборов данных. Реальный мир разнообразен почти до абсурда. Существует практически бесконечное множество людей, велосипедов, пластиковых пакетов, дорог и усло­ вий освещения. Невозможно в наборе данных отразить все возможные комбинации этих объектов. Кроме того, существует так много возможных комбинаций вариаций, что даже экс­ перт предметной области может не знать о некоторых из них. Например, даже если эксперту по городскому движению было поручено определить объекты, необходи­ мые в наборе данных для беспилотного передвижения, он мог и не подумать о том, чтобы включить в него велосипед, нагруженный пластиковыми пакетами. Сведение к минимуму неизвестных Как говорится в печально известной цитате Дональда Рамсфелда, при создании на­ бора данных есть как "известные неизвестные", так и "неизвестные неизвестные". Единственный способ создать эффективный набор данных - свести к минимуму обе эти составляющие. Есть два основных способа сделать это. Первое, и самое эффективное, - ограничить рамки ситуации, с которой будет взаимодействовать ваша модель. Беспилотные системы общего назначения можно считать кошмарным сценарием для создания наборов данных. Беспилотные авто­ мобили должны перемещаться по огромным пространствам беспорядочной реаль­ ности, от городских улиц до проселочных дорог, сталкиваясь практически со всем, что только можно себе представить. Невозможно создать отображающий все это многообразие набор данных. Для сравнения, рассмотрим беспилотную машину для гольфа. Ее область передви­ жения ограничена полем для гольфа. Поскольку вероятность того, что она столк­ нется с велосипедом во время перемещения по дорожкам, невелика, проще создать набор данных, представляющий типичный спектр обстоятельств, встречающихся при обычном ее использовании. В случае с беспилотным автомобилем принцип ог-
Как создать набор данных 1 241 раниченности может побудить вас ограничить эксплуатацию транспортного сред­ ства географической зоной, на которой были обучены его алгоритмы. Второй способ избежать неизвестности - повысить свою компетентность в этой предметной области. Чем больше экспертных знаний о ситуации, тем меньше "не­ известных неизвестных". Если бы компания Uber привлекла более эффективную группу экспертов по городскому транспорту для создания и оценки своего набора данных, то, возможно, удалось бы предотвратить трагедию. На практическом уровне из этой мысли можно вывести четкое правило: никогда не создавайте приложения с ИИ периферийных устройств для реального использова­ ния в сферах, где у вас нет доступа к экспертным знаниям предметных областей. Без экспертизы предметной области поле "неизвестных неизвестных" J-Je имеет гра­ ниц. Почти гарантировано, что мы столкнемся с такими ситуациями. Обеспечение экспертизы предметной области Удивительные инструменты, существующие сегодня для обучения моделей ма­ шинного обучения, значительно снизили барьеры для входа. К сожалению, это склоняет разработчиков на создание приложений в тех областях, в которых они не обладают достаточным знанием предметной области. Во время пандемии COVID-19 тысячи исследователей и инженеров из лучших по­ буждений создавали проекты, направленные на диагностику инфекц~111 с помощью медицинской визуализации. В обзоре 2021 года, опубликованном в журнале Nature Machine Intelligence 5, было выявлено 2212 таких исследований. Из них только 62 прошли проверку качества, и ни одна модель не была рекомендована для потенци­ ального клинического использования. Большинство обнаруженных проблем, скорее всего, можно было бы решить, если бы использовался опыт клинических исследо­ ваний и машинного обучения. Система рецензирования в научных кругах обеспечивает механизм анализа и кри­ тики попыток решения задач с помощью ИИ. Однако в промышленности такой системы нет. Модели развертываются внутри систем типа "черный ящик", без со­ проводительной документации, и им разрешается взаимодействовать с системами реального мира неопосредованно и без контроля. Это значительно увеличивает ве­ роятность того, что катастрофическая проблема может попасть в производство. На тех из нас, кто работает в области ИИ периферийных устройств, лежит большая ответственность за создание систем обеспечения надлежащего качества как внутри организации, так и в рамках сотрудничества между организациями. Любая серьез­ ная работа должна основываться на внимании к качеству наборов данных и соот­ ветствующему внедрению знаний о предметной области. 5 Робертс М. и др. "Распространенные ошибки и рекомендации по использованию машинного обуче­ ния для выявления и прогнозирования COVID-19 с помощью рентгенограмм грудной к.1етки и (Roberts М. et al. Common Pitfalls and Recommendations t'or Using Machine Learning to Detect and Prognosticate for COVJD-19 Using Chest Radiographs and СТ Scans // Nat. Mach. Intell. 2021. -№ 3. - Р. 199---217 (https://doi.org/10.1038/s42256-021-00307-0). компьютерной томографии"
242 Глава 7 Датацентричное машинное обучение Традиционно специалисты по машинному обучению сосредоточены на выборе наилучшей комбинации конструирования признаков и алгоритма обучения для достижения высоких результатов при решении конкретной задачи. В этой системе наборы данных считаются фиксированными элементами - они редко подвергают­ ся каким-либо манипуляциям, кроме базовой очистки. Они служат исходным мате­ риалом и эталоном правильности, но не считаются чем-то, что нужно настраивать и подстраивать. В последние годы специалисты все чаще признают, что наборы данных не следует рассматривать как статичные объекты. Состав набора данных сильно влияет на производительность моделей, обучаемых с его помощью, и практикующие специа­ листы начали модифицировать наборы данных, чтобы добиться лучшей производи­ тельности при решении задач. Этот новый способ мышления называют "датацентричным машинным обучением". При датацентричном рабочем процессе больше внимания уделяется улучшению качества наборов данных, а не улучшению параметров алгоритмов. Датацентричное ML следует извечному принципу вычислений "мусор на (garbage in, garbage out, GIGO; hUps://oreil.ly/NJ8l2) - мусор на выходе" входе - идее о том, что неразумно ожидать от компьютерной программы правильных решений, если ей предоставляются некачественные исходные данные. Датацентричные рабочие процессы и инструменты помогают разработчикам понять качество своих данных и устранить проблемы в них. Это может включать в себя: ♦ исправление или удаление неправильно помеченных выборок; ♦ удаление выбросов; ♦ добавление конкретных данных для улучшения представления; ♦ повторная выборка данных для улучшения баланса; ♦ добавление и удаление данных для учета дрейфа. Важно признать, что все эти задачи требуют знания предметной области. В неко­ тором смысле переход к датацентричному ML - это признание важности знаний о предметной области для получения удовлетворительных результатов от систем машинного обучения. -- Дрейф - это идея о том, что реальный мир меняется со временем. Наборы данных и модели должны постоянно обновляться для учета этих измене­ ний. Мы подробно рассмотрим дрейф позже в этой главе. При датацентричном подходе наборы данных рассматриваются как "живые" сущ­ ности, требующие регулярной поддержки. Она целесообразна, поскольку это по­ зволяет сократить объем работы алгоритма, необходимый для обучения эффектив­ ной модели, и уменьшить объем требуемых данных. Высококачественные наборы
Как создать набор данных 1 243 данных с меньшим количеством выборок часто превосходят низкокачественные наборы данных с большим количеством выборок. У спешные реальные проекты часто сочетают в себе датацентричный подход и со­ временные инструменты, автоматизирующие поиск эффективных параметров алго­ ритмов (например, системы машинное обучение (AutoML)" AutoML, главы 5). описанные в разд. ''Автоматизированное При наличии высококачественных данных эти инструменты могут отлично справляться с исследованием пространства дизай­ на и созданием эффективных моделей. Именно такой подход рекомендуется в этой книге. Он позволяет экспертам пред­ метной области сосредоточиться на данных, отражающих их компетенцию, а всю работу по настройке алгоритмов передать автоматизированной системе. Эти авто­ матизированные системы опираются на высококачественные данные, чтобы оце­ нить модели и выбрать лучшую из них для решения той или иной задачи. Уделяя внимание качеству наборов данных, разработчики одновременно улучшают как исходные данные для системы, так и механизм их оценки. Оценка требований к данным Самый распространенный вопрос, который задают люди на начальных этапах рабо­ ты над проектом ИИ периферийных устройств: "Сколько данных мне нужно?" К сожалению, ответить на него не так-то просто. Требования к данным сильно разли­ чаются от проекта к проекту. Как правило, требования к данным для проектов машинного обучения гораздо вы­ ше, чем для систем, опирающихся только на обработку сигналов, эвристику и дру­ гие алгоритмы, созданные вручную. В этих случаях вы будете использовать данные в основном для тестирования, поэтому вам не понадобится огромное количество примеров для каждого типа условий, требующихся многим алгоритмам машинного обучения. Хотя вам все равно понадобится достаточное количество данных, чтобы гарантировать их репрезентативность. Лучший способ узнать, какие данные нужны для решения той или иной задачи, - найти прецеденты. Есть ли примеры решения подобных задач, позволяющие по­ нять, какой объем данных требуется? Интернет - ваш лучший друг в этом вопросе. Быстрый поиск позволит найти на­ учные статьи, бенчмарки, проекты с открытым исходным кодом и записи в техни­ ческих блогах, предоставляющие множество полезной информации. Например, на веб-сайте Papers with Code (bttps://oreil.ly/P8opj) есть раздел "State-of-the-Art". В нем перечислены эталонные наборы данных для различных задач и производитель­ ность, достигнутая на них с течением времени. При разработке приложения для поиска ключевых слов можно взглянуть на резуль­ таты по набору данных Google Speech Commands (https://oreil.ly/OuLiV) - на мо­ мент написания книги он был решен с точностью 98,37%. Если покопаться в самом наборе данных (https://oreil.ly/gLy_i), можно узнать, что задача состоит в класси­ фикации по I О ключевым словам, и что в наборе содержится 1,5--4 тыс. высказыва-
244 Глава 7 ний с каждым ключевым словом. Если наша задача достаточно похожа, то эти по­ казатели дадут нам ориентировочное представление о том, сколько данных может понадобиться в работе. Еще одна хорошая идея - изучить в вашей предметной области инструменты, спе­ циально созданные для работы с минимальными данными. Модели глубокого обу­ чения могут быть особенно требовательны к объему данных: есть ли классические альтернативы ML, подходящие для вашего случая? Если для решения вашей задачи требуется глубокое обучение, существуют ли предварительно обученные инстру­ менты для извлечения признаков? Они могут подойти для вашего случая при ис­ пользовании трансферного обучения, или вы можете обучить один из них, исполь­ зуя существующий набор данных. Например, в области поиска ключевых слов в работе "Быстрый поиск ключевых слов на любом языке" (Mazumder М. et а\. Few-Shot Keyword Spotting in Any Language (2021 ); https://oreil.ly/3conT) исследователей из Гарварда приводятся до­ казательства того, что модель поиска ключевых слов может быть обучена всего на пяти примерах ключевого слова, а также со значительно большим набором данных для проверки ее эффективности. В табл. 7.1 приведено представление о том, какой объем данных требуется при обучении моделей машинного обучения для некоторых распространенных задач. Таблица Задача 7.1. Требования к данным Д11Я выполнения распространенных задач Относительные Примечании требовании к данным Классификация вре- Низкие меннь1х рядов Регрессия временнь1х ной работы, облегчая обучение Средние Это более сложная задача, чем классификация, из-за более детализированных меток рядов Классификация нере- DSP может выполнить большую часть слож- Средние Для учета разнообразия фонового шума и акустики окружающей среды требуются чевых аудиозаписей различные данные Классификация голо- Низкие или Обычно это требовало многочасового сбора совых аудиозаписей высокие данных, но новые few-shot-мeтoды сокращают этот процесс Классификация изо- Низкие Трансферное обучение с использованием мо- бражений в видимом делей, обученных на открытых наборах дан- спектре ных, делает эту задачу относительно простой Обнаружение объек- Средние Модели зрения Д11Я невидимого спектра Можно использовать трансферное обучение, но это сложнее, чем классификация тов в видимом спектре Высокие Трансферное обучение, как правило, недоступно, что увеличивает требования к данным
Как создать набор данных 1 245 Важно помнить, что даже эти относительные требования весьма приблизитель­ ны - они могут сильно варьироваться от проекта к проекту, поэтому сложно на­ звать точные значения. Требования к данным будут меняться по мере появления новых инструментов и технологий. Чем более распространена задача, тем больше вероятность того, что существуют методы обработки сигналов или обучения, помо­ гающие снизить требования к данным. Самые большие массивы данных в машинном обучении - это гигантские тексто­ вые массивы, используемые для обучения языковых моделей с нуля. Обычно это не является обязательной задачей при разработке ИИ периферийных устройств, что лимитирует верхние границы необходимых наборов данных. Практический рабочий процесс для оценки потребностей в данных После того как мы провели первоначальное исследование, следующий шаг - тать инструменты и начать экспериментировать. Наша основная задача понять, - дос­ сможет ли выбранная нами система конструирования признаков и машинного обу­ чения при наличии достаточного количества данных достичь приемлемо высоких результатов. Эта задача естественным образом оказывается частью итеративного подхода к раз­ работке приложений, и его мы более подробно рассмотрим в главе 9. Сейчас мы рассмотрим соответствующие задачи на высоком уровне. Определение того, что значит "приемлемо хорошие результаты" для наше­ го проекта,- важный шаг. Он будет рассмотрен в разд. "Определение масштабарешенил" главы 8. Приведем основной процесс оценки потребностей в данных: 1. Соберите и уточните небольшой набор данных. Для того чтобы эффективно провести оценку требований к данным, этот набор данных должен отвечать всем требованиям идеального набора данных, описанным ранее в этой главе, помимо того, что он должен быть соответствующего размера. Остальная часть этой гла­ вы поможет вам разобраться в процессах, необходимых для приведения его в надлежащее состояние. 2. На основе изучения возможных типов моделей выберите модель-кандидата. Лучше всего начать с самой простой и разумной на первый взгляд модели, по­ скольку простые модели обычно легче всего обучать. Не попадаf.tте в ловушку, когда хотите попробовать новую технологию, не исключив простые и отличные альтернативы. 3. Разделите набор данных на несколько одинаковых по размеру фрагментов. Ба­ ланс и распределение данных в каждом фрагменте должны быть аналогичны ис-
Глава 246 7 ходному набору данных. Для этого следует использовать стратифицированную случайную выборку6. Начните примерно с восьми фрагментов. 4. Обучите простую модель на одном фрагменте набора данных и запишите полу­ ченные показатели производительности. Для того чтобы исключить влияние вы­ бора гиперпараметров, может быть полезно использовать инструмент оптимиза­ ции гиперпараметров, обуче11ие как описано в разд. "Автоматизированное машинное (AutoML)" главы 5. 5. Добавьте еще один фрагмент к обучающим данным, теперь их станет два. Обу­ чите ту же модель снова, с нуля (продолжая использовать оптимизацию гипер­ параметров, если вы решили прибегнуть к ее помощи), и снова запишите метрики. 6. Продолжайте этот процесс, добавляя фрагменты данных, обучая модель и соби­ рая показатели производительности, пока не исчерпаете весь набор данных . 7. Нанесите показатели производительности на график. Он будет похож на одну из диаграмм на рис. 7.2. 80% 80% 60% .е u о :,: ... 60% .а ~ 40% 40% :,: :r .о :r .о 20% 20% 0% 0% 2000 4000 6000 8000 2000 Количество записей Рис. 4000 6000 8000 Количество записей 7.2. Каждый график показывает, как меняется показатель производительности (в данном случае точность) в зависимости от количества записей. На графике слева показана ситуация, когда добавление большего количества данных, скорее всего, приведет к улучшению производительности. График справа показывает плато: добавление большего количества данных того же типа вряд ли приведет к значительному повышению производительности На обоих графиках видно, что производительность модели растет с каждым разом, когда мы добавляем больше данных. Посмотрев на форму кривой, можно понять, какое влияние оказывают новые выборки. На левом графике кривая показывает, что производительность, скорее всего, продолжит расти , если мы добавим больше данных. Линия тренда позволяет приблизительно оценить, сколько данных потре­ буется для достижения заданной производительности. На правом графике видно, что модель уже достигла плато производительности. До­ бавление большего количества данных одного и того же типа вряд ли даст какой­ либо эффект. В этом случае, возможно, стоит протестировать другую модель ма­ шинного обучения или алгоритм либо попробовать усовершенствовать конструи- 6 Этот термин объясняется в разд. "Как разделить данные ? " далее в этой главе .
Как создать набор данных 1 247 рование признаков. Попробуйте рассмотреть возможность улучшения набора дан­ ных не только за счет увеличения его размера - вероятно, он содержит много шу­ ма, который можно уменьшить. Конечно, эта техника полностью зависит от предположения, что набор данных яв­ ляется "идеальным". В реальности, скорее всего, существуют проблемы с набором данных и ограничения в процессах конструирования признаков и создания алго­ ритмов машинного обучения. Эти сложности не позволяют реальным показателям совпадать с линией тренда по мере добавления данных. Однако получить прибли­ зительную цифру все равно полезно - это поможет вам скоординировать усилия по сбору дополнительных данных. Этот метод не позволит определить, является ли ваш набор данных репрезентатив­ ным, сбалансированным или надежным. Эти его свойства зависят только от вас. Получение данных Значительная часть проблем, связанных с созданием высококачественных наборов данных, заключается в поиске самих данных. Приведем некоторые типичные спо­ собы получения данных 7 : 1. Сбор совершенно нового набора данных с нуля. 2. Передача процесса сбора данных другой команде или третьей стороне. 3. Использование данных из общедоступного набора данных. 4. Использование существующих данных, полученных от коллег или партнеров по сотрудничеству. 5. Повторное использование существующих данных из внутреннего хранилища данных. 6. Использование данных предыдущего успешного проекта ИИ. Как видите, существует целый ряд возможных вариантов. Однако маловероятно, что все они будут доступны для конкретного проекта. Например, если это ваш пер­ вый проект ИИ периферийных устройств, у вас может не быть никаких сущест­ вующих данных для повторного использования. Каждый из этих источников представляет собой компромисс между двумя важны­ ми аспектами: риском возникновения проблем с качеством и трудозатратами (что выражается в стоимости). На рис. 7.3 показано сравнение этих рисков. Чем больше вы контролируете процесс сбора данных, тем лучше можете гаранти­ ровать качество. Безусловно, лучшим вариантом является возможность повторного применения данных, успешно использовавшихся ранее (6). Если вам посчастливи­ лось воспользоваться этим вариантом, вы уже будете уверены в качестве данных, и 7 Кроме того. можно объединить данные из двух или более источников.
Глава 248 7 вам не придется прилагать много усилий для их повторного использования, но только до тех пор, пока они остаются актуальными. ~ 34 2 Риск возникновения проблем с качеством 5 1 6 ~ ~ Трудозатраты и стоимость Рис. 7.3. Источники данных организованы по риску возникновения проблем с качеством и трудозатратам/стоимости Довольно часто организации владеют хранилищами данных, доступных для много­ кратного использования при разработке проектов на основе ИИ (5). В таких случа­ ях потенциально можно понять качество данных, поскольку они были собраны внутри комr1ании. Однако может потребоваться немного трудовых затрат, чтобы привести их в форму, необходимую для вашего проекта ИИ. Например, производи­ тель может уже собирать данные о станках с помощью существующей системы loT. В этом случае известны происхождение данных и методы их сбора, что помогает снизить риск. Однако данные могут быть не в готовом к использованию виде и, скорее всего, потребуют некоторой очистки. Существующие данные часто не со­ держат меток, поскольку их добавление может требовать больших затрат. Часто данные могут быть получены от партнерской организации или компаньонов (4). В этом случае, поскольку данные собирал кто-то другой, невозможно гаранти­ ровать их качество, и, для того чтобы сделать их пригодными для использования, может потребоваться некоторая очистка. То же самое можно сказать и о общедоступных наборах данных (3)- их обычно используют для академических исследований. Преимущество общедоступных на­ боров данных в том, что их изучает множество людей, и в них могут быть полезные эталоны, но, как правило, они либо собраны из низкокачественных источников данных и содержат много ошибок, либо очень малы. Для их использования может потребоваться значительная очистка, и такие наборы могут содержать необъектив­ ные данные, что может быть не задокументировано или неочевидно 8 . Можно передать сбор данных другой команде в вашей организации или третьей стороне 8 (2) - существуют целые компании, помогающие собирать и помечать Тем не менее даже грязные общедоступные наборы данных могут быть полезны для оценки алгорит­ - они могут стать хорошим источником интересных угловых (патологических) случаев. :-.tов
Как создать набор данных 1 249 данные. Хотя теоретически у вас будет значительный контроль над процессом сбо­ ра данных, это все же может быть сопряжено со значительным риском, поскольку очень трудно гарантировать, что третья сторона будет следовать правильным про­ цедурам. Чаще всего это дорогостоящий подход. Подход с наименьшим риском заключается в том, чтобы запачкать руки и собрать данные самостоятельно (1). Когда в роли разрабатывающих набор данных и алго­ ритмы и руководящих работой по сбору данных выступают одни и те же люди, риск недопонимания или незамеченной ошибки сводится к минимуму (при усло­ вии, что они обладают необходимыми знаниями в данной области, чтобы выпол­ нить работу правильно). К сожалению, это и самый дорогостоящий подход. Преодоление ограничений даннь1х Часто бывает сложно получить достаточное количество данных. Если вы столк­ нулись с нехваткой данных, хороший способ активировать свой прогресс разра­ ботки - определить, может ли более простой подход к решению задачи все еще работать. Например, представьте, что вы создаете систему предиктивного обслуживания для производственной линии. Ваша первоначальная цель может заключаться в определении вероятности возникновения конкретного сбоя в ближайшее время, чтобы можно было запланировать упреждающее устранение неполадок. При начале разработки может оказаться, что данные, показывающих конкретные интересующие вас сбои, отсутствуют, а у вас нет бюджета на их сбор. Не стоит сразу отказываться от проекта, можно изменить свои цели. Вместо того чтобы предсказывать, когда ожидать конкретный сбой, вы можете создать более общую систему, определяющую, когда произошло какое-либо из­ менение. Эту систему можно обучить на номинальных данных, которые, воз­ можно, легче собрать. Такая более общая система может давать больше ложных срабатываний, но в за­ висимости от ситуации она все равно поможет решить проблему обслуживания и сократить расходы в целом. Упростив свои цели, можно уменьшить количество требуемых данных и сделать проект осуществимым. Уникальные проблемы сбора данных на периферии Чем более распространен вариант использования, тем больше вероятность того, что вы найдете легкодоступный набор данных, прошедший проверку на качество. Эrо усложняет жизнь многим периферийным приложениям, поскольку существует ог­ ромное разнообразие нишевых сценариев использования и необычных датчиков. Кроме того, коммерческие организации не склонны делиться своими наборами данных, поскольку они представляют собой потенциальное конкурентное преиму­ щество.
250 Глава 7 Если вам нужно собрать собственные данные, придется решать некоторые специ­ фические задачи. Возможность подключения и пропускная способность. Граничные вычисления часто используются в приложениях, где пропускная спо­ собность и возможности подключения лимитированы. Эrо означает, что сбор данных в полевых условиях может быть затруднен. Например, если вы создаете камеру с ИИ для наблюдения за передвижением домашнего скота, вам может по­ требоваться собирать изображения животных с поля. Однако это может оказаться не реализуемым из-за удаленного расположения многих ферм и отсутствия связи. Для того чтобы обойти :эту проблему, можно временно установить сетевое обо­ рудование на месте (например, в удаленных регионах может использоваться спутниковая связь) или применить возможности sneakernet9 . Эrо очень дорого, но может потребоваться лишь на время, в начале проекта. Существующее аппаратное обеспечение. Из разд. "Новые и существующие проекты" главы 2 мы узнали, что довольно часто приложения ИИ периферийных устройств развертываются на сущест­ вующем оборудовании. К сожалению, аппаратное обеспечение не всегда разра­ батывалось с учетом особенностей сбора данных. Для успешного сбора данных существующей аппаратуре необходимо иметь в достаточном количестве и объе­ ме: памяти для хранения выборок, сетевых возможностей для их загрузки, энер­ гии, чтобы этот процесс происходил часто. Для того чтобы решить эту проблему, возможно, имеет смысл временно уста­ новить на месте новое оборудование, лучше подходящее для сбора данных. Для этого существуют (https://oreil.ly/3qfG1), специальные промышленные регистраторы данных а также платформы для быстрой разработки мышленного класса, такие как IoT про­ Arduino Pro (https://www.arduino.cc/pro), кото­ рые могут быть удобны в использовании. Новое аппаратное обеспечение. Если проект ИИ периферийных устройств предполагает создание нового аппа­ ратного обеспечения, рабочее оборудование, скорее всего, будет доступно толь­ ко через некоторое время. Эrо может стать серьезной проблемой, поскольку важно добиваться прогресса в разработке наборов данных и алгоритмов парал­ лельно с процессом развития системы нового аппаратного обеспечения. Сложно даже определить, какое оборудование потребуется, пока не будут разработаны хотя бы некоторые алгоритмы. В этом случае важно постараться получить репрезентативные данные как можно быстрее. Как и в случае с существующим оборудованием, имеет смысл исполь­ зовать платформу быстрой разработки loT, чтобы начать сбор данных еще до того, как будет готово производственное аппаратное обеспечение. 9 Вековая практика передачи данных путем переноса устройства хранения из одного места в другое. Wikipedia (https://oreil.ly/gqKle) или на Рувики (https://ru.ruwiki.ru/ Посмотрите эту статью на wiki/Флоппинет).
Как создать набор данных 1 251 Различия датчиков. Иногда имеющееся в настоящее время оборудование по части датчиков может не совпадать с планируемым набором датчиков в новом устройстве. В некото­ рых случаях даже место размещения датчика может привести к изменениям, влекущим проблемы. Если есть подозрения, что различия в датчиках могут стать проблемой, вам сле­ дует попытаться как можно раньше сопоставить данные датчиков и определить, достаточно ли они отличаются, чтобы создать проблему. Если это так, вы може­ те использовать подход, рекомендованный для работы с неподходящим сущест­ вующим оборудованием. Создание меток данных. Одной из самых больших проблем при работе с данными ИИ периферийных устройств является доступность меток. Например, представьте, что вы собираете данные акселерометра с ушной бирки домашней живности с целью классифика­ ции того, как оно проводит свое время между приемом пищи, прогулкой и сном. Даже в ситуации, когда сбор необработанных данных с датчиков тривиален, может оказаться сложной задачей соотнести эти данные с фактической активно­ стью животного. Если бы вы уже могли определить активность животного, ис­ пользуя эти данные, в вашем проекте не было бы необходимости! Для того чтобы обойти эту проблему, можно попытаться собрать дополнитель­ ные данные, недоступные при нормальной работе проектируемого вами устрой­ ства. Например, во время первоначального сбора данных вы можете собирать и данные акселерометра, и видео с камеры, показывающей активность животного, с отметками времени для обоих датчиков. Затем вы можете использовать видео в качестве вспомогательного средства при создании меток данных. Синтетические данные В зависимости от ваших задач- можно добавить синтетические данные в общий набор данных. Такие данные создаются искусственно, а не фиксируются обыч­ ным способом. Если они будут достаточно реалистичными, это может помочь вам удовлетворить требования к данным. Приведем некоторые типы синтетических данных: • на основе моделирования (например, временнь,е ряды от виртуальных датчи­ ков в физическом моделировании машины); • процедурные (например, алгоритмически сгенерированное аудио, предназна­ ченное для имитации шума окружающей среды); • генерируемые изображения (например, реалистичные 3D-рендеры или изо­ бражения, полученные непосредственно с помощью сложных моделей глубо­ кого обучения). Синтетические данные обычно помогают расширить набор данных, содержащий реальные данные. Например, искусственно созданный фоновый шум может быть
252 Глава 7 смешан с реальным полученным звуком, чтобы помочь обучить классификатор различать фоновый шум и человеческую речь. Концепция обучения модели на полностью искусственных данных, а затем при­ менения ее для решения реальных задач известна как Sim2Real 10 • Эта задача счи­ тается одной из самых важных и сложных в робототехнике и стала областью по­ стоянных исследований. Существуют различные программные инструменты, предназначенные для созда­ ния синтетических данных, но вы можете создать и собственные с привлечением эксперта в необходимой предметной области. На момент написания книги инст­ рументы для создания искусственных данных быстро совершенствовались и бы­ ли доступны на коммерческой основе. Хранение и извлечение данных Для сбора данных вам потребуется место для их хранения. Вам также понадобится механизм для передачи данных с устройств в хранилище данных, а из него - в ин­ фраструктуру обучения и тестирования. Требования к хранению данных сильно различаются в зависимости от того, какой объем данных вы ожидаете поместить в набор. Чем больше у вас данных, тем более сложным должно быть ваше решение. При этом наборы данных ИИ периферийных устройств, как правило, относительно невелики и вряд ли потребуют технологий, рассчитанных на работу в огромных масштабах. При выборе решения всегда предпочтительнее остановиться на самом простом из возможных. Если вы имеете дело с таким объемом данных, который вполне может уместиться на одной рабочей станции, нет необходимости вкладывать средства в модные технологии. Чем больше прямого доступа к данным для удобства исследо­ вания и экспериментов, тем лучше, поэтому с точки зрения удобства идеальным вариантом всегда считается локальная файловая система. Формы данных Данные, как правило, хранятся в разных местах инфраструктуры организации. Список типичных местоположений (возможно, вы сними сталкивались, а воз­ можно, и нет) включает: • производственные базы данных • базы данных временнь1х рядов; • файлы журналов; • озера данных; '0 SQL; В проектах Sim2Real синтетические данные используются для обучения, а реальные - рования. для тести­
Как создать набор данных • • • 1 253 хранилища данных; облачные сервисы; платформы loT. Совершенно нормально, если данные будут находиться в разных хранилищах, чтобы стать частью вашего набора данных. Например, вам может быть удобно хранить необработанные данные датчиков в одном месте, очищенные гом, а метки данных - - в дру­ в совершенно отдельном хранилище. Когда вы создаете набор данных для проекта ИИ, вам обычно нужно собрать данные из всех этих разрозненных локаций в одном месте. Вам также нужно будет переформатировать данные, чтобы они были совместимы с форматами, которые ожидаются от инструментов, обычно используемых для разработки алгоритмов обработки сигналов и искусственного интеллекта: программное обеспечение на базе Python, такое как библиотеки NumPy, pandas, scikit-learn, TensorFlow и PyTorch, а также инженерное программное обеспечение, такое как МА TLAB (см. главу 5). Хотя единого стандарта не существует, обычно ожидается, что для этих инстру­ ментов данные будут храниться в простых, эффективных и основанных на фай­ ловой системе форматах. Даже если обучение проводится в огромных масшта­ бах, в сложной распределенной инфраструктуре, сами данные обычно хранятся на диске относительно простым способом. Таким образом, вы должны создать конвейер для извлечения данных из храни­ лищ данных вашей организации и преобразования их в простой формат для обу­ чения и оценки. О том, как это сделать, мы узнаем позже. В табл. 7.2 приведены краткие сведения о различных решениях для хранения дан­ ных, а также преимущества и недостатки каждого из них. Таблица 7.2. Решения для хранения данных Недостатки Тип хранилища Преимущества Локальная фай- Быстро, просто и легко работать Без API, без резервного копи- рования, без распределенного ловая система обучения; верхний предел - несколько терабайт Сетевая или Доступность для множества машин; Медленнее, чем локальная облачная файло- возможность хранения огромных файловая система; сложная в вая система массивов данных наладке работы APJ для Облачное Простые объектное данных; огромный масштаб хранилище чтения и записи Для использования необходимо загрузить данные
Глава 254 7 Таблица 7.2 (окончание) Тип хранилища Преимущества Недостатки Хранилище Данные можно версионировать Для использования данные признаков и отслеживать; можно хранить мета- должны быть загружены; данные; можно запрашивать данные это сложнее и дороже, чем простое хранение Комплексная Разработана специально для ИИ пери- Дороже, чем простое платформа ферийных устройств; встроенные инст- хранилище рументы исследования данных; тесная интеграция с процессами сбора, обучения и тестирования данных Данные, хранящиеся в локальной файловой системе, невероятно удобны в исполь­ зовании, и доступ к ним осуществляется очень быстро. Даже при использовании сложных облачных хранилищ данные обычно копируются в локальную файловую систему перед обучением модели. Однако хранить все ценные данные на одной машине без резервного копирования очень рискованно. Кроме того, это неудобно, если доступ к данным должен быть у нескольких человек. Сетевые ресурсы, включая облачные файловые системы, такие как Google Cloud Filestore, решают эту проблему. Однако сложен они должны быть смонтированы как диски в Amazon FSx, Azure Files доступ к ним достаточно и операционной системе. Облачные сервисы хранения объектов Cloud Storage - - Amazon SЗ, Azure Blob Storage и Google предоставляют НТТР-интерфейсы, значительно упрощающие ввод и вывод данных. Эти API могут использоваться даже встраиваемыми устройствами для загрузки данных с периферии, при условии, что аппаратное обеспечение обла­ дает достаточными возможностями. Однако в этом случае скорость доступа будет ниже, чем при монтировании дисков, поэтому перед использованием данные обыч­ но загружаются на локальный диск. Хранилища признаков (feature store)- относительно новое направление в хране­ нии наборов данных. Они предназначены для предоставления простых API для доступа к данным и их хранения, а также дополнительных функций, таких как вер­ сионирование данных и возможность запросов к ним. Предложения на рынке хра­ нилищ Amazon признаков представлены крупнейшими поставщиками SageMaker Feature Store, Azure Databricks Feature Store и Google Cloud Vertex AI Feature Store. Существуют также аналоги с открытым исходным кодом, которые можно разместить на собственной инфраструктуре, например Feast. В настоящее время существует несколько комплексных платформ, разработанных специально для создания приложений с ИИ периферийных устройств. Некоторые из них содержат собственные решения для хранения данных. Как правило, они эк­ вивалентны хранилищам признаков, но с тем преимуществом, что разработаны специально для проектов ИИ периферийных устройств. Они могут включать инст-
Как создать набор данных 1 255 рументы для изучения и понимания данных датчиков или обеспечивать интегра­ цию с инструментами разработки встроенного программного обеспечения. Они предназначены для тесной интеграции с другими этапами рабочего процесса глу­ бокого обучения. Подробнее об этих инструментах мы узнали в разд. ''Арсенал ин­ струментов" главы 5. Версионирование даннь1х В современной программной инженерии предполагается, что весь исходный код версионирован или разделен по версиям - он существует в системе, которая от­ слеживает, как он изменяется с течением времени. Важно знать, какая версия ко­ да развернута в производстве или на конкретном встраиваемом устройстве, что­ бы можно было отследить проблемы до их источника. Помимо кода, системы машинного обучения строятся на основе наборов данных. Это означает, что имеет смысл определять и версии данных. Средства версиониро­ вания данных позволяют фиксировать, какие данные использовались для обучения той или иной модели. Они также помогут понять, откуда взялись ваши данные, что позволит отследить проблемы в производстве до отдельных выборок данных. Версионирование данных - это мощный инструмент для датацентричного ML, поскольку он позволяет тестировать различные версии набора данных и пони­ мать, какая из них лучше работает на практике. Это часть практики операций машинного обучения, описанной в разд. "Операции машинного обучения главы (MLOps)" 5. Помещение данных в хранилища Если вы собираете данные с датчиков для проекта, как их поместить в хранилище данных? Ответ зависит от ваших конкретных обстоятельств. Хорошая связь на территории размещения датчиков. Если у вас достаточно возможностей для подключения, пропускной способности и энергии для отправки данных непосредственно с периферии, можно переда­ вать данные прямо в API с периферийных устройств. Это проще всего сделать, если вы используете комплексную платформу для ИИ периферийных устройств, которая содержит API, разработанные специально для применения на устройствах. Еще один хороший вариант- использовать lоТ-платформу. Вы можете загру­ жать данные на платформу с помощью специально разработанных API, а затем задействовать другую систему для копирования данных с lоТ-платформы в свой набор данных. Как правило, не стоит пытаться загружать данные непосредственно в облачное хранилище объектов со встроенного устройства. Поскольку API не бьти разра­ ботаны для применения со встроенными устройствами, они, как правило, ис­ пользуют неэффективные структуры данных, а их клиентские библиотеки могут не поместиться на небольших объектах. Это не так важно при работе со встро-
Глава 256 7 енными Linuх-устройствами, имеющим и больше возможностей и доступ к пол­ ноценной ОС. Плохое WIU полное отсутствие связи 11а территории размещения датчиков. Если у вас нет достойной связи или не хватает энергии для отправки данных с самой периферии сети, возможно, придется установить оборудование, позво­ ляющее хранить данные на периферии и периодически собирать их. Это может означать модификацию существующего оборудования для добавле­ ния хранилища данных либо говорить о добавлении еще одной независимой системы, расположенной поблизости и способной получать и хранить данные от устройства, которое их генерирует. Эта отдельная система может быть оснащена более совершенной связью, или данные с нее можно периодически получать фи­ зическим способом. Сбор метаданных Ранее упоминалось, что идеальный набор данных хорошо документирован. Разра­ батывая систему сбора данных, не забудьте получить как можно больше информа­ ции о контексте сбора данных. Эта дополнительная информация, известная как метаданные, может быть включена в ваш набор данных наряду с самими данными с датчика. Она может включать та­ кую информацию, как: ♦ дата и время, когда были получены данные; ♦ конкретное устройство, с помощью которого были собраны данные; ♦ точная модель используемых датчиков; ♦ расположение устройства на месте сбора данных; ♦ любые люди, участвовавшие в сборе данных. Метаданные могут относиться ко всему набору данных, к любому подмножеству его записей или к отдельным записям. В статье "Таблицы данных для наборов дан­ ных" (Gebru Т. et а\. Datasheets for Datasets (2018); https://oreil.ly/8cFlt) определен стандарт для сбора документации, описывающей набор данных в целом, а также подмножества его записей. Хотя это очень ценно и должно считаться лучшей прак­ тикой, сбор метаданных в более структурированном, подробном и машиночитае­ мом виде имеет большие преимущества. Во многих случаях вы будете собирать выборки данных, относящихся к отдельным сущностям. Например, вы можете отслеживать вибрации конкретного станка, за­ хватывать образцы ключевых слов, произносимых конкретными людьми, или реги­ стрировать данные о биосигналах отдельной домашней живности. В таких случаях очень важно получить как можно больше релевантных метаданных о каждой отдельной сущности. В случае со станком вы можете получить данные о: ♦ точной марке и модели; ♦ производственном цикле станка;
Как создать набор данных ♦ 1 257 месте установки станка; ♦ работе, для которой используется станок. Если речь идет о человеке, произносящем ключевые слова, вы можете попытаться уловить все возможные влияющие на его голос свойства. Например: ♦ физические характеристики, такие как возраст, пол или медицинские показания; ♦ культурные особенности, такие как акцент, раса или национальность; ♦ личные характеристики, такие как профессия или уровень дохода. Необходимо прикрепить эти метаданные к соответствующим выборкам. Это позво­ лит вам разделить набор данных на подгруппы в соответствии с метаданными. Вы можете использовать эту способность для глубокого понимания двух вещей: ♦ в процессе разработки алгоритма вы поймете, из чего состоит ваш набор данных и где вам не хватает репрезентативности и сбалансированности; ♦ в процессе оценки системы вы поймете слабые места модели с точки зрения подгрупп вашего набора данных. Например, представьте, что вы обучаете модель для обнаружения неисправностей в станке. Проанализировав метаданные, вы можете обнаружить, что большинство выборок данных были получены со станков определенного производства. В этом случае вам, возможно, потребуется собрать данные из других производственных направлений, чтобы улучшить репрезентативность вашего набора данных. В другой ситуации вы можете использовать набор данных ключевых слов для оценки модели поиска ключевых слов. Сравнивая результаты работы модели на разных выборках данных с метаданными выборок, можно обнаружить, что модель лучше работает на выборках, взятых у старых дикторов, чем у молодых. В этом случае вы можете собрать больше обучающих данных от молодых дикторов, чтобы улучшить показатели. Таким образом, метаданные помогают снизить риски. Без метаданных на уровне выборки вы будете слепы к составу вашего набора данных и к тому, как ваша мо­ дель работает с различными группами данных внутри него. Когда у вас есть под­ робная информация о происхождении данных, вы можете создавать более качест­ венные продукты. Обеспечение качества данных Ранее в этой главе мы перечислили свойства, которыми должен обладать идеаль­ ный набор данных: ♦ актуальность; ♦ репрезентативность; ♦ сбалансированность; ♦ надежность;
Глава 258 7 ♦ хорошее форматирование; ♦ хорошее документирование; ♦ соответствующий размер. Из разд. ''датацентричное машинное обучение" ранее в этой главе мы знаем, что качественный набор данных уменьшает как объем необходимых данных, так и влияние выбора алгоритма на создание эффективной системы. Системам машинно­ го обучения гораздо проще получить полезные результаты, если они обучаются и оцениваются на хороших данных. Но как лучше всего понять, насколько качественный ваш набор данных? На самом деле все сводится к экспертным знаниям предметной области. Если у вас есть глу­ бокое понимание необходимой предметной области, вы сможете использовать это понимание для оценки данных. Обеспечение репрезентативности наборов данных Самое важное свойство набора данных что цель алгоритма ИИ - - его репрезентативность. Причина в том, смоделировать реальную сИ1уацию, чтобы принимать решения. Единственный механизм, с помощью которого он узнает о реальном ми­ ре, - это набор данных, используемый для его обучения или разработки. Это озна­ чает, что если набор данных не репрезентативен, то получаемые алгоритмы небу­ дут отражать реальный мир. Например, представьте, что вы создаете систему ИИ для распознавания различных типов болезней растений, используя фотографии пораженных растений. Если в ва­ шем наборе данных нет фотографий нужных растений или соответствующих сим­ птомов, разработанная вами система ИИ не сможет быть эффективной, какими бы сложными ни были ее алгоритмы. Хуже того, поскольку набор данных также используется для оценки производи­ тельности системы, о существовании проблемы не будет известно, пока модель не будет развернута в полевых условиях 11 . Именно в этом случае на помощь приходят экспертные знания в предметной области. Если вы являетесь экспертом в области болезней растений, вы можете использовать свои знания, чтобы понять, является ли набор данных репрезентативным для реальных условий. Например, возможно, в вашем наборе данных отсутствуют фотографии некоторых видов растений, пора­ женных болезнью, которую требуется определить. Метаданные невероятно помогают в этом процессе. Если ваш набор данных содер­ жит метаданные, указывающие виды растений на каждой фотографии, эксперт предметной области может просто просмотреть список видов и сразу заметить, что один из них отсутствует. Еще один полезный способ использования метаданных - построить график рас­ пределения конкретных атрибутов метаданных по всем данным. Например, вы мо­ жете построить график количества выборок, относящихся к каждому виду. Если 11 В этом случае наше поле может быть буквальным, а не метафорическим!
Как создать набор данных это распределение не выглядит разумным по отношению к реальным 1 259 условиям, возможно, вам нужно собрать больше данных. Например, у вас может быть значи­ тельно больше записей по одному виду , чем по другому , как показано на рис . 7.4. 50% 40% ,s ~ s 30% с: ~ .... :,:: ~ = Q 20% Q. с::: 10% 0% А в с D Е F Виды Рис. 7.4. В этом наборе данных для некоторых признаков гораздо больше записей, чем для других . Это может вызвать проблемы со предвзятостью: например, вполне вероятно, что ваш алгоритм будет работать гораздо лучше с видом В, чем с видом F В дополнение к набору данных в целом важно, чтобы представление сохранялось между метками. Например, вы должны обеспечить одинаково хорошее представи­ тельство всех пораженных видов в каждом классе болезней растений , которые вы пытаетесь идентифицировать . Если ваш набор данных представляет отдельные объекты, также следует убедиться, что набор данных сбалансирован по этим объектам . Например, возможно, все фо­ тографии одного вида были сделаны с использованием одного растения, а фото­ графии другого вида - с несколькими растениями . Эксперт в данной предметной области должен помочь определить оси данных для исследования таким образом . Но что делать, если адекватные метаданные недос­ тупны? Это очень часто случается при использовании данных, не собиравшихся специально для текущего проекта. В этом случае вам придется приступить к сис­ темному анализу набора данных. Репрезентативность и время Одним из наиболее важных аспектов качества данных является идея о том, что ваш набор данных отражает все вариации, присутствующие в реальном мире, для представления которого он предназначен. Именно поэтому мы так заботимся о представлении подгрупп, например видов растений в нашем наборе данных о бо­ лезнях растений .
260 Глава 7 Виды растений - очевидная подгруппа в этом примере, но есть еще одно важное свойство, влияющее почти на все наборы данных. Это свойство - время. Наш мир находится в состоянии постоянного изменения, а это значит, что данные, со­ бранные о системе в один момент времени, не обязательно отражают ее состоя­ ние в будущем. Например, представьте, что мы собираем фотографии растений в весеннее время. Внешний вид растений, естественно, меняется в течение года, поскольку они растут и меняются в зависимости от времени года. Если наш набор данных включает только фотографии растений в весеннее время, то модель, обученная на нем, может оказаться неэффективной осенью, когда внешний вид растений изменится. Это свойство данных известно как сезонность. Дnя борьбы с этим риском необходимо применить экспертные знания предмет­ ной области. Эксперт предметной области поймет, есть ли вероятность сезонных колебаний в данных, и сможет направить процесс сбора данных соответствую­ щим образом, например, обеспечить сбор изображений растений в течение всего года. Идея сезонности затрагивает все наборы данных, а не только содержащие расте­ ния, и сезоном в данном контексте может быть любой период времени. Напри­ мер, носимое устройство для фитнеса должно учитывать естественные измене­ ния в организме человека, происходящие в течение дня. Если набор данных собирался только утром, то ночью он может быть недостоверным. Также стоит проверить данные на сезонность, даже если ваш эксперт предметной области не особо озабочен этим вопросом. Могут быть и другие переменные, на­ пример влияние разной температуры окружающей среды на шум датчика. Суще­ ствует множество алгоритмических методов для выявления сезонности в данных. Кроме того, вы можете протестировать свою модель на различных временнь,х подгруппах вашего набора данных, чтобы выявить любые проблемы. Проверка данных с помощью выборки Сложность проверки качества данных, особенно при наличии ограниченных сопут­ ствующих метаданных, заключается в том, что зачастую невозможно проанализи­ ровать каждую выборку данных в отдельности. Наборы данных могут быть гигант­ скими, а время экспертов предметной области - драгоценным (и очень дорогим). К счастью, выборка дает возможность просматривать данные без необходимости проверять каждый элемент. Дnя определенного набора данных достаточно большая случайная выборка записей будет иметь примерно такую же репрезентативность и баланс, как и весь набор данных. Эта небольшая выборка может быть тщательно проверена экспертом предметной области, чтобы понять качество набора данных в целом. Самое сложное - определить, насколько большой должна быть выборка. Она должна быть достаточно большой, чтобы с разумной вероятностью включать инте-
Как создать набор данных 1 261 ресующие характеристики, но при этом достаточно маленькой, чтобы ее можно было рассмотреть за разумное время. Например, представим, что наш эксперт пытается понять, достаточно ли в наборе данных экземпляров определенного вида растений. Для этого можно подсчитать количество экземпляров этого вида растений в выборке данных и вычислить соот­ ношение между экземплярами этого вида и всех остальных. Но насколько большим должен быть размер выборки, чтобы можно было предположить, что соотношение между видами растений эквивалентно соотношению между выборкой и всем набо­ ром данных? На самом деле существует формула для оценки размера выборки. Она выглядит так: РВ где РВ размер выборки; - cr - (Z-оценка) 2 ·cr•(l-cr) = _,___ _.;...._----'--'-, пп 2 стандартное отклонение; ПП - предел погрешности. В этой формуле предел погрешности представляет собой величину разницы, кото­ рую мы готовы допустить между соотношением в нашей выборке и в нашем пол­ ном наборе данных. Обычно этот параметр устанавливается равным чает, что отклонение в соотношении выборки на 2,5% выше или на 5%. Это озна­ 2,5% ниже, чем во всем наборе данных, допустимо. Z-оценка выражает уровень доверия, т. е. насколько мы должны быть уверены в том, что полученное нами число действительно окажется в пределах погрешности. Разумный уровень доверия составляет 95%, что даст нам Z-оценку, равную 1,96 12 , при условии, что набор данных имеет типичный размер (не более десятков тысяч выборок). Наконец, стандартное отклонение показывает, насколько сильно, по нашим расче­ там, будут различаться данные. Поскольку заранее узнать это невозможно, можно просто перестраховаться и установить значение 0,5, максимально увеличивающее размер выборки. Если мы соединим все эти данные вместе, то получим следующее: РВ = 1,96 2 • 0,5 •(1-0,5) = О, 9604 = 384 16 _ 0,0025 ' 0,05 2 Поскольку не существует такого понятия, как дробная часть выборки, мы можем округлить ее размер до борку из 385 385. Это говорит о том, что нам нужно взять случайную вы­ элементов, чтобы с 95-процентной уверенностью утверждать, что со­ отношение одного вида к другому находится в пределах 5% приведенного в слу­ чайной выборке значения. Оказалось, что это число не слишком сильно зависит от размера набора данных, по крайней мере, для наборов данных в объеме, актуальном для машинного обу- 12 Значения Z-оценки можно найти в таблице, подобной той, что опубликована в Wikipedia (https://oreil.ly/3pKd5).
Глава 262 7 чения. Он наиболее чувствителен к изменениям в пределах погрешности: если вы хотите получить погрешность всего в 1%, вам нужно будет проанализировать вы­ 9604 элементов. Qualtrics предоставляет удобный онлайн-калькулятор (https://oreil.ly/wEjUk), упрощающий проведение экспериментов. борку из Все это говорит о том, что обычно достаточно случайного отбора нескольких сотен выборок из вашего набора данных 13 . Это число должно быть приемлемым для ана­ лиза, а также даст вам некоторое представление о том, является ли ваш набор дан­ ных приемлемым по качеству. Конечно, это предполагает, что искомые подгруппы достаточно велики, чтобы уложиться в границы погрешности. Например, если вид растения составляет менее 5% данных, то маловероятно, что мы найдем его в выборке из 385 элементов. Од­ нако если вы ищете слабо представленные подгруппы, то этот результат все равно будет полезен: он поможет вам добавить больше данных, что в конечном счете по­ зволит обнаружить группу с помощью случайной выборки. Зашумленность меток Помимо репрезентативности, еще одним основным источником проблем с качест­ вом наборов данных является так называемый шум меток. Метки дают нам значе­ ния, которые мы пытаемся предсказать с помощью ИИ. Например, если мы обуча­ ем классификатор болезней растений, фотография нездорового растения может быть помечена именно поразившим его заболеванием. Однако метки не обязатель­ но должны быть классами: например, если мы решаем задачу регрессии, ожидается, что данные будут помечены предсказываемым числом. К сожалению, прикрепляемые к данным метки не всегда верны. Поскольку боль­ шинство данных помечаются людьми, в них часто закрадываются ошибки. Эти ошибки могут быть весьма существенными. Исследовательская группа из Массачу­ сетского технологического института (МП) обнаружила, что в среднем 3,4% выбо­ рок получают неправильные метки в наборе широко используемых общедоступных наборов данных 14 , исследователи МП даже создали веб-сайт для демонстрации ошибок (https://oreil.ly/vrWZI). Зашумленность меток не станет тотальной катастрофой. Модели машинного обу­ чения неплохо справляются с шумом. Но его наличие оказывает значительное влияние 15 , и чтобы выжать максимум производительности из моделей, стоит по­ пробовать очистить метки с шумом. Ограничения, накладываемые ИИ периферий­ ных устройств, уже предъявляют повышенные требования к производительности 13 Для того чтобы убедиться в том, что выборка действительно случайна, стоит использовать инструменты для выборки. такие как предоставляемые библиотекой 14 NumPy (https://oreil.ly/fuBiY). Норткатт К. Г. и др. "Распространенные ошибки с метками в наборах тестов дестабилизируют тесты машинного обучения" (Nonhcutt С. G. et al. Pervasive Label Errors in Test Sets Destabllize Machine l,eaming f3enchmarks // arXiv. - 2021 (https://orell.ly/Zrcu 1)). 15 Хорошее исследование влияния шума меток можно найти у Горкема Алrана и Илкая У лусоя в статье "Типы шума меток и их влияние на глубокое обучение" (Algan G., Ulusoy i. Label Noise Types and Their Effects on Deep Leaming // arXiv. - 2020 (https://oreil.ly/1 LZКI)).
Как создать набор данных 1 263 моделей . Очистка зашумленных меток может обеспечить хорошую отдачу от за­ трат, если не придется тратить больше времени на разработку алгоритмов или оп­ тимизацию моделей. Самый простой способ выявить шум метки - просмотреть случайные выборки данных, но при больших массивах данных это может быть похоже на поиск иголок в стоге сена. Вместо того чтобы делать случайные выборки, лучше сфокусировать процесс поиска более разумно . Хорошим методом является поиск выбросов в классе. Если выборка неправильно классифицирована, она, скорее всего, значительно отличается от других представи­ телей класса, к которому ее ошибочно причислили. Для простых данных выявить такое несоответствие, возможно, легко с помощью стандартных инструментов нау­ ки о данных. Для данных с высокой размерностью, таких как изображения или ау­ дио, это может оказаться проблематичным. В сквозной платформе ИИ периферийных устройств, используемой в инструменте Edge lmpulse, есть lmpulse использует интересное решение этой задачи. Проводник признаков Edge алгоритм сокращения размерности без контроля, чтобы спрое­ цировать сложные данные в упрощенное двумерное пространство, где близость коррелирует со сходством. Такой подход позволяет легко обнаружить выбросы (https://oreil.ly/_9-Ny), ···. -. как показано на рис . 7.5. • • • • •• ' .,... Рис. 7.5. l Каждая точка представляет собой выборку данных, а расстояние между точками их сходство. Выбросы, например, выделенные стрелками, - - это необычные выборки . Если выборки кажутся близкими к выборкам, принадлежащим к другим классам, стоит проверить, не были ли они неправильно помечены Другой простой способ борьбы с зашумленными метками классов - предполо­ жить, что модель, обученная на данных, будет менее уверенно классифицировать зашумленные выборки. Если обучающие выборки ранжируются в порядке уверен­ ности обучаемой модели в присвоении им класса, вполне вероятно, что неправиль­ но помеченные выборки окажутся в самом низу списка. В наборах данных для задач, отличных от классификации, шум меток выглядит не­ сколько иначе . Например, шум меток в регрессионном наборе данных состоит из ошибок в целевых значениях, а шум меток в наборе данных для обнаружения или
264 Глава 7 сегментации объектов означает, что ограничивающие рамки или карты сегмента­ ции не совпадают с объектами, которые они должны охватывать. Обнаружение и уменьшение шума меток стало предметом постоянного изучения. Если у вас есть особенно зашумленный набор данных, возможно, стоит изучить научную литературу - быстрый поиск по запросу label noise (шум меток) Scholar (https://scholar.google.com) сослужит вам хорошую службу. в Google Избегайте зашумления меток Шум меток обычно возникает в результате человеческой ошибки при маркировке данных. Люди, даже обладая необходимыми знаниями, не могут добиться надеж­ ных результатов при выполнении повторяющихся задач, таких как определение меток данных. Кроме того, иногда из данных неясно, какой должна быть правиль­ ная метка. Например, даже медицинские эксперты не всегда согласны с тем, пока­ зывает ли диагностический снимок то или иное заболевание. Во многих случаях ошибки в создании меток являются результатом непонимания задачи присвоения меток. В проектах, требующих нетривиальных объемов работы по определению меток, важно предоставить "руководство по оценке" справоч­ ник для специалистов по присвоению меток данных. Руководство должно содер­ жать примеры, наглядно иллюстрирующие рекомендации. В ходе работы над про­ ектом его можно пополнять любыми интересными или непонятными примерами. Для того чтобы свести к минимуму влияние допускаемых людьми ошибок, может быть полезно привлечь несколько специалистов для присвоения меток. Если они расходятся во мнениях, выборку можно пометить как требующую более тщатель­ ной проверки. Если для данной выборки нет четкого ответа, можно использовать систему голосования, чтобы придумать окончательную метку, или же метку можно отклонить. Правильные действия зависят от конкретного проекта и требуют при­ менения знаний предметной области. Распространенные ошибки данных Проблемы репрезентативности и баланса - это большие структурные трудности, отражающие способ создания набора данных, в то время как шум меток - это ре­ зультат процесса сбора, влияющий на отдельные выборки. Подобно шуму меток, существует множество распространенных ошибок, способных повлиять на ваши данные на уровне каждой выборки. Вот некоторые из распространенных проблем, встречающихся в проектах по созданию ИИ периферийных устройств. Зашумленность меток. Как подробно описано в разд. "Зашу.мленность меток" ранее в этой главе, часто возникают проблемы с маркировкой данных из-за человеческой или машинной ошибки. Отсутствие значений. По разным причинам в некоторых записях вашего набора данных могут отсут­ ствовать значения определенных признаков. Например, ошибка в скрипте сбора
Как создать набор данных 265 1 данных может привести к тому, что значение не будет записано в нужное место. Это довольно частое явление, и одной из важнейших задач подготовки данных является определение наилучшего способа устранения недостающих значений. Проблемы с датчиками. Технические проблемы с датчиками могут привести к серьезным проблемам с качеством данных. К распространенным проблемам, влияющим на датчики, от­ носятся чрезмерный шум, неправильная калибровка, изменение условий окру­ жающей среды, влияющее на показания датчика, и ухудшение характеристик, приводящее к изменению значений с течением времени. Неправw,ьные значения. Иногда значения в наборе данных не отражают того, что было измерено. Напри­ мер, показания могут быть повреждены при передаче из одного места в другое. Выбросы. Выброс - это значение, находящееся далеко за пределами ожидаемого диапа­ зона. Иногда выбросы могут быть естественными, но часто они служат симпто­ мом таких вещей, как проблемы с датчиками или неожиданные изменения в ус­ ловиях окружающей среды. Непоследовательное масштабирование. Одно и то же значение может быть представлено в цифровой системе разными способами. Например, показания температуры могут быть в градусах Цельсия или Фаренгейта, а значение датчика может быть нормализовано или не нормали­ зовано. Если Д11Я значений одного и того же признака используется разное мас­ штабирование, возможно, при объединении данных из двух наборов это приве­ дет к проблемам. Непоследовательное представление. Помимо масштабирования, существует множество других способов изменения представления. Например, точка данных может храниться как 16-битное значе­ ние с плавающей точкой от О до 1 или как 8-битное целое число от О до 255. По­ рядок пикселов в цветном изображении может быть либо красный-зеленый­ синий, либо синий-зеленый-красный. Аудиофайл может быть сжат в формате МРЗ или существовать в виде необработанного буфера выборок. Непоследова­ тельное представление может привести к множеству трудностей. Важно хорошо задокументировать этот материал, возможно, даже в метаданных, прикреплен­ ных к каждой выборке. Неожиданная частота данных. Особенно неприятным подтипом непоследовательного представления является несоответствие частоты дискретизации. Например, набор данных может содер­ жать некоторые выборки, собранные с частотой некоторые, собранные с частотой 16 8 кГц (8000 раз в секунду), и кГц. Если их обрабатывать одинаковым об­ разом, то будет казаться, что они содержат совершенно разные значения. Это особенно плохо, когда сочетаются вариации частоты дискретизации и битовой
Глава 266 глубины от 16 - 7 с первого взгляда очень трудно отличить 8 кГц 16-битную выборку кГц 8-битной! Небезопасные данные. Если вы собираете данные в полевых условиях, крайне важно иметь надежные механизмы для их сбора и транспортировки. Например, вы можете криптогра­ фически подписать выборки с целью гарантировать, что они не были подделаны перед сохранением. Если у злоумышленника есть возможность подделать ваши данные, он может напрямую повлиять на результирующие алгоритмы, исказив вашу систему в свою пользу. Практически каждый проект по созданию ИИ будет включать в себя работу по ис­ правлению некоторых из этих типов ошибок. В разд. "Очистка данных" далее в этой главе мы познакомимся с отдельными ме­ тодами, используемыми для решения указанных проблем. Дрейф И СДВИГ Все меняется, и ничто не стоит на месте. Гераклит Эфесский, Набор данных представляет собой всего лишь снимок во времени 535-475 гг. - дон. э. он отражает состояние системы в период формирования снимка. Поскольку реальный мир име­ ет свойство меняться с течением времени, даже самый качественный набор данных может немного устареть. Этот процесс изменения известен под несколькими тер­ минами, включая дрейф, концепция дрейфа и сдвиг. Когда происходит дрейф, набор данных перестает отражать текущее состояние ре­ альной системы. Это означает, что любая модель или алгоритм, разработанные на основе этого набора данных, будут базироваться на неверном понимании системы и, скорее всего, не будут работать, как ожидалось, после развертывания системы. Дрейф может происходить по-разному. Давайте рассмотрим это явление в контек­ сте набора данных, хранящего информацию о вибрации промышленного оборудо­ вания, измеренную во время нормальной эксплуатации. Внезапное изменение. Иногда происходит резкое изменение реальных условий. Например, рабочие мо­ гут переместить датчик вибрации в другую часть станка, внезапно изменив ха­ рактер улавливаемого датчиком движения. Постепенное изменение. Сигналы могут постепенно меняться с течением времени. Например, подвижные части станка могут постепенно изнашиваться, и со временем это приведет к из­ менению характера вибрации. Циклические изменения. Обычно изменения происходят циклично, или сезонно. Например, вибрация станка может меняться в зависимости от температуры окружающей среды в месте его расположения, что варьируется между летом и зимой.
Как создать набор данных Поскольку изменения неизбежны, дрейф - 1 287 одна из самых распространенных про­ блем, с которыми сталкиваются проекты по созданию ИИ. Это может происходить в любой сфере: от физической конфигурации (например, размещение датчиков) до культурной эволюции (например, постепенное изменение языка и произношения). Управление дрейфом требует обновления набора данных с течением времени, о чем мы подробнее поговорим в разд. "Создание набора данных с течением време­ ни" дariee в этой главе. Кроме того, необходимо следить за работой модели в поле­ вых условиях, о чем мы расскажем в следующих главах. Благодаря дрейфу проект ИИ периферийных устройств никогда не бывает по­ настоящему "законченным" - он почти всегда требует регулярных усилий по мо­ ниторингу или обслуживанию. Неравномерное распределение ошибок Мы уже знаем, что существует множество различных типов ошибок, возникающих в наборах данных. Для того чтобы получить качественный набор данных, необхо­ димо отслеживать ошибки и следить за тем, чтобы они не выходили за рамки до­ пустимого уровня. Однако важно измерять не только наличие или отсутствие оши­ бок, но и то, как они влияют на различные подмножества ваших данных. Например, представьте, что вы решаете задачу классификации со сбалансирован­ ным набором данных из 1О классов. По результатам выборочной оценки, в вашем наборе данных шум меток составляет около 1%: 1 из 100 выборок данных получила неправильную метку. С алгоритмической точки зрения это может показаться при­ емлемым. Возможно, вы обучили модель машинного обучения на данных, и она кажется эффективной, судя по ее точности. Но что, если 1о/о неправильных меток не распределен равномерно (или симметрич­ но) по всему набору данных, а сконцентрирован асимметрично в одном классе? Не 1 из 100 выборок будет неправильно помечена, 1 из JО элементов данных в этом классе получит неправильную метку. Этого может быть достаточно, чтобы серьез­ но повлиять на производительность вашей модели для этого класса данных. Еще хуже то, что это повлияет на способность измерять производительность так же, как и для других классов. Ошибки также могут быть асимметричными по подгруппам, которые не обязатель­ но представляют собой классы. Например, возможно, ваш набор данных включает данные, собранные на трех разных моделях автомобилей. Если датчики, установ­ ленные в одной из моделей автомобилей, были неисправны, данные по этим моде­ лям могут содержать ошибки. Это еще опаснее, чем ситуация, когда ошибки асим­ метричны по классам, потому что их влияние не так легко обнаружить с помощью стандартных показателей производительности. Асимметричные ошибки, скорее всего, приведут к смещению ваших алгоритмов, поскольку они сильнее влияют на производительность системы для определенных подгрупn. При поиске ошибок в данных следует с особым вниманием отнестись к показателям ошибок в подгруппах данных, даже если общий уровень ошибок ка-
268 Глава 7 жется приемлемым. Как обычно, при определении подгрупп и оптимальных спосо­ бов их проверки очень пригодятся экспертные знания предметной области. Подготовка данных Переход от необработанных данных к высококачественному набору данных - это долгий путь, состоящий из множества этапов. В следующем разделе мы пройдем этот путь и начнем понимать особенности процесса. Наши остановки на пути будут следующими: ♦ создание меток; ♦ форматирование; ♦ очистка; ♦ конструирование признаков; ♦ разделение; ♦ аугментация данных. Один из этих пунктов - конструирование признаков - на самом деле относится к работам по созданию алгоритмов, мы рассмотрим этот процесс в главе 9. Однако он заслуживает упоминания здесь из-за того, каким образом его результаты использу­ ются в процессе уточнения вашего набора данных. Эrапы нашего путешествия предполагают, что вы уже собрали некоторые исходные данные. Скорее всего, у вас еще нет полностью репрезентативного или сбалансиро­ ванного набора данных, но начало положено. Процесс подготовки данных поможет вам ориентироваться по мере роста и совершенствования вашего набора данных. Создание меток данных Типичный набор данных ИИ периферийных устройств отражает сопоставление на­ бора исходных необработанных данных датчиков - - например, временнь1х рядов данных и описания того, что эти данные означают. Часто наша задача состоит в том, чтобы создать или обучить систему алгоритмов, способных выполнять это сопоставление автоматически - при предъявлении набора исходных данных мы получаем информацию о том, что эти данные означают. Наше приложение может использовать это предполагаемое значение для принятия интеллеК'I)'альных решений. В большинстве наборов данных это описание значения данных приходит в виде ме­ ток. Как мы уже видели, для создания надежных алгоритмов требуются качествен­ ные метки. Существует несколько различных способов маркировки данных, и в ка­ ждом конкретном проекте может использоваться их комбинация. Присвоение меток с использованием признаков. Некоторые наборы данных маркируются с помощью собственных признаков. Например, представьте, что мы создаем виртуальный датчик- систему, ис-
Как создать набор данных 1 269 пользующую сигнал от нескольких дешевых датчиков, чтобы предсказать выход одного датчика, более качественного, но запредельно дорогого. В этом случае наш набор данных должен содержать показания как дешевых, так и дорогих датчиков. Показания дорогого датчика будут использоваться в качестве меток. Признаки также можно обработать перед использованием в качестве меток. На­ пример, представим, что требуется обучить МL-модель предсказывать, какое сейчас время суток - день или ночь, основываясь на данных датчиков. Можно использовать временную метку каждой строки в нашем наборе данных, а также информацию о местном восходе и заходе солнца в том месте, где были собраны данные, чтобы определить, бьmи ли они сняты в дневное или ночное время. Присвоение меток вручную. Большинство наборов данных маркируются осознанно, людьми. Для некоторых наборов данных это несложно - если выборки бьmи собраны во время опреде­ ленных событий, может быть очевидно, какими должны быть их метки. Напри­ мер, представьте, что вы собираете набор данных о вибрации автомобиля, поме­ чая их как "движение" или "холостой ход". В этом случае, если вы в это время сидите в машине, вам уже известно, как должна быть помечена каждая выборка. В других случаях маркировка может быть утомительным ручным процессом, когда человек просматривает каждую запись в ранее немаркированном наборе данных и определяет, какой должна быть правильная метка. Этот процесс может быть непростым - например, для определения правильной метки может потре­ боваться конкретная подготовка или навыки. В некоторых случаях даже хорошо подготовленным экспертам бывает сложно договориться о правильных мет­ ках - этой проблемой часто страдают данные медицинской визуализации. Даже если задача проста, люди, естественно, будут совершать ошибки. При­ своение меток вручную чаще всего становится причиной проблем с качеством наборов данных. Кроме того, это самый дорогой способ обнаружения и исправ­ ления, поэтому стоит убедиться, что вы все сделали правильно. Автоматизированное присвоение меток. В зависимости от набора данных можно автоматически присваивать метки. На­ пример, представьте, что вы планируете обучить крошечную МL-модель на уст­ ройстве. Модель должна будет определять различные виды животных по фото­ графиям. Возможно, у вас уже есть доступ к крупной, высокоточной МL­ модели, способной выполнить эту задачу, но ее объем слишком большой, чтобы поместиться на встраиваемом устройстве. Потенциально вы можете использо­ вать эту большую модель для автоматического присвоения меток набору дан­ ных, что избавит вас от излишних трудозатрат. Такой подход может сэкономить много времени, но это не всегда возможно. Даже если это возможно, разумно предположить, что автоматизированная сис­ тема будет допускать ошибки, и вам потребуется определенный процесс для их выявления и исправления.
270 глава 7 Стоит учитывать, что часто существует разница между метками большой суще­ ствующей модели и модели, которую вы пытаетесь обучить. Например, пред­ ставьте, что вы создаете систему для распознавания звуков дикой природы. Ва­ ша цель - создать крошечную модель, способную определить, что звук издается либо птицей, либо млекопитающим. Если ваша большая модель пред­ назначена для идентификации отдельных видов, вам придется сопоставить каж­ дый из них с меткой "птица" или "млекопитающее". Смешанное присвоение меток. Можно разработать гибридный подход между ручной и автоматизированной маркировкой. Такой метод обеспечит лучшее из двух миров - непосредствен­ ное понимание человека в сочетании с автоматизацией утомительных задач. На­ пример, представьте, что перед вами стоит задача нарисовать ограничительные рамки вокруг определенных объектов в наборе данных изображений. В смешан­ ной системе присвоения меток модель компьютерного зрения может выделять интересующие области на каждом изображении, чтобы вы могли осмотреть их и решить, какие из них требуют рисования ограничительных рамок. Не все задачи требуют присвоения меток В зависимости от решаемой задачи вам могут даже не понадобиться метки - хотя в большинстве случаев они будут нужны. В разд. "Классическое машинное обучение" главы 4 мы познакомились с идеями обучения с учителем и без учителя. При обучении с учителем алгоритм машинного обучения учится предсказывать метку по набору входных данных. При обучении без учителя модель изучает представление данных, доступное для использования в другой задаче. Алгоритмы обучения без учителя не требуют меток. Например, представьте, что мы обучаем алгоритм кластеризации для обнаружения аномалий 16 • Алгоритму не нужны данные с метками, он просто пытается изучить характерные признаки набо­ ра данных без меток. В этом случае можно утверждать, что метки являются неяв­ ными, поскольку алгоритм кластеризации должен обучаться на данных, представ­ ляющих нормальные (неаномал1;ные) значения; из этого следует, что вы должны тщательно проанализировать обучающий набор данных с целью гарантировать, что он содержит только неаномальные значения. Если вы подозреваете, что сможете решить свою задачу с помощью алгоритма без учителя, попробуйте применить его в качестве эксперимента на ранних этапах ра­ боты. Возможно, вы обнаружите, что можно обойтись без присвоения меток боль­ шому количеству данных, что значительно сократит расходы, время и риски. Одна­ ко, скорее всего, большинство задач будут требовать обучения с учителем. Даже если вы используете алгоритм обучения без учителя, как правило, важно иметь некоторые данные с метками для тестирования. Например, если вы решаете задачу обнаружения аном_алий, вам нужно получить примеры как нормальных, так 16 См. разд. "Обнаруж·ение аномалий" главы 4.
Как создать набор данных 1 271 и аномальных значений. Эти примеры нужно будет пометить, чтобы можно было использовать их для оценки эффективности вашей модели. Алгоритмы обучения с частичным привлечением учителя и активного обучения Присвоение меток - один из самых дорогих и трудоемких аспектов сбора данных. Это означает, что обычно у нас есть доступ к большому количеству данных без ме­ ток и меньшему количеству данных с метками. У многих организаций, заинтересо­ ванных в ИИ периферийных устройств, могут быть хранилища данных loT, соби­ раемые ими в течение длительного времени. Данных там очень много, но меток на них нет. Обучение с частичным привлечением учителя и активное обучение это два ме­ - тода, разработанные для использования данных такого типа . Концепция, лежащая в основе обеих моделей, заключается в том, что модель, частично обученная на не­ большом наборе данных с метками, может быть использована для присвоения ме­ ток большему количеству данных. Обучение с частичным привлечением учителя, показанное на рис . 7.6, начинается с большого набора данных без меток. Сначала небольшому подмножеству этого на­ бора данных присваиваются метки, и модель обучается на помеченных записях. Затем эта модель применяется для прогнозирования пакета записей без меток. Эти прогнозы используются для присвоения меток данным. Некоторые из них, скорее всего, окажутся неверными, но это не страшно. ((с:) -+( Модель ) 1. Часть набора данных без меток 2. Модель обучается на основе данных, получает их вручную . помеченных вручную. 3. Модель используется с целью предсказания меток 4. Новая модель обучается на совмещенных для некоторых непомеченных данных . помеченных данных, и процесс повторяется. Рис. 7.6. Обучение с частичным привлечением учителя
272 Глава 7 Затем эти новые помеченные записи объединяются с исходными помеченными данными, и на их основе обучается новая модель 17 . И эта модель должна быть хотя бы немного лучше старой, даже если она была обучена на данных, получивших метки от старой модели. Затем процесс повторяется, при этом все больше данных получают метки, пока модель не станет достаточно хорошей для использования в производстве. Вторая техника, активное обучение, немного отличается. Процесс, показанный на рис. 7.7, начинается точно так же, с обучения начальной модели на небольшом коли­ честве досrупных данных с метками. Однако следующий шаг будет другим. Вместо того чтобы автоматически присваивать метки случайной выборке данных, модель используется для выбора набора записей из набора данных. Они, как кажется, будут наиболее полезными для получения меток. Затем эксперта предметной области про­ сят присвоить метки этим выборкам, и новая модель обучается, используя их. ({с) --.( Модель ) 1. Часть набора данных без меток 2. Модель обучается на основе данных, получает их вручную. помеченных вручную. □~□ 0000 □ о ~-( Модеnь] 3. Модель используется для отбора наиболее 4. Новая модель обучается полезных выборок для последующего на совмещенных помеченных данных, присвоения меток, которое затем и процесс повторяется . выполняется вручную. Рис. 7.7. Активное обучение Процесс отбора направлен на максимизацию прироста информации путем опреде­ ления того, какие именно выборки без меток содержат наибольшее количество информации, необходимой для помощи в обучении модели. Две наиболее распро­ страненные стратегии отбора известны как выборка по неопределенности и выборка разнообразия, и они могут использоваться как по отдельности, так и в комбинации. 17 Также можно использовать механизм. придающий 110меченным вручную -элеме11там больший вес во время обучения.
Как создать набор данных 1 273 Выборка по неопределенности основана на уверенности. Если первоначальная мо­ дель уверенно классифицирует запись, можно предположить, что использование этой записи в обучении не принесет дополнительной информации. Если модель не уверена в конкретной записи, это сигнал о том, что модель не видела много похо­ жих выборок и не знает, что с ними делать. Именно этим выборкам удобнее всего присваивать метки и добавлять в базу данных. Выборка разнообразия предполагает использование статистических методов, чтобы понять, какая из выборок лучше всего отражает базовое распределение данных. Например, можно попытаться найти способ количественно оценить сходство меж­ ду любыми двумя выборками. Для того чтобы определить новые выборки для при­ своения меток, мы будем искать менее похожие на выборки из существующего на­ бора данных с метками. Этот общий процесс - определение нескольких выборок для присвоения меток, включение новых выборок в обучающие данные наряду с существующими поме­ ченными выборками и повторное обучение модели - происходит столько раз, сколько необходимо, чтобы получить модель с хорошими результатами. Несмотря на то что эти техники появились сравнительно недавно, они отлично ра­ ботают. В разд. "Инструменты для присвоения меток" да'lее в этой главе приве­ дены примеры, которые могут помочь вам в их использовании. При этом инстру­ менты активного обучения служат потенциальным источником предвзятости в процессе присвоения меток. Для того чтобы оценить их, неплохо бы сравнить их результаты с результатами присвоения меток случайно выбранным выборкам (а не отобранных в процессе активного обучения). Это позволит вам лучше понять тип модели, создаваемой вашим активным процессом обучения. Предвзятость при присвоении меток В разд. "Зашумленность меток" ранее в этой главе рассказывается о том, что шум меток представляет собой серьезную проблему в наборах данных. Одним из основ­ ных источников шума здесь является предвзятость в процессе присвоения меток. Когда это происходит, набор данных в итоге отражает предвзятость людей и инст­ рументов, занимающихся маркировкой, а не отражает основную моделируемую ситуацию. Предвзятость в системе контроля качества Представьте, что вы хотите создать систему для обнаружения дефектов в про­ мышленных изделиях для компании-производителя. Вы собрали набор изобра­ жений товаров и хотите пометить их как "бракованные" или "нормальные". Вы работаете с экспертом предметной области, чтобы просмотреть набор данных и присвоить соответствующие метки. В теории это звучит замечательно. Однако ваш эксперт предметной области - новичок в компании и работал только над последним промышленным продуктом компании. Он может грамотно маркировать бракованные изделия для этого типа продукта. К сожалению, в вашем наборе данных есть и примеры старых nродук-
274 Глава 7 тов. В отношении этих изделий эксперт предметной области менее уверен в себе, и его метки имеют больше шансов оказаться неверными. В процессе маркировки набор данных приобрел предвзятость эксперта, рабо­ тающего недавно и не знакомого с некоторыми продуктами компании. Это озна­ чает, что создаваемая вами система также будет менее компетентна в распозна­ вании дефектных экземпляров этих продуктов. Когда система используется в производстве, она может не выявлять дефектные предметы или отмечать нор­ мальные предметы как дефектные. Оба случая обойдутся компании недешево. Это лишь один из способов, с помощью которого предвзятость при маркировке может повлиять на качество набора данных. К сожалению, подобные проблемы встречаются часто и практически неизбежны. Кроме того, поскольку набор данных является самым мощным инструментом для оценки системы, любую возникшую в результате этого предвзятость в системе может быть трудно обнаружить. Лучший способ избежать проблем с качеством маркировки - это строгая процеду­ ра оценки правильности меток. Этот процесс может включать в себя: ♦ использование легитимных экспертов, обладающих глубоким опытом в данной области; ♦ следование документированному протоколу маркировки, разработанному экспертами предметной области; ♦ использование нескольких маркировщиков, проверяющих работу друг друга; ♦ оценку качества выборок помеченных данных. Это увеличит стоимость и сложность процесса маркировки. Если стоимость созда­ ния высококачественного набора данных превышает ваши возможности, проект может оказаться невыполнимым при текущем бюджете. Лучше прервать проект, чем выпустить вредоносную систему в эксплуатацию. Предвзятость в присвоении меток характерна не только для маркированных вруч­ ную данных. При использовании автоматической системы для маркировки данных любые предвзятости, присутствующие в этой системе, также отразятся в вашем на­ боре данных. Например, представьте, что вы используете результаты большой предварительно обученной модели для маркировки записей в новом наборе дан­ ных, который будет использоваться для обучения модели ИИ периферийных уст­ ройств. Если производительность большой модели не одинакова для всех подгрупп в вашем наборе данных, метки будут отражать эти же погрешности. Инструменты для присвоения меток Существует несколько различных категорий инструментов, способных помочь в маркировке данных. Лучший выбор зависит от конкретного проекта: ♦ инструменты для аннотаций; ♦ маркировка на основе краудсорсинга;
Как создать набор данных 1 275 ♦ автоматизированная и вспомогательная маркировка; ♦ обучение с частичным привлечением учителя и активное обучение. Давайте рассмотрим каждый из подходов по очереди. Инструменть1 дnя аннотаций. Если данные должен промаркировать или оценить человек, ему придется воспользоваться каким-либо инструментом. Например, пред­ ставьте, что вы создаете набор данных фотографий. В качестве меток будут высту­ пать названия изображенных на них животных. Скорее всего, вам понадобится не­ кий пользовательский интерфейс, отображающий каждую фотографию и дающий возможность эксперту предметной области указать представленных животных. Сложность этих инструментов зависит от типа данных. Интерфейс присвоения ме­ ток набору данных, используемый для классификации изображений, будет относи­ тельно простым: он должен всего лишь показывать фотографии и позволять поль­ зователю задавать метки. Интерфейс для набора данных по обнаружению объектов должен быть более сложным: пользователю придется рисовать ограничительные рамки вокруг интересующих объектов. Для более необычных типов данных, таких как временнь,е ряды данных датчиков, могут потребоваться более сложные инструменты, помогающие визуализировать данные таким образом, чтобы их мог понять эксперт предметной области. Инструменты аннотирования являются практически обязательным условием для полноценного взаимодействия с набором данных датчиков. Они нужны не только для маркировки, но и для визуализации поскольку оценка меток - и редактирования существующих меток, важная часть процесса. Инструменты аннотирования доступны как в виде пакетов с открытым исходным кодом, так и в виде коммерческого программного обеспечения. Обратите внимание на некоторые аспекты: ♦ поддержка необходимого вам типа данных; ♦ поддержка решаемой задачи (например, классификация или регрессия); ♦ функции совместной работы, позволяющие нескольким людям работать над присвоением меток; ♦ автоматизация и другие функции, описанные далее в этом разделе. Маркировка на основе краудсорсинга. Часто бывает, что команда получает больше данных для маркировки, чем может обработать своими силами. В этом случае мо­ жет оказаться полезным использование крау дсорсинговых инструментов марки­ ровки. Эти инструменты позволяют определить задачу по маркировке, а затем на­ брать представителей сообщества для ее выполнения. Людей, помогающих маркировать данные, можно материально вознаградить небольшой денежной сум­ мой за каждую помеченную выборку, или же они могут быть добровольцами. Существенным преимуществом подхода с крау дсорсинговой маркировкой является возможность быстро присваивать метки большим наборам данных, что в против­ ном случае заняло бы непомерно много времени. Однако, поскольку процесс мар-
276 Глава 7 кировки зависит от минимально подготовленных представителей сообщества, нель­ зя полагаться на какой-либо опыт предметной области. Это может сделать некоторые задачи недоступными, например, требующие слож­ ных технических знаний . Даже при выполнении более простых задач вы , скорее всего, столкнетесь с гораздо большим количеством проблем с качеством , чем если бы ваши данные были помечены экспертом предметной области . Кроме того, при­ дется изрядно потрудиться для достаточно четкого определения задачи, чтобы представители сообщества могли ее понять. Для того чтобы добиться хорошего ре­ зультата, вам придется обучить своих сотрудников по присвоению меток тому, как точно выполнить задание . Помимо вопросов качества, существуют также проблемы конфиденциальности - краудсорсинг может оказаться неприемлемым вариантом, если ваш набор данных содержит конфиденциальную, частную или закрытую информацию. Кроме того, краудсорсинговые наборы данных потенциально могут стать объектом манипуля­ ций со стороны злоумышленников. Вспомогательная и автоматизированная маркировка. Инструменты вспомогатель­ ной и автоматизированной маркировки используют те или иные средства автомати­ зации, позволяющие помочь людям (будь то эксперты предметной области или краудсорсинговые сотрудники по маркировке) быстро присваивать метки большим объемам данных . В простых случаях это может быть использование базовых алго­ ритмов обработки сигнала, которые помогут выделить интересующие области или предложить метки . Более сложные инструменты могут использовать модели ма­ шинного обучения. Следующие примеры вспомогательных инструментов для при­ своения меток взяты с платформы Рис. 7.8. Edge lmpulse. Отслеживание объектов мя присвоения меток в Edge lmpulse. Маркированные автомобили отслеживаются между последовательными кадрами Во-первых, этот инструмент маркировки обнаружения объектов (https://oreil.ly/lkzTs) облегчает рисование ограничительных рамок вокруг объектов в последовательности
Как создать набор данных 277 изображений. Он использует алгоритм отслеживания объектов для идентификации ранее помеченных предметов в последующих кадрах, как показано на рис. 7.8. E, liDGI IMP\JL.SI • Рис. 7.9. $ • .J •.., •• · · · • ~ ф Проводник данных в Edge Impulse используется для присвоения меток набору данных, содержащему ключевые слова uм your moust to dro11 а Ьо11 1round an objeet 10 add а \11~1 Thtn cllck Savt l1Ьtls 10 IO\lance 10 tht nt)(t llem. О cup(1) ,,. О fork(1J " О dln1n1t,1Фle(11 Рис. 7.1 О. '*'" Данные можно маркировать автоматически с помощью предварительно обученных моделей, как показано на этом снимке экрана из Edge lmpulse
278 Глава 7 Более сложный пример инструмента присвоения меток Edge Impulse Studio (bttps://oreil.ly/QxsSj), - проводник данных в использующий алгоритм кластеризации для визуализации данных, где похожие выборки располагаются ближе друг к другу, что позволяет пользователям быстро помечать выборки на основе соседних эле­ ментов. Эrот подход показан на рис. 7.9. Наконец, все предварительно обученные модели можно использовать для автома­ тической маркировки данных. Например, на рис. 7.1 О показано использование мо­ дели обнаружения объектов, предварительно обученной на общедоступном наборе данных (Ьttps://oreil.ly/lZMoT), для присвоения меток экземплярам 80 известных классов объектов. Присвоение меток с помощью вспомогательных средств позволяет сэкономить время и силы, переложив работу с человека на автоматизированную систему. Од­ нако, поскольку автоматизированная система вряд ли будет идеальной, ее не следу­ ет использовать отдельно - для обеспечения высокого качества необходимо при­ сутствие человека. Обучение с частичнь1м привлечением учителя и активное обучение. Как уже гово­ рилось в разд. ''Алгоритмы обучения с частичным привлечением учителя и ак­ тивного обучения" ранее в этой главе, существуют различные методы, помогаю­ щие снизить нагрузку на процесс присвоения меток набору данных, и для этого используется частично обученная модель. Эти методы похожи на методы вспомо­ гательной маркировки, но они особенно интересны тем, что позволяют интеллек­ туально сократить объем необходимой маркировки. Например, инструмент актив­ ного обучения может предложить небольшое подмножество данных, требующее маркировки вручную, чтобы точно предоставить автоматические метки для ос­ тальных данных. Оба метода предполагают итеративный процесс присвоения меток подмножества данных, обучения модели, а затем определения меток для следующего набора дан­ ных. В результате нескольких итераций вы получите эффективный набор данных. Интересный вариант активного обучения можно найти в проводнике данных Impulse Studio (bttps://oreil.ly/sDAif). Edge Эrот инструмент может использовать частич­ но обученную модель для визуализации набора данных без меток в виде класте­ ров 18• Сами кластеры можно использовать для управления процессом маркировки, при этом необходимо, чтобы они бьmи разными и в каждом из них было хотя бы несколько помеченных выборок. На рис. 7.11 показан набор данных, разделенный на кластеры на основе частично обученной модели. Как мы уже убедились, присвоение меток данным оказывает большое влияние на качество систем ИИ. Хотя существуют сложные инструменты, позволяющие сокра­ тить объем необходимой работы, на маркировку обычно приходится значительная часть часов, затрачиваемых на проект ИИ. 18 Активации берутся из слоя, расположенного в конце модели, и служат в качестве включений.
Как создать набор данных Рис. 7.11 . Данные 279 кластеризуются в соответствии с результатами частично обученной модели. Визуализацию можно использовать для улучшения качества данных, направляя маркировку или выявляя неоднозначные выборки Форматирование Существует почти бесконечное множество форматов, используемых для хранения данных на диске . Они варьируются от простых двоичных представлений до особых форматов, разработанных специально для обучения моделей машинного обучения. Часть процесса подготовки данных - это объединение данных из разрозненных источников и обеспечение их удобного форматирования . Например, вам может по­ надобиться получить данные датчиков с IоТ-платформы и записать их в двоичный формат, чтобы подготовить модель к обучению. Каждый формат данных имеет свои преимущества и недостатки. Вот некоторые из распространенных видов. ' Текстовые форматы. Такие форматы, как CSV (comma-separated values - значения , разделенные за­ JSON (JavaScript Object Notation), хранят данные в виде текста. На­ формате CSV данные хранятся в виде текста, разделенного разделите­ пятыми) и пример, в лями , обычно запятыми (отсюда и название) или табуляцией. С ним очень просто работать, поскольку вы можете читать и редактировать значения с по­ мощью любого текстового редактора. Однако текстовые форматы очень неэф­ фективны - файлы занимают больше места, чем двоичные форматы, и требуют больше вычислительных затрат для доступа и обработки. Файлы CSV и JSON подходят для небольших наборов данных, которые можно полностью прочитать в памяти, но для больших наборов данных, считываемых с диска, лучше сначала перевести данные в двоичный формат.
280 Глава 7 Изображения и аудиофайлы. Изображения и аудио- это распространенные типы данных, и у них есть свои собственные типичные форматы (например, изображения WА V). JPEG и аудиофайлы Обычно наборы изображений и аудиоданных хранятся на диске в виде отдельных файлов. Хотя это и не самое быстрое решение, во многих случаях его вполне достаточно. Преимущество таких наборов данных в том, что их легко читать и изменять без каких-либо специальных инструментов. Обычно они ис­ пользуются вместе с файлами манифеста (см. совет "Файлы манифеста" дш,ее в этом разделе). Некоторые специализированные типы данных, например медицинские снимки, имеют собственные специальные форматы. В них кодируются метаданные, та­ кие как положение и ориентация. Двоичные фор.wаты прямого доступа. Двоичный формат данных - это формат, в котором данные хранятся в своей ес­ тественной форме (последовательности двоичных битов), а не закодированы во вторичном формате (как в текстовых форматах). Например, в двоичном формате число 1337 будет храниться непосредственно в памяти в виде двоичных значений 10100111001. В текстовом формате то же самое число может быть представлено гораздо большим значением из-за накладных расходов на кодирование текста. Например, в текстовой кодировке, известной как UTF-8, число 1337 будет пред­ ставлено в битах следующим образом: 00110001001100110011001100110111. В двоичном формате прямого доступа множество записей данных хранится в одном двоичном файле. Файл также содержит метаданные, позволяющие считы­ вающей программе понять значение каждого поля в записи. Формат разработан таким образом, чтобы к любой записи в наборе данных можно было получить доступ за постоянное количество времени. Среди распространенных двоичных форматов прямого доступа зуется библиотекой математических вычислений Parquet. NumPy в NPY (исполь­ Python) и Apache У разных форматов различные компромиссы в производительности, по­ этому полезно выбрать подходящий для конкретной ситуации. Последовательные двоичные форматы. Последовательные двоичные форматы, такие как TFRecord, разработаны для по­ вышения эффективности выполнения определенных задач, например обучения моделей машинного обучения. Они обеспечивают быстрый доступ в определен­ ном, заранее установленном порядке. Последовательные форматы могут быть очень компактными и быстро считыва­ ются. Однако их не так легко изучать, как другие форматы данных. Как правило, преобразование набора данных в последовательный формат выполняется в каче­ стве последнего шага перед обучением модели машинного обучения. Они дей­ ствительно используются только для больших массивов данных, где экономия на эффективности приводит к значительному снижению стоимости.
Как создать набор данных 1 281 Файлы манифеста Файл манифеста - это специальный файл, служащий указателем дr1я ос­ тальной части вашего набора данных. Например, в файле манифеста дr1я набора данных изображений могут быть перечислены имена всех файлов изображений, которые предполагается использовать в процессе обучения. Распространенным форматом для файлов манифеста стал CSV. Поскольку текстовый файл манифеста прост и удобен в работе, это отлич­ ный способ отслеживания данных. Создать выборку из набора данных очень просто - достаточно выбрать несколько строк из файла манифеста случайным образом. Как правило, набор данных будет охватывать несколько различных форматов в пределах своего жизненного цикла. Например, в начале набор данных может состо­ ять из данных нескольких различных источников, возможно, в смеси текстовых и двоичных форматов. Вы можете объединить данные и хранить их в двоичном фор­ мате прямого доступа, а затем очистить и обработать. Наконец, в некоторых случа­ ях можно перевести тот же набор данных в последовательный двоичный формат для обучения. Очистка данных Когда вы начнете приводить свой набор данных к общему формату, вам нужно бу­ дет убедиться, что все содержащиеся в нем значения соответствуют единым стан­ дартам качества. В разд. "Распространенные ошибки данных" ранее в этой главе мы рассмотрели основные типы проблем, встречающиеся в наборах данных. Ошибки могут закрасться на любом этапе процесса сбора и обработки набора дан­ ных. Приведем несколько примеров ошибок, возникающих на разных этапах: ♦ выбросы в необработанных данных датчиков, вызванные сбоями в работе обо­ рудования; ♦ несоответствие форматов данных при объединении данных с разных устройств; ♦ недостающие значения из-за проблем с объединением данных из нескольких источников; ♦ некорректные значения из-за ошибок в конструировании признаков. Очистка набора данных 1. - это процесс, состоящий из нескольких этапов: Аудит данных с использованием выборки для выявления типов ошибок (вы мо­ жете использовать подход к выборке, описанный в разд. "Проверка данных с помощью выборки" ранее в этой главе). 2. Написание кода для исправления или устранения замеченных вами ошибок. 3. Оценка результатов для подтверждения того, что проблемы были устранены. 4. Автоматизация шага 2 позволяет исправить весь набор данных и применить те же исправления к любым добавляемым новым выборкам.
282 Глава 7 Если только ваш набор данных не очень мал (например, меньше гигабайта), обычно имеет смысл работать с выборками данных, а не со всем набором. Поскольку обра­ ботка больших массивов данных занимает много времени, работа с выборками по­ зволит сократить цикл обратной связи между выявлением проблем, их устранением и оценкой исправлений. Как только вы получите корректное на выборке данных исправление, вы сможете с уверенностью применить его ко всему набору данных. Тем не менее нелишним бу­ дет оценить весь набор данных в качестве последнего шага, чтобы убедиться в от­ сутствии упущенных при выборке проблем. Аудит вашего набора данных встречающиеся Типичные проблемы перечислены в разд. "Распространенные ошибки данных" ранее в этой главе. Но как определить, какие ошибки присутству­ ют в вашем наборе данных? Наиболее мощными инструментами для выявления проблем с чистотой данных яв­ ляются те, что позволяют просмотреть ваш набор данных (или его репрезентатив­ ную выборку) в виде сводки. Это может означать создание таблицы, показывающей описательную статистику и типы, представленные для определенного поля. Это также может означать построение графика распределения значений, позволяющего эксперту предметной области оценить, соответствует ли распределение ожиданиям. Библиотека pandas (https://pandas.pydata.org) для Python - это фантастический инструмент для изучения и обобщения наборов данных. После загрузки в структу­ ру данных pandas под названием DataFra111e (https://oreil.ly/69vWh) значения набора данных можно обобщить. Например, следующая команда выводит статистическую сводку для значений временного ряда: >>> fral'le.descгtЬe() value count 365.000000 l'lean 0.508583 0.135374 std 0.211555 111tn 25% 50% 75% Мах 0.435804 0.503813 0.570967 1.500000 Взглянув на статистику, можно заметить, что элементы этого временного ряда со­ средоточены вокруг значения 0,5, а стандартное отклонение составляет 0,13. Для того чтобы понять, насколько разумными кажутся эти значения, можно использо­ вать экспертные знания предметной области.
Как создать набор данных Что еще лучше, библиотека 1 283 Python под названием Matplotlib (https://matplotlib.org) позволяет визуализировать данные. Например, можно легко вывести гистограмму (https://oreil.ly/nfCXD) для нашей структуры DataFraмe: plt.hist(fraмe['value']) plt. show() Полученный график показан на рис. 7.12. Показания датчиков имеют нормальное распределение. lбО 140 120 100 80 бО 40 20 о 0.2 0.4 Рис. 7.12. О. б 0.8 1.0 1.2 1.4 Гистограмма значения в наборе данных примера Из гистограммы видно, что данные в основном сосредоточены вокруг значения но значения нескольких точек равны примерно 0,5, 1,5. Эксперт предметной области может интерпретировать этот результат, чтобы понять, является ли распределение подходящим . Например, возможно, проблема с датчиком привела к тому, что неко­ торые отклонения от нормы не отражают точных показаний. Выявив проблему, мы можем углубиться в нее, чтобы определить подходящее решение. Существует безграничное количество способов обобщения данных с помощью рас­ пространенных инструментов науки о данных, например в экосистемах Python и R. Инженер или специалист по изучению данных, работающий над проектом ИИ пе­ риферийных устройств, должен уметь сотрудничать с экспертами предметной об­ ласти, чтобы получить помощь в изучении данных и выявлении ошибок.
Глава 284 7 Устранение проблем После обнаружения ошибки в наборе данных необходимо будет предпринять ка­ кие-то действия. Тип доступных вам действий зависит от типа обнаруженной ошибки и общего контекста, в котором вы собираете данные. Приведем основные методы, используемые при устранении ошибок: ♦ изменение значений; ♦ подстановка значений; ♦ исключение записей. Кроме того, после устранения проблем в наборе данных вам может потребоваться решить проблему, возникшую на начальном этапе. Изменение значений. В некоторых случаях можно полностью исправить ошибки. Вот несколько примеров: ♦ несоответствие форматов данных можно устранить путем преобразования в пра­ вильный формат; ♦ пропущенные значения можно найти и заполнить, если данные доступны из другого источника; ♦ ошибочные значения, вызванные ошибками в коде конструирования признаков, можно исправить. Как правило, полностью исправить ошибки можно только в том случае, если ис­ ходные данные все еще доступны. В некоторых случаях вы все равно не сможете найти правильное значение. Например, если некоторые данные по ошибке были записаны на слишком низкой частоте, то восстановить исходный сигнал будет не­ возможно - только приблизительно. Подстановка значений. Если не получается исправить ошибку, возможно, вам уда­ стся заменить ее разумным значением. Вот несколько примеров того, как это про­ исходит: ♦ пропущенные значения можно заменить средним значением этого поля по всему набору данных; ♦ ♦ выбросы могут быть обрезаны или откорректированы до разумного значения; низкочастотные данные или данные с низким разрешением могут быть интерполированы для приближения к более высоким показателям. Подстановка позволяет использовать запись, даже если часть содержащейся в ней информации отсутствует. Однако в обмен на это в ваш набор данных будет внесен некоторый шум. Некоторые алгоритмы машинного обучения хорошо переносят шум, но стоит ли сохраненная информация дополнительного шума - это вопрос, требующий решения в зависимости от конкретной задачи. Исключение записей. В некоторых случаях ошибки могут быть неустранимы, и вам придется исключить затронутые записи из набора данных. Вот несколько примеров: ♦ отсутствующее значение может сделать запись непригодной для использования;
Как создать набор данных 1 285 ♦ данные с неисправного датчика могут не подлежать исправлению; ♦ некоторые записи могут быть получены из источников, не соответствующих стандартам безопасности данных. Вместо того чтобы просто удалять проблемные записи, лучше пометить их как проблемные и где-то хранить. Это поможет вам отслеживать, какие проблемы воз­ никают и какие типы записей затрагиваются. Правильный способ устранения ошибки полностью зависит от контекста вашего набора данных и приложения. Для получения хороших результатов важно исполь­ зовать как знания предметной области, так и опыт работы с наукой о данных. Написание кода для исправления ошибок Написанный для исправления ошибок код должен быть качественным, хорошо документированным и помещенным под контроль сями о его зависимостях. Этот код преобразования - вместе с некоторыми запи­ одновременно и запись из­ менений, вносимых в набор данных, и способ автоматизировать любые будущие исправления. Без хорошо сохранившейся записи люди, работающие с набором данных в буду­ щем, не будут знать, как он был создан, каковы его особенности и как он мог быть изменен в стремлении к повышению качества. Этот код является частью конвейера данных, о котором мы поговорим в разд. "Кон­ вейеры обработки данных" далее в этой главе. Оценка и автоматизация После того как вы исправили ошибки в выборке или подмножестве данных, необ­ ходимо провести еще один аудит. Это поможет выявить любые случайно создан­ ные, а также замаскированные исправленными проблемы. Например, вы можете удалить из набора данных самые вопиющие выбросы, а потом обнаружить, что есть и другие, менее экстремальные выбросы, и они все еще вызывают беспокойство. После проверки исправлений для подмножества вы можете применить их ко всему набору данных. Для больших наборов данных вам потребуется автоматизировать этот процесс в рамках конвейера данных (см. разд. "Конвейеры обработки данных" далее в этой главе). Проведите подобный аудит на основе выборки с большим ко­ личеством данных, пока не убедитесь, что проблемы бьmи решены должным образом. Сохраните копию исходного, не улучшенного набора данных, чтобы в слу­ чае необходимости вернуться к нему. Это поможет вам экспериментиро­ вать, не боясь ошибиться и потерять данные. ' Важно отслеживать типы записей, содержащих ошибки. Возможно, ошибки непро­ порционально влияют на определенные подгруппы ваших данных. Например,
286 Глава 7 представьте, что вы обучаете модель классификации на данных датчиков. Возмож­ но, у вас возникла серьезная проблема с показаниями некоторых датчиков, и она требует отмены соответствующих записей. Если эти проблемы затрагивают один из классов данных больше, чем другие, это может повлиять на производительность вашего классификатора. Учитывая это, необходимо убедиться, что у вашего набора данных по-прежнему сохраняется хороший стандарт качества (как описано в разд. "Обеспечение качест­ ва данных" ранее в этой главе) после применения любых исправлений. Огслеживайте, насколько часто встречаются различные типы ошибок в вашем на­ боре данных. Если доля плохих записей высока, возможно, стоит попытаться уст­ ранить первопричину, прежде чем тратить слишком много времени на восстанов­ ление повреждений. По мере роста вашего массива данных он будет меняться, что может привести к появлению новых проблем. Для того чтобы помочь выявить любые проблемы, не­ плохо создать автоматические утверждения на основе вашей первоначальной оцен­ ки. Например, если вы усердно работали над улучшением набора данных, удаляя экстремальные выбросы, следует создать автоматизированный тест, доказываю­ щий, что набор данных имеет ожидаемый уровень дисперсии. Этот тест можно за­ пускать при каждом добавлении новых записей, что позволит выявить все новые проблемы. Устранение проблем с балансом До сих пор мы обсуждали, как исправить ошибки в значениях набора данных. Од­ нако одной из наиболее распространенных проблем с наборами данных является их несбалансированность - они содержат неодинаковое количество записей для раз­ личных подгрупп. В разд. "Обеспечение репрезентативности наборов данных" ра­ нее в этой главе мы приводили пример набора данных с изображениями болезней растений. В этом контексте, если в наборе данных больше изображений с одним видом растений, чем с другим, он может считаться несбалансированным. Лучший способ исправить проблемы с балансом в наборе данных - собрать боль­ ше данных по недостаточно представленным подгруппам. Например, можно вер­ нуться в поле и собрать больше изображений для недостаточно представленных видов растений. Однако это не всегда возможно. Если приходится довольствоваться тем, что есть, проблему баланса можно решить путем перебора недостаточно представленных групп. Для этого можно продубли­ ровать некоторые записи для этих групп, пока во всех подгруппах не будет одина­ ковое количество записей. Также можно занизить выборку избыточно представ­ ленных групп, выбросив из них некоторые записи. Эта техника может быть полезна, когда вы создаете набор данных для обучения модели машинного обучения. Она не окажет большого влияния на обучение моде­ ли, поскольку обучение моделей обычно происходит на основе агрегированных значений потерь для всего набора данных, если подгруппа недостаточно представ­ лена. Уравновешивание чисел с помощью выборки может помочь. Однако переиз-
Как создать набор данных 287 быток выборки не поможет, если у вас просто нет достаточного количества данных, чтобы представить истинную дисперсию затронутой подгруппы в реальном мире. Например, если в наборе данных растений один вид представлен только изображе­ ниями одного растения, их избыточность может не привести к созданию хорошо работающей модели, поскольку в реальном мире существует множество различий между отдельными растениями. Также следует с осторожностью подходить к оценке системы с использованием переизбытка данных выборки. Результаты вашей оценки будут менее надежными для подгрупп с избыточным количеством выборок. Эквивалентной техникой переборки является взвешивание подгрупп в процессе обучения. В этом методе каждой подгруппе присваивается вес - фактор, контро­ лирующий ее вклад в процесс обучения или оценки. Подгруппам можно придать вес, корректирующий любые проблемы с балансом. Наnример, недостаточно пред­ ставленная подгруппа может иметь больший вес, чем избыточно представленная подгруппа. Некоторые наборы данных не сбалансированы по естественным причинам. Напри­ мер, в наборах данных для распознавания объектов области изображений, содер­ жащие объекты, обычно меньше, чем те, которые их не содержат. В таких случаях, когда повторная выборка может не сработать, часто используют взвешивание, чтобы увеличить вклад недостаточно представленных данных в обу­ чение модели. Обнаружение аномалий и баланс При обнаружении аномалий цель состоит в том, чтобы выявить необычные входные данные. В некоторых случаях предполагаемые исходные данные на­ столько необычны, что не было представлено ни одного их примера. Например, промышленному предприятию может потребоваться использовать обнаружение аномалий, чтобы заранее предупредить о катастрофическом сбое. Если сбой та­ кого рода никогда ранее не происходил, получение данных для примера может оказаться невозможным. В этой ситуации набор данных будет состоять из выборок, представляющих со­ бой номинальные операции. Ваша задача- создать систему, способную опреде­ лять, когда условия станут значительно отличаться от базовой модели. С точки зрения баланса и репрезентативности это означает, что вы должны стремиться запечатлеть широкий диапазон номинальных условий. Например, объем работ на промышленном предприятии может меняться изо дня в день или по сезонам. Важно, чтобы ваш набор данных содержал репрезентативные выборки из всех возможных режимов работы. Тестирование систем обнаружения аномалий может быть затруднено, если для создания тестового набора данных нет примеров настоящих аномалий. Может потребоваться имитация вероятных изменений, чтобы вы смогли определить, бу­ дут ли они восприниматься системой. На промышленном предприятии это мож-
Глава 288 7 но сделать, намеренно запустив машины в необычном режиме или имитируя по­ ломку. Также можно создавать синтетические данные, содержащие потенциаль­ ные аномалии. Например, можно взять номинальный входной сигнал и изменить его, чтобы смоделировать различные изменения. Все это потребует участия экс­ пертов предметной области. Развертывание не протестированной на реальных данных системы не рекоменду­ ется в любом случае. Это следует делать только в рамках жестко ограниченного сценария прогнозируемого обслуживания, подобного этому, и заинтересованные стороны должны реально понимать, что эффективность системы не доказана. После развертывания необходимо будет провести тщательный анализ и оценку, чтобы убедиться, что модель работает адекватно. Но даже в этом случае стоит попытаться найти способ избежать сценария, по­ добного этому. Во многих случаях разбиение большой проблемы на более мел­ кие (например, выявление известных потенциальных неисправностей, способных привести к катастрофическому отказу) может облегчить получение сбалансиро­ ванного набора данных. Конструирование признаков Большинство проектов ИИ периферийных устройств будут включать в себя неко­ торые работы по конструированию признаков (см. разд. "Конструирование призна­ ков" главы 4). Это может быть как простое масштабирование признаков (см. врезку "Масштабирование признаков" в главе 4), так и чрезвычайно сложные алгоритмы DSP. Поскольку МL-модели и другие алгоритмы принятия решений работают с призна­ ками, а не с необработанными данными, конструирование признаков является важ­ ной частью подготовки набора данных. Конструирование признаков будет осуще­ ствляться в соответствии с итерационным рабочим приложений, с которым мы познакомимся в главе 9, процессом разработки но создание базовых моделей для признаков необходимо на этапе подготовки набора данных. Начальное конструирование признаков позволит вам изучить и понять свой набор данных с точки зрения признаков, а не просто необработанных данных. Помимо этого, есть еще несколько важных причин для выполнения этого процесса на дан­ ном этапе: ♦ масштабирование значений, чтобы их можно было использовать в качестве входных данных для моделей машинного обучения; ♦ объединение значений (см. разд. "Объединение признаков и датчиков" ,.,лавы 4), возможно, для выполнения объединения датчиков; ♦ предварительные вычисления алгоритмов DSP, чтобы обучение проходило бы­ стрее 19 . В процессе обучения модель машинного обучения многократно получает весь набор данных. DSP позволяют избежать необходимости многократного запуска алгоритмов DSP на одних и тех же данных. что может отнять много лишнего 19 Предварительные вычисления и кеширование результатов времени.
Как создать набор данных 1 289 Почти наверняка вы захотите провести итерации по конструированию признаков на более поздних этапах разработки, но чем раньше вы начнете эту работу, тем лучше. Разделение данных Как мы уже видели, рабочий процесс в проектах ИИ включает в себя итеративный процесс разработки и оценки алгоритмов. По причинам, о которых мы вскоре рас­ скажем, важно структурировать набор данных таким образом, чтобы он соответст­ вовал этому итеративному рабочему процессу. Обычно это делается путем разделения набора данных на три части проверка и тестирование 20 . - обучение, Каждое разделение используется для следующих целей. Обучение. Обучающая часть используется непосредственно для разработки алгоритма, как правило, для обучения модели машинного обучения. Проверка. Проверочная часть используется для оценки модели в процессе итеративной разработки. Каждый раз, когда разрабатывается новая итерация, производи­ тельность проверяется по набору данных для проверки. Тестирование. Тестовая часть "придерживается" - ее откладывают до самого конца проекта. Ее используют на заключительном этапе, чтобы убедиться, что модель способна хорошо работать с незнакомыми ей данными. Отдельные части набора данных используют, чтобы выявить переобучение моде­ ли. Как уже говорилось в разд. "Глубокое обучение" главы 4, в ходе переобучения модель учится получать правильные ответы на определенном наборе данных та­ ким образом, что не обобщает принципы получения результатов для незнакомых данных. Для того чтобы выявить переобучение, можно сначала обучить модель с помощью обучающего фрагмента набора данных. Затем можно измерить производительность модели как на обучающих, так и на проверочных данных. Например, рассчитайте точность модели классификации для каждой части набора данных: Tratntng ассuгасу: 95% Valtdatton ассuгасу: 94% При совпадении оценок мы будем уверены, что модель способна взять то, что она узнала из обучающей выборки, и использовать это для точных прогнозов относи­ тельно незнакомых данных. Именно это нам и нужно - способность к обобщению или генерализации. Однако если модель работает хуже на проверочном фрагменте, это признак того, что модель переобучилась на обучающем наборе. 20 Некоторые люди могут исnользовать немного другие термины для их обозначе1111я. но основная nередовая nрактика универсальна.
290 Глава 7 Она может хорошо работать с поступавшими ранее данными, но не с новыми: Tгatntng ассuгасу: Valtdatton ассuгасу: 95% 76% При значительно низкой точности на проверочном фрагменте становится ясно, что модель плохо работает на незнакомых данных. Это серьезный сигнал к тому, что модель следует изменить. Но если проверочная часть данных позволяет обнаружить переобучение, зачем нам нужен еще и тестовый фрагмент набора данных? Это связано с очень интересной причудой итеративной разработки в машинном обучении. Как известно, наш ите­ рационный рабочий процесс предусматривает внесение изменений в алгоритм, их тестирование на проверочном фрагменте, а затем внесение дополнительных изме­ нений в алгоритм с целью улучшения производительности. По мере того, как мы итеративно настраиваем и изменяем модель, пытаясь добить­ ся лучшей производительности на проверочном фрагменте, мы можем довести мо­ дель до такой степени, что она будет хорошо работать на обучающих и провероч­ ных данных, но не будет работать на неизвестных данных. В этом случае модель стала переобученной к проверочным данным, хотя она и не обучалась непосредственно на них. В ходе итерационного процесса информация о проверочном наборе "просочилась" в модель - мы неоднократно изменяли ее та­ ким образом, чтобы она была основана на данных проверочной части, что привело к переобучению. Это явление означает, что не всегда можно доверять сигналам, полученным от про­ верочного фрагмента набора данных. К счастью, тестовый фрагмент дает возмож­ ность обойти эту проблему. Отложив тестовую часть до самого конца процесса, когда все итерации уже пройдены, можно получить четкий сигнал, дающий понять, действительно ли модель работает на неизвестных ей данных. Когда следует использовать тестовь1й фрагмент Итеративный рабочий процесс позволяет информации о нашей оценочной части "просачиваться" в модель, поскольку мы используем результаты оценки, чтобы направлять развитие модели. Это означает, что опасно использовать тестовый фрагмент итеративно - при достаточном количестве итераций модель может переобучиться и в отношении него. Поэтому очень важно строго подходить к использованию тестового фрагмента набора данных. Если результаты при работе с тестовым набором указывают на переобучение, вы не можете просто вернуться и подправить модель, чтобы по­ пытаться исправить это. Если вы обнаружили переобучение с помощью тестового фрагмента, лучше все­ го начать разработку заново с кардинально другим подходом. Например, вы мо­ жете выбрать другой тип МL-модели или другой набор признаков (или алгорит­ мов обработки сигнала) для обучения. После того как вы попробуете несколько подходов, можете использовать их тестовые наборы для сравнения.
Как создать набор данных 1 291 Это означает, что необходимо быть очень осторожными в отношении тестовых фрагментов. Не используйте их до тех пор, пока не убедитесь, что вы удовлетво­ рены работой модели на обучающем и проверочном наборах. В противном слу­ чае вы потратите впустую свой самый ценный инструмент оценки и вынудите себя начать разработку с нуля 21 . Как разделить даннь1е? Данные, как правило, разбиваются методом случайной выборки в соответствии с пропорциями. Общепринятый стандарт заключается в первичном разделении дан­ ных в отношении 80/20, при этом 20% становятся тестовой частью. Затем 80% де­ 80/20, где 80% становится обучающей частью, а 20% - прове­ показано на рис. 7.13. лится в пропорции рочной. Это Рис. 7.13. Набор данных разбивается на части для обучения, тестирования и проверки В зависимости от набора данных может быть целесообразно использовать мень­ шее количество данных для проверки и тестирования, оставляя большее количе­ ство данных для обучения. Главное, чтобы каждый фрагмент представлял собой репрезентативную выборку из всего набора данных. Если у данных низкая дис­ персия, необходимых требований можно достигнуть при относительно неболь­ шой выборке. Каждый фрагмент также должен быть репрезентативным с точки зрения баланса и разнообразия всего набора данных. Например, обучающая, проверочная и тестовая части набора данных для классификации болезней растений должны быть прибли­ зительно одинаково сбалансированы в отношении различных типов болезней рас­ тений. 21 Поскольку теl'ТОВЫli фрагмент должен быть случаliноl! выборкой из всего набора данных, сложно просто взять и собрать новый . Если тестовый набор был собран после формирования остальных данных, он может представлять несколько производительность модели. шtые условия. что ухудшит сrюсобность оuеrшвать
292 Глава 7 Если набор данных заведомо хорошо сбалансирован и имеет низкое соотношение подгрупп к общему числу выборок, этого можно добиться просто с помощью слу­ чайной выборки. Однако если существует много различных подгрупп или некото­ рые из них недостаточно представлены, возможно, целесообразно провести стра­ тифицированную выборку. В этой технике разделение выполняется отдельно для каждой подгруппы, а затем осуществляется объединение. Это означает, что каждый фрагмент сохранит баланс общего набора данных . Простой пример показан на рис . 7.14. □ 0 □ О О О __д_ве_с_лу_ч_ай_н_ые_в_ы_бо_р_ки_• О О □□ о □ Случайная выборка из набора данных, содержащего подгруппы, может привести к неравному представлению. о 00 о о Ъ□ Одна случайная выборка на подгруппу ОО о о При стратифицированной выборке экземпляры отбираются отдельно для каждой подгруппы, чтобы сохранить репрезентативность. Рис. 7.14. Стратифицированная выборка может помочь сохранить распределение подгрупп при разбиении набора данных Перекрестная проверка Если обучение происходит на одном фрагменте, а оценка на другом, вы всегда будете знать, как работает ваша модель только на этих конкретных фрагментах набора данных . Это делает вашу оценку уязвимой к случайным причудам вы­ бранных вами фрагментов. Если это вызывает озабоченность, интерес может представлять техника, известная как k-блочная перекрестная проверка (или k- блочная кросс-валидация). При использовании k-блочной перекрестной проверки выполняется несколько (k) различных разделений . Каждое из них дает в резуль­ тате уникальную пару обучающих и проверочных фрагментов. Модель обучается и оценивается несколько раз, по одному разу с каждой парой, и результаты ус­ редняются для получения достоверного представления об общей эффективности .
Как создать набор данных 1 293 Перекрестная проверка является "золотым стандартом" для измерения эффек­ тивности проверки. Это может быть особенно полезно при работе с небольшими наборами данных, где, возможно, не удастся создать репрезентативные фрагмен­ ты наборов данных. Главный недостаток- трудоемкость: модель необходимо обучить k раз. Подводнь1е камни при разделении данных Неправильное разделение данных лишает вас возможности измерить работу при­ ложения на неизвестных модели данных, что, скорее всего, приведет к плохой про­ изводительности в реальном мире. Приведем несколько распространенных ошибок, которых следует избегать. Курирование фрагментов. Предполагается, что проверочная и тестовая части представляют собой репре­ зентативные выборки из общего набора данных. Предостерегаем вас от ручного выбора записей, включаемых в каждый фрагмент. Например, представьте, что вы решили поместить наиболее сложные по вашему мнению записи в обучаю­ щий набор данных, полагая, что это поможет вашей модели обучаться. Если эти записи не будут представлены в тестовом фрагменте, вы не сможете получить представление о том, как ваша модель действительно работает с ними. С другой стороны, если вы поместите все наиболее сложные записи в тестовый фрагмент, модель не получит преимущества от обучения на них. Выбор записей для каждого фрагмента - это работа для алгоритма случайной выборки. Не стоит делать этого вручную. В Руthоn-библиотеке scikit-leam есть хороший набор инструментов для разбиения на наборы данных. Пробле,,иы бш,анса и репрезентативности. Как уже говорилось ранее, важно, чтобы бьm соблюден баланс между фрагмен­ тами и все наборы данных были репрезентативными. Это относится как к клас­ сам (для решения проблем классификации), так и к "неофициальным" подгруп­ пам. Например, если данные собираются с датчиков нескольких различных типов, следует рассмотреть возможность проведения стратифицированной вы­ борки, чтобы в каждом фрагменте содержалась соответствующая доля данных с каждого типа датчиков. Прогнозирование прошлого. Дпя моделей, выполняющих прогнозирование на основе данных временнь1х ря­ дов, все немного сложнее. В реальном мире мы всегда пытаемся предсказать бу­ дущее на основе прошлого. Это означает, что для точной оценки модели времен­ ного ряда необходимо убедиться, что модель обучена на более ранних значениях и протестирована (и подтверждена) на более поздних. В противном случае мы просто обучим модель, способную предсказывать прошлые значения на основе текущих, но, вероятно, задумывалось все не так. Эту "утечку" данных назад по временной шкале стоит учитывать каждый раз, когда вы работаете с времен­ нь1ми рядами.
294 Глава 7 Дублированные значения. При работе с большими объемами данных записи легко дублируются. В исход­ ных данных могут быть дубликаты, или они могут появиться в процессе разде­ ления данных. Любые дубликаты между фрагментами будут вредить вашей спо­ собности измерять переобучение, поэтому их следует избегать. Изменение фрагментов. Если вы пытаетесь сравнить несколько подходов с помощью производительно­ сти тестовых наборов данных, важно каждый раз использовать один и тот же тестовый фрагмент. Если вы каждый раз будете использовать разные выборки, то не сможете сказать, какая модель лучше любые отклонения могут быть - просто результатом разницы в наборах данных. Аугментированные тестовые данные. Если вы используете аугментацию данных (о чем мы узнаем в следующем раз­ деле), то дополнять следует только обучающие данные. Если будете аугменти­ ровать фрагменты для проверки и тестирования, это приведет к ослаблению по­ нимания их реальной производительности - необходимо, чтобы они состояли только из реальных данных. Если вы оцените свою модель на аугментированных данных, вы лишитесь гарантии, что она будет работать на неаугментированных данных. Аугментация данных Аугментация данных - это техника, призванная помочь максимально эффективно использовать ограниченные наборы данных. Она работает путем внесения в набор данных случайных искусственных вариаций, имитирующих типы вариаций, естест­ венно присутствующих в реальном мире. Например, изображение можно дополнить (аугментировать) путем изменения его яркости и контрастности, поворота, увеличения определенной области или любой комбинации вышеперечисленного (рис. 7.15). Аугментировать можно любые данные. Например, в звук можно подмешать фоно­ вый шум, а временнь1е ряды можно преобразовать различными способами. Аугмен­ тация может быть выполнена как до конструирования признаков, так и после него. К распространенным видам аугментации данных относятся следующие. Дополнение. Включение других сигналов, таких как случайный или фоновый шум, взятый из реального мира. Сокращение. Удаление или затемнение значений, удаление фрагментов временнь1х или час­ тотных диапазонов. Геометрические изменения. Вращение, сдвиг, сжатие, растяжение или иное пространственное манипулиро­ вание сигналом.
Как создать набор данных 295 На основе фw,ьтров. Увеличение и уменьшение свойств отдельных значений на случайную величину. Исходное изображение Масштабирование и вращение Комбинация изменений Рис. 7.15. Изображение кошки автора, аугметированное несколькими различными способами Аугментация увеличивает количество вариаций в обучающих данных. Это может способствовать генерализации модели. Поскольку существует много случайных вариаций, модель вынуждена изучать общие базовые взаимосвязи, а не запоминать весь набор данных (что привело бы к переобучению). Важно, чтобы аугментация данных применялась только к обучающей части набора данных. Дополненные записи не следует включать в данные для проверки или тес­ тирования, поскольку цель состоит в том, чтобы оценить работу модели на реаль­ ных данных. Аугментация данных обычно осуществляется с помощью библиотек - большинст­ во фреймворков машинного обучения предоставляют некоторые встроенные функ­ ции расширения данных, а многие протоколы выполнения этой задачи были задо­ кументированы в научной литературе и доступны в виде решений с открытым ИСХОДНЫМ КОДОМ.
Глава 296 7 Аугментация может проводиться как онлайн, так и офлайн. При онлайн-аугмен­ тации случайные изменения вносятся в каждую запись при каждом использовании ее в процессе обучения. Это замечательно, поскольку приводит к огромному коли­ честву случайных вариаций. Однако некоторые варианты аугментации требуют больших вычислительных затрат, поэтому они могут значительно замедлить про­ цесс обучения. При автономной аугментации каждая запись случайным образом изменяется опре­ деленное количество раз, и измененные версии сохраняются на диске в виде боль­ шего, расширенного набора данных. Этот набор данных затем используется для обучения модели. Поскольку аугментация происходит за()лаговременно, процесс обучения вы11олняется гораздо быстрее. Однако при использовании автономной аугментации вносится меньше вариаций, поскольку для каждой записи создается конечное (и обычно ограниченное) число вариантов. Типы дополнений, применяемых к набору данных, можно варьировать, и разные перемены моr'ут приводить к созданию моделей, работающих лучше или хуже. Это означает, что разработка схемы аугментации данных должна быть частью общего итеративного процесса разработки. Это одна из причин, почему не стоит аугменти­ ровать наборы данных для проверки или тестирования. Если вы это сделаете, то любая модификация схемы аугментации изменит и данные проверки или тестиро­ вания. В итоге вы не сможете сравнивать производительность разных моделей на одних и тех же наборах данных. Разработка подходящего набора дополнений - задача, требующая специальных знаний предметной области. Например, эксперт должен знать, какие типы фоново­ го шума лучше всего подмешать в набор аудиоданных, исходя из контекста прило­ жения. Конвейеры обработки данных На протяжении этой главы мы столкнулись с последовательностью задач и сообра­ жений, применяемых к данным: ♦ сбор; ♦ хранение; ♦ оценка; ♦ создание меток данных; ♦ форматирование; ♦ аудит; ♦ очистка; ♦ выборка; ♦ конструирование признаков; ♦ разделение; ♦ аугментация данных.
Как создать набор данных 1 297 Эту последовательность задач, в каком бы порядке вы их ни выполняли, можно представить как конвейер обработки данных . Он начинается в полевых условиях, где данные генерируются датчиками и приложениями. Затем данные попадают во внутренние системы, где они хранятся, объединяются, получают метки, проверя­ ются и обрабатываются на предмет качества и становятся готовыми к использова­ нию для обучения и оценки приложений ИИ. Простой конвейер обработки данных показан на рис. с_б_ор_ __,] [ 7.16. Базовый конвейер обработки данных для сбора и обработки данных . [_____ Рис. 7.16. Очистка Аудит ____ Создание [ . меток данных ] __,. Конструирование признаков Дr~я каждого проекта существует свой конвейер, и его сложность может сильно различаться Необходимо рассматривать конвейер обработки данных как критически важный элемент инфраструктуры. Он должен быть реализован в чистом, хорошо продуман­ ном коде, с понятной документацией, версиями и должен содержать всю необхо­ димую информацию о зависимостях, чтобы его можно было повторно запустить. Любые изменения в конвейере обработки данных могут оказать существенное влияние на набор данных, поэтому очень важно точно понимать, что именно дела­ ется, как на начальном этапе разработки, так и в будущем. Кошмарный сценарий - потеря процессов, приведших к созданию набора данных, поскольку конвейер не был задокументирован или/и его больше нельзя запустить. Ранее мы узнали, что набор данных представляет собой дистилляцию знаний пред­ метной области в артефакт, используемый для создания алгоритмов. Если процессы, применяемые для создания этого набора данных, не задокументи­ рованы, то понять, какие решения или инженерные наработки были приняты при его создании, будет невозможно. Это крайне затруднит выявление и устранение проблем в создаваемых системах ИИ, а также значительное улучшение системы, даже если появятся новые данные. В ИИ периферийных устройств. где часто используются очень сложные данные с датчиков, особенно важно следить за конвейерами обработки данных. К сожале­ нию, этот кошмарный сценарий очень распространен! Только недавно, с появлени­ ем практики MLOps, специалисты стали относиться к конвейерам обработки дан­ ных так серьезно, как они того заслуживают. MLOps (machine leaming operations) - это область инженерии, связанная с опера­ тивным управлением проектами машинного обучения. Мы углубимся в эту тему в главах 9 и 10. Одна из самых важных причин задуматься о MLOps- это возмож­ ность время от времени улучшать МL-приложения, добавляя новые данные и обу­ чая более совершенные модели. Это наш самый важный инструмент для борьбы с главным врагом эксплуатируемых МL-проектов - дрейфом.
Глава 298 7 Создание набора данных с течением времени Как описывается в разд. ''Дрейф и сдвиг" ранее в этой главе, реальный мир меняет­ ся со временем - часто довольно быстро. Поскольку наш набор данных - это все­ го лишь моментальный снимок какого-то мгновения, со временем он перестанет быть репрезентативным. Любые алгоритмы, разработанные на основе устаревшего набора данных, будут неэффективны в полевых условиях. Борьба с дрейфом - одна из веских причин, по которой необходимо постоянно собирать больше данных. Благодаря постоянному притоку новых данных можете быть уверенными, что обучаете и внедряете современные модели, хорошо рабо­ тающие в реальном мире. Алгоритмы ИИ периферийных устройств нередко развертываются на устройствах, способных справляться с плохой связью. Это означает, что зачастую очень сложно измерить производительность устройств, развернутых в полевых условиях. Это еще одно ключевое преимущество постоянного сбора данных 22 . Имея свежие данные, вы можете понять, насколько эффективны алгоритмы, развернутые на работающих в реальном мире устройствах. Если производительность начинает снижаться, мо­ жет потребоваться замена этих устройств. Без свежих данных вы не сможете этого узнать. Помимо дрейфа, всегда полезно иметь больше данных. Большее количество данных означает большую естественную вариативность в вашем наборе данных, а значит, и более совершенные модели, способные лучше обобщать реальные условия. С точки зрения датацентричного ML сам сбор данных должен быть частью итера­ тивного цикла обратной связи при разработке. Если будет понятно, что наше при­ ложение или модель не справляется с определенными задачами, можно определить различные типы дополнительных данных для их улучшения. Если у нас будет хо­ рошая система постоянного улучшения набора данных, можно замкнуть цикл об­ ратной связи и создавать более эффективные приложения. Препятствия на пути к совершенствованию Реальные проекты часто сталкиваются с ограничениями, затрудняющими посто­ янное совершенствование набора данных. Например: • для сбора данных может потребоваться специальное оборудование, находя­ щееся в полевых условиях лишь временно; • процесс сбора данных может быть по своей сути пакетным, а не непрерывным; • для продолжения сбора данных может не хватить долгосрочного финансиро­ вания. Важно помнить, что без дополнительных данных работоспособность приложения в полевых условиях со временем будет снижаться. Если вы находитесь на стадии 22 При условии, что данные можно будет собирать каким-то другим способом. позволяющим обойти проблемы с подключением, присущие развернутым устройствам.
Как создать набор данных 1 299 разработки проекта, возможно, стоит попытаться смягчить некоторые из этих ог­ раничений, чтобы уменьшить риск. Например, вам может понадобиться убедиться, что бюджет проекта позволит обеспечить постоянный долгосрочный мониторинг. В некоторых ситуациях у вас нет возможности избежать риска незаметного ухудшения состояния из-за дрейфа данных. Если это так, необходимо убедиться, что риски хорошо документированы и доведены до сведения конечных пользо­ вателей приложения, чтобы они могли определить возможности для обхода та­ ких рисков. Эти вопросы могут быть неочевидны для неспециалистов. Вы, как человек, обладающий наибольшими знаниями, обязаны позаботиться о том, что­ бы они были освещены. Хорошо продуманные конвейеры обработки данных - важнейший инструмент для обеспечения непрерывного роста массивов данных. Если у вас есть повторяющийся конвейер для запуска на новых данных, это значительно сократит количество труд­ ностей, связанных с добавлением новых записей в ваш набор данных. Без надежно­ го конвейера добавление новых данных может оказаться слишком рискованным предприятием - нет никакой гарантии, что они будут соответствовать исходному набору данных. Резюме Создание набора данных - это непрерывный процесс, начинающийся со старта проекта ИИ периферийных устройств и никогда не заканчивающийся. В современ­ ном датацентричном рабочем процессе набор данных будет развиваться вместе с дизайном и требованиями вашего приложения. Он будет меняться с каждым итера­ тивным шагом вашего проекта. Подробнее о том, какую роль играют наборы данных в процессе разработки при­ ложений, мы узнаем в главе 9. А в главе 8 сосредоточимся на дизайне приложений.

ГЛАВА 8 Дизайн приложений с искусственным интеллектом периферийных устройств Дизайн и разработка приложения - это то место, где сплетаются все нити ИИ пе­ риферийных устройств. Здесь требуется понимание всего, что мы обсуждали до сих пор, включая постановку задачи, сбор данных, выбор технологии и ответственный ИИ. Это дополнение к навыкам и знаниям, необходимым для разработки продукта в соответствующей области и его реализации в программном и аппаратном обеспе­ чении. В этой главе мы рассмотрим процесс создания дизайна приложения с ИИ перифе­ рийных устройств, а также узнаем о некоторых наиболее важных паттернах проек­ тирования, используемых в реальных приложениях и доступных для применения в вашей собственной работе. К концу главы вы станете хорошо разбираться в требо­ ваниях к дизайну продуктов с ИИ периферийных устройств и будете готовы при­ ступить к созданию собственных продуктов. Существует две основные части дизайна приложения ИИ периферийных уст­ ройств - сам продукт или решение и технологическая архитектура, обеспечиваю­ щая его работу. Эти две части взаимозависимы. Дизайн продукта влияет на требуе­ мую технологическую архитектуру, а ограничения технологии- на дизайн. Кроме того, весь процесс разработки и внедрения учитывает специфику реальной ситуа­ ции применения продукта. Ваши проекты будут постоянно развиваться по мере сбора данных, экспериментов с различными подходами и тестирования решений в реальных условиях. Эта динамичная система требует итеративного процесса проектирования, в ходе которого решение постепенно опробуется, дорабатывается и улучшается. Лучший способ спланировать это - хорошо понять как решаемую проблему, так и про­ странство потенциальных решений. Проектирование аппаратных продуктов и архитектура встроенного программного обеспечения - это важные самостоятельные темы. В этой книге мы сосредоточим­ ся на вопросах проектирования, связанных с ИИ периферийных устройств.
302 Глава 8 Дизайн продуктов и взаимодействия Цель продукта с ИИ периферийных устройств- решить конкретную задачу. Большинство реальных задач состоит из нескольких компонентов, и все они долж­ ны быть спроектированы, чтобы считать задачу решенной. Сама задача. Насколько хорошо продукт решает основную задачу. Человеческий фактор. Насколько продукт соответствует ожиданиям пользователей. Более широкий контекст. Насколько продукт соответствует реалиям нашего мира. Для того чтобы проиллюстрировать это, давайте рассмотрим гипотетический пример. Отслеживание тренировок по тяжелой атлетике Многие люди считают удобным отслеживать свои физические нагрузки с помо­ щью носимых устройств. Например, умные часы, предназначенные для бегунов, могут записывать расстояние, время и биосигналы, связанные с конкретной про­ бежкой. Это помогает бегунам понять, какой объем упражнений они выполняют, и проследить, как они прогрессируют с течением времени. Однако некоторые виды деятельности отслеживать сложнее. Ключевыми показа­ телями для бега являются расстояние и время, и эти параметры легко пассивно измерить. А вот с тяжелой атлетикой дело обстоит сложнее. Спортсмен, зани­ мающийся тяжелой атлетикой, должен следить за: • конкретным выполняемым движением (например, жим лежа, приседание); • весом спортивного инвентаря, используемого для упражнений; • количеством успешно выполненных повторений (например, 1О подъемов вверх и вниз); • количеством выполненных подходов (например, • временем отдыха между каждым подходом. 3 подхода по 1О повторений); Спортсмену было бы удобно зайти в тренажерный зал, выполнить упражнения и сразу же получить отчет о них без необходимости записывать его в блокнот. Давайте рассмотрим два разных способа решения задачи отслеживания тренировок тяжелоатлетов. Помните, что нам нужно решить три вопроса: саму задачу, челове­ ческий фактор и более широкий контекст. В нашем первом решении спортсмен надевает умные часы, оснащенные акселеро­ метром. Перед каждым подходом спортсмены вводят тип упражнения на часах с помощью аппаратных кнопок, а также поднимаемый вес. Во время подходов часы
Дизайн приложений с искусственным интеллектом периферийных устройств 1 303 отслеживают количество выполненных повторений, используя алгоритм ИИ, чтобы понять, когда повторение было выполнено, на основе данных, полученных от аксе­ лерометра. После тренировки эта информация синхронизируется с мобильным приложением для просмотра. Решает ли это саму задачу? Технически, да - система позволяет спортсмену от­ слеживать тренировки по тяжелой атлетике без ноутбука. В более широком контек­ сте это решение также кажется прекрасным - носимые устройства для фитнеса распространены, доступны по цене, практичны и хорошо принимаются обществом. Однако все выглядит не так привлекательно, если учесть человеческий фактор. Наша разработка требует, чтобы спортсмен вводил вес упражнения в свои смарт­ часы перед каждым подходом. Сомнительно, что это решение лучше, чем исполь­ зование бумажного блокнота. В действительности, многие люди считают неудоб­ ным взаимодействовать с интерфейсами смарт-устройств в процессе тренировки. Давайте рассмотрим другое решение. Было бы здорово иметь возможность пони­ мать, какое упражнение выполняет спортсмен и какой вес он использует, не требуя от него ручного ввода данных. Для этого можно использовать небольшую камеру, работающую от аккумулятора, и разместить ее на полу перед спортсменом во вре­ мя тренировки. С помощью компьютерного зрения она подсчитывает количество используемого веса и определяет выполняемые движения. С точки зрения основной задачи, это звучит замечательно - отпадает необходи­ мость в записной книжке для отслеживания активности. С точки зрения человека, это реальное улучшение опыта взаимодействия с системой- спортсмен может со­ средоточиться на своих упражнениях, не обращаясь к смарт-устройству или ноут­ буку в процессе тренировки. К сожалению, в более широком контексте это решение может оказаться не самым удачным. Многие люди занимаются в общественных тренажерных залах, где с тру­ дом можно рассчитывать на конфиденциальность. Вряд ли посетители тренажерно­ го зала почувствуют себя комфортно, если во время тре1шровки их будет "снимать" умная камера. Хотя камера с ИИ периферийных устройств может легко сохранить конфиденциальность, не сохраняя видеозаписи, объяснить это другим посетителям тренажерного зала может быть непросто. Социальный контекст того, что считается приемлемым, может затруднить внедрение эффективного в других отношениях ди­ зайна. Как мы видим, очень важно, чтобы ваш дизайн учитывал все аспекты задачи. ИИ периферийных устройств может способствовать решению множества задач, но есть много случаев, когда проблемы с удобством использования или более широкий че­ ловеческий контекст нейтрализуют его преимущества. Принципы дизайна Хороший способ подхода к дизайну - следование принципам, которые структури­ руют наше критическое мышление. Оветта Сэмпсон, вице-президент по дизайну взаимодействия с ML в компании Capital One, стала автором фантастического на-
Глава 304 8 бора принципов, применимых именно к использованию ИИ в дизайне. Согласно ее словам: "В эпоху искусственного интеллекта, когда скорость, масштаб и пугающие возмож­ ности могут одновременно стать компонентами разрабатываемых продуктов, мы должны превратить дизайн из существительного в очень, очень обдуманный глагол. Мы вступаем в ,,Дивный новый мир". И этот мир требует от дизайнеров большей ответственности за результаты, поведение и влияние на человечество разрабатывае­ мых интеллектуальных продуктов". Десять принципов (https://oreil.ly/EzOym), Сэмпсон, вдохновленные более Оветта Сэмпсон ранним перечнем написанным немецким дизайнером Дитером Рамсом, вы­ глядят следующим образом, включая наше собственное объяснение каждого пункта. Хороший дизайн решает сложные пробле.мы. Обладая огромной силой, но ограниченными ресурсами, необходимо сосредото­ читься на решении важных проблем. Хороший дизайн способствует здоровы.м отношения.м. Пользователи существуют в сети взаимоотношений с другими людьми и други­ ми продуктами, и дизайн должен это учитывать. Хороший дизайн требует пластичности. ИИ обеспечивает невероятную персонализацию, и мы должны использовать ее, чтобы создавать лучшие продукты, надежно работающие для людей, для кото­ рых мы их разрабатываем. Хороший дизайн создает пони.мающие ко.мпании и обслу.живающие нас продукты. Дизайн должен основываться на точном понимании потребностей отдельных пользователей, а не на потребностях отдела маркетинга. Хороший дизайн признает предвзятость. Предвзятость присутствует всегда, и дизайнеры должны сознательно работать над ее смягчением и предоставлять полную информацию в отношении ограни­ чений своих продуктов. Хороший дизайн предотвращает нечестность. Дизайнеры должны честно осознавать возможность негативного воздействия своей продукции, чтобы избежать его. Хороший дизайн предполагает непредвиденные последствия. Непреднамеренные последствия в системах ИИ могут систематически вредить людям, и хороший дизайн должен признавать этот факт и не допускать его. Хороший дизайн способствует равенству. ИИ может непреднамеренно усиливать неравенство и несправедливость, но тщательно продуманные системы ИИ могут противостоять этому эффекту.
Дизайн приложений с искусственным интеллектом периферийных устройств \ 305 Хороший дизайн учитывает свое влияние на коллективную, взаимосвязанную эко­ систему. Контекст, который касается людей и в котором применяется ИИ, невероятно сложен и разнообразен, и хороший дизайн должен это отражать. Хороший дизайн целенаправленно наводит порядок в хаосе. Продукты с ИИ должны облегчать понимание и преодоление трудностей в на­ шем мире, а не делать его более хаотичным, чем он есть. В оригинальной статье Сэмnсон (bttps://oreil.ly/-4WvU) дается более глубокое объ­ яснение каждого принципа. Эти принципы основаны на признании того, что ИИ получает свою силу благодаря масштабу. Функции, ранее требовавшие человеческого контроля, теперь можно полностью автоматизировать. Сокращение расходов означает, что эти функции станут гораздо более распространенными и принесут гораздо больше пользы. В то же время природа систем ИИ такова, что одна реализация, созданная одной командой инженеров, может в итоге широко использоваться миллионами совер­ шенно разных людей. Это означает, что любой изъян в системе увеличится и затро­ нет большую часть населения. С практической точки зрения, если плохой врач за свою карьеру может навредить тысячам пациентов, то плохая система медицинского искусственного интеллекта может навредить миллионам. Существует риск масштабирования вредных систем. По этой причине мы должны быть весьма осторожны при разработке 11родуктов ИИ периферийных устройств, и именно данное опасение делает принципы, подобные перечню Сэмпсон, такими ценными. Определение масштаба решения Каждый, кто работает в сфере программного или аппаратного обеспечения, может подтвердить, что оценить объем работ, необходимых для внедрения продукта или функции, бывает очень непросто. Аналогичным образом, развитие ИИ и ML по своей сути непредсказуемо. Необходимость в высококачественном наборе данных и исследовательский характер процесса разработки алгоритмов не позволяют точно определить, сколько времени займут разработка и внедрение проекта. Разработка алгоритмов естественным образом формирует требования к аппаратно­ му и программному обеспечению. Например, специалист по машинному обучению может определить, что для получения приемлемых результатов модель глубокого обучения должна быть определенного размера. Размер модели ограничивает типы устройств, доступных для ее развертывания. Это означает, что процесс разработки аппаратного обеспечения может быть невозможен до тех пор, пока не будет выпол­ нена хотя бы часть работы по созданию алгоритмов.
Глава 306 8 Что может пойти не так? Существует множество способов привести проект ИИ к провалу еще до начала его реализации. Приведем некоторые из наиболее распространенных рисков: • получить достаточный набор данных слишком сложно или дорого; • в данных недостаточно сигналов для обучения полезной модели; • имеющееся оборудование не способно запустить рабочий алгоритм; • проблема требует такой точности, которую не может обеспечить ИИ. Дополнительные переменные при разработке ИИ означают, что еще сложнее сде­ лать правильные предположения о процессе разработки в целом. Очень легко недо­ оценить объем необходимых работ или столкнуться с необходимостью вернуться к чертежной доске после значительных затрат времени и денег, если выяснится, что первоначальных планов недостаточно. Природа разработки ИИ делает применение каскадной модели очень рискованным. Опасно полагать, что ваши первоначальные предположения всегда будут верны. Было бы катастрофически дорого разрабатывать прекрасное оборудование, а потом в последний момент обнаружить, что оно не способно работать с требуемой моделью. Как же избежать подобных проблем и упростить поставку работающих продуктов? Главное ограничить область применения. Несмотря на то что искусственный - интеллект это захватывающая тема, а возможности его применения безгранич­ ны, гораздо легче избежать ошибок, если вы не будете слишком амбициозны с са­ - мого начала. Фантастическая демонстрация этого принципа - реальность применения беспи­ лотного автомобиля. В середине 2010-х годов многие технологи считали, что уже не за горами те времена, когда в нашем распоряжении окажутся полностью автома­ тизированные беспилотные автомобили. Революция в области глубокого обучения позволила добиться огромного прогресса, а возможности транспортных средств значительно расширились по сравнению с самыми ранними прототипами. Переход к миру беспилотных автомобилей казался неизбежным. К сожалению, несмотря на то что создание беспилотного автомобиля, как правuло, может выглядеть правильным, оно оказалось неприемлемым, когда речь зашла о высокоскоростном взаимодействии с населением. Последние несколько процентов надежности становятся все более труднодосrупными. Вполне вероятно, что в ско­ ром времени мы увидим беспилотные автомобили, но до этого еще несколько лет. В то время как развитие беспилотных автомобилей застопорилось, родственный, но менее амбициозный набор технологий стал настолько успешным, что теперь они присутствуют по меньшей мере в трети всех новых транспортных (https://oreil.ly/НzOQK). Усовершенствованные системы помощи водителю средств (advanced это категория технологий, призванных облег­ чить вождение на дороге. Они включают такие функции, как адаптивный круиз­ контроль, центрирование по полосе движения и предотвращение столкновений. driver-assistance systems, ADAS) -
Дизайн приложений с искусственным интеллектом периферийных устройств Функции ADAS, 1 307 ставшие классическим примером использования ИИ периферий­ ных устройств, призваны помочь в решении конкретных, индивидуальных задач. Они облегчают умственную и физическую нагрузку на водителей и помогают по­ высить безопасность дорожного движения. Хотя они не столь амбициозны, как сис­ темы автономного вождения, их более ограниченный масштаб позволяет им быть гораздо более успешными. Например, многие современные автомобили оснащены системой адаптивного кру­ из-контроля. Она может взять на себя ускорение, торможение и выравнивание по полосе во время движения по автостраде. Поскольку система должна работать только в этой ограниченной среде, гораздо проще создать ее со 100-nроцентной надежностью. Хотя на городских улицах она совсем не будет работать, это не страшно - езда по автостраде занимает больше всего времени в любой длительной поездке, поэтому с точки зрения водителя она почти так же хороша, как и беспи­ лотный автомобиль. Благодаря ограниченным возможностям АDАS-системы могут быть гораздо более полезными, чем системы беспилотного вождения в современных автомобИJJЯХ. Бо­ лее того, компании, разрабатывающие и внедряющие системы ADAS, могут посте­ пенно наращивать свой опыт и накапливать знания в реальных условиях. Они мо­ гут совершенствовать свою продукцию, активно предлагая ее на рынке, постепенно приближаясь к мечте о беспилотном автомобиле. Такой подход целесообразен для любого продукта ИИ периферийных устройств. Вместо того чтобы с самого начала преследовать грандиозные идеи, постарайтесь определить небольшие ступеньки, приносящие реальную пользу. Запланируйте ми­ нимальный жизнеспособный продукт - простой, гарантированно выгодный и дей­ ствительно приносящий пользу вашим пользователям. Создайте нечто, посмотрите, как оно работает в реальном мире, и выполняйте итерации в дальнейшей разработ­ ке системы. Вот конкретный пример. Представьте, что вы создаете систему контроля качества для производственной линии. Сегодня все проверки качества выполняются вруч­ ную. Ограничения по времени и стоимости не позволяют протестировать каждый экземпляр, поэтому проверяются случайные выборки. Это означает, что некоторые дефекты все же попадают в общую массу. Вашей долгосрочной целью может стать автоматическая проверка каждого товара с помощью системы ИИ периферийных устройств, что позволит отлавливать все бракованные изделия и экономить деньги на проверках. Однако на начальном этапе проекта может быть неясно, насколько цель достижима. В вашем наборе данных могут отсутствовать примеры всех вероятных типов дефектов, а это затруднит тес­ тирование системы. Невозможно узнать, сработает ли ваше решение, не испытав его, но неудача может дорого обойтись. Давайте сделаем шаг назад и подумаем о масштабах задачи. Хотя выявление каж­ дого дефекта может оказаться сложной задачей, возможность отловить некоторые из них все равно будет улучшением по сравнению с текущей ситуацией, поскольку мы знаем, что некоторые дефекты все же у дается обнаружить.
308 Глава 8 Оrносительно простым может оказаться обучение модели выявлять один конкрет­ ный тип дефекта (а не все возможные дефекты), хотя бы в некоторых случаях. В сочетании с текущим процессом проверки вручную модель, обученная выявлять один тип дефектов, может принести ощутимую пользу заводу. Расходы на проверку не сократятся, но будет выявляться больше дефектов и среднее качество продукции вырастет. Ограничив объем работ тем, что точно достижимо, можно получить немедленную выгоду при значительно сниженном риске. После такого успеха ничто не помешает вам продолжить работу над своим решением и постепенно достичь того грандиоз­ ного изначального замысла. Более того, вы можете обнаружить, что первоначаль­ ная система приносит достаточно пользы, и дальнейшее развитие не требуется. Постановка целей дизайна В разд. "Планирование проекта ИИ периферийных устройств" главы 6 мы узнали о необходимости постановки конкретных целей для процесса разработки приложе­ ния. Существуют три основных типа целей: системные цели, отражающие общую производительность системы; технические цели, отражающие внутреннее функ­ ционирование элементов ваших алгоритмов; и ценности, которых должна придер­ живаться система согласно вашим желаниям. Для того чтобы цели были эффективными, их нужно сформулировать с учетом мнения заинтересованных сторон и экспертов предметной области (см. разд. "Сбор команды для ИИ периферийных устройств" главы 5). Вам нужно будет определить минимальные жизнеспособные характеристики проекта. Это критерии, используе­ мые для оценки успешности проекта как на системном, так и на техническом уров­ нях. По возможности, они должны быть количественно измеримы с помощью стан­ дартных показателей для данной предметной области, чтобы их можно было использовать для конкретной оценки прогресса вашего проекта. Лучший способ установить системные цели - это подход на основе оценки. Системные цели Система ИИ периферийных устройств редко создается как первопроходческое и единственное решение задачи. Чаще всего решения уже существуют. Когда мы разрабатываем ИИ-приложение, важно уделить время оценке нашего решения в сравнении с существующими, а не только с различными вариантами самого реше­ ния. Если сравнивать нашу систему с самой собой, то почти гарантированно можно увидеть улучшения на протяжении всего процесса разработки. Но чтобы убедиться в том, что выбранное решение действительно лучше, чем альтернативы, необходи­ мо сопоставить его с ними. Вот почему подход к разработке на основе оценки может быть таким мощным. При таком подходе первым шагом в процессе разработки является формирование набо­ ра оценочных показателей, достаточно общих для измерения эффективности любо­ го потенциального решения проблемы - ИИ или иного.
Дизайн приложений с искусственным интеллектом периферийных устройств 1 309 Например, представьте, что вы разрабатываете приложение ИИ периферийных уст­ ройств, помогающее сотрудникам розничной торговли узнать, когда полки опусте­ ют и их нужно пополнить. Один из способов решения этой задачи - сосредото­ читься на технологиях. В качестве цели можно решить, что система должна быть способна с точностью до 90% предсказывать, когда полка нуждается в пополнении запасов. Звучит довольно неплохо: точность 90% что полки пусты, в что кажется разумным. Но эта метрика говорит 9 случаях из 1О, означает, что модель правильно определит, лишь о сырой производительности алгоритмов. Она не дает никакого представле­ ния о том, действительно ли система помогает. Сравнение с текущим решением также бесполезно - скорее всего, сотрудник уже может со 100-процентной точно­ стью определить, пуста полка или наполнена, без всякой помощи ИИ! Вместо того чтобы концентрироваться на технических показателях, попробуйте сделать шаг назад и посмотреть на картину в целом. Реальная цель нашей систе­ мы облегчить работу персонала розничной торговли, чтобы гарантировать по­ - стоянное наличие товаров на полках магазина, так у покупателей будет достаточно товаров для покупки. Исходя из этого, можно выбрать более значимую метрику. Такой более точной метрикой может стать доля времени, в течение которого на данной полке находится товар 1 . В качестве цели можно сказать, что в среднем пол­ ка должна быть заполнена на 90%. Затем можно измерить нашу текущую систему- ручные усилия сотрудников- в сравнении с поставленной целью. Хотя сотрудникам легко определить, пуста ли та или иная полка, они могут быть очень заняты большую часть дня и не располагать временем для постоянной проверки каждого уголка магазина, чтобы убедиться, что все полки заполнены. Это может привести к тому, что средняя норма запасов со­ ставит 70%. Теперь мы знаем базовую производительность текущего решения цель (90%). (70%), а также Этот 20-процентный дефицит и должно восполнить решение на основе ИИ. Знания о текущем решении и о том, какие улучшения необходимо внести, мо­ гут направить процесс проектирования и разработки продукта. Например, посколь­ ку мы знаем, что проблема возникает из-за того, что сотрудники слишком заняты, чтобы проверять весь магазин, можно сконцентрировать разработку на уведомле­ нии их о пустых полках таким образом, чтобы это не противоречило их другим обязанностям. Поскольку у нас есть удобная метрика для измерения успеха, можно развернуть первоначальную систему на некоторых полках и легко понять, насколь­ ко она эффективна. Всегда есть вероятность того, что данные метрики помогут пересмотреть началь­ ные предположения и решить проблему по-другому, возможно, вообще без исполь­ зования ИИ. Например, может оказаться, что дешевле изменить штатное расписа­ ние, чтобы решить проблему, чем внедрять систему ИИ периферийных устройств в 1 Еще более высокоуровневой метрикой может быть выручка магазина, предполагающая, что более высокая выручка- это лучше, но на эту метрику влияет больше факторов, и поэтому она будет более зашумленным способом измерения -эффективности нашей системы.
310 Глава 8 каждом магазине. Несмотря на то, что это нетехнологичное решение, оно все равно будет победой подхода к разработке на основе оценки. Важно помнить, что "вы- это то, что вы измеряете", т. е. метрики, используемые для количественной оценки целей, окажут огромное влияние на то, в каком направ­ лении вы в итоге пойдете. Если вы будете измерять не то, что нужно, то в итоге по­ теряете время, деньги и возможности, а ситуация, вероятно, даже усугубится. Если вы сможете определить, что именно нужно измерять и улучшать, сила итеративной разработки позволит вам добиться необычайного эффекта. Модернизация существующего периферийного решения В некоторых случаях можно усовершенствовать существующее периферийное развертывание, внедрив в него более сложный ИИ. Например, у вас может быть система на основе простого эвристического алгоритма, работающая приемлемо, но все еще скрывающая возможности для улучшения. На самом деле это идеальная ситуация. Поскольку развернутая рабочая система уже имеется, вы, предположительно, хорошо знаете предметную область и уни­ кальные решаемые здесь задачи. Скорее всего, у вас также есть эффективные метрики для измерения успеха, в противном случае вы не узнаете, что вам нужно улучшить. Кроме того, потенциальное преимущество заключается в том, что у вас уже есть устройства, с помощью которых можно собирать данные. Для того чтобы модернизировать существующую систему, следует придержи­ ваться примерно того же процесса проектирования, что и при запуске любого другого существующего проекта (т. е. проекта, в котором используется сущест­ вующее оборудование). Однако в некоторых моментах вы обнаружите, что мо­ жете повторно использовать свою предыдущую работу. На протяжении всего процесса разработки необходимо постоянно сравнивать новую систему с оригиналом и убеждаться, что она способна с комфортом пре­ взойти старый подход. Если более простое решение работает почти так же хоро­ шо, возможно, лучше остановиться на нем, а не брать на себя обязательства по дополнительной сложности и долгосрочной поддержке, требующиеся решению на основе ИИ. Технические цели В то время как системные цели играют важную роль в обеспечении правильного построения, технологические аспекты вашей системы должны иметь собственный набор целей. Понимание текущей и целевой производительности алгоритма ИИ, например, поможет вам направить усилия по разработке в нужную область. Представьте, что вы разрабатываете модель поиска ключевых слов для устройства из сферы "умный дом". Для моделей поиска ключевых слов производительность часто выражается в виде комбинации коэффициента ложного соответствия и ко­ эффициента ложного отклонения - два числа, совместно описывающие, насколь­ ко вероятно, что модель допустит ошибку. Для того чтобы обеспечить качество
Дизайн приложений с искусственным интеллектом периферийных устройств 1 311 продукта, можно вместе с заинтересованными сторонами и дизайнерами взаимо­ действия решить, что коэффициент ложного соответствия должен составлять менее 5%, а коэффициент ложного отклонения Следующая задача - менее 1%. Эги цифры станут вашей целью. определить механизм тестирования вашей работы. Наличие незыблемой цели не принесет пользы, если вы не сможете измерить свой прогресс в ее достижении. Часто при тестировании используется тестовый набор данных, но всегда есть различия между производительностью на тестовом наборе данных, обычно собранном в идеальных условиях, и реальной работой. Самые надежные показатели можно получить из систем, развернутых в производ­ стве. На этом этапе важно определить, какие метрики будут доступны вам в поле­ вых условиях. Измерить реальную производительность часто бывает непросто, по­ скольку реальные данные не получают меток. Если вы пытаетесь определить, как можно измерить производительность приложения в полевых условиях, вероятно, стоит пересмотреть свой проект - без метрик вы не сможете понять, работает ли оно вообще. Возможно, вы используете ИИ для улучшения существующей системы, и в некото­ рых случаях у вас уже есть определенные оценочные метрики, применявшиеся для оценки текущей системы. В любом случае, для такой оценки и предполагаемой за­ мены на блок ИИ стоит использовать одни и те же метрики. Всегда полезно иметь эталон для сравнения. Поскольку ИИ-разработка имеет итеративный характер, вам также следует учиты­ вать количество выделенного на работу времени. Вашей целью должно быть уве­ личение производительности системы до тех пор, пока не будет достигнут мини­ мально допустимый уровень производительности. Если прогресс застопорится, вам нужно будет решить, попробовать ли другой подход или полностью отказаться от проекта. Возможно, имеет смысл определить этапы работы на пути к цели, чтобы вы могли отслеживать свой прогресс и быть уверенными в том, что развитие про­ екта продвигается. Цели проектирования на основе ценностей Для того чтобы создать ответственное приложение, необходимо определить цели дизайна, представляющие собой ценности, которые вы хотите воплотить в своем ре­ шении. Например, представьте, что вы создаете систему медицинской диагностики. Медицинские эксперты могут согласиться с тем, что было бы безответственно по­ ставлять решение с диагностической точностью ниже определенного порога. Поэтому нужно определить - по согласованию с заинтересованными сторонами и экспертами предметной области- минимальные характеристики производитель­ ности, необходимые для ответственного продукта. Вы можете использовать некий минимальный показатель, чтобы выработать набор твердых критериев "подходит/ не подходит". Их можно будет использовать для контроля за выпуском проекта. Не всегда есть согласованные ценности, поэтому так важно работать с разнообраз­ ной и представительной группой заинтересованных сторон. Поскольку различные
312 Глава В группы людей часто разделяют разные ценности, согласованные вами перечни мо­ гут быть актуальны только в определенном контексте, например, в культуре, к ко­ торой принадлежит большинство представителей заинтересованных сторон. Если договориться о соответствующих ценностях не получается, это может быть призна­ ком того, что ваш проект связан с этическим риском. В процессе разработки очень важно измерять и документировать описывающие производительность системы метрики. Эти данные помогут вам принять решение "подходит/не подходит". Часто приходится оказывать значительное организацион­ ное и межличностное давление, чтобы довести проект до конца. Документирование показателей и наличие четких, прописанных критериев качества позволят вам снять решение с собственных плеч и сделать его частью процессов организации. Эти критерии должны распространяться и на развертывание в полевых условиях. Очень важно иметь возможность отслеживать производительность и потенциально прекращать развертывание, если система не работает должным образом в реальном мире. Поскольку метрики, доступные в полевых условиях, зачастую более ограни­ чены, чем те, что были доступны во время разработки, мониторинг может оказаться непростой задачей. Подробнее об этом будет рассказано в главе ~ 10. Цели долrосрочной поддержки Еще одна ключевая часть процесса проектирования - план долгосрочной поддержки. Большинство систем ИИ требуют наблюдения и обслуживания после развертывания в полевых условиях. Возникновение дрейфа неиз­ бежно и со временем приведет к снижению производительности. Выбран­ ное вами приложение и оборудование в идеале должны иметь возможность сообщать некоторые метрики, помогающие понять, с какой скоростью происходит дрейф. Эта информация поможет вам определить, когда нужно собрать больше данных и обучить новую модель. Цели дизайна должны включать в себя ваши цели по поддержке продукта в долгосрочной перспективе. Подробнее об этом см. в главе 10. Архитектурный дизайн Архитектура системы ИИ периферийных устройств - это способ, которым ее со­ ставные части сочетаются друг с другом для создания эффективного решения. Су­ ществует множество вариантов архитектуры любой системы. Каждая архитектура имеет свои уникальные компромиссы. Задача системного архитектора - проанали­ зировать ситуацию и выбрать архитектуру, позволяющую максимально использо­ вать преимущества технологии. В следующем разделе этой главы будут изложены основы архитектуры систем для приложений ИИ периферийных устройств. Архитектура программного и аппарат­ ного обеспечения - обширная тема, поэтому сосредоточимся на имеющих отно-
Дизайн приложений с искусственным интеллектом периферийных устройств 1 313 шение к ИИ периферийных устройств ее частях. Мы заложим прочный фундамент и предоставим набор паттернов проектирования для решения самых разных задач. Оборудование, программное обеспечение и сервисы Приложения ИИ периферийных устройств состоят из трех основных компонентов: оборудования, программного обеспечения и сервисов. Аппаратное обеспечение включает в себя сами периферийные устройства с их про­ цессорами, памятью и датчиками, с огромным разнообразием которых мы позна­ комились еще в главе 3. Сюда же относятся способы питания устройств и средства их связи с окружающим миром. Программное обеспечение- это магия, вдыхающая жизнь в систему. Оно начина­ ется с низкоуровневых драйверов, позволяющих программному обеспечению взаи­ модействовать с самим оборудованием, включая датчики, периферийные и сетевые устройства. Также оно включает в себя все алгоритмы обработки сигналов и ИИ, работающие на устройстве. Самое главное это прикладная логика, она интерпре­ - тирует выдаваемые алгоритмами ИИ сигналы и определяет, как на них реагировать. Сервисы - это внешние системы, взаимодействующие с системой ИИ периферий­ ных устройств. Это могут быть коммуникационные сети, беспроводные системы, платформы управления loT, веб-интерфейсы API и облачные приложения - все, что находится вне периферийной системы и взаимодействует с ней по какому-либо каналу. Это может быть ваша собственная инфраструктура или она может быть предоставлена третьей стороной. Эффективная архитектура ИИ периферийных устройств предполагает использова­ ние этих трех компонентов и их творческое сочетание, обеспечивающее оптималь­ ный баланс компромиссов в конкретной ситуации. Это требует глубокого понима­ ния задачи, ограничений и предметной области. Именно поэтому важно тщательно изучить всю задачу, прежде чем приступать к данному этапу проектирования. Ваше понимание ситуации поможет использовать оборудование, программное обеспечение и сервисы. Например, в условиях минимальных возможностей под­ ключения вам придется сосредоточиться на высокопроизводительном оборудова­ нии и обойтись без некоторых преимуществ сервисов. Жестко ограниченная в ап­ паратном плане существующая проекты" главы 2) платформа (c,w. разд. "Новые и существующие может побудить вас более творчески подойти к использованию программного обеспечения. Необходимость в сложном программном обеспечении и больших моделях может привести к тому, что облачные сервисы ИИ будут играть значительную роль в вашем конкретном приложении. Некоторые знакомые нам важные понятия в архитектуре ИИ периферийных уст­ ройств включают гетерогенные вычисления в главе 3) (c.w. врезку "Гетерогенные вычисления" и архитектуры с несколькими устройствами (см. разд. "Архитектуры с множеством устройств" главы 3). Это ключевые ингредиенты для некоторых наиболее распространенных из встречающихся архитектур.
Глава 314 8 Базовые архитектуры приложений Простота - это всегда хороший выбор, и вы всегда должны начинать с наименее сложной из доступных архитектур . На рис . 8.1 показана структура типичного при­ ложения ИИ периферийных устройств . Ядром архитектуры является цикл выполнения прwюжения. Это серия повторяю­ щихся шагов, которые захватывают и обрабатывают сигналы, запускают алгоритмы ИИ, интерпретируют их результаты и используют их для принятия решений и ини­ циации действий. Этот процесс называется циклом потому, что шаги повторяются снова и снова по мере того, как устройство получает постоянный поток данных от датчиков. ,--------------• Встроенное ПО устройства или ОС Цикл приложения 1 Измерения Обработка сигнала Драйверы датчиков Извлечение полезных Взаимодействие с датчиками признаков для получения сигналов из необработанных данных API аппаратного обеспечения Алгоритм ИИ Предоставление доступа Выполнение предсказаний к вычислительным на основе признаков возможностям Связь Постобработка Сетевые драйверы Очистка необработанного Отправка или получение сообщений вывода из алгоритма Действия в реальном мире Бизнес-логика Драйверы устройств Управление различными . . -......-1 подключенными устройствами 14-i'-+--t ._______________ Рис. 8.1. 1 Интерпретация выводов, принятие решений и выполнение действий /1 Архитектура приложений ИИ периферийных устройств Цикл приложения поддерживается разделами встроенное ПО устройства WlU ОС2 . Эти компоненты обеспечивают уровень абстракции между аппаратным и про­ граммным обеспечением. Как правило, они предоставляют удобные АР!, с помо­ щью которых цикл приложения может управлять оборудованием . Типичные задачи включают считывание данных с датчиков, отправку и прием сообщений, а также управление подключенными устройствами (например, лампочками, динамиками и исполнительными механизмами) . 2 Используется ли в системе встроенное ПО или операционная система, зависит от ап11аратного обеспечения и приложения, о чем говорится в рщд. "Процессоры для ИИ периферийных устройств" главы 3.
Дизайн приложений с искусственным интеллектом периферийных устройств Как показано во врезке "Гетерогенные вычисления" главы 3, 315 многие устройства ос­ нащены несколькими процессорами. На нашей диаграмме блок АР/ аппаратного обеспечения представляет собой уровень абстракции, позволяющий выполнять вы­ числения в выбранном процессоре. Например, операции модели глубокого обуче­ ния могут вычисляться на отдельном ядре нейронной сети для повышения скорости и эффективности. Прежде чем мы продолжим, будет полезно вернуться к разд. "Аппаратная - -- архитектура ИИ периферийных устройств" главы ~ 3, чтобы напомнить о том, как устроено аппаратное обеспечение периферийного ИИ. Базовый поток В самых простых приложениях существует единый конвейер программного обес­ печения, работающий на одном устройстве . Он получает данные с датчиков, обра­ батывает их и принимает решения. Это показано на рис . 8.2. Считывание Обработка сигнала Алгоритм ИИ Постобработка данных Извлечение Очистка Интерпретация сдатчиков полезных Выполнение предсказаний необработанного выводов, принятие ~ Получение признаков измерений из необработанных с одного датчика данных Рис. 8.2. + на основе + признаков вывода Бизнес-логика ~ решений и выполнение из алгоритма действий Основной поток приложений ИИ периферийных устройств Считывание Обработка сигнала Алгоритм ИИ Постобработка данных Извлечение Очистка Интерпретация сдатчиков полезных Выполнение предсказаний необработанного выводов, принятие ~ Получение признаков измерений из необработанных с одного датчика данных Выборка кадра из изображения Изменение размера изображения с камеры в соответствии с входным размером модели Рис. 8.3. + на основе ~ признаков вывода из алгоритма Бизнес-логика ~ решений и выполнение действий Выполнение классификации изображений (ПОМОЩЬЮ модели глубокого обучения Усреднение оценки "человек" Если средняя оценка человека по нескольким достигает секундам кадров порогового значения, отправляется уведомление Основной поток, применяемый при разработке интеллектуальной камеры Многие успешные приложения используют этот поток, и он должен стать отправ­ ной точкой при разработке архитектуры программного обеспечения. Часто алго­ ритм ИИ в потоке представляет собой одну модель машинного обучения. Напри­ мер, интеллектуальная камера безопасности может использовать этот поток - с
316 Глава 8 моделью зрения, обученной обнаруживать людей, правки сигнала тревоги. На рис. 8.3 в качестве триггера для от­ - показана та же диаграмма с наложенными на нее реальными шагами. Ансамблевый поток Другой распространенный подход использование ансамбля алгоритмов или мо­ - делей, как описано в разд. "Комбинирование алгоритмов" главы 4. В этом случае одни и те же данные с датчиков подаются на несколько моделей, выдающих одина­ ковые результаты, и их результаты объединяются . Такой подход может выглядеть примерно так, как показано на рис. 8.4. СчИ1Ъ1вание Обработка сигнала Ансамбль Постобработка данных Извлечение Запуск Очистка Интерпретация сдатчиков полезных нескольких необработанного выводов, принятие Получеliие измерений r+ r+ признаков алгоритмов из необработанных и объединение данных результатов с одного датчика [ [ [ Рис. + вывода из алгоритма Бизнес-логика + решений и выполнение действий Алгоритм 1 Алгоритм 2 Алгоритм 3 8.4. Ансамблевый поток В ансамбле все алгоритмы обычно производят один и тот же тип вывода . Напри­ мер, вы можете создать ансамбль из трех различных типов классификаторов изо­ бражений, каждый из которых обучен предсказывать наличие человека на изобра­ жении. Комбинируя результаты трех различных типов алгоритмов, вы усредняете преимущества и недостатки каждого из них, что, как можно надеяться, приводит к получению менее предвзятого результата, чем полученный от каждого отдельного алгоритма. Параллельный поток Также можно комбинировать алгоритмы, выполняющие разные функции. Напри­ мер, можно объединить модель классификации с моделью обнаружения аномалий. Выходные данные модели обнаружения аномалий используются приложением, чтобы оно могло понять, когда входные данные выходят за рамки распределения, и поэтому классификатору нельзя доверять. В параллельном потоке (рис. 8.5) выходные данные моделей могут быть объединены либо на этапе постобработки, либо в бизнес-логике. Например, если результаты од­ ной модели используются для модерации результатов другой модели (как в нашем примере с классификацией и обнаружением аномалий), эта модерация может быть
Дизайн приложений с искусственным интеллектом периферийных устройств 1 317 выполнена на этапе постобработки. Если вывод нескольких моделей используется для принятия решения по бизнес-логике, то выводы моделей будут сведены воедино. Классификатор Возврат распределения Считывание Обработка сигнала данных Извлечение сдатчиков полезных Получение + вероятностей r+ по известным классам f+ Постобработка Интерпретация необработанного выводов, принятие признаков вывода измерений из необработанных с одного датчика данных r+ Обнаружение аномалий f+ Бизнес-логика Очистка f+ решений и выполнение из алгоритма действий Измеряет, насколько хорошо данные соответствуют обучающему распределению Рис. 8.5. Параллельный поток Параллельные модели не обязательно означают параллельную обработку (как в слу­ чае с многозадачностью). Многие встроенные процессоры не способны выполнять более одного потока вычислений, поэтому вы можете увеличить общую задержку и энергопотребление вашего приложения с каждой добавленной в конвейер моделью. Последовательный поток Также может быть полезно запускать модели последовательно . В этом потоке, как показано на рис . 8.6, выходные данные одного алгоритма поступают в другой, с постобработкой или без нее. Считывание Обработка сигнала Алгоритм 1 Алгоритм2 данных Извлечение Выполнение Выполнение сдатчиков полезных прогнозов Получение f+ f+ признаков измерений из необработанных с одного датчика данных на основе признаков + прогнозов на основе вывода из Алгоритма 1 ♦ Бизнес-логика Постобработка Очистка Интерпретация необработанного выводов, принятие вывода из алгоритма f+ решений и выполнение действий Рис. 8.6. Последовательный поток
318 Глава 8 Последовательные потоки удобны , когда вы хотите использовать одну модель для извлечения признаков из необработанного входного материала, а затем применять другую модель для изучения изменений в этих признаках . Например, можно ис­ пользовать модель оценки позы , чтобы определить положение рук и ног человека на фотографии, а затем передать эти положения в модель классификации, чтобы определить, какую позу йоги человек принял . Каскадный поток Еще один разумный способ последовательного использования алгоритмов каскад. Каскадный поток показан на рис . - это 8.7. ~---------------------------Каскад ' Считывание Обработка сигнала данных Извлечение сдатчиков полезных Получение измерений ~ 1 1 1 1 1 ~ признаков из необработанных с одного датчика Алгоритм 1 Постобработка 1 Бизнес-логика 2 Выполнение Очистка необработанного выводов, принятие прогнозов на основе ► признаков вывода Интерпретация ~ из алгоритма решений и выполнение действий данных Алrоритм2 Постобработка 2 Бизнес-логика 2 Выполнение Очистка необработанного вь,водов, принятие прогнозов на основе признаков ► вывода из алгоритма Интерпретация ► решений и выполнение действий Рис. 8.7. Каскадный поток Каскадные потоки предназначены для минимизации затрат на выполнение выводов как по времени ожидания , так и по энергопотреблению. Например, представьте се­ бе постоянно работающую систему поиска ключевых слов в устройстве , работаю­ щем от аккумулятора. Модель, необходимая для поиска ключевых слов, может быть довольно большой и сложной, а это значит, что ее постоянная работа быстро разрядит аккумулятор. Вместо этого можно запустить меньшую, более простую модель, предназначенную только для обнаружения речи. Это первый слой нашего каскада. Когда речь обна­ ружена, входные данные передаются на второй слой каскада. Он представляет со­ бой полную модель поиска ключевых слов . Поскольку полная модель поиска клю­ чевых слов запускается реже, экономится электроэнергия. В каскаде можно создавать необходимое для решения задачи количество слоев. В зависимости от области применения каждый слой каскада может получить собст­ венный независимый алгоритм обработки сигнала. В некоторых случаях достиже­ ние определенного уровня каскада может даже привести к захвату данных из дру-
Дизайн приложений с искусственным интеллектом периферийных устройств roro источника - 1 319 например, более качественного микрофона, обеспечивающего лучший сигнал, но при повышенном потреблении энергии . Часто имеет смысл настроить более ранние модели в каскаде на высокие показате­ ли полноты (см . разд. "Точность и полнота" главы 10). Это означает, что при ре­ шении вопроса о том, является ли что-то потенциальным совпадением, модель бу­ дет придерживаться оптимистичного подхода. Такая конфигурация все равно сэкономит энергию по сравнению с одной большой моделью, но снизит риск того, что менее точные ранние модели будут отбрасывать верные данные. Рабочий цикл Рабочий цикл - это процент времени, в течение которого процессор активно ра­ ботает. Когда устройство не работает, его можно перевести в режим пониженно­ го энергопотребления, что позволяет экономить энергию. Каскады экономят энергию, т. к. позволяют урезать рабочий цикл. Это работает потому , что меньшая модель требует меньше времени для работы, чем большая . Поскольку модель нужно запускать лишь периодически (например, когда буфер данных датчиков переполняется), в остальное время процессор можно отключить. В каскаде самая маленькая модель запускается чаще всего. Это приводит к более низкому рабочему циклу, чем если бы большая модель ра­ ботала с той же скоростью . Подробнее о рабочих циклах читайте в подразд. "Рабочий цu1<.:'1 11 разд. "Вычисли­ тельная и аппаратная производительность" главы 1О. Поток объединения показаний датчиков Все описанные до настоящего момента архитектуры работают с одним входным сигналом. В потоке объединения показаний датчиков, как показано на рис . 8.8, входные данные от нескольких датчиков поступают в один и тот же алгоритм ИИ. Считывание Обработка сигнала данных Извлечение сдатчиков 1 Получение + полезных признаков измерений из необработанных с одного датчика данных ~ Алгоритм ИИ Постобработка Выполнение Очистка прогнозов необработанного на основе Считывание Обработка сигнала данных Извлечение сдатчиков2 полезных Получение измерений с одного датчика ~ ~ признаков • вывода из алгоритма признаков из необработанных данных Рис. 8.8. Поток объединения показаний датчиков Бизнес-логика Интерпретация • выводов, принятие решений и выполнение действий
Глава 320 8 Если используются датчики разных типов, то для каждого из них обычно требуется своя форма обработки сигнала, чтобы создать признаки для алгоритма ИИ. Тем не менее существуют также способы объединения датчиков с помощью чистой обра­ ботки сигналов. Классический пример объединения показаний датчиков - носимые устройства для мониторинга сна. В них сигналы от датчиков пульса, температуры и движения объ­ единяются для точного прогнозирования стадии сна пользователя. Объединение показателей датчиков также можно сочетать с любыми другими потоками, описан­ ными в этой главе. Комбинирование алгоритмов на основе правил и МL-алгоритмов Все эти потоки можно использовать для объединения алгоритмов на основе пра­ вил и машинного обучения. Например, можно использовать детерминированную систему на основе правил, разработанную экспертом предметной области, для обработки некоторого процента решений, а все остальное передавать модели машинного обучения. Этот подход сочетает в себе преимущества объяснимости систем, основанных на правилах, и способности МL-моделей обрабатывать пре­ дельные случаи, не описанные правилами. Сложные архитектуры приложений и паперны проектирования Базовые архитектуры приложений можно комбинировать с вариациями аппаратной архитектуры, чтобы создавать более сложные системы, обеспечивающие ценные преимущества. Эти проверенные временем паттерны проектирования можно при­ менить к самым разным проектам. Гетерогенный каскад В гетерогенной аппаратной архитектуре (с.«. врезку "Гетерогенные вычисления" в главе 3) в одном устройстве доступно несколько процессоров или сопроцессоров. Например, в одном устройстве может быть как энергоэффективный класса, так и более мощный, но высокопроизводительный MCU MCU среднего высокого класса. Этот тип аппаратного обеспечения можно объединить с программным обеспечени­ ем, написанным в каскадном потоке (рис. 8.9), чтобы реализовать гетерогенный каскад. Более ранние уровни каскада работают на процессорах классом ниже, что увеличивает экономию энергии. Последние уровни, включающие более сложные алгоритмы, выполняются на процессоре более высокого класса. В любой момент времени только один процессор подключен к питанию и потребляет значительное количество энергии. Гетерогенное оборудование все чаще включает ускорители, предназначенные для эффективной работы моделей глубокого обучения. Они могут отлично подойти для выполнения каскадов. Этот подход используется во многих приложениях для поиска ключевых слов.
Дизайн приложений с искусственным интеллектом периферийных устройств 321 -------- --- --- -- --------,---Каскад ' 1 1 1 1 1 1 1 Бизнес-логика 1 Алгоритм 1 Постобработка 1 Выполнение Очистка Интерпретация прогнозов необработанного выводов, прин ятие + на основе f+ вывода признаков из алгоритмов Работает на энергоэффективном решени й процессоре и выполнени е низкого класса действи й Бизнес-логика 2 Алrоритм2 Постобработка 2 Выполнение Очистка Интерпретаци я прогнозов необработанного выводов, принятие + на основе f+ вывода признаков из алгоритмов Работает на энергоемком решений процессоре и выполнение высокого класса дей ствий ---- -- --- --------------- -----J Рис. 8.9. Гетерогенный каскад Каскад из нескольких устройств Ничто не мешает каскаду охватить несколько устройств, как показано на рис. 8. 1О. Например, умный датчик может проверять данные с помощью простой модели ма­ шинного обучения. Если обнаружено определенное состояние, это может пробу­ дить более мощное шлюзовое устройство, способное более тщательно проанализи­ ровать данные . ( ---------- Каскад ---- Постобработка Алгоритм 1 Бизнес-логика 1 1 Выполнение Очистка Интерпретация прогнозов необработанного выводов, пр и нятие + на основе признаков вывода f+ решени й и выпол нен ие из алгор итмов действи й Алrоритм2 Постобработка 2 Бизнес-логика 2 Выполнение Очистка необработанного выводов, прин ятие прогнозов на основе + при з наков вывода из алгоритмов Интерпретаци я f+ решений и выполнен ие действи й Рис. 8.10. Каскад из нескольких устройств Работает на небольшом устройстве с низким энергопотреблением Работает на отдельном более мощном устройстве
322 Глава 8 Устройство второго этапа может либо использовать данные, переданные первым, либо получать новые данные с помощью собственных датчиков. Устройства моrут быть физически разными, например умный датчик и устройство-шлюз. Они также моrут быть объединены в виде отдельных печатных плат в одном физическом из­ делии. В некоторых случаях совершенно отдельные изделия моrут быть расположены кас­ кадом. Например, дешевая готовая фотоловушка (делающая снимок после обнару­ жения движения с помощью инфракрасного датчика) может выступать в качестве первой ступени каскада. Впоследствии она пробуждает мощную систему SoC, под­ ключенную к тому же устройству хранения и способную выбирать, сохранить или удалить фотографию в зависимости от ее содержания. Каскадирование в облачный сервис Если пропускная способность не так важна, каскады могут охватывать как устрой­ ство, так и облако. Это типичная картина для умных колонок, оснащенных цифро­ выми помощниками. Они используют постоянно включенную модель поиска клю­ чевых слов для обнаружения ключевых слов на устройстве с минимальной задержкой. Как только ключевое слово обнаружено, они передают последующее аудио непосредственно в облако, где большая и сложная модель (слишком боль­ шая, чтобы развернуть ее на периферийном устройстве) расшифровывает и интер­ претирует речь пользователя. На рис. 8.11 показан сложный четырехступенчатый каскад, созданный с использо­ ванием нескольких моделей на устройствах и облачных вычислений. Процесс мо­ жет показаться сложным, но он похож на поток, используемый в современных мо­ бильных телефонах. Первые три этапа происходят на устройстве, в двух разных процессорах - процес­ соре с низким энергопотреблением и ускорителе глубокого обучения. Когда мо­ дель, работающая на энергоэффективном процессоре, обнаруживает речь, пробуж­ дается более мощный процессор и используется для поиска ключевого слова. Если ключевое слово обнаружено, модель транскрипции на устройстве пытается превра­ тить последующее аудио в текст. После расшифровки текст отправляется в облако, где с помощью большой модели обработки естественного языка определяется, что он означает и как на него реагировать. В данном случае речь идет об энергопотреблении, пропускной способности и кон­ фиденциальности, а также о необходимости долгосрочного обслуживания облач­ ной системы. Взамен мы получаем возможность использовать модели слишком большого размера для размещения на устройстве или те, что нежелательно разво­ рачивать локально по соображениям безопасности. Важно убедиться, что эти выго­ ды того стоят, ведь в результате мы отказываемся от большинства преимуществ ИИ периферийных устройств.
Дизайн приложений с искусственным интеллектом периферийных устройств 1 323 -----------------------------------, н ,1 1 1 1 Классификатор речи Прогнозирование вероятности появления речи Постобработка ~ Определение, была ли обнаружена Классификатор слов Прогнозирование ~ появления ~ Работает Решение, на маломощном аоит ли запускать постоянно включенном следующее ядро процессоре Постобработка Бизнес-логика Работает Решение, на процессоре приложений Определение, было ли обнаружено ~ ключевое слово ключевого слова Бизнес-логика реальная речь в потоке аудиозаписей вероятноаи V а устроистве стоит ли запускать с ускорителем следующую модель глубокого обучения в потоке аудиозаписей Транскрипция речи Преобразование аудиоданных в текст Бизнес-логика Постобработка ~ Разделение текста на фрагменты ~ Решение, стоит ли отправлять в облако Работает на процессоре приложений с ускорителем глубокого обучения '----------------------------------~----------------------------------, Облако Обработка естественного языка Определите Постобработка ~ намерения пользователя Рис. 8.11. Извлечение важных фактов и цифр ~ Бизнес-логика Решение, как реагировать Запуск большой модели на облачном сервере, оснащенном графическим процессором Каскад к облачному сервису для поиска ключевых слов Интеллектуальный шлюз Иногда логику ИИ имеет смысл разместить ближе к периферии, но не в узлах ли­ стьев сети. Например, сеть датчиков IoT может собирать множество различных ти­ пов данных о работе завода. Ни один датчик не имеет доступа ко всем данным, но все они отправляют их обратно на шлюзовое устройство. Запустив алгоритмы ИИ периферийных устройств на шлюзовом устройстве, можно проанализировать все данные вместе, что позволит получить более полное представ­ ление о работе всей системы. Выполняя обработку данных на шлюзе, датчики могут оставаться небольшими, дешевыми и энергоэффективными. Все, что им нужно де­ лать, - это собирать и передавать данные, шлюз позаботится об интеллекте. Технология human-in-the-loop В некоторых случаях небезопасно позволять алгоритмам ИИ бесконтрольно при­ нимать решения . Как правило, именно здесь риск неправильного решения может быть очень серьезным.
324 Глава 8 Приведем несколько ярких примеров: ♦ медицинские приложения, где неправильный диагноз или некачественно прове­ денная процедура могут поставить под угрозу жизнь человека; ♦ способная нанести вред крупная техника, такая как беспилотные автомобили или заводское оборудование; ♦ приложения для обеспечения безопасности и обороны, где может быть нанесен преднамеренный ущерб. Есть и множество более тонких примеров. Например, если ИИ используется для обеспечения соблюдения правил в спорте - целью выявления нечестных действий, предвзятость в модели может привести к - возможно, для анализа видеозаписей с несправедливому отношению к участникам. Подобные задачи означают, что часто необходимо разрабатывать системы, рабо­ тающие под контролем человека. Это можно реализовать разными способами. В одной из моделей архитектуры human-in-the-loop человек принимает непосредст­ венное участие в принятии каждого решения. Например, медицинское диагности­ ческое устройство может указывать на наличие у пациента определенного заболе­ вания, но врач все равно должен интерпретировать полученную информацию и принимать окончательное решение, опираясь на собственные суждения. В другой модели человек выступает в роли пассивного наблюдателя, пока не сочтет нужным вмешаться. Например, хотя беспилотный автомобиль может свободно пе­ редвигаться сам по себе, его водитель все равно должен быть внимателен к дороге и готов в любой момент взять управление на себя. В этом случае беспилотный ав­ томобиль обычно использует системы ИИ, чтобы определить, когда водитель не обращает внимания, и предотвратить отказ от выполнения своих обязанностей. Стоит отметить, что вокруг эффективности этой модели ведутся серьезные споры. Люди склонны терять концентрацию, если им не нужно взаимодействовать с сис­ темой, что может подорвать их способность к вмешательству. В третьей модели нет прямого контроля от человека, но выборки алгоритмических решений отправляются на проверку людям-аудиторам. Общий процесс контроли­ руется на предмет надежности, но никто не может вмешаться в него в прямом эфи­ ре во время выполнения того или иного действия. Этот подход важен для долго­ срочного мониторинга приложений и будет рассмотрен далее в главе Подход 10. Graceful Degradation В условиях производственной эксплуатации могут возникнуть причины, по ко­ торым вы захотите "отключить" компоненты системы машинного обучения. На­ пример, можно обнаружить, что модель ML перестала эффективно работать и ее больше нельзя использовать (подробнее об этом см. в разд. "Снижение произво­ дительности" главы 10). Какой бы ни была ваша архитектура, важно предусмотреть запасной вариант, обеспечивающий приемлемое поведение всей системы, если вы будете вынужде­ ны отключить компонент ML.
Дизайн приложений с искусственным интеллектом периферийных устройств 1 325 С практической точки зрения это означает включение в приложение настраивае­ мой условной логики. Она описывает различные сценарии с учетом входных данных, при которых ML будет использоваться или поток выполнения будет этот блок миновать. Это может быть "список запретов", содержащий типы входных данных, из-за которых ML будет пропущен. Например, каждый шаг в каскадной модели может быть защищен оператором tf, как показано ниже: tf ~atches_so~ethtng_tn_deny_ttst(tnput): return non_~t(tnput) etse: return ~t(tnput) В идеале можно обновлять эти списки запретов на лету - возможно, с помощью обновления конфигурации, передаваемого по сети. Если природа вашего пери­ ферийного приложения не допускает такого типа удаленного обновления, вы можете, по крайней мере, встроить возможность изменения конфигурации с по­ мощью аппаратных средств (например, переключив переключатель или подклю­ чив перемычку). Вам нужно будет оценить производительность продукта без МL-частей, чтобы понять, какое влияние окажет их отключение. Работа с папернами проектирования Ну вот мы и познакомились с широким спектром паттернов проектирования. Они должны стать отличной отправной точкой для ваших собственных проектов. Ко­ нечно, реальные ситуации не всегда буквально соответствуют описанным в учеб­ никах паттернам. Не бойтесь корректировать эти идеи в соответствии с потребно­ стями вашей конкретной ситуации. Как мы уже поняли, процесс работы с ИИ периферийных устройств по своей сути является итеративным. Также полезно использовать такой подход к использованию паттернов проектирования. Приведем пошаговую схему работы, вы можете ей сле­ довать: 1. Убедитесь, что вы потратили определенное время на изучение своего набора данных и понимание типов требующихся алгоритмов. 2. Начните с самого простого паттерна рис. 3. 8.2, особенно обычно это схема, изображенная на если вы работаете над одним устройством. Попробуйте отобразить свою задачу на этот паттерн кументов, описывающих ее, включая диаграммы, - составьте несколько до­ и перечислите все плюсы и минусы. 4. Начните итерации в процессе разработки, не забывая о выбранном паттерне проектирования. 5. Если кажется, что вам нужно что-то более сложное, переходите к следующему из доступных для реализации паттерну по сложности.
326 6. Глава 8 Продолжайте итерации и корректировки, пока не добьетесь того, что будет работать. Не поддавайтесь искушению начать с более сложного, чем необходимый, паттерна проектирования. Дополнительная сложность затянет процесс разработки и сформи­ рует дополнительные ограничения, которые заставят вас идти по определенному пути. Все это создает риск, а способ номер один добиться успеха в проектах ИИ - свести риск к минимуму. Учет выбора при проектировании Проекты, создаваемые в ответ на конкретную проблему, формируются под влияни­ ем нашего индивидуального восприятия, а значит, в них могут быть заложены на­ ши собственные (или наших команд) предвзятости. Кроме того, сами архитектуры обладают внутренней предвзятостью. Архитектура представляет собой набор ком­ промиссов, направляющих результаты решения в ту или иную сторону, и вовсе не обязательно намеренно. Так случается при выборе одного конкретного варианта из многих. Существуют три основные категории предвзятости, они берут свое начало в про­ цессе разработки (а не в наборе данных). Это следующие категории. Предвзятость продукта. Продукт представляет собой конкретное решение задачи. По своей природе он выражает мнение о том, как следует решать ту или иную задачу. Он воплощает в себе ограничения и компромиссы, связанные с этим мнением. Все это неизбеж­ но, но важно признать, что это приводит к возникновению предвзятости. Например, представьте, что мы создаем умный домашний термостат, способный предсказать, основываясь на активности пользователя, идеальный момент для регулировки температуры. Возможно, придется выбирать между базовой архи­ тектурой с одним устройством, содержащим датчики высокого разрешения и мощный процессор, и архитектурой интеллектуального шлюза, где дешевые удаленные датчики с низким разрешением устанавливаются в каждой комнате и связываются по беспроводной связи с центральным узлом, выполняющим обра­ ботку данных. Эти компромиссы направляют наш продукт к предпочтительному решению. Система, состоящая из одного устройства, с ограниченным обзором, но превос­ ходными датчиками, скорее всего, будет лучше работать в домах с открытой планировкой или небольших квартирах. Система с удаленными датчиками мо­ жет лучше работать в домах с большим количеством различных помещений. Поскольку каждый дизайн продукта создается для определенной цели, важно выбрать лучше всего соответствующий решаемой задаче дизайн. Если вы разра­ батываете продукт для умного дома, вам, возможно, придется провести исследо­ вание о стилях домов, в которых живут ваши целевые покупатели. Это может помочь в процессе проектирования и выборе подходящей архитектуры.
Дизайн приложений с искусственным интеллектом периферийных устройств 1 327 Алгоритмическая предвзятость. Алгоритмы сами по себе обладают внугренней предвзятостью. Как и в случае с архитектурой, дизайн каждого алгоритма ИИ воплощает в себе конкретное ре­ шение задачи с широким охватом. Математики и специалисты в сфере инфор­ мационных технологий изо всех сил стараются найти обобщенные алгоритмы, работающие на разных типах входных данных. Но в действительности каждый тип алгоритма имеет базовые предположения, подходящие для одних задач лучше, чем для других. Например, можно попытаться разработать сельскохозяйственный продукт, ис­ пользующий обнаружение объектов для подсчета животных на ферме. Можно выбрать из множества различных стилей алгоритмов обнаружения объектов. Один из таких стилей- одноступенчатый детектор (single-shot detector, SSD)3. В нем применяется модель глубокого обучения для предсказания точных огра­ ничительных рамок вокруг интересующих объектов. Другой стиль носит назва­ ние faster objects, more objects (FOMO)4 . Он использует более простой и быстрый подход, определяющий центры объектов, но не рисующий ограничительную рамку. Эффективный продукт можно создать на основе любого из этих алгоритмов. При этом разные алгоритмы делают различный выбор, и это будет заметно по производительности продукта. Например, благодаря тому, как построена функ­ ция потерь, SSD-модели лучше определяют крупные объекты, чем мелкие. В производстве это может привести к тому, что продукт будет лучше работать на небольших полях, где животные расположены ближе и занимают больше места в кадре. Напротив, FOMO наиболее эффективен, когда центры объектов распо­ ложены не слишком близко друг к другу. Это означает, что он может работать лучше всего, когда животные более рассредоточены. Как и в случае с предвзято­ стью в отношении к продуктам, алгоритмы важно выбирать с учетом их воз­ можного развертывания. Если продукт будет продаваться для подсчета овец на больших полях, то FOMO может быть правильным выбором. Если он будет про­ даваться для подсчета коров в загоне, SSD может быть лучшим вариантом. В любом случае необходимо убедиться, что ваш продукт тщательно протестиро­ ван, прежде чем он поступит в продажу. Ваш набор данных также послужит основой для принятия решений. Как мы уже видели, очень важно убедиться в том, что ваш набор данных соответствует ре­ альным условиям. Если набор данных адекватно представляет то, что ваш про­ дукт увидит "в поле", вы не будете удивлены предвзятостью алгоритмов. Если набор данных не является репрезентативным, предвзятость не будет обнаруже­ на, и вы можете заметить, что ваша система работает недостаточно эффективно. См. Лу Вэй и др. "SSD: одноступенчатый мультибоксовый детектор" (Lu Wei et а\. SSD: Single Shot MultiBox Detector // arXiv. - 2016 (https://oreil.ly/ZU6-S)). 4 См. Луи Моро и Мэт Келси "Объявляющиl! FOMO (Faster Objects. More Objects)" (Moreau L., Ке\­ сеу М. Announcing FOMO (Faster Objects, More Objects) // Edge lmpu\se: [site]. March 28. 2022 (https://oreil.ly/NdEG-)). 3
328 Глава 8 Интересным способом смягчения смещения алгоритмов является использование ансамблей, как описано в разд. "Комбинирование ш,горитмов" главы 4. Приме­ нение ансамбля различных алгоритмов сгладит крайности, обеспечив наиболее близкий к идеальному подход. Ансамбли часто побеждают в конкурсах машин­ ного обучения, где целью является высокая производительность на неизвестном наборе данных. Однако это не означает, что ансамбли не подвержены предвзя­ тости. Кроме того, поскольку они предполагают выполнение нескольких алго­ ритмов, их использование на периферийных устройствах может оказаться непо­ мерно дорогим. Предвзятость развертывания. Этот тип предвзятости возникает, когда система развертывается так, как она не была задумана. Продукт, созданный для решения конкретной проблемы, не га­ рантирует эффективности при использовании в различных контекстах. Неважно, насколько тщательно разработчики постарались смягчить предвзятость - при применении к сценарию, отличному от того, для которого он был разработан, все расчеты аннулируются. Например, рассмотрим медицинское устройство, предназначенное для монито­ ринга биосиrналов пациента и прогнозирования вероятности наступления опре­ деленного состояния здоровья. Устройство было тщательно разработано, чтобы присущие ему компромиссы хорошо сочетались с прогнозируемым состоянием здоровья. Используемые в нем алгоритмы были оценены и отобраны на основе высококачественного, репрезентативного набора данных, собранных у пациен­ тов с таким же заболеванием. Это устройство может очень хорошо работать на пациентах с тем заболеванием, для которого оно предназначено. Однако что будет, если врач попытается ис­ пользовать его для прогнозирования сопутствующего заболевания, проявляю­ щегося схожим образом, но отличным в некоторых тонких аспектах? Поскольку продукт был разработан с учетом исходных условий, невозможно определить, как он будет работать в новых условиях без всестороннего тестиро­ вания с большим количеством новых данных. Даже если некоторым пациентам он помогает, есть и такие, для которых он не работает, подвергая их жизнь опас­ ности. Предвзятость врача, предполагающего, что условия достаточно схожи, чтобы препарат продолжал действовать, отражается на результатах - здоровье пациентов может быть поставлено под угрозу. Для того чтобы свести к минимуму предвзятость при развертывании, важно, чтобы пользователи вашего продукта понимали ограничения его возможностей и были достаточно ответственны, чтобы не использовать его не по назначению. В ситуациях, связанных с жизнью и смертью, например, с медицинскими прибо­ рами, применение некоторых из них может быть даже закреплено законодатель­ но: прибор может быть одобрен для законного использования при определенном заболевании и ни при каком другом, и только лицензированными медицинскими специалистами.
Дизайн приложений с искусственным интеллектом периферийных устройств 1 329 Публикация открытой информации о функционировании вашего продукта при­ носит огромную пользу. Например, вы можете поделиться ключевыми фактами о наборе данных, использованном для создания продукта, или статистикой о производительности вашего продукта в различных сценариях. Таким образом, пользователи смогут понять точную природу и ограничения вашего продукта и будут менее склонны ошибочно применять его в неправильных условиях. Есть продукты, которые так легко использовать не по назначению, что их лучше оставить на чертежной доске. Однако потенциал неизбежных злоупотреблений как на поле боя, так и за его пределами стороны террористических как со стороны правительств, так и со - группировок - заставил многих специалистов по ИИ пообещать не работать над созданием летального ИИ. Вы можете сами дать такое обязательство на сайте stopkillerrobots.org (https://oreil.ly/tМIPF). Результаты проектирования Полезно думать о процессе проектирования с точки зрения артефактов, получае­ мых в результате этого процесса. В следующих трех врезках представлены наибо­ лее распространенные заметки и документы, относящиеся к начальной, исследова­ тельской части процесса проектирования. Процесс начинается с понимания задачи и выработки возможных решений. Задачи и решения • Описание задачи (см. разд. "Описание задачи" главы • ВLЕRР-анализ (см. разд. "Нужно ли развертывание на периферии?" главы • 6). 6). Идеи минимально жизнеспособного продукта (см. разд. "Определение мас­ штаба решения" ранее в этой главе). Следующим шагом будет определение типа решения, которое является выполни­ мым. Изучение возможности реализации • Исследование моральной целесообразности (см. разд. "Возможность реали­ зации с мораr~ьной точки зрения" главы • 6). Исследование целесообразности с точки зрения бизнеса (см. разд. "Возмож­ ность реализации с точки зрения бизнеса" главы • 6). Изучение целесообразности с точки зрения набора данных (см. разд. "Воз­ можность реаr~изации с точки зрения набора данных" главы • 6). Изучение технологической целесообразности (см. разд. "Технологическая воз­ можность реализации" главы 6).
Глава 330 8 Когда у нас есть решение, которое мы считаем осуществимым, можно приступить к созданию дизайна. Дизайн и планирование • Цели и стандарты дизайна (см. разд. "Постановка целей дизайна" ранее в этой главе). • Описание ограничений по времени и ресурсам (см. разд. "Планирование про­ екта ИИ периферийных устройств" главы • 6). Предлагаемый поток приложений (см. разд. "Архитектурный дизайн" ранее в этой главе). • Предлагаемая аппаратная архитектура (см. разд. ''Аппаратная архитектура ИИ периферийных устройств" главы • 3). Предлагаемая архитектура программного обеспечения (см. разд. ''Архитек­ турный дизайн" ранее в этой главе). • Долгосрочный план поддержки (см. разд. "Постаиовка целей дизайна" ранее в этой главе). • Анализ выбора дизайна (см. разд. "Учет выбора при проектировании" ранее в этой главе). Резюме Поскольку процесс проектирования и разработки является итеративным на протя­ жении всего проекта, все эти документы следует рассматривать как неокончатель­ ные - вы можете создавать новые, обновленные их версии по мере выполнения проекта. Как только будут собраны ранние версии всех этих материалов, вы сможете про­ вести анализ и убедиться, что продукт все еще кажется осуществимым и находится в пределах допустимого риска. Если все выглядит хорошо, пора приступать к ак­ тивной разработке.
ГЛАВА 9 Разработка приложений с искусственным интеллектом периферийных устройств Разработка приложения для ИИ периферийных устройств - сложная задача. В этой главе мы познакомимся с итерационной моделью разработки, помогающей успешно внедрять ИИ периферийных устройств в реальных проектах. Итеративный рабочий процесс для разработки ИИ периферийных устройств Процесс разработки успешного приложения прост на базовом уровне - начните с малого, вносите постепенные изменения, измеряйте свой прогресс и выходите из игры, когда достигнете поставленных целей. Сложность возникает, когда вы пред­ ставляете огромное количество движущихся частей, составляющих технологию ИИ периферийных устройств. Цель этого раздела книги - предоставить конкретный процесс, выполняемый для максимального увеличения шансов на успех. Как мы узнали из разд. "Рабочий процесс ИИ периферийных устройств" главы 6, основная идея этого рабочего процесса заключается в силе обратной связи. Наша цель - создать циклы обратной связи между различными этапами процесса, что приведет к постоянно улучшающемуся пониманию задачи, нашего решения и наи­ лучших способов их объединения (рис. 9 .1 ). Это итеративный процесс, но некоторые его части более итеративны, чем другие. На самых ранних этапах - разведка, постановка целей и начальная загрузка - мы выясняем, что необходимо сделать и как это можно сделать. В первую очередь эти вопросы учитываются при предварительном планировании, а затем при периодиче­ ской переоценке по мере поступления новой информации - возможно, после пер­ воначального развертывания или при появлении значительного количества новых данных.
332 Глава 9 Тестирование и итерации Изучение ( Исследование ------.---------· ----------+---' 1 Приложение ] -----Начальная загрузка Набор данных 1 , ======г====- Алгоритмы 1 ------L------ Постановка целей ------т---- Аппаратное обеспечение 1 1 1 ---. Цикл обратной связи : Развертывание : Поддержка , Рис. 9.1. Циклы обратной связи занимают центральное место в рабочем процессе ИИ периферийных устройств, впервые представленном в разд. "Рабочий процесс ИИ периферийных устройств" главы 6 Средняя часть рабочего процесса, в разделе тестирования и итерации, является более радикально итеративной . Она представляет собой часть плотной спирали разработки, тестирования и совершенствования, направленной на достижение по­ ставленных вами целей. Вы можете рассматривать эти блоки как четыре парал­ лельных направления разработки, информирующие друг друга по мере развития в направлении удовлетворения ваших требований. Разделы развертывания и поддержки также являются итеративными, но опять же в более медленном темпе, чем основной раздел. Это часть их сущности - после раз­ вертывания и попадания в руки пользователей развитие системы обречено на за­ медление. Однако именно на этом этапе начнут поступать самые важные отзывы, и ваша система должна будет начать адаптироваться к изменяющимся условиям ре­ ального мира. Чем раньше вы сможете развернуть и задействовать этот источник информации, тем лучше . В следующем разделе главы мы рассмотрим каждую тему рабочего процесса и из­ ложим некоторые ключевые действия и концепции. Исследование Исследование - это способ понять, что мы пытаемся сделать. Этот процесс вклю­ чает в себя многое из того, о чем мы узнали в главе 6, и состоит из следующих ос­ новных задач: ♦ ♦ опишите решаемую задачу (см. разд. "Описание задачи''); определите, нужен ли вам ИИ периферийных устройств (см. разд. "Нужно ли развертывание на периферии?" и "Есть ли необходимость в использовании ма­ шинного обучения?'') ; ♦ выясните, является ли проект осуществимым (см. разд. "Определение возмож­ ности реализации'');
Разработка приложений с искусственным интеллектом периферийных устройств ♦ 1 333 формулируйте проблему, сопоставляя ее с известными методологиями (см. разд. "Формулирование задач '1; ♦ проанализируйте предложенное вами решение на предмет потенциальных рис­ ков, вреда и непредвиденных последствий (см. разд. "Возможность реализации с .«оральной точки зрения" главы ♦ 6); определите заинтересованные стороны и поймите, чего они хотят и в чем нуждаются (см. разд. "Заинтересованные стороны" главы 5); ♦ выполнение первоначального исследования данных. Последний шаг во многом зависит от того, есть ли у вас средства для сбора данных на текущем этапе, даже если они небольшие и ограниченные. Настоятельно реко­ мендуется иметь под рукой определенный набор данных, чтобы попытаться опре­ делить возможность реализации - данные представляют собой настолько большой риск проекта ИИ, что очень важно начать разбираться в них как можно раньше. Вы должны, по крайней мере, понять, насколько сложно будет собрать достаточ­ ный набор данных. Скорее всего, это станет одной из ваших главных задач, и будет катастрофой вложить много усилий и обнаружить, что данные невозможно полу­ чить. Если вы не можете приступить к изучению данных на текущем этапе, сделайте это при первой же возможности. Исследование данных Исследование данных, также (exploratory data analysis, EDA), - известное как разведочный анализ данных это задача изучения набора данных. В нашем контексте мы выполняем эту операцию с целью понять, будет ли набор данных полезен для решения нашей задачи, будь то способ оценить производительность алгоритмов или обучающий набор данных для использования в машинном обу­ чении. Исследование данных обычно включает в себя следующее. Статистический анализ. Использование описательной статистики для обобщения свойств данных. Уменьшение размерности. Преобразование данных для облегчения их анализа. Конструирование признаков. Извлечение полезных сигналов, как показано в разд. "Конструирование при­ знаков" главы 4. Визуализация. Создание графиков, отображающих структуру данных. Моделирование. Обучение моделей машинного обучения для изучения взаимосвязей в данных.
Глава 334 9 Исследование данных - это большая и увлекательная область, естественная сфера деятельности специалистов по изучению данных и машинному обучению. Существует огромное количество программных инструментов для исследования данных, но из-за сложных концепций и терминологии они могут показаться не очень доступными для пользователей, не имеющих определенного опыта в об­ ласти науки о данных. Тем не менее за небольшой промежуток времени можно приобрести разумные V навыки начального уровня, изучив множество ресурсов по этои теме 1 . Однако одна из проблем ИИ периферийных устройств заключается в том, что большая часть данных, с которыми мы работаем, - это данные датчиков в виде высокочастотных временнь1х рядов и изображений с высоким разрешением, а данные такого типа являются относительными новичками в области науки о дан­ ных. Инструменты для исследования данных часто ориентированы на табличные данные, низкочастотные временнь1е ряды и текстовые данные, такие как корпо­ ративные финансовые данные и сообщения в социальных сетях. Это означает, что бывает трудно найти способные помочь инструменты и ресурсы. Можно заметить, что инженеры, специализирующиеся в областях, не относя­ щихся к традиционной науке о данных, обладают навыками, которые могут по­ мочь в исследовании данных для ИИ периферийных устройств. Например, у ин­ женеров, занимающихся цифровой обработкой сигналов, есть множество инструментов для изучения данных датчиков, а естественно-научные специали­ сты (например, биологи и физики) часто обладают сильными практическими на­ выками в этой сфере. Постановка целей Постановка цели- это попытка описать, к чему мы стремимся. В главах 5, 6 и 8 мы уже видели различные виды деятельности по постановке целей. Процесс вклю­ чает в себя следующие основные компоненты: ♦ определение показателей оценки, которые вы будете использовать до и после развертывания (см. разд. "Постановка целей дизайна" главы 8); ♦ установка системных целей для проекта (см. разд. "Системные цели" главы 8); ♦ установка технических целей для реализации (см. разд. "Технические цели" гла­ вы 8); ♦ согласование ценностей с заинтересованными сторонами (см. разд. "Заинте­ ресованные стороны" главы 5); ♦ создание системы ценностей для интерпретации прогресса (см. разд. "Цели про­ ектирования на основе ценностей" главы 8); 1 Высоко ценится посвященная этой теме книга Джоэла Граса "Data Science. Наука о данных с нуля" (Grus J. Data Science from Scratch: First Princip\es with Python. - O'Reilly, 2019. - 403 р. (https://learning.oreilly.com/library/view/data-science-from/9781491041111/)).
Разработка приложений с искусственным интеллектом периферийных устройств ♦ 1 335 создание наблюдательного совета для оценки текущего проекта (см. разд. "Разнообразие" главы 5); ♦ разработка схемы тестирования ваших алгоритмов и приложения; ♦ определение долгосрочных целей поддержки; ♦ определение того, как предстоит принимать решение о прекращении проекта. Цели должны быть измеримыми, чтобы быть значимыми, поэтому многие из этих пунктов зависят от наличия эффективного процесса тестирования и оценки вашей системы. Подробнее об этом будет рассказано в главе 1О. Как завершить проект ИИ периферийных устройств - дело рискованное, и большая часть проектов не доходит до производства. Это вполне естественно, ведь большая часть процесса разработки посвящена тому, чтобы понять, можно ли решить проблему с помощью имеющихся ресурсов. Однако, когда мы вкладываемся в проект - персонально, финансово и организа­ ционно, бывает трудно понять, в какой момент нужно остановиться. Вот почему так важно с самого начала проекта иметь четкое представление о минимально до­ пустимых характеристиках. Вам нужно будет определить эти минимальные стан­ дарты для каждого типа целей: системных, технических и этических. Например, нет ничего хорошего в том, что у вас имеется высокопроизводительный алгоритм (согласно вашим техническим показателям), если ваша система после развертыва­ ния не дает ожидаемого эффекта для бизнеса. Неудачи - это ключевая часть итерационного процесса открытий и инноваций, особенно когда речь идет об ИИ. Главным будет определить, когда направление развития не оправдывает себя, до того, как на его поиски будет потрачено слишком много ресурсов провалиться рано, провалиться быстро. Если получится выявить - непродуктивные усилия на ранней стадии, вы сможете быстро изменить цели и из­ бежать лишних затрат времени. По этой причине очень важно определить этапы и критерии выполнения/невыпол­ нения проекта. На каждом этапе проектирования и разработки вы должны быть го­ товы оценить текущее состояние и сделать вывод о том, работает ли текущий под­ ход или пора попробовать что-то другое. Записать эти этапы на ранней стадии постановки целей - хорошая идея, потому что это заставит вас критически осмыс­ лить проект на ранней стадии. Всегда можно пересмотреть свои цели по мере дос­ тижения прогресса. Некоторые проблемы просто неразрешимы, особенно когда тру дно получить адек­ ватные данные. В таких случаях вам, возможно, придется принять непростое реше­ ние о полном отказе от проекта. Для того чтобы это не стало для вас неожиданно­ стью, перед началом работы следует понять, каков предоставленный бюджет по времени и деньгам, и определить лимит, который вы готовы потратить на достиже­ ние определенного прогресса. Если вам кажется, что вы недостаточно близки к це-
Глава 336 9 лям, примите решение остановиться. Возможно, лучше прервать неудачный проект на полпути и вернуться к чертежной доске, чем потратить весь бюджет и остаться ни с чем. Начальная загрузка Начальная загрузка (bootstrapping)- это то, как мы переходим от понимания про­ блемы к первой итерации решения. Для этого нужно запачкать руки данными и на­ чать процесс построения темы из главы - 7 и текущей главы. Ключевые задачи: ♦ сбор минимального набора данных (см. разд. "Оценка требований к данным" главы ♦ 7); первоначальная попытка определить требования к оборудованию (см. разд. "Возможности устройств и выбор решений" главы 6); ♦ разработка максимально простого начального алгоритма; ♦ построение простейшего полного приложения (см. рис. 8.1 ); ♦ проведение первоначального тестирования и оценки в реальных условиях (см. главу ♦ 10); проведение ответственного анализа ИИ вашего раннего прототипа. Мы уже сталкивались с некоторыми из этих концепций, но это первый раз, когда мы собираем воедино все компоненты целого рабочего приложения. Почему полезно применять начальную загрузку Цель начальной загрузки - быстро получить нечто, хотя бы немного напоминаю­ щее прототип, даже если оно крайне ограничено, неполноценно и содержит оши­ бочные предположения. Но зачем тратить время на некачественный прототип, если можно просто разработать компоненты по отдельности и собрать их воедино в конце? Существует огромная разница между рассуждениями о чем-то на бумаге и ощуще­ нием осязаемой части технологии, особенно если эта технология предназначена для взаимодействия с физическим миром. Быстро создав прототип, вы дадите себе, сво­ ей команде и заинтересованным сторонам возможность опробовать его, понять, насколько он подходит для решения поставленной задачи, и выявить множество потенциальных проблем намного раньше. Итеративная разработка - это проверка ваших предположений. Это попытка бы­ стро определить, является ли то или иное решение правильным, чтобы у вас было время скорректировать его, если это не так. Это можно (и нужно) делать с отдель­ ными компонентами системы, но для такого сложного продукта, как ИИ перифе­ рийных устройств, необходимо видеть, как все это работает вместе. В любой слож­ ной системе существуют зарождающиеся явления и циклы обратной связи, и вы не сможете по-настоящему понять, как что-то работает, пока не увидите, как оно взаимодействует с реальным миром.
Разработка приложений с искусственным интеллектом периферийных устройств 1 337 Помимо огромных преимуществ раннего тестирования, возможность продемонст­ рировать свой продукт на раннем этапе обладает огромной силой. Еше до того, как продукт будет готов, демонстрация его работы может быть очень убедительной для заинтересованных сторон, потенциальных клиентов и вашей собственной команды. Это может оказаться важным для получения поддержки и ресурсов, необходимых для завершения проекта. С другой стороны, если вы обнаружите, что первые демо­ версии никого не убеждают, это хороший сигнал к тому, что требуется пересмот­ реть свой дизайн. Не всегда можно создать весь сквозной поток на ранней стадии. Ничего страшного: вы все равно сможете извлечь пользу из интеграции доступных вам компонентов системы. При этом, если проект по своей природе трудно интегрировать до самого конца, он несет в себе гораздо больший риск. Разработка базового алгоритма В разд. "Системные цели" главы 8 мы узнали о необходимости применения подхо­ да на основе оценки, когда эффективность нашей системы постоянно измеряется и сравнивается с базовыми показателями. Во многих случаях существует некая сис­ тема, не связанная с ИИ, производительность которой можно измерить и сравнить. В любом случае, при начале разработки алгоритма необходимо стремиться сразу же установить базовый уровень производительности алгоритма - его надо будет попытаться превзойти. Для того чтобы проиллюстрировать эту концепцию, давайте представим, что мы создаем систему, сокращающую время проверки качества шоколадных конфет, из­ готавливаемых на производственной линии. Общая идея заключается в возможно­ сти обучить модель зрения глубокого обучения определять конкретные недостатки отдельных шоколадных конфет и предоставлять обратную связь работникам на производственной линии в режиме реального времени. Первое, что необходимо сделать, определить текущие базовые показатели про­ - изводительности. Возможно, в настоящее время контроль качества осуществляется сотрудниками вручную, и на каждую коробку шоколадных конфет уходит 30 се­ кунд. Учитывая запросы заинтересованных сторон, можно решить, что наша цель состоит в сокращении времени, затрачиваемого на работу, не более чем до 1О се­ кунд. Наш первый алгоритм, а также аппаратное и программное обеспечен11е, поддержи­ вающее его, должны попытаться продвинуться к этой цели как можно более про­ стым способом. Например, вместо того чтобы обучать сложную модель глубокого обучения (для сбора которой потребуется большой набор данных, требующий вре­ мени и денег) для выявления множества различных типов дефектов, можно исполь­ зовать более простые методы компьютерного зрения (как в разд. "Обнаружение признаков на изображении" главы 4) для выявления характеристик одного типа не­ достатков. Этот более простой алгоритм будет гораздо легче реализовать в качестве базового прототипа. Затем можно опробовать его на производственной линии. Например,
338 Глава 9 можно настроить систему так, чтобы она оповещала. сотру дни ка, занимающегося контролем качества, о том, что коробка конфет содержит очень специфический де­ фект. Хотя эта дополнительная информация и ограничена, она все же может облег­ чить жизнь сотрудника и сэкономить несколько секунд времени. Теперь, когда у нас есть базовый алгоритм, использующий простую реализацию, мы знаем, с чем нам необходимо справиться. В некоторых случаях простой базо­ вый вариант может оказаться настолько эффективным, что изменит наше представ­ ление о том, что необходимо. Например, если экономится достаточно времени, возможно, имеет смысл отказаться от сбора большого набора данных, необходимо­ го для обучения модели глубокого обучения, - наши заинтересованные стороны могут быть вполне довольны производительностью простой базовой модели или, по крайней мере, ее более отшлифованной версии. Подход, основанный на создании простого базового алгоритма, помогает избежать чрезмерной инженерии, когда вкладывается много ресурсов в разработку сложного решения задачи, необходимость которого не доказана. Кроме того, он обеспечивает надежное начало подхода на основе оценки, заставляя нас наладить процессы, не­ обходимые для проведения реалистичной оценки, и позволяя измерить скорость улучшения по сравнению с существующей системой. Базовая модель также поможет определить необходимую архитектуру. Например, если базовая модель может обрабатывать большой процент входных данных, луч­ шим общим решением может быть простой алгоритм, охватывающий большинство входных данных, в сочетании с каскадным переходом к сложной модели ML, спо­ собной обрабатывать более сложные входные данные. Наше первое оборудование Возможность оценить базовый алгоритм часто означает, что мы также пришли к начальной итерации аппаратного дизайна. На данном этапе целью должно быть создание чего-то развертываемого, чтобы можно было протестировать его в поле­ вых условиях. Однако это не значит, что это решение должно отвечать тем же тре­ бованиям, что и готовый продукт. Компьютерное обору давание имеет широкий спектр применения - от общего на­ значения до специфических приложений. С одной стороны, современный персо­ нальный компьютер предназначен для запуска практически любого программного обеспечения и интеграции с любым обору даванием, которое вы только можете себе представить. С другой стороны, индивидуальную плату на базе микроконтроллера можно разработать для выполнения одной функции в конкретном изделии. Чем более универсальным и функциональным является оборудование, тем легче для него разрабатывать программное обеспечение. Этот принцип означает, что за­ частую гораздо быстрее создать прототип на более мощной системе, такой как пла­ та разработки на базе лением Linux, SoC (см. разд. "Система иа кристалле" главы 3) под управ­ чем на крошечном, маломощном, специфическом для конкретного приложения устройстве, которое ваша команда разработала собственными силами.
Разработка приложений с искусственным интеллектом периферийных устройств 1 339 Учитывая это, часто бывает полезно реализовать первую итерацию вашего продук­ та на более общем аппаратном обеспечении с более широким спектром возможно­ стей - даже если это поставит под угрозу некоторые цели вашего дизайна. Напри­ мер, можно легко реализовать первую итерацию нашей системы контроля качества шоколада на плате грязных скриптов SoC под Python. управлением Linux, используя несколько быстрых и Плата может быть гораздо более дорогой и энергоемкой, чем мы можем позволить себе в долгосрочном решении, но для начального прототипа она все равно справит­ ся с поставленной задачей за долю времени разработки. Когда концепция будет проверена на более общем оборудовании, у вас будет достаточно уверенности, что­ бы вложить деньги в долгий и дорогостоящий процесс разработки более компакт­ ного и эффективного устройства и адаптации алгоритмов под него. Ведение журналов даннь1х Если у вас еще нет набора данных (что бывает в большинстве случаев), вам при­ дется доставить в поле какое-то оборудование, чтобы собрать набор данных. Как описано в разд. "Уникшzьные пробле.wы сбора да1111ых 11а периферии II главы 7, это может оказаться непростой задачей. У оборудования дr1я сбора данных, как пра­ вило, должны быть те же датчики, что и у конечного продукта, поскольку суще­ ственные различия затруднят создание эффективных алгоритмов. Часто форма, размер и материалы аппаратного устройства также могут влиять на сбор данных. Если вы не уверены в том, какие именно датчики будете использовать, всегда можно остановиться на нескольких типах датчиков во время сбора данных, что­ бы не пришлось выбрасывать набор данных и начинать все с нуля, если потребу­ ется сменить оборудование. Например, можно собирать данные с помощью двух типов микрофонов, что даст вам возможность выбрать один из них в оконча­ тельном варианте. Помимо датчиков (и любых физических факторов, способных повлиять на их по­ казания), аппаратное обеспечение для регистрации данных может быть совер­ шенно другим типом устройства, чем то, которое планируется использовать для реального продукта. Обзор ответственного искусственного интеллекта Развертывание и тестирование первого полного прототипа приложения позволяет на11ать измерять производительность, а также лучше представить, как готовая вер­ сия может работать в полевых условиях. Это также требует от нас первоначальной разработки алгоритмов, что часто связано с дальнейшим изучением набора данных и его ограничений. Вся эта появившаяся дополнительная информация может по­ мочь проверить некоторые предположения, сделанные при определении моральной целесообразности (см. разд. "Воз.uожность реализации с моральной точки зрения" главы 6) и определении целей проектирования на основе ценностей (см. разд. "Цели проектирования на основе ценностей" главы 8). Вы должны применять системати-
340 Глава 9 ческий подход к проверке всех этих предположений, используя результаты перво­ начального тестирования . Например, в случае с системой контроля качества для шоколадной фабрики можно было бы предположить, что система снизит нагрузку на сотрудников, позволив им делать больше за то же время. Однако, изучив отзывы о прототипе системы, можно заметить, что система увеличивает стресс сотрудников, перегружая их информаци­ ей, что приводит к выгоранию. Это открытие может повлиять на дизайн нашего продукта - можно решить изучить способы информирования работников, не соз­ давая при этом чрезмерной нагрузки. Используя подход на основе оценки, можно собрать ключевые показатели эффек­ тивности системы и проанализировать их с точки зрения текущих целей и ценно­ стей. Например, с точки зрения справедливости очень важно, чтобы система хоро­ шо работала для всех сотру дни ков. Оценивая показатели, можно обнаружить, что для некоторых сотрудников система работает лучше, чем для других (например, возможно, она обеспечивает плохо воспринимаемую некоторыми сотрудниками визуальную обратную связь). Для того чтобы получить такие сведения, важно с са­ мого начала проводить измерения и собирать соответствующие данные. Тестирование и итерации Сейчас мы находимся в основной части рабочего процесса, где первоначальная реализация постепенно улучшается в течение многочисленных итераций. Сущест­ вуют четыре основных направления: приложение, набор данных, алгоритмы и ап­ паратное обеспечение. Они показаны на рис. 9.2. Тестирование и итерации ------;---______ , ----------+---• 1 Приложение Набор данных 1 ======Г"====1 Алгоритмы 1 ------'------ ------т----- Аппаратное обеспечение 1 1 - - - - - - 1 - - - - -. Цикл обратной связи : Развертывание : Поддержка : Рис. 9.2. Часть рабочего процесса, связанная с тестированием и итерацией, состоит из четырех областей: приложение, набор данных, алгоритмы и аппаратное обеспечение Каждый из этих аспектов представляет собой важный компонент проекта. Вы мо­ жете представить их как четырех братьев и сестер, которые растут бок о бок, ин­ формируя друг друга о своем развитии по мере того, как они меняются в зависимо-
Разработка приложений с искусственным интеллектом периферийных устройств 1 341 сти от окружающей среды. Эта среда и есть целенаправленно создаваемый нами цикл обратной связи на основе оценки. Эти четыре компонента развиваются совместно, каждый в своем темпе. Иногда они сдерживаются практическими особенностями ситуации, а иногда и друг другом. Например, формирование набора данных может быть кропотливым процессом, и может пройти немало времени, прежде чем набор данных станет достаточно боль­ шим для обучения модели машинного обучения с приемлемым уровнем произво­ дительности. В период ожидания работа над физическим оборудованием и кодом приложения может не прекращаться. Взаимозависимость Уже в самом начале работы вы заметите, что зависимости между различными компонентами проекта могут завести вас в тупик. Например: алгоритм зависит от наличия адекватного набора данных, оборудование зависит от алгоритма, а при­ ложение зависит от оборудования. Если ситуация зашла в тупик, попытайтесь выйти из нее путем подмены. Напри­ мер, можно использовать аппаратную платформу общего назначения, пока вы ждете, когда будет готово ваше собственное оборудование (как мы видели в разд. "Наше первое оборудование" ранее в этой ?Jlaвe). Аналогично, можно по­ пробовать обойтись менее требовательным к объему данных алгоритмом, если формирование набора данных вызывает затруднения. С инженерной точки зрения самыми рискованными компонентами системы яв­ ляются ее алгоритмы. Это связано с тем, что трудно заранее определить, какие алгоритмы потребуются для решения той или иной задачи и каковы будут их требования к данным и вычислениям. По этой причине всегда полезно преду­ смотреть определенную гибкость в оборудовании и приложениях. Например, вам могут понадобиться дополнительные ОЗУ или ПЗУ на случай, если для достиже­ ния нужной точности потребуется более крупная, чем ожидалось, модель ма­ шинного обучения. Очевидно, что строительство избыточных мощностей связано с определенными затратами, поэтому, как и в случае с любым инженерным проектом, вам иногда придется принимать решение, основываясь на своем понимании ситуации. Компоненты проекта не существуют в каком-то определенном порядке или иерар­ хии, а разработка - это не круговая порука, когда работа ведется над одним ком­ понентом, а затем над следующим. Вместо этого разработка ведется параллельно, как правило, над каждым потоком работают разные инженеры или целые команды. Команды должны регулярно синхронизироваться, чтобы обмениваться информаци­ ей о текущем прогрессе и прогнозировать, не возникнут ли какие-либо препятст­ вия, над которыми необходимо поработать. Ключ к успешной разработке - создание циклов обратной связи между каждым из четырех потоков и между этапами проекта (разработка, развертывание и поддержка).
Глава 342 9 Циклы обратной связи Классический взгляд на разработку ИИ, представленный на рис. 9.3, показывает простой пошаговый цикл обратной связи . Он начинается со сбора данных и закан­ чивается развертыванием на устройстве . Это заманчивая идея, поскольку она по­ зволяет получить понятное представление о том, как информация проходит через систему. Периферийное устройство Сбор данных Рис. 9.3. Разработка Тестирование алrоритма Развертывание Заманчиво думать, что цикл обратной связи при разработке ИИ - это пошаговый процесс, результат использования линейного рабочего процесса и его итеративности Однако, как мы узнали из разд. "Рабочий процесс ИИ периферийных устройств" главы 6, в реальности существует взаимодействие между всеми компонентами сис­ темы. Каждый из них связан с другими динамическим образом, и его нелегко выра­ зить в базовой диаграмме . На рис. 9.4 показана система, выраженная более реали­ стично. Периферийное устройство Сбор данных Рис. 9.4. Разработка алrоритма Тестирование Развертывание В действительности разработка ИИ вклю•1ает в себя сеть компонентов, взаимно дополняющих друг друга При управлении проектом очень важно обеспечить беспрепятственное распростра­ нение обратной связи по всему процессу, от одной точки к другой . Так, в наборе данных (например, энергия, содержащаяся в определенных частотных диапазонах исходных данных) могут быть аспекты, определяющие конструкцию аппаратного обеспечения (поскольку аппаратура должна обеспечивать достаточно высокую час­ тоту дискретизации для представления этих частот) . Верно и обратное: если обору­ дование ограничено определенными датчиками, набор данных должен отражать то, что эти датчики могут зафиксировать.
Разработка приложений с искусственным интеллектом периферийных устройств 1 343 Одни циклы обратной связи установить легче, чем другие. Например, цикл обрат­ ной связи между набором данных и аппаратным обеспечением можно создать пу­ тем регулярного общения ответственных команд друг с другом. С другой стороны, в зависимости от области применения, развертывание устройства в полевых усло­ виях и мониторинг могут быть очень дорогими. По этой причине существуют раз­ личные инструменты, позволяющие "замкнуть цикл" имитационным или приблизи­ тельным способом, о чем мы поговорим во врезке "Кш1ибровка производитель­ ности" главы 10. Приведем некоторые из наиболее важных циклов обратной связи в процессе разра­ ботки. Алгоритм и набор данных. Алгоритмы предъявляют разные требования к данным. При наличии большого количества данных можно использовать множество различных алгоритмов. При малом количестве данных хорошо работает меньшее количество логических конструкций. Если требуется определенный алгоритм с его специфическими свойствами, необходимо собрать подходящий набор данных. Алгоритм и проектирование аппаратного обеспечения. В новом проекте выбранный алгоритм может определять выбор аппаратного обеспечения, поскольку для эффективной работы алгоритма может потребовать­ ся определенное оборудование. При работе с существующим проектом ограни­ чения, связанные с имеющимся оборудованием, лимитируют выбор алгоритма. Алгоритм и производительность в полевых условиях. Выбранный алгоритм влияет на производительность в полевых условиях - на­ пример, более крупная модель машинного обучения может обеспечить лучшие результаты. И наоборот, требуемый уровень производительности в полевых ус­ ловиях может определять выбор алгоритма. Набор данных и проектирование аппаратного обеспечения. Проектирование аппаратного обеспечения часто определяет набор данных, по­ скольку он может диктовать, какие датчики доступны для сбора данных. Кроме того, если конкретный набор данных уже доступен, тип или происхождение предоставляемых им данных могут повлиять на проектирование аппаратного обеспечения. Например, может быть полезно убедиться, что используется точно такая же модель датчика. Набор данных и производительность в полевых условиях. Если реальная производительность плохая, возможно, необходимо собрать больше данных, ориентируясь на те области, в которых система не справляется. Если доступны лишь ограниченные данные, это может заставить вас согласиться на более низкие реальные характеристики, чем в противном случае. И наоборот, если эффективность работы в полевых условиях ограничена или предвзята, это повлияет на собираемые данные и на обучаемые с течением вре­ мени модели. Например, если большинство людей, использующих ваш продукт,
344 Глава 9 принадлежат к определенной группе, вы можете начать подгонять производи­ тельность под их нужды. Итерации на практике Основная идея итерации заключается в том, что вы что-то меняете, измеряете влияние внесенных изменений на ваши цели, а затем решаете, что делать дальше. Канонический пример использования этой техники в разработке ИИ обучение - модели машинного обучения. Типичный итерационный процесс обучения выглядит следующим образом: 1. Получение данных и разделение их на обучающий, проверочный и тестовый на­ боры. 2. Обучение большой модели на обучающем фрагменте и стремление к переобуче~ нию на этих данных·. 3. Измерение производительности на проверочном фрагменте набора данных. 4. Настройка параметров для повышения эффективности проверки - добавление большего количества данных, добавление регуляризации или изменение типа и размера модели. 5. 6. Снова обучение и измерение производительности. Как только модель покажет достаточно хорошие результаты на проверочном фрагменте, выполняется проверка ее работы на тестовом наборе данных. 7. Если она работает хорошо- отлично. Если модель работает некорректно, она отбрасывается и процесс разработки начинается с нуля. Процесс реализации проекта по созданию ИИ периферийных устройств аналоги­ чен, но он также включает в себя аппаратную и прикладную части головоломки. Например, вы можете придумать эффективный алгоритм, используя что-то похо­ жее на описанную выше схему, затем попытаться развернуть систему на выбран­ ном оборудовании и протестировать в реальных условиях (например, с потенци­ альными пользователями). Если система работает хорошо - отлично. Если она работает некорректно, вам придется внести изменения. Ключевым моментом во всем этом является обеспечение быстрого тестирования и итераций. Если вы тратите много времени на каждую итерацию, расплата за рег­ рессию (когда улучшение становится хуже или что-то не подходит, как в случае со слишком объемной для имеющегося оборудования моделью) будет гораздо больше, поскольку вы можете потратить много времени на непродуктивный путь. Если вы будете быстро выполнять итерации, чтобы каждое изменение было не­ большим и сразу же тестировалось, вы никогда не потратите слишком много вре­ мени на то, чтобы спуститься в кроличью нору разработки, которая в итоге окажет­ ся несовместимой с другими частями вашей системы. 2 Стремясь к 11ереобучению данных, можно доказать. что модель обладает достаточной репрезен­ тативностью для моделирования данных и что обучающий конвейер действительно работает.
Разработка приложений с искусственным интеллектом периферийных устройств 1 345 Если вам посчастливилось получить большой набор данных, обучение модели мо­ жет занять довольно много времени (считайте, что это часы, дни или даже неде­ ли - хотя небольшие модели ИИ периферийных устройств обычно не требуют столько времени). Это кошмар, когда по окончании 48-часового обучения вы по­ нимаете, что допустили ошибку в коде и полученная модель бесполезна. Для того чтобы сократить время, затрачиваемое на каждую итерацию, лучше на­ чать процесс с подмножества вашего набора данных. Например, можно начать с процентной стратифицированной выборки (см. рис. 7.14). 1О­ Как только вы начнете получать многообещающие результаты с этим подмножеством, можно начать по­ степенно добавлять больше данных в последующих итерациях, чтобы улучшить производительность модели. Инструменты помогут вам избежать некоторых из этих проблем. Напри­ мер, инструменты обучение (AutoML)" AutoML (см. разд. "Автоматизированное машинное главы 5), разработанные специально для ИИ перифе­ рийных устройств, могут учитывать аппаратные ограничения, чтобы вы не рисковали выйти за рамки спецификаций. Помните, что вы будете не просто итерировать свою модель - вы будете менять и улучшать каждую часть проекта, начиная с аппаратного обеспечения и заканчивая кодом приложения. Для того чтобы понять, как меняется производительность, не­ обходимо использовать правильные метрики и процедуры оценки. О них мы пого­ ворим в разд. "Оценка систем ИИ периферийных устройств" главы 10. Цели, поставленные в процессе проектирования (см. разд. "Технические цели" гла­ вы 8), помогут вам понять, когда следует прекратить итерации, потому что вы больше не приближаетесь к своей цели или потому что вы ее превзошли. Итеративный рабочий процесс естественным образом порождает множество арте­ фактов: наборы данных, модели, обучающие скрипты и все присущие им зависимо­ сти. Следить за ними очень важно, поскольку в противном случае вам будет слож­ но понять результаты и воспроизвести свою работу в будущем. Как мы узнали в разд. "Операции машинного обучения (MLOps)" главы 5, MLOps обеспечивает ос­ нову для надежного выполнения этих операций. Обновление планов. В ходе работы над проектом ваше понимание решаемой зада­ чи и методы, применяемые для ее решения, скорее всего, претерпят значительные изменения. Иногда может выясниться, что цель нереальна, ошибочна или не имеет отношения к решению основной задачи. Если это так, не стесняйтесь устроить встречу заинтересованных сторон и пересмотреть свои цели. При этом не стоит ожидать, что цели будут часто меняться. Вместо этого, если вам нужно скорректировать курс, требования и спецификации проекта могут быть скорректированы в соответствии с вашими существующими целями. Например, представьте, что вы разрабатываете интеллектуальный замок, исполь­ зующий датчик изображения и распознавание лиц для контроля входа в здание. Ваша цель в этом проекте - добиться коэффициента ложного соответствия, близ-
Глава 346 кого к 0%. 9 В процессе разработки вы понимаете, что это недостижимо с помощью одного лишь видения. Вы работаете с заинтересованными сторонами над обновле­ нием области действий проекта, позволяя установить дополнительный датчик для повышения надежности системы. Необходимо рассматривать этот тип открытий как естественную часть итеративно­ го процесса разработки. Если вы поймете, что цели должны быть несколько иными, не паникуйте - цель процесса в том, чтобы дать вам возможность скорректировать курс, чтобы в итоге получился успешный продукт. Конечно, очень хорошо, если вы сможете определить некоторые из возможных факторов риска в процессе проектирования и разработать готовые планы действий на случай непредвиденных обстоятельств. Например, на этапе проектирования вы могли предположить, что существует риск того, что одного зрения будет недоста­ точно для обеспечения низкого коэффициента ложного соответствия, и предложить несколько потенциальных альтернативных решений. 1 • / Убедитесь, что любые изменения в целях и направлениях разработки согласованы сведения со всеми заинтересованными всех участников . дальнейшего проекта и сторонами, тщательно четко доведены задокументированы до для использования. Разница в ожиданиях может привести к серь­ езной драме, но ее легко избежать. Обзор этического искусственного интеллекта Как мы уже видели, в процессе итеративной разработки проекты могут серьезно менять свое направление. Это означает, что ваш итеративный процесс должен включать регулярный этический анализ работы. Вам следует выяснить следующие моменты. ♦ Будет ли проект соответствовать ключевым показателям эффективности, уста­ новленным в процессе nроектирования нове ценностей" главы 8)? Если нет, (см. разд. "Цели проектирования на ос­ возможно, нужен новый подход. ♦ Ваше исследование моральной целесообразности (описанное в разд. "Возмож­ ность реш,изации с морш,ьной точки зрения" главы 6) все еще актуально или ваш проект изменился и его необходимо обновить? ♦ Достаточно ли у вас данных и опыта в предметной области, чтобы приступить к реализации проекта (см. разд. "Данные, этика и ответственный искусственный интеллект" главы 7)? ♦ Согласны ли ваши заинтересованные стороны с тем, что вы добиваетесь прогресса, или есть какие-то опасения? На этом этапе, в дополнение к этическому анализу, проведенному вашей собствен­ ной командой, целесообразно провести этическую экспертизу с привлечением третьей стороны. Гораздо лучше выявить потенциальную этическую проблему во время итеративной разработки, пока еще есть возможность изменить курс, чем по­ сле завершения разработки или поставки продукта.
Разработка приложений с искусственным интеллектом периферийных устройств 347 Карточки моделей По мере формирования алгоритмов важно документировать их характеристики для будущих пользователей . Сюда входит информация о том, как предполагается их использовать, результаты их оценки в сравнении с различными эталонами, а также подробная информация о процессах, используемых для их оценки. Без этой информации невозможно безопасно использовать модель. Хотя все эти де­ тали вы можете получить на этапе разработки проекта, важно задокументировать их для последующего использования. Один из стандартов такой документации представлен в виде карточек моделей (model cards). Они предоставляют формат для описания модели с помощью тек­ стовой информации, передаваемой вместе с самой моделью. Более подробную информацию о карточках моделей, а также шаблон для их создания можно найти в репозитории на GitHub (https://oreil.ly/gXkLF). Развертывание Нет четких границ между итеративной разработкой, развертыванием и поддержкой. Вместо этого проект постепенно развивается в направлении достижения своих це­ лей, пока в определенный момент - надеемся, довольно рано - программная часть проекта не будет развернута на аппаратном обеспечении, а само оборудова­ ние не будет запущено в эксплуатацию. Этот постепенный процесс показан на рис. 9.5 (как и на рис. 6.1 и 9.2). Тестирование и итерации 1 ------т---- Приложение ..., ___ _ ______ ------L------ Набор данных 1 ======r-====1 Алгоритмы 1 ------'------ Аппаратное обеспечение ------т----- 1 1 ------, -----. Цикл обратной связи : Развертывание : Поддержка : Рис. 9.5. Часть рабочего процесса, связанная с тестированием и итерацией, постепенно превращается из чистого процесса разработки в смесь разработки, развертывания и поддержки; постоянно поддерживается цикл обратной связи В контексте ИИ периферийных устройств развертывание может означать одну из двух вещей: ♦ развертывание программного обеспечения на аппаратном устройстве; ♦ развертывание набора аппаратных устройств в реальном мире.
348 Глава 9 В любом случае развертывание на ранней стадии и с высокой частотой - это вер­ ный путь. В первом случае это гарантирует, что вы всегда создаете аппаратное и программное обеспечение, хорошо работающее совместно. Во втором случае это гарантирует, что вы установите обратную связь между процессом разработки про­ екта и его реальными показателями. Развертывание никогда не должно рассматри­ ваться как операция "последней мили", происходящая непосредственно перед за­ пуском. Напротив, это критически важная часть процесса разработки. Распределенная природа периферийных систем хорошо подходит для такого под­ хода. Часто можно провести поэтапное развертывание нескольких устройств за раз, тщательно контролируя места их размещения и тех, кто будет с ними взаимодейст­ вовать. Эго означает, что вы можете поставлять прототипные устройства с прото­ типным приложением и получать данные о реальной производительности, но при этом свести сопутствующие риски к минимуму. Развертывание системь1 мониторинга животноводства Представьте, что вы работаете над системой мониторинга активности домашнего скота в сельском хозяйстве. Разрабатываете умный ошейник, который надевается на шею овцы и позволяет следить за тем, сколько времени она ест, двигается и спит. Первое развертывание произойдет, когда вы начнете собирать набор дан­ ных, поскольку потребуется собирать реальные данные с живых животных. Предполагая, что работа ведется с сельскохозяйственным производителем (не ре­ комендуется для этого красть овец), необходимо сначала вместе с ним разработать физический дизайн умного ошейника, способного буквально выдержать жизнь в поле. Далее вам нужно будет установить необходимое оборудование для сбора разнообразных и репрезентативных данных - возможно, надев ошейники на не­ большую часть стада. Также понадобится способ маркировки данных - например, видеосъемка, позволяющая определить, когда какое животное что делает. После сбора первичного набора данных и разработки прототипа устройства вы будете работать с производителем, чтобы развернуть систему на ограниченном количестве животных. Для определения эффективности системы можно соотне­ сти выходные данные устройства с метками, созданными с помощью видеозапи­ сей. Последовательные усовершенствования системы можно оценить таким же образом. Как только будет достигнут определенный порог производительности, можно начать масштабировать систему, постепенно добавляя устройства и отслеживая показатели, чтобы понять, все ли работает стабильно. Постепенно добавляя уст­ ройства, вы ограничиваете риск возникновения негативных последствий. Также для сравнения производительности можно опробовать разные итерации аппарат­ ного и программного обеспечения одновременно на разных животных. В определенный момент вы можете почувствовать достаточную уверенность в результатах работы системы, чтобы считать, что она соответствует вашим целям. На этом этапе разработка по большей части завершена, и вы можете переходить к долгосрочной поддержке, о которой мы расскажем в главе 10.
Разработка приложений с искусственным интеллектом периферийных устройств Лучший способ развертывания - 1 349 это хорошо продуманный план развертывания. Соответствующие шаги описаны в разд. "Развертывание приложений ИИ перифе­ рийных устройств" главы 10. Поддержка Проект ИИ периферийных устройств никогда не бывает законченным. Вместо этого он постепенно переходит в другую фазу жизни, где основное внимание уделяется контролю и поддержанию его работоспособности. Эта работа необходима из-за дрейфа, о котором мы узнали в разд. ''дрейф и сдвиг" главы 7. Поскольку мир постоянно меняется, практически неизбежно, что продукт, основанный на ИИ, со временем начнет терять свою эффективность. Это делает необходимым постоянную поддержку - обновление программного обеспечения, чтобы оно не отставало от изменений, происходящих в окружающей среде. Поддержка приложений ИИ периферийных устройств подробно рассматривается в главе 1О. Поддержка тесно связана с оценкой, поскольку именно оценочные показа­ тели позволяют понять, изменяется ли производительность или окружающая среда. Резюме Теперь у нас есть высокоуровневое представление всего рабочего процесса разра­ ботки. Хотя это отличная общая дорожная карта, специфика путешествия будет отличаться от проекта к проекту. Тем не менее каждый проект объединяет одна общая черта - необходимость тща­ тельного внедрения, оценки и поддержки. Эти темы мы рассмотрим в следующей главе.

ГЛАВА 10 Оценка, развертывание и помержка .., приложении с искусственным интеллектом периферийных устройств Это последняя теоретическая глава данной книги, в ней мы рассмотрим процессы оценки, развертывания и поддержки приложений ИИ периферийных устройств. Эти три задачи тесно связаны между собой, и в итеративном проекте они решаются параллельно на протяжении всего рабочего процесса разработки. Оценка систем ИИ периферийных устройств Оценка- это ключ к успешному проекту. На самом деле, без оценки у вас небу­ дет реального способа узнать, успешен ли ваш проект или нет. Оценка осуществля­ ется на протяжении всего процесса разработки, хотя об этом и рассказывается в конце книги. Оценка может начаться еще до разработки, когда вы определяете ко­ личественные характеристики существующего процесса для улучшения его с по­ мощью ИИ периферийных устройств. Помните, что на протяжении всего процесса оценка должна проводиться при уча­ стии заинтересованных сторон и конечных пользователей. Вполне возможно, что у разных заинтересованных сторон могут быть противоречивые критерии оценки в зависимости от их индивидуальных взглядов. Выяснение того, как разрешить эти конфликты, является важной частью оценки. Приведем некоторые этапы проведения оценки. Изучение существующего решения. В большинстве случаев мы разрабатываем системы ИИ периферийных уст­ ройств для замены устаревших систем, потому что считаем, что такое решение будет лучше. Очень важно знать фактическую производительность существую­ щей системы в самом начале процесса. Цель нашего процесса разработки­ превзойти этот показатель, но нельзя превзойти то, что не измерено.
Глава 352 10 Даже если существующего решения нет, неплохо придумать простую базовую модель и стремиться к тому, чтобы ее превзойти (как показано в разд. "Разра­ ботка базового алгоритма" главы 9). Это придает нашей работе направление и указывает перспективу, и иногда простой базовый алгоритм оказывается луч­ шим выбором. Изучение потенциат1ьных алгоритмов. Оценка крайне важна на этапе исследования проекта, когда мы знакомимся с на­ бором данных и экспериментируем с различными типами алгоритмов. Так мы начинаем выбирать потенциально перспективные подходы. На этом этапе бы­ строе и удобное обследование помогает действовать оперативно. В процессе итеративной разработки. Процесс итеративной разработки основан на оценке: мы создаем решение, оце­ ниваем его и используем результаты оценки для корректировки курса выполне­ ния работ, чтобы следующая итерация была лучше. Существует множество раз­ личных способов оценки разрабатываемой системы, и мы познакомимся с некоторыми из них в разд. "Способы оценки системы" далее в этой главе. До и после оптимизации. При развертывании на периферийных устройствах часто приходится применять методы оптимизации с потерями, позволяющие вписать алгоритмы в ограниче­ ния по памяти или задержке (см. разд. "Сжатие и оптимизация" главы 4). Важ­ но оценить производительность до и после оптимизации, чтобы определить, на­ сколько велики потери. Оценивание нужно выполнять всегда, даже если вы применяете терь - технику оптимизации, которая, по вашему мнению, не несет по­ на случай, если ошибка в процессе приведет к ухудшению качества. На реальном оборудовании. Существует множество причин, приводящих к тому, что ваше приложение будет работать по-другому после развертывания на реальном оборудовании. Напри­ мер, между датчиками производственного оборудования и датчиками, использо­ ванными для сбора исходного набора данных, может быть некоторая разница. Как вариант, может быть разница в том, как работает программа, созданная для реального оборудования, в сравнении с программой на машине для разработки. Важно оценить ситуацию до и после развертывания, чтобы понять, есть ли ка­ кие-либо последствия. Во время ограниченного развертывания. Всегда полезно проводить поэтапное развертывание, чтобы выявить все пробле­ мы до того, как масштаб системы будет сильно увеличен. Это еще один ключе­ вой момент для оценки, поскольку вам понадобится способ измерить, работает ли ваша система так, как ожидалось. В течение всего периода после развертывания. После развертывания необходимо постоянно следить за производительностью, что, естественно, требует оценки. Более подробно об этом этапе будет рассказа­ но в разд. "Мониторинг после развертывания" далее в этой с"'Лаве.
Оценка, развертывание и подцержка приложений с искусственным интеллектом ... 353 Оценка и ответственное проектирование Этичный ИИ в значительной степени зависит от оценки. Например, чтобы выявить предвзятость, важно понимать, как ваша система работает с раз­ личными типами входных данных. Проводя оценку на каждом этапе, вы даете своей команде возможность увидеть те места, где могут возникнуть этические проблемы. Способы оценки системы Существует множество способов оценить систему ИИ периферийных устройств, и разные механизмы будут важны на различных этапах процесса ра:1работки. Все они требуют разного количества времени и инвестиций, поэтому могут подходить как для коротких, узких контуров обратной связи, так и для более длительных и широких. Ниже перечислены некоторые основные подходы. Оценка отдельных компонентов Система состоит из множества мелких компонентов, и есть разные способы оце­ нить каждый из них. Например, ваш алгоритмический конвейер может включать следующее: ♦ кадрирование; ♦ понижение качества (снижение выборки); ♦ цифровая обработка сигналов; ♦ машинное обучение; ♦ постобработка; ♦ алгоритмы на основе правил. У каждой из этих динамических частей будут свои инструменты для оценки, и экс­ перты в соответствующих сферах будут понимать, как их использовать. Такой тип оценки важен при построении последовательности шагов, работающих совместно для достижения результата. Если вы создадите механизмы оценки отдельных ком­ понентов вашей системы, вам будет легче выявить причину любых системных про­ блем. Это также поможет вам проводить индивидуальные итерации над отдельны­ ми компонентами, поскольку они могут принадлежать разным командам. Оценка интегрированных систем Недостаточно знать, что все отдельные части системы работают совместно; необ­ ходимо также понимать, что они правильно функционируют как единое целое. В противном случае возникающие системные проблемы могут помешать работе ва­ шего приложения.
354 Глава 10 Например, у вас могут быть модель машинного обучения и алгоритм постобработ­ ки, хорошо работающие при тестировании по отдельности. Однако, соединив их вместе, вы можете обнаружить, что они не работают должным образом. Для того чтобы действительно понять производительность системы, необходимо сочетание тестов на уровне компонентов и системных тестов. Тестирование интег­ рированной системы может указать на снижение производительности, но само по себе оно многого не объяснит. Имитация тестирования в реальных условиях Во многих случаях доступные для обучения наборы данных не реалистичны - они могут представлять собой идеальный набор условий, собранных в лаборатории или тщательно очищенных, чтобы представить наилучший возможный набор данных для обучения. Оценка на таком наборе данных может дать неверные результаты. Для того чтобы действительно понять, какова производительность, необходимо протестировать систему или ее блоки в реальных условиях. Было бы здорово, если бы можно было тестировать всю работу на производстве одним нажатием кнопки, но реалии встроенной разработки делают это невозмож­ ным. По сравнению с разработкой программного обеспечения в Интернете внедре­ ние встраиваемого приложения занимает гораздо больше времени, стоит дороже и связано с большим риском. Это означает, что в этом отношении встраиваемые раз­ работки имеют менее эффективную обратную связь между разработкой и реальной производительностью. Одно из решений этой проблемы - максимально приближенное моделирование реальных условий во время разработки, чтобы изменения в алгоритме или прило­ жении можно было протестировать в режиме, близком к реальным условиям. Этот процесс может включать в себя сбор набора данных, отражающего ожидаемый тип реальных условий, а затем прогон их через полностью интегрированную сборку вашего приложения. Например, представьте, что вы создаете фитнес-браслет. Его можно протестиро­ вать, используя потоки данных, полученные от настоящих пользователей, носящих устройства-муляжи, содержащие только датчики. Эксперты должны присвоить метки данным, чтобы их можно было использовать для оценки. Если получить реальные данные слишком сложно, можно использовать синтетиче­ ские данные. Реалистичные потоки данных можно создать путем наслаивания вы­ борок из обычных обучающих наборов данных поверх выборок фонового шума с применением аугментации данных для увеличения дисперсии данных. Это возмож­ ность, доступная в функции калибровки производительности Edge Impulse, описан­ ной во врезке "Калибровка производителыюсти" далее в этой главе. Ярким примером имитации тестирования в реальных условиях является процесс сертификации Alexa от Amazon (https://oreil.ly/Pvi5L). Аппаратные продукты, в которые интегрирована А\еха, должны соответствовать минимальным стандартам производительности систем поиска ключевых слов. Производительность оценива­ ется путем воспроизведения нескольких аудиозаписей из динамика, находящегося
Оценка, развертывание и подцержка приложений с искусственным интеллектом... 1 355 на определенном расстоянии от устройства, в различных условиях. Для того чтобы пройти тест, устройство должно успешно определить, когда в записи содержится ключевое слово, и не активироваться, когда оно не прозвучало. Тестирование в реальных условиях Лучше всего начать тестировать систему в реальных условиях как можно рань­ ше - сразу после приобретения оборудования, а то и раньше 1 . Существует два ос­ новных типа тестов в реальных условиях: ♦ тестирование для обеспечения качества, когда вы специально подвергаете про­ дукт испытаниям, чтобы попытаться выявить любые проблемы; ♦ тестирование удобства использования, когда вы даете возможность пользовате­ лям естественным образом взаимодействовать с продуктом, чтобы понять, на­ сколько хорошо он работает. Тестирование в реальных условиях проходит медленнее и дороже, чем некоторые виды оценки, но оно необходимо для разработки продукта. Это также намного де­ шевле, чем выводить свой продукт на рынок, а потом понимать, что он не работает. Тестирование для обеспечения качества. Обеспечение качества QA) - (quality assurance, это систематический способ изучения продукта и выяснение, соответствует ли он надлежащему уровню качества, как правило, на основе целей проектирования продукта (см. разд. "Постановка целей дизайна" гдавы инженеры QA 8). В процессе разработки создают и внедряют стратегии, позволяющие проверить возможно­ сти продукта, понять его эффективность и общую пригодность для использования по назначению. QA - это отдельная область, и в ней есть свои эксперты, она крайне важна для процесса создания хорошего продукта. Эта область слишком велика, чтобы иссле­ довать ее в рамках данной книги. Приведем некоторые примеры важного привле­ чения QА-специалистов в проектах, связанных с ИИ периферийных устройств: ♦ практическая работа с прототипом и поиск проблем; ♦ тестирование отдельных компонентов в процессе разработки (например, алго­ ритма поиска ключевых слов); ♦ разработка систем и процедур для тестирования продукции на протяжении всего рабочего процесса; ♦ сертификация соответствия продукта поставленным целям. Процесс QA начинается сразу после того, как вы определились с целями разработ­ ки, поскольку человеку, исполняющему роль QA, придется придумать систему для тестирования. В идеале процесс обеспечения качества должен выполняться на про­ тяжении всего процесса разработки как часть процедуры оценки работы каждой итерации. 1 Если вы можете обойтись без развертывания на плате разработки до того, как будет готово офи­ циальное оборудование. то стоит пойти на :лот шаг.
356 Глава 10 Тестирование удобства использования. В то время как QА-тестирование направ­ лено на поиск проблем, тестирование удобства использования это наблюдение - за естественным использованием вашего продукта и применения этих наблюдений для внесения улучшений. Тестирование удобства использования происходит с участием реальных пользова­ телей. Это могут быть представители сообщества, потенциальные клиенты или лю­ ди из вашей собственной команды или организации. Главное, чтобы они взаимо­ действовали с вашим продуктом как в жизни. В некоторых случаях тестирование удобства использования проводится в ходе ис­ следований, когда людей помещают в контролируемую среду и предлагают им взаимодействовать с продуктом определенным образом. Другие виды тестирования более естественны: например, бета-тестирование предполагает предоставление пользователям в собственность ранних версий продукта, и после использования приложения в течение некоторого времени они оставляют отзыв. Оптимальный план зависит от ситуации, но обычно исследования удобства исполь­ зования проводятся на ранних этапах разработки, когда требуется целенаправлен­ ный вклад, чтобы задать дальнейший вектор разработки проекта, а бета­ тестирование проводится позже, когда продукт близок к завершению и требуется более общий обзор резу ль татов. Интересная разновидность тестирования удобства использования известна как догфудинг2 (от понятия "станьте клиентом самого себя" (https://oreil.ly/tVnyZ)). Это когда члены организации используют собственное предрелизное оборудование, чтобы понять его удобство и получить обратную связь. В области тестирования удобства использования также есть свои эксперты. Это са­ мый дорогой вид тестирования, но и самый ценный: вы получаете возможность увидеть, как работает ваша система в условиях, приближенных к реальности. Мониторинг развернутой системь1 Очень важно понимать производительность системы после ее развертывания. В разд. "Мониторинг после развертывания" дariee в этой главе показано, что это мо­ жет быть очень непросто. Полезные метрики Любой вид количественной оценки приводит к получению метрик - ключевых чисел, отражающих некоторые аспекты производительности продукта или компо­ нента. Сбор правильных метрик очень важен: как говорится, "вы - то, что вы из­ меряете", и если выбрать неправильные метрики для изучения, итерационный про­ цесс пойдет в неверном направлении. 2 В среде разработчиков используется этот термин в виде транслитерации (от анr·л. dogfooding, озна­ "Eating your own dog food" (ешьте свой собственный собачий корм))- это практика чающего идиому использования сотрудниками компании собственных продуктов и сервисов. -Прим. перев.
Оценка, развертывание и подцержка приложений с искусственным интеллектом... 1 357 К счастью, существует множество стандартных показателей, актуальных для сис­ тем ИИ периферийных устройств - они, вероятно, знакомы всем, кто работает в смежных областях. Далее перечислены наиболее важные из них. Производительность алгоритмов Эти метрики полезны для понимания производительности алгоритмов ИИ. Как правило, они зависят от типа алгоритма (как описано в разд. "Типы алгоритмов по функциональности" главы Потери. Потери - 4). это способ измерения правильности предсказаний модели. Чем выше показатель потерь, тем более неточными будут прогнозы. Точное значение метрики потерь определяется функцией потерь. Существуют стандартные функции потерь для различных типов задач или вы можете придумать свои собственные. Потери рассчитываются и используются в процессе обучения некоторых типов мо­ делей машинного обучения, таких как глубокое обучение. Потери можно вычислить для одного предсказания, но чаще всего рассчитывают средние потери для всего набора данных. Например, вы можете вычислить среднее значение потерь по проверочному набору данных. У потерь нет единиц измерения, поэтому данный параметр означает что-либо толь­ ко относительно самого себя. Это делает его хорошим показателем того, как произ­ водительность модели меняется во время обучения, но не особенно полезным, если вы пытаетесь понять, как модель будет работать в реальном мире. Если функции потерь используются в процессе оптимизации моделей машинного обучения, важно, чтобы улучшение оптимизационных потерь соответствовало улучшению других показателей. Функцию потерь нужно выбрать на основе решае­ мой задачи (у большинства распространенных задач есть стандартные функции по­ терь), и метрики необходимо выбирать на ее же основе. Если они не будут согласо­ ваны, то в итоге вы получите модель, не решающую необходимую задачу. Точность. Классификация - распространенная задача, и существует несколько различных метрик, используемых для выражения того, насколько хорошо работает классификатор. Точность - самая простая и известная из них. Она представляет собой просто процент правильных классификаций в текущем наборе данных. Точность - это разумный способ оценить производительность модели с первого взгляда, но как единственное значение она заслоняет много контекста. Например, само по себе значение точности не может сказать нам ничего о том, как работали отдельные классы в наборе данных. Показатель точности в 90% на сбалансирован­ ном наборе данных может показаться впечатляющим, но на несбалансированном наборе данных (возможно, состоящем на 90% из одного класса и на 10% из друго­ го) это может означать, что модель ужасна. Из-за этого ограничения лучше всего использовать точность в сочетании с другими метриками, отражающими больше нюансов, или, по крайней мере, рассчитывать ее для каждого класса отдельно.
Глава 358 10 Матрица ошибок. Матрица ошибок, или неточностей, это мощный инструмент - для понимания того, как работает модель. Это простая таблица, содержащая спосо­ бы классификации отдельных выборок. Пример показан на рис . рана из Edge lmpulse. 10.1 - NO YES NOISE снимок эк­ NO NOISE YES Рис. 10.1. Матрица ошибок, показывающая результаты дпя модели поиска ключевых слов На рис. 10.1 заголовки строк NO (Нет), NOISE (Шум) и YES (Да) представляют три класса выборок в наборе данных. Они соответствуют заголовкам столбцов с анатю­ гичным названием, которые представляют три класса, идентифицированные клас­ сификатором. Процент в каждой ячейке указывает на долю выборок из класса на­ бора данных (указан в заголовке строки), определенных классификатором как соответствующие определенному классу (указан в заголовке столбца). Например, мы видим, что как NO, а 3, 7% 96,3% случаев NO были правильно классифицированы были неправильно классифицированы как YES. Такое разбиение позволяет понять, как работает классификатор в разных классах. Это гораздо инте­ реснее, чем одна метрика точности, поскольку помогает понять, где именно модель испытывает трудности . Точность и полнота. С точки зрения одного класса в матрице неточностей сущест­ вует два различных типа ошибок, совершаемых классификатором. В обоих случаях речь идет об ошибочной идентификации . В первом случае подлинный член класса ошибочно идентифицируется как принад­ лежащий к другому классу. Например, умная камера для наблюдения за птицами может принять птицу за листья, совершенно не заметив ее. Во втором случае член другого класса ошибочно идентифицируется как принадлежа­ щий к интересующему нас классу. Например, система может принять лист за mицу . Точность (precision) и полнота (recall) позволяют описать, как часто происходят эти ошибки. Точность говорит нам о том, как часто наша модель принимает скучный старый лист за прекрасную птицу, а полнота описывает, как часто модель пропус­ кает птицу, которую она должна была заметить: количество правильно обнаруженных птиц точность=-------------------- количество входных данных, принятых за птиц полнота= количество правильно обнаруженных птиц фактическое количество птиц в наборе данных
1 359 Оценка, развертывание и поддержка приложений с искусственным интеллектом... У каждого класса набора данных своя точность и полнота, но их также можно вы­ разить как среднее значение по всем классам. Это отличная метрика, потому что она позволяет нам охарактеризовать типы ошибок, совершаемых моделью 3 . Точность и полнота выражаются числами от О до О - 1, где 1- идеальный результат, а абсолютно неверный. Как правило, между ними существует компромисс - можно уменьшить значение одного из показателей, увеличив значение другого. Это делает их важными метриками для настройки системы. Пороги уверенности Что важнее: точность или полнота, - зависит от вашей задачи. Например, если вы разрабатываете умную колонку с голосовым управлением, будет довольно неприятно, если она станет активироваться на случайные звуки. В этом случае лучше стремиться к высокой точности. Ее можно достигнуть за счет более низ­ кой полноты. С другой стороны, если вы разрабатываете систему для выявления проблем со здоровьем, то, возможно, лучше получить высокий уровень полноты, так вы вряд ли пропустите какие-либо проблемы со здоровьем, способные поставить под угрозу чью-то жизнь. Компромиссом может стать более низкая точность, что означает большую вероятность ложной тревоги. Обычный способ достижения компромисса между точностью и отзывом - это настройка порога уверенности в вашем приложении. Когда классификатор дела­ ет предсказание, он обычно выдает распределение вероятностей: список чисел, по одному для каждого класса. Сумма этих чисел равна 1, и они представляют собой вероятность принадлежности входных данных к каждому классу. Напри­ мер, у модели для обнаружения проблем со здоровьем может быть выходной сигнал следующего вида: Healthy: Si.ck: 0.35 0.65 При желании можно было бы сказать, что класс, набравший наибольшее количе­ ство баллов, будет считаться истинным. Например, в предыдущем случае мы бу­ дем считать пациента больным (Sick), потому что вероятность того, что он болен, выше, чем вероятность того, что он здоров (Healthy). Поскольку классов два, то, взяв тот из них, что имеет более высокий показатель, мы фактически назначаем порог доверия 0,5, 0,5. Если класс получает оценку более мы уверены, что он отражает истину. Однако 0,5 не будет считаться достаточно высокой вероятностью, чтобы считать кого-то больным. Если речь идет о серьезном, страшном заболевании, необходи­ мо повысить степень уверенности в прогнозе. Она должна быть по крайней мере чуть лучше, чем при броске монеты. Например, можно выбрать значение 0,75 в 3 В кратком курсе машинного обучения Google есть отличное объяснение точности и полноты (Machine Leaming Crash Course (https://oreil.ly/ LLXBI)).
Глава 360 10 качестве порога доверия. В этом случае мы не будем считать предыдущий. ре­ зультат положительным ни для одного из классов. Он будет определен как неод­ нозначный. При изменении порога уверенности точность и полнота будут меняться. Более низкий порог уверенности, как правило, приводит к более высокому показателю полноты, но более низкому показателю точности, поскольку для данного класса будет улавливаться больше примеров, но ценой большего количества ложных срабатываний. Более высокий порог уверенности может увеличить точность, но уменьшить полноту, поскольку некоторые примеры могут не соответствовать порогу. Коэффициенты положительных и отрицательных результатов. Другое название полноты- коэффициент истинноположительных результатов TPR). (true positive rate, Это показатель, при котором ожидается появление истинных положительных результатов, т. е. правильных положительных идентификаций. Есть еще три аббре­ виатуры, охватывающие другие возможности ошибок в матрице неточностей клас­ сификатора. Коэффициент ложноположительных результатов FPR) (false positive rate, показывает, как часто негативные примеры (элементы, не относящиеся к ин­ тересующему нас классу) ошибочно определялись как интересующие нас предметы. TPR = ; истинноположительные результаты общее количество положительных результатов в наборе данных FPR = ложноположительные результаты общее количество отрицательных результатов в наборе данных И наоборот, коэффициент истинноотрицательных результатов (true negative rate, ТNR) описывает, как часто эти отрицательные примеры были правильно проигно­ рированы. Наконец, коэффициент ложноотрицательных результатов (false описывает, как часто выборка, принадлежащая к интересующе­ ошибочно игнорируется 4 . negative rate, FNR) му нас классу, ТNR = истинноотрицательные результаты общее количество отрицательных результатов в наборе данных' FNR = _______л_о_жн_о_о_т_р_и_ц_а_т_е_л_ьн_ь_1_е_р_е_зу_л_ь_т_а_т_ы_______ общее количество положительных результатов в наборе данных Все эти показатели - разные способы выразить, насколько хорошо ваша система способна различать классы. Их можно использовать для определения эффективно­ сти таким же образом, как мы описали во врезке "Пороги уверенности" ранее в этой главе. 4 Слово "положительный" часто заменяется словом "принятие", а слово "отрицательный" - "отказ". словом
Оценка, развертывание и поддержка приложений с искусственным интеллектом... Оценка F1 1 361 и МСС. Иногда полезно иметь одну статистику для описания работы классификатора, например при сравнении похожих моделей. Одним из таких стати­ стических показателей служит оценка F1 - единое число, получаемое из показате­ лей точности и полноты (путем взятия их среднего гармонического значения): FI =2 . точность• полнота . точность+ полнота Несмотря на удобство, оценка FI имеет некоторые ограничения. Она не содержит информации об истинноотрицательных значениях, а значит, не подходит для ис­ пользования с несбалансированными классами, поскольку при разном количестве элементов в каждом классе оценки FI между классами будут несопоставимы. По этой причине используется другая метрика, известная как коэффициент корре­ ляции МJmьюза (Matthews correlation coefficient, МСС; https://oreil.ly/dtnOy). Она включает в себя все квадраты матрицы неточностей, поэтому является лучшим об­ щим показателем качества модели. Хотя показатель МСС лучше, он все равно ограничен по своей природе. Сведение всей матрицы ошибок к одному числу лишает нас возможности рассматривать ка­ ждую ячейку в отдельности. Как описано во врезке "Пороги уверенности" ранее в этой главе, для каждого приложения существует свой идеальный баланс между точностью и полнотой. Оценки FI и МСС не позволяют рассматривать их по от­ дельности, поэтому при сравнении нескольких моделей мы будем слепы к некото­ рым различиям между ними. ROC И AUC. Как мы уже узнали, можно изменить производительность классифи­ катора, изменяя порог уверенности. Влияние этого показателя можно визуализиро­ вать с помощью графика, известного как кривая ошибок, или рабочая характери­ стика приемника зано на рис. (receiver operating characteristic curve- RОС-кривая), как пока­ 10.2. Поскольку порог уверенности может использоваться для компромисса между и FPR, TPR для графика RОС-кривой откладывают один из этих коэффициентов полю­ бой оси. Для того чтобы построить кривую, TPR и FPR рассчитываются для раз­ личных порогов уверенности. Эта диаграмма очень полезна, поскольку описывает все варианты настройки клас­ сификатора. Можно выбрать точку на кривой, которая представляет собой желае­ мый компромисс, основанный на потребностях нашего приложения. Затем исполь­ зуем соответствующий порог уверенности для проверки результатов нашей модели. Мы также можем использовать RОС-кривую для создания единой метрики, описы­ вающей эффективность модели на основе вероятности того, что она правильно от­ ветит на конкретный вопрос. Она получается путем вычисления площади под кри­ вой (area under the curve, AUC; см. рис. 10.2) и имеет значение от О до l. Модель с показателем AUC, равным 1, делает все прогнозы правильно, в то время как с пока-
Глава 362 10 зателем AUC, равным 0,5, шансы предсказать правильный класс составят 50150 5. ROC полезен, но это все же один статистический показатель, представляющий сложный набор моделей поведения . Как таковой, этот параметр все равно не помо­ жет, если мы пытаемся понять, как модель будет работать в различных обстоятель­ ствах. В этом случае комбинация RОС-кривой и матрицы неточностей даст нам много полезной информации. 1,0 х :;s 25 ~ 0,6 s :Е о а с:: о :,: i 0,4 t:; s ~ <1J s :::3" i 0,2 :-2 ROC curve (AUC =0,88) О,О--1------~-----~----~----~-------4 0,0 0,2 0,4 0,6 0,8 1,0 Коэффициент ложноположительных результатов Рис. 10.2. RОС-кривая, построенная с помощью библиотеки Метрики ошибок. Классификаторы категория - регрессионные модели Matplotlib это только один тип моделей. Другая основная - имеет собственный набор общих метрик. По­ скольку регрессионная модель предназначена для предсказания числовых значений, лучший способ понять ее эффективность - это метрика, сравнивающая разницу ме­ жду ее выходным значением и значением, которым помечена выборка данных . Приведем некоторые основные показатели ошибок, используемые в регрессионных моделях. Средняя абсолютная ошибка (теап absolute error, МАЕ). Эта простая метрика состоит из среднего значения ошибок, где ошибка опреде­ ляется как разница между прогнозируемым и фактическим значением. 5 Значение AUC, равное О, означает, что модель, как ни странно, ошибается в каждом прогнозе . Для бинарного классификатора это означает, что вы можете просто перевернуть прогнозы, чтобы получить идеальную производительность. Если такое происходит, это обычно свидетельствует о том, что вы где-то перепутали метки данных!
Оценка, развертывание и nоДQержка приложений с искусственным интеллектом... 1 363 Она рассчитывается для набора данных следующим образом: ~ ошибки МАЕ=--~----­ количество выборок Например, представьте, что мы обучили регрессионную модель для предсказания веса яблок по фотографиям. Предположим, что яблоки взвешены в граммах. По­ сле тестирования модели мы вычислили значение МАЕ, равное 1О. Это означает, 1О граммов. что в среднем прогнозируемый вес отличается от фактического на Такая простота делает МАЕ очень полезным показателем. Однако есть несколь­ ко альтернативных вариантов. Они помогут пролить свет на различные типы ошибок. Среднеквадратическая ошибка (теап Показатель MSE squared error, MSE). очень похож на МАЕ, за исключением того, что ошибки перед суммированием возводятся в квадрат: L квадрат ошибок MSE=-='------. количество выборок Поскольку мы возводим значения ошибок в квадрат, MSE всегда будет либо по­ ложительным, либо нулевым, а большие ошибки будут сильнее влиять на его значение. Это может быть полезно, поскольку большие ошибки часто хуже ма­ леньких, но могут быть обманчиво сглажены простым расчетом МАЕ. Корень из среднеквадратичной ошибки Недостатком показателя MSE (root теап squared error, RМSE). является то, что поскольку он основан на квадрат­ ных значениях, его сложнее интерпретировать, чем МАЕ, представленный в ис­ ходных единицах. Вычислив квадратный корень из MSE, известный как RMSE, можно выразить его в тех же терминах, что и метки: RMSE= RMSE L квадрат ошибок количество выборок имеет те же преимущества, что и MSE, но этот параметр легче интерпре­ тировать. Недостатком является то, что он немного сложнее для восприятия. Как и в случае с метриками классификации, выражение эффективности модели в виде одного значения может быть рискованным. Ваш набор данных может содер­ жать различные подгруппы, имеющие разную производительность. Мы рассмотрим некоторые стратегии решения этой проблемы в разд. "Методы оценки" далее в этой главе. Средний показатель точности. Средняя точность (mean average precision, mAP) - это довольно сложная метрика, применяемая для оценки эффективности модели "' обнаружения объектов. Модели обнаружения объектов пытаются нарисовать ограничительные рамки вокруг любых объектов на изображении. mAP смотрит, на­ сколько хорошо предсказанные ограничительные рамки совпадают с реальными -
364 Глава 10 либо в пределах данного изображения, либо во всем наборе данных. Этот показа­ тель комбинирует данные с чем-то вроде доверительного интервала, чтобы полу­ чить оценку 6 . Основной недостаток mAP заключается в том, что, хотя он основан на площади рамок, он не учитывает их количество. Это означает, что модель может получить хорошие оценки по mAP, даже если она предсказывает несколько рамок там, где должна быть только одна. Тем не менее это стало стандартным способом оценки моделей обнаружения объектов. Библиотека sklearn.flletгlcs (https://oreil.Iy/zqOCD) содержит реализации большинства из вышеперечисленных метрик, а также многих других. Сто­ ит изучить литературу, посвященную метри~ам, чтобы определить, какие из них идеально подходят для решения вашеи задачи. Вычислительная и аппаратная производительность ИИ периферийных устройств почти всегда предполагает управление балансом ме­ жду алгоритмической и вычислительной производительностью. В то время как ал­ горитмические показатели производительности говорят о том, насколько хорошо алгоритм справляется со своей задачей, вычислительные и аппаратные показатели производительности указывают, насколько быстро работает алгоритм и какие ре­ сурсы при этом потребляются. Опираясь на эти показатели, можно найти разумный компромисс между сложно­ стью алгоритма и вычислительными ресурсами. Например, задержка, требуемая для конкретного приложения на данном оборудовании, может определять доступ­ ный размер используемой модели глубокого обучения. Следующие метрики помогают понять размер вычислительной задачи и нагрузку, оказываемую ей на наше оборудование. Память. Память включает в себя как ОЗУ (оперативное запоминающее устройст­ RAM, random access memory), так и ПЗУ (постоянное запоминающее устрой­ ство ROM, read only memory), и их свойства довольно сильно различаются. ПЗУ - это место, где хранятся ваши алгоритмы, включая параметры любых моде­ лей машинного обучения. ОЗУ - это рабочая память вашей программы во время ее во - работы. ОЗУ и ПЗУ (или дисковое пространство) любого периферийного устройст­ ва жестко ограничены, поэтому важно, чтобы ваши алгоритмы соответствовали имеющимся возможностям. Алгоритм не может работать изолированно, он должен существовать внутри какой­ то программы. Остальные части программы также занимают память, поэтому, ко­ гда вы будете думать об использовании ОЗУ и ПЗУ, необходимо будет учесть и остальные части вашего приложения. В большинстве случаев вы получите бюджет 6 В статье Шиви Йоханандана "mAP (средняя точность) может сбить вас с толку" (Yohanandan S. mAP (mean Average Precision) Might Confuse You! (https://oreil.ly/aJ3Dy)) есть хорошее объяснение mAP.
Оценка, развертывание и подцержка приложений с искусственным интеллектом... 1 365 на ОЗУ и ПЗУ, которого должен придерживаться ваш алгоритм, чтобы вписаться в рамки остального приложения. Например, представьте, что вы добавляете ИИ периферийных устройств в сущест­ вующую систему. Можно проанализировать память, используемую существующим приложением, и решить, что останется для ваших новых алгоритмов. Аналогично, в новой системе вам придется решить, сколько ПЗУ и ОЗУ будет выделено для алго­ ритмов, а сколько - для других частей приложения. Измерение использования ОЗУ и ПЗУ приложением кажется относительно простым - - задача нетривиальная. ПЗУ теоретически, инженер по разработке встраи­ ваемых систем может скомпилировать простую программу, содержащую ваши ал­ горитмы, а затем посмотреть на выходной сигнал и определить, насколько он ве­ лик. Однако на практике зависимости, необходимые для приложения и для алгоритмов, могут частично совпадать. Это означает, что алгоритмы в итоге могут оказать меньшее влияние на использование ПЗУ, чем может показаться. Таким образом, самый надежный способ оценить использование ПЗУ алгоритма­ ми - выполнить сборки всех приложений как с ними, так и без них. Разница ска­ жет о том, сколько ПЗУ используется. Модели глубокого обучения, как правило, большие, поэтому вы можете столкнуть­ ся с необходимостью уменьшить размер модели, чтобы уложиться в бюджет ПЗУ. Всегда полезно попробовать квантовать модель, прежде чем тратить много времени на оптимизацию остальной части приложения - снижение точности в результате обычно очень незначительно. Измерить использование ОЗУ немного сложнее. Во-первых, чтобы определить по­ требности алгоритма, его обычно нужно запустить. Во-вторых, если ваша програм­ ма использует слишком много оперативной памяти, она может оказаться неработо­ способной. В-третьих, для определения использования оперативной памяти на работающем устройстве потребуется какая-либо тестовая программа или отладчик. Хорошим подходом к измерению загруженности оперативной памяти для конкрет­ ного алгоритма является использование тестовой программы. Сначала программа должна заполнить всю память определенным маркерным значением. Далее можно запустить алгоритм. После его выполнения необходимо просмотреть память уст­ ройства и проверить, насколько она еще заполнена маркерными значениями. Этот "уровень высокой воды" даст вам оценку использования памяти, хотя и не скажет о худшем варианте заполнения памяти, который может оказаться выше 7 . Потенциально можно применять эту технику с симулятором для оценки использо­ вания оперативной памяти без необходимости развертывания на реальном устрой­ стве. Это может быть у доб но во время разработки, и именно такой подход реализу­ ется в некоторых платформах сквозной разработки (например, 7 Edge Impulse). На самом деле существует три вида оперативной памяти: данные (или глобальная), стек и куча. Использование ОЗУ данных задается во время компиляции, в то время как использование стека и кучи может меняться в процессе работы программы. Некоторые встроенные программы намеренно используют только раздел данных, чтобы избежать неожиданностей. Для стека и кучи требуются отдельные тесты на "уровень высокой воды".
Глава 366 10 Измерять загруженность ОЗУ и ПЗУ гораздо проще на устройствах с операционной системой, поскольку вы можете напрямую запрашивать показатели у ОС. Floating-point operations (FLOPs). (флоп - Операция над операндами с плавающей точкой FLoating point OPeration, FLOP)- это одно вычисление с двумя числами с плавающей точкой, а количество операций над операндами с плавающей точкой в секунду (флопс - FLoating-point OPerations per Second, FLOPS) используется в ка­ честве меры вычислительной мощности. Общее количество флопов иногда используется для описания объема работы, необ­ ходимого для вычисления одного вывода модели глубокого обучения. Это имеет смысл для серверных моделей, поскольку вычисления обычно выполняются в арифметике с плавающей точкой. Учитывая показатели FLOP модели и FLOPS процессора (и не обращая внимания на путаные аббревиатуры), теоретически можно оценить задержку модели. Однако многие периферийные модели квантованы и, следовательно, используют целочис­ ленную математику, что делает значение параметра FLOP исходной модели менее значимым. Кроме того, производители встраиваемых процессоров обычно не со­ общают о значении показателя FLOPS (или IOPS (integer operations per second) FLOP для модели не все­ целочисленный эквивалент). Наконец, расчет показателя гда прост. В совокупности все это делает FLOP малопригодными для определения производи­ тельности ИИ периферийных устройств. Тем не менее стоит упомянуть об этом показателе, если вы вдруг столкнетесь с этим. Задержка. В контексте ИИ периферийных устройств задержка - это время, тре­ буемое для выполнения всех частей алгоритма от начала и до конца. Например, за­ хват кадра аудио, понижение его качества, прогон через алгоритм DSP, передача результатов в модель глубокого обучения, выполнение модели и обработка резуль­ татов могут занять 100 мс. Задержка обычно указывается в миллисекундах или в кадрах в секунду, последнее - в основном для приложений машинного зрения. Задержка зависит от используемых алгоритмов, доступных оптимизаций и самого оборудования. Более быстрое оборудование и лучшие оптимизации (например, предусмотренные в библиотеках, описанных в разд. "Математические и DSР­ библиотеки" главы 5) приводят к снижению задержки: как правило, чем меньше и проще модель машинного обучения, тем ниже показатель ее задержки. Некоторые приложения требуют низких значений параметра задержки. Например, если приложение должно реагировать на ввод пользователя в режиме реального времени, то оно должно работать с низкой задержкой. В других случаях задержка не так важна - возможно, ответ приложения может быть асинхронным и не дол­ жен происходить быстро. В некоторых ситуациях уменьшение задержки означает лучшую производитель­ ность алгоритмов. Например, модель поиска ключевых слов, работающая много раз в секунду, имеет больше возможностей обнаружить ключевое слово, чем модель, работающая один раз в секунду.
Оценка, развертывание и подцержка приложений с искусственным интеллектом ... 367 Для измерения задержки обычно требуется доступ к устройству, если только не доступно моделирование с точностью до цикла (см. разд. "Эмуляторы и симулято­ ры" главы 5). Тем не менее существует несколько методов оценки производитель­ ности моделей глубокого обучения, основанных на бенчмарках аналогичных рабо­ чих нагрузок на оборудовании 8 . Рабочий цикл. Встраиваемые приложения часто должны ограничивать потребление энергии, чтобы продлить срок службы батареи. Для этого они периодически вы­ полняют вычисления, получая новые данные, а затем переходят в спящий режим с низким энергопотреблением, ожидая поступления следующих данных. Режим пробуждения/сна процессора называется его рабочим циклом. Например, процессор может просыпаться каждые затрачивая на это lО 200 мс для считывания данных с датчика, мс. Затем он может потратить 50 мс на обработку данных с помощью алгоритма ИИ периферийных устройств, после чего снова погрузится в сон. В этом случае процессор просыпается на он будет тратить 350 60 мс каждые 200 мс. Из каждой секунды мс на бодрствование и обработку данных. Таким образом, ра­ бочий цикл, выраженный в процентах, составит 35%. Рабочий цикл важен для определения энергопотребления встраиваемой системы, поскольку он определяет, сколько энергии потребляет процессор. Энергия. Срок службы батареи - одна из основных проблем встраиваемых прило­ жений, поэтому определение энергопотребления устройства очень важно. Этот па­ раметр измеряется в терминах тока и обычно выражается в миллиамперах (сокра­ щенно мА). Каждый компонент встраиваемой системы потребляет разный ток, и это в значи­ тельной степени зависит от того, как он используется. Например, процессор по­ требляет больше или меньше тока в зависимости от того, какие из его функций включены в данный момент, а датчик может потреблять больше тока, пока он ак­ тивно проводит измерения. По этой причине важно измерять потребление энергии при обычном использова­ нии. Возможно, имеет смысл наблюдать за устройством в течение дпительного пе­ риода времени, чтобы определить его фактическое энергопотребление. Это можно сделать с помощью специального инструмента, такого как монитор тока или реги­ стратор данных. Емкость аккумулятора измеряется в миллиампер-часах (мАч), что означает количе­ ство часов, в течение которых аккумулятор может поддерживать ток силой Например, батарея емкостью ние 20 2000 мАч будет питать устройство на 100 l мА. мА в тече­ часов. Для процессора потребление энергии тесно связано с рабочим циклом, который является функцией задержки. Это означает, что алгоритмы с низкой задержкой экономят энергию, поэтому при разработке алгоритмов и приложений важно учи­ тывать потребление энергии. 8 Этот параметр используется платформой Edge lmpulse для оценки задержки при разработке модели.
Глава 368 10 Тепловая нагрузка. Электронные компоненты выделяют тепло в виде отходов, и это может быть актуально в некоторых приложениях - процессоры могут нагре­ ваться во время вычислений, и если теплу некуда деваться, на устройстве могут возникнуть проблемы. Кроме того, у некоторых компонентов минимальная рабочая температура. Тепловая энергия измеряется в градусах Цельсия. В технических паспортах боль­ шинства компонентов указаны их рабочие диапазоны. У некоторых процессоров, в основном системы стоятельно SoC, снижать есть встроенные датчики температуры, и они могут само­ производительность, если начинают перегреваться. MCU обычно не получают такой функциональности, поэтому, если требуется контроли­ ровать их температуру, придется установить датчик. Чем короче рабочий цикл процессора, тем меньше тепловой энергии он производит впустую. Это означает, что задержка является инструментом Д/IЯ ограничения теп­ лового излучения. Методы оценки Для оценки используется определенный набор методик, некоторые из них мы уже видели, а другие станут Д/IЯ нас новыми. Приведем самые важные из них. Фрагменты набора данных для обучения, проверки и тестирования. Из разд. "Разделение данных" главы 7 мы узнали, что очень важно разделить на­ бор данных на части с целью доказать, что ваша модель может работать с неиз­ вестными ей ранее данными. Основная часть оценки должна проводиться на на­ боре данных Д/IЯ проверки. Для того чтобы сохранить его ценность, следует использовать тестовый набор данных только тогда, когда вы считаете, что разработка модели закончена. Если при проверке модели на тестовом наборе данных вы обнаружите, что модель не работает, вам придется выбросить ее и начать с нуля. В противном случае вы рискуете вызвать переобучение, настраивая модель так, чтобы она отлично ра­ ботала на тестовом наборе данных, но не работала на реальных данных. Конечно, потенциально вы можете собирать больше данных в любой момент в процессе разработки. Необходимо стараться делать это, постоянно пополняя весь набор данных новыми выборками, чтобы улучшить возможности по обуче­ нию и оценке моделей. Перекрестная проверка. Одним из недостатков разделения данных для оценки является то, что модель будет настолько же хороша, насколько хороши были данные из ее обучающего набора. Перекрестная проверка, описанная во врезке "Перекрестная проверка" главы 7, позволяет обойти эту проблему, обучить несколько моделей на одном и том же наборе данных и сравнить их производительность. Для начала обучающий набор данных разделяется на обучающую и провероч­ ную части. Модель обучается на обучающей части и тестируется на провероч-
Оценка, развертывание и поддержка приложений с искусственным интеллектом... 369 ной части. Метрики регистрируются, а затем данные объединяются и разбива­ ются на части случайным образом. Вторая модель обучается на новом обучаю­ щем фрагменте, а затем оценивается на новом проверочном фрагменте набора данных. Этот процесс продолжается любое количество раз - возможно, десят­ ки. Результатом является серия моделей, каждая из которых обучена и провере­ на на различных подмножествах данных. Метрики моделей можно проанализи­ ровать, чтобы понять, сильно ли зависит качество модели от состава данных. Надеемся, что каждая из моделей выдаст схожую производительность. Если так и происходит, можно выбрать модель с наилучшими показателями и провести окончательную проверку на тестовом наборе данных. Наиболее распространенный тип проверки известен как k-блочная перекрестная проверка. Информация о процессе представлена в документащш scikit-learn (https://oreil.ly/5uy5t). Анш~из подгрупп. Метрики, описанные в разд. "Производительность ш~горитмов" ранее в этой главе, можно рассчитать для всего набора данных или его части, а также для лю­ бой произвольной подгруппы данных. Это может быть чрезвычайно мощным инструментом, особенно полезным для понимания объективности ваших алго­ ритмов. Представьте, что вы создаете приложение компьютерного зрения для идентифи­ кации различных классов автомобилей: легковых, грузовых и внедорожников. Можно рассчитать показатели эффективности алгоритма для каждого класса. Эти значения покажут вам, насколько хорошо алгоритм идентифицирует каж­ дый тип автомобиля. Однако, получив немного дополнительной информации, вы сможете выйти за эти рамки. Например, если ваш набор данных включает метаданные о марке ав­ томобиля на каждой фотографии, вы можете рассчитать метрики для каждой из этих подгрупп. Затем можно провести анализ с целью убедиться, что модель ра­ ботает одинаково хорошо для каждой подгруппы. Например, может оказаться, что модель недостаточно эффективна для определенной марки автомобиля, в этом случае вы можете попытаться собрать больше фотографий этой марки для своего обучающего набора данных. Самой модели не важна марка автомобиля, только тип транспортного средства на высоком уровне (легковой, грузовой или внедорожник). Несмотря на это, все равно можно использовать информацию о марке, чтобы лучше оцен1пь систему. Вы можете представить, насколько полезен этот тип техники при исследован~tи объективности ML практически на любом наборе данных. Метрики и распространение. Обычно подгруппы в наборах данных распределены неравномерно. Например, представьте, что вы обучаете классификатор для различения классов А, В и С. В вашем наборе данных классу В и 20%- 60% выборки могут относиться к классу А, к классу С. 20% - к
370 Глава 10 Метрики, используемые вами для оценки, должны быть чувствительны к про­ блемам всех этих классов. Например, метрика точности может составлять 60% для всех классов. Однако это число само по себе не скажет вам, что модель пра­ вильно выполняет задачи для класса А, но не выполняет их для класса В или С. Один из способов понять, насколько адекватны ваши метрики, - "оценить" поддельную модель, возвращающую заведомо плохие результаты, которые со­ ответствуют основному распределению данных. Например, можно создать слу­ чайный классификатор, выполняющий задачи классификации с результатом в случайные 60% примеров как А, 20% как В и 20% как С. Оценив результаты ра­ боты этого случайного классификатора, вы сможете понять, насколько хорошо выбранные вами метрики передают недостаток производительности модели. Использование нескольких метрик. Для одного проекта можно измерить множество различных метрик. Например, вы можете определить числа, отражающие точность на тестовом наборе данных, задержку вычислений и использование памяти. Создание эффективного решения часто означает баланс между ограничениями по нескольким параметрам. На­ пример, можно сократить задержку, используя более простую модель, но это может привести к снижению точности. Все эти отдельные показатели могут быть важны, но они не всегда важны врав­ ной степени. Например, для проекта, работающего на высокой скорости, веро­ ятно, придется придать большее значение показателю задержки, чем точности. В наборе данных с несколькими подмножествами может быть важна производи­ тельность на одном подмножестве больше, чем на другом. Общий вес различных показателей ности - - насколько они важны для вас по отдель­ вы должны определить вместе с заинтересованными сторонами. Синтетические тестовые данные. Часто бывает трудно получить данные, особенно если вы хотите протестировать свою систему на редких и необычных входных данных. Например, система об­ наружения аномалий может быть разработана для выявления катастрофических сбоев, никогда ранее не зафиксированных в реальном мире. Один из способов обойти эту проблему Синтетические данные - - генерировать синтетические данные. это любые данные, созданные искусственно. Это мо­ жет означать взятие реального набора данных и искажение его выборок для соз­ дания новых, а может означать генерацию совершенно новых исходных данных с помощью какого-либо алгоритмического процесса. Например, можно сгенери­ ровать набор входных данных, предназначенных для имитации катастрофиче­ ских сбоев, чтобы проверить систему обнаружения аномалий. Синтетические данные могут быть полезной концепцией. Их применение потен­ циально дает вам доступ к неограниченному количеству помеченных данных, которые можно использовать для тестирования или даже для обучения моделей. Однако не все данные можно подделать, и полностью полагаться на синтетиче­ ские данные рискованно, особенно при оценке.
Оценка, развертывание и поддержка приложений с искусственным интеллектом... 1 371 Калибровка производительности Большинство алгоритмов, работающих с потоковыми данными, предусматрива­ ют этап постобработки, на котором необработанные результаты работы алгорит­ ма ИИ с потоком данных фильтруются, очищаются и используются для принятия решений. Например, в приложении для поиска ключевых слов необработанные выходные данные модели классификации звука представляют собой поток веро­ ятностей классов - как правило, один набор вероятностей каждые несколько м илл и секунд. Для того чтобы идентифицировать конкретные произнесения ключевого слова, этот поток необходимо отфильтровать (чтобы удалить любые кратковременные, ложные классификации), установить порог уверенности (чтобы определить, ко­ гда есть сильный положительный сигнал) и разделить (чтобы одно произнесение не бьто воспринято несколько раз). Алгоритм постобработки, используемый для этого, имеет различные параметры, влияющие на его работу. Например, необхо­ димо выбрать определенный порог, обеспечивающий оптимальный баланс лож­ ноположительных и ложноотрицательных результатов (c.w. разд. "Производи­ телыюсть алгоритмов" ранее в этой главе). Теоретически этот порог можно выбрать после развертывания, собрать данные об использовании и определить количество ложноположительных и ложноотри­ цательных результатов. Однако стоимость и сложность развертывания и наблю­ дения, а также потенциальные сбои, связанные с развертыванием версии приложе­ ния, не работающей должным образом, делают этот вариант непривлекательным. Даже если это осуществимо, цикл обратной связи для опробования новых поро­ говых значений не будет очень жестким - на проверку каждого нового значения уйдет много времени. Для того чтобы создать более тесный и удобный цикл обратной связи, можно смоделировать реальные условия в лаборатории. Например, можно записать длинную выборку аудиозаписи с различными словами и присвоить ей метку. Да­ лее алгоритм поиска ключевых слов будет запущен на этой выборке, создавая необработанный результат. Затем можно свободно экспериментировать с раз­ личными конфигурациями постобработки для очистки полученного результата и сравнения его с метками выборки, чтобы понять производительность. Полученную процедуру гораздо проще выполнить, чем ту, что предполагает полное развертывание в реальном мире, и ее можно автоматизировать в процессе разработки модели, чтобы протестировать различные подходы. Ужесточение об­ ратной связи создает мощный инструмент для оценки эффективности, который направляет развитие алгоритмов. Edge lmpulse Studio, комплексная платформа для разработки приложений ИИ периферийных устройств, обеспечивает реали­ зацию автоматической калибровки производительности.
372 Глава 10 Оценка и ответственный искусственный интеллект Если вы хорошо оцените свои приложения, то поймете, как они могут работать в полевых условиях и в различных субпопуляциях, представленных в вашем наборе данных. Чем лучше ваша оценка, тем меньше риск, что вы столкнетесь с проблемой в экс­ плуатации. Ответственный дизайн предполагает оценку соответствия задачи и решения в кон­ тексте окружающей среды. Любая оценка хороша лишь настолько, насколько вы понимаете суть задачи и условия эксплуатации. Именно поэтому так важно при­ влекать к процессу оценки экспертов предметной области и заинтересованные сто­ роны. Оценка также лежит в основе итеративного процесса разработки. Иными словами, если вы не сделаете качественную оценку, у вас не получится хорошего продукта. Убедитесь, что вы уделяете большое внимание оценке, и стоит попросить заинтере­ сованных лиц, экспертов предметной области и консультативный совет уделить этому процессу много внимания, чтобы убедиться, что в нем будут учтены все воз­ можные детали. Вы, наверное, заметили, что многие методы оценки полностью зависят от набора данных. Это делает создание вашего набора данных необходимым для разработки этичного ИИ (см. разд. ''данные, этика и ответственный искусственный интел­ лект II главы 7). Оценка в полевых условиях - дело медленное и дорогостоящее, поэтому наборы данных являются жизненно важным инструментом. Тем не менее невозможно избежать необходимости оценки в реальных условиях, с реальными пользователями. Количественной оценки производительности алгорит­ мов с помощью тестовых данных недостаточно. Очень важно понимать, как рабо­ тает вся ваша система в контексте и с людьми, которые будут ее использовать. Вы должны как можно раньше включить эти проверки в рабочий процесс. Наконец мы рассмотрели все этапы оценки модели до ее развертывания. Инстру­ менты для оценки после развертывания описаны в разд. "Мониторинг после раз­ вертывания" далее в этой главе. Развертывание приложений ИИ периферийных устройств Как мы уже говорили в разд. "Развертывание" главы 9, развертывание лучше рас­ сматривать как непрерывный процесс, а не как единичное событие в конце проекта. Однако каждый раз, когда новая итерация вашей системы соприкасается с реаль­ ным миром, существует вероятность серьезного риска - наряду с ценными новы­ ми знаниями. Важно предусмотреть процесс, учитывающий это. Например, представьте, что вы развертываете новую версию модели классифика­ ции активности овец. Существует вероятность того, что она может давать неверные прогнозы, способные оказать негативное влияние на сельскохозяйственную дея-
Оценка, развертывание и поддержка приложений с искусственным интеллектом... 1 373 тельность, если их быстро не выявить. Этот процесс также может породить новые идеи, которые можно применить в следующей итерации дизайна, но только если они будут зафиксированы. Для того чтобы развертывание прошло гладко, минимизировало риски и принесло максимальную пользу, необходимо разработать и задокументировать продуманный процесс, и его можно будет повторять каждый раз. Ответственность за выполнение этих задач очень важна - их должны отслеживать члены вашей команды, обычно те, кто отвечает за разработку и эксплуатацию продукта. Далее мы рассмотрим некоторые ключевые задачи. Задачи перед развертыванием Эти задачи необходимо выполнить до развертывания. Они должны руководство­ ваться техническими знаниями, мнениями заинтересованных сторон и опытом экс­ перта предметной области. Определение целей. Каждое развертывание должно иметь ясные, четко сформулированные цели. Например; можно развернуть больше устройств, чтобы увеличить масштаб сис­ темы, или установить последнюю итерацию программного обеспечения на уже работающее обору давание. Для того чтобы лучше управлять рисками и повысить способность измерять эф­ фективность, вы должны постараться ограничить количество целей для данного развертывания. Как и в любом эксперименте, чем больше входных переменных вы изменяете, тем сложнее понять, что именно вызвало изменения на выходе. Определение ключевых метрик. Для того чтобы понять влияние развертывания, вам нужно отслеживать метри­ ки, описывающие работу системы. Они должны включать показатели эффектив­ ности, если таковые имеются, в дополнение к общим цифрам, позволяющим вы­ явить любые изменения, например распределение входных и выходных данных. Вы будете использовать эти метрики, чтобы понять, какие изменения произош­ ли благодаря развертыванию, и были ли достигнуты поставленные цели. Аншzиз производительности. Прежде чем развертывать новую итерацию программного или аппаратного обеспечения, необходимо хорошо понимать, как она будет работать, и будет ли производительность приемлемой для системы, в перспективе используемой в производстве. Существуют различные методы оценки производительности в ла­ боратории (один из них рассматривается во врезке "Калибровка производитель­ ности" ранее в этой главе), и вы должны использовать их по мере возможности до развертывания в полевых условиях. Если итерация не показывает хороших результатов в лабораторных условиях, она вряд ли будет хорошо работать и в полевых. Более того, измерить произво­ дительность в реальных условиях может быть гораздо сложнее, поскольку дан-
374 Глава 10 ные с метками встречаются редко, поэтому следует использовать все возможно­ сти для предварительного тестирования. Документирование возможных рисков. При каждом запуске новой итерации в эксплуатацию вы подвергаете себя опре­ деленному риску. Перед развертыванием важно попытаться выявить все воз­ можные риски, понять их влияние и подумать о том, как их можно смягчить или устранить. Если дела пойдут совсем плохо, вам, возможно, придется остановить разверты­ вание или закрыть проект, чтобы не причинить вреда. Исходя из рисков, вы должны составить набор критериев прекращения работы (см. врезку "Критерии прекращения работы" далее в этой главе). Они помогут вам понять, когда нуж­ но остановиться. Определение плана восстановления. Если в результате развертывания произойдет что-то плохое, вам понадобится план по восстановлению системы. Это может означать откат к более ранней вер­ сии системы или исправление повреждений, нанесенных процессам, вступав­ шим во взаимодействие. Подготовившись заранее, можно пойти на более просчитанный риск, не опаса­ ясь катастрофы. У вас должен быть план по устранению последствий всех выяв­ ленных возможных рисков. Это может потребовать использования стратегий Graceful Degradation, разрабо­ танных вами для приложения (см. врезку "Подход Graceful Degradation" в главе 9). Проектирование развертывания. Исходя из поставленных целей, вам нужно будет разработать стратегию развер­ тывания своей работы. Например, вам придется решить, какую версию про­ граммного и аппаратного обеспечения развернуть, на каком количестве уст­ ройств и в каких конкретных местах. Вам также нужно будет продумать все необходимые средства автоматизации, чтобы сократить время развертывания и обеспечить согласованность на разных устройствах. Здесь могут помочь плат­ формы управления lоТ-устройствами. Например, если ваши устройства расположены на нескольких заводах по всему миру, вы можете принять решение о развертывании новейшего программного обеспечения на одном заводе для тестирования, чтобы изолировать любой риск. В качестве альтернативы можно развернуть систему на нескольких устройствах на каждом заводе, чтобы получить представление о том, как она работает в раз­ личных контекстах. Лучшая стратегия зависит от вашей конкретной ситуации, и для ее определения потребуются знания и опыт в сфере бизнеса. Если вы планируете широкомасштабное развертывание, всегда стоит проводить поэтапное внедрение - начните с небольшого подмножества устройств, по­ смотрите, как пойдет процесс, а затем разверните оставшуюся часть волнами. Это сведет риск к минимуму и позволит вам легче восстановиться, если что-то пойдет не так.
Оценка, развертывание и поддержка приложений с искусственным интеллектом... 1 375 Анш,из соответствия ценностям. Любое поставляемое программное или аппаратное обеспечение должно пройти детальную проверку на предмет потенциальных этических проблем. Важно про­ анализировать все изменения, внесенные с момента последнего развертывания, на случай если они приведут к появлению новых проблем. Кроме того, сам план развертывания должен быть подвергнут этическому анализу с учетом опыта в данной области. Например, при планировании поэтапного внедрения стоит задуматься о том, на­ сколько репрезентативна группа пользователей. Вы можете пропустить пробле­ мы, затрагивающие некоторые группы пользователей, если они не будут пред­ ставлены на начальных этапах развертывания. План взаимодействия. Очень важно сообщать о любых изменениях в производственной системе до развертывания, во время и после него. Составив план общения, вы сможете обеспечить эффективность этого взаимодействия. Ваша цель- убедиться, что все, на кого может повлиять развертывание, включающее вероятные непредви­ денные проблемы, отраженные в документации по рискам, знают о планируе­ мых действиях, их рисках и роли. К ним относятся заинтересованные стороны и члены вашей команды разработчиков. Общение должно идти в обоих направлениях, поскольку могут существовать неизвестные вам факторы, способные повлиять на ваш план развертывания. На­ пример, вы можете узнать о графике мероприятий, пересекающемся с заплани­ рованным развертыванием и способным повлиять на измеряемые показатели. Решение "подходит/не подходит". После того как вся необходимая документация собрана, наступает последний этап - ее изучение и принятие решения "подходит/не подходит". Вы можете определить, что уровень риска слишком высок или из-за какого-то сопутствую­ щего фактора развертывание следует отложить. В противном случае может быть принято решение о продолжении текущей работы. Важно, чтобы в принятии такого решения участвовали заинтересованные сторо­ ны, эксперты предметной области и техническая команда, поскольку все они имеют представление о требующих пристального внимания потенциальных проблемах. Задачи в процессе развертывания Эrо задачи, требующие решения в процессе развертывания, помимо самой механи­ ки развертывания. Двусторонняя связь. Вы должны четко общаться со всеми, кого может затронуть развертывание, в соответствии с планом, созданным в ходе выполнения задач перед развертыва-
376 Глава 10 нием. В том числе стоит прислушиваться к людям, сообщающим о потенциаль­ ных проблемах, которые могут возникнуть в сфере их ответственности. Поэтатюе развертывание. Для того чтобы свести риск к минимуму, развертывание следует проводить по­ этапно, а не сразу. Координация такого поэтапного развертывания - серьезная задача. Наиболее важными аспектами являются отслеживание того, что и где было развернуто, и мониторинг того, как каждый этап может повлиять на от­ слеживаемые вами метрики. В некоторых случаях невозможно обновить некоторые устройства, установлен­ ные на местах. Например, они могут не подцерживать обновление прошивки. В этом случае вам нужно очень внимательно следить за тем, какие устройства по­ лучили ту или иную версию прошивки, а также за своими алгоритмами. Мониторинг метрик. Вам нужно будет отслеживать все ключевые метрики во время развертывания и быть готовым остановить или свернуть процесс, если дела пойдут не очень хо­ рошо. По результатам работы перед развертыванием у вас должно быть понима­ ние того, как изменятся отслеживаемые метрики. Если вы заметили что-то отли­ чающееся, стоит приостановить развертывание и выяснить, что происходит. Если кажется, что произошло что-то опасное, следует откатиться к более ранне­ му состоянию и устранить проблему. Одна из основных целей ответственного потока работы ИИ тить причинения вреда. Одна из ваших задач возможность причинения вреда и создать - - не допус­ заранее предусмотреть конструкцию, предотвращаю­ шую его причинение. Хотя складываются и неожиданные ситуации, не­ предвиденный случай причинения вреда означает, что ваш процесс этического анализа нарушен. Задачи после развертывания Работа не заканчивается сразу после завершения поэтапного развертывания. Далее вам предстоит решить некоторый набор задач. Приведем некоторые из них. Сообщение о статусе. В соответствии с планом взаимодействия необходимо убедиться, что все, кого это касается, получают информацию о статусе развертывания после его завер­ шения. Кроме того, у людей должен быть четкий, постоянно открытый канал, по которому они смогут предупреждать вас о любых неожиданных изменениях, на­ блюдаемых ими в системе. Мониторинг после развертывания. После завершения развертывания целесообразно продолжать наблюдение за системой в течение некоторого времени. Негативные эффекты могут проявлять­ ся с некоторой задержкой. В идеале эти типы рисков должны быть выявлены в
Оценка, развертывание и поддержка приложений с искусственным интеллектом... 1 377 процессе документирования рисков при помощи эксперта предметной области. Более подробную информацию о мониторинге можно найти в разд. "Монито­ ринг после развертывания" далее в этой главе. Отчет о развертывании. После развертывания необходимо составить письменный краткий отчет, вклю­ чающий ваши первоначальные планы, то, что произошло на самом деле, и все предпринятые действия. Этот отчет поможет направлять будущие развертыва­ ния и может быть передан заинтересованным лицам. Все это может показаться большим объемом работы, но если систематически под­ ходить к развертыванию и документировать все, что вы делаете, то вероятность возникновения непредвиденных проблем будет меньше. За несколько развертыва­ ний одного и того же проекта вы начнете разрабатывать эффективную систему, требующую минимальных трудозатрат и снабженную солидным набором докумен­ тации. Эта система станет важной частью постоянной поддержки проекта. Поддержка приложений ИИ периферийных устройств Развертывание знаменует собой начало этапа поддержки вашего проекта. Все тех­ нологические проекты требуют долгосрочной поддержки. С точки зрения ИИ пе­ риферийных устройств, поддержка подразумевает отслеживание производительности системы в течение определенного времени. Если изменение производительности будет замечено, вы можете принять меры - от обновления алгоритмов до прекра­ щения развертывания. С точки зрения этики важно, чтобы проекты получили хороший уровень поддерж­ ки. Если проект забросить или оставить его без должного контроля, он может на­ нести вред. Дрейф (как описано в разд. ''дрейф и сдвиг" главы 7) может превратить удобный гаджет в опасную ловушку. Если вы не в состоянии обеспечить должную долгосрочную поддержку своего проекта, не стоит запускать его вообще. Поскольку ИИ периферийных устройств существует не так давно, его поддержка стала наименее разработанным компонентом рабочего процесса с точки зрения ин­ струментов и лучших практик. Некоторые, но не большинство, из лучших практик серверного ИИ можно применить для решения периферийных задач. В оставшейся части этой главы мы рассмотрим проблемы и возможности в этой области. Мониторинг после развертывания Первая часть долгосрочной поддержки - это мониторинг. Как только будет вы­ полнено развертывание первых прототипов вашего оборудования, необходимо на­ чать сбор данных об их работе. Это может стать серьезной проблемой, поскольку иногда у вас даже не будет возможности подключиться к устройствам.
378 Глава 10 Приведем несколько возможных сценариев. ♦ У развернутых устройств хорошая связь с Интернетом, поэтому можно собирать статистику и выборки данных в полевых условиях. Например, подключенный прибор может использовать домашнюю сеть Wi-Fi для передачи больших объе­ мов данных. ♦ Ограниченных возможностей подключения достаточно для получения базовой статистики и показателей, но недостаточно для выборки данных. Например, ин­ теллектуальный датчик, установленный на удаленной нефтяной скважине, мо­ жет отправить несколько байт данных через LoRa WAN - технологию беспро­ водной связи большого радиуса действия с низким энергопотреблением. ♦ Подключения нет, но есть отзывы пользователей. Например, пользователь фото­ ловушки для съемки диких животных может оставлять отзывы о том, правильно ли камера делает снимки животных. ♦ Нет возможности подключения, а отзывы пользователей недоступны. Как видите, возможности подключения и получения обратной связи могут сильно отличаться в разных приложениях. В идеале должна быть хотя бы какая-то связь. Вам следует дважды подумать о развертывании в условиях, когда нет возможности собирать обратную связь, поскольку это означает, что вы не будете иметь ни ма­ лейшего представления о том, как работает ваша система. При условии, что у вас есть механизм обратной связи, целью должно быть собрать как можно больше информации о том, что происходит. Виды обратной связи с развернутыми системами С серверными МL-приложениями дело обстоит лучше. Поскольку все входные дан­ ные доступны на сервере, их можно фиксировать и сохранять для последующего анализа. Например, представьте себе серверное приложение, использующее ком­ пьютерное зрение для идентификации конкретных товаров по фотографиям. Так как оно находится на сервере, ему предоставлено фактически неограниченное хранилище загружаемых людьми фотографий. Это означает, что разработчики мо­ гут проанализировать прогнозы модели, определить их эффективность и даже при­ своить метки данным и использовать их для обучения. В некоторых приложениях все еще проще - там есть встроенная мера успешной работы. Например, если вы создадите алгоритм, рекомендующий продукты, кото­ рые могут понравиться пользователям, можно оценить его эффективность, подсчи­ тав, как часто люди покупают рекомендованный продукт. Такие жесткие циклы обратной связи позволяют итерационно и быстро совершен­ ствовать алгоритмы и дизайн приложений. Но в периферийной среде все не так просто. Как правило, прямого представления о результатах нет, хотя и не всегда. А также нет возможности вести учет входных данных модели. Из-за отсутствия мгно­ венной обратной связи приходится придумывать хитроумные способы, чтобы по­ нять, что происходит.
Оценка, развертывание и поддержка приложений с искусственным интеллектом... \ 379 Вь1борки данных. В идеальной ситуации можно собирать выборки необработанных данных и отправлять их на сервер для хранения. Это возможно только тогда, когда звезды сойдутся: требуется идеальное сочетание доступности энергии, возможно­ сти подключения и пропускной способности, а также вариант использования, при котором конфиденциальность не имеет значения. Например, представьте, что мы создали маломощный датчик, предназначенный для контроля за тем, как обращаются с упаковками во время транспортировки. В целях экономии энергии и затрат он может не иметь возможности хранить или передавать данные во время транспортировки. Это означает, что у него нет возможности от­ править выборки необработанных данных на анализ. В качестве другого примера представьте, что мы создали домашнюю камеру безо­ пасности, использующую модель глубокого обучения для обнаружения людей. Ес­ ли продукт рекламируется как использующий ИИ периферийных устройств для сохранения конфиденциальности, нам не удастся получить выборки его входных данных. Однако, безусловно, существуют ситуации, когда энергии и связи достаточно для отправки выборок данных. И даже если ресурсов не хватает, все равно есть спосо­ бы сделать так, чтобы они работали. Некоторые приложения способны создать цикл обратной связи за счет выборки ог­ раниченного количества данных. Вместо того чтобы пытаться отправить все дан­ ные на сервер, они выбирают конкретные экземпляры. Это может происходить случайным образом (например, один раз из тысячи), периодически (например, раз в день) или на основе каких-то интеллектуальных критериев. Интересный подход заключается в том, чтобы определить, когда алгоритм не уверен во входных дан­ ных - например, когда ни один из классов классификатора не соответствует поро­ гу уверенности, дель, судя по - и отправить эти входные данные. Поскольку именно с ними мо­ всему, испытывает трудности, они могут оказаться наиболее полезными для анализа. Что делать с выборками данных? Выборки данных, отправленные с периферии, можно использовать для несколь­ ких разных целей. Первая - их можно использовать для лучшего понимания реальной производительности. Возможность видеть выборки данных непосред­ ственно в полевых условиях позволяет нам представить, насколько репрезента­ тивен наш набор данных, и помогает обнаружить проблемы, связанные с данны­ ми, такие как дрейф. Вторая причина ценности данных такого типа - отладка алгоритмов. Например, если наш алгоритм не уверен в выборке данных, может быть полезно попытаться выяснить причину и устранить проблему. Возможно, в нашем наборе данных для обучения недостаточно примеров похожих изображе­ ний, поэтому просмотр изображения может помочь собрать больше данных. Или может оказаться, что алгоритм изначально не очень хорошо работает с опреде­ ленными типами входных данных, и в этом случае нам придется подумать о том, как его улучшить.
380 Глава 10 Третья причина для выборки данных - добавление их в наш набор данных. Эrо может быть особенно эффективно, если мы собираем выборки, в которых алго­ ритм не уверен, потому что эти "трудные примеры" особенно полезны как для оценки работы алгоритма, так и для обучения эффективных моделей машинного обучения. Еще один способ записать некоторое количество данных, ограничив при этом потребление энергии и пропускной способности, - сначала понизить дискрети­ зацию (качество). Например, у необработанного изображения можно уменьшить разрешение перед отправкой, или временной ряд можно уменьшить до более низкой частоты дискретизации. Принудительное понижение качества отбрасыва­ ет часть информации, но часто оставшейся информации все равно достаточно для отладки (если не для полного обучения). Например, успешная камера слежения с ИИ отправляет миниатюрные изображения животных на сервер через спутник. Отправлять полноценные изображения будет слишком дорого, но миниатюры все равно могут дать ценное представление о том, что происходит в реальности. Если уменьшенные данные все еще слишком тяжелые, можно отправить только часть данных. Например, можно отправлять не цветные, а изображения в оттенках серого. Также интересной идеей может быть отправка агрегированной статистики о входных данных - например, можно отправить периодическое скользящее среднее временного ряда, а не все данные. Эrо поможет обнаружить дрейф данных. Часто в алгоритме применяется определенная последовательность алгоритмов об­ работки сигнала, прежде чем данные попадут в модель. В этом случае, поскольку вы знаете, как поведут себя алгоритмы обработки сигнала, скорее всего, будет вполне достаточно отправить обработанные данные, а не исходные. Обработанные данные, как правило, имеют меньший размер, поэтому их легче передавать. Возможно, после запуска в эксплуатацию вы не сможете передавать много данных, но это не должно помешать вам получить доступ к реальным данным на начальных этапах развертывания. Допустим, вы можете решить, что стоит оплатить дорого­ стоящую связь (например, через сотовый или спутниковый модем) в первые пару месяцев после развертывания, чтобы собрать отзывы и использовать их для улуч­ шения своей системы. Другой альтернативный (https://oreil.ly/ВbyOS) - способ получения данных - через sneakernet пусть устройства регистрируют данные в локальном хра­ нилище, а затем кто-то идет и забирает их время от времени. Как и в случае с опла­ той дорогостоящего подключения, это решение может быть не масштабируемо на все развертывание, но, безусловно, доступно для некоторых устройств или в тече­ ние определенного периода времени.
Оценка, развертывание и подцержка приложений с искусственным интеллектом... Изменения в распределении. Из разд. "Дрейф и сдвиг" главы 7 1 381 нам известно, что реальный мир меняется со временем, но наш набор данных представляет собой лишь моментальный снимок. Если выяснится, что текущий набор данных больше не репрезентативен, значит, у нас появилась проблема, и о ней необходимо знать. Лучший способ сделать это - собрать новый набор данных, отражающий текущие условия, а затем сравнить его с имеющимся. К сожалению, сбор и присвоение ме­ ток наборам данных чрезвычайно трудоемки, и, как мы убедились, не всегда воз­ можно отправить фактические выборки данных обратно из полевых условий. Вместо этого нам нужен механизм, позволяющий понять, похожи ли реальные дан­ ные на наш набор данных - не изменилось ли их распределение. Если заметно, что распределение изменилось более чем незначительно, есть вероятность, что про­ изошел некоторый дрейф, и необходимо его учесть. Самый простой способ выявить дрейф - рассчитать сводную статистику (https://oreil.ly/SЬIKi) для текущего набора данных, рассчитать ту же статистику на устройстве и сравнить их. Сводная статистика - это числа, представляющие группу измерений в совокупности. Например, вы можете рассчитать среднее значе­ ние, медиану, стандартное отклонение, эксцесс или перекос показаний для опреде­ ленного датчика9 . Можно даже посмотреть на степень корреляции между показа­ ниями нескольких датчиков. Если значения различаются между вашим набором данных и тем, что устройство собирает в поле, может возникнуть проблема. Сводная статистика может выявить только самые простые изменения в распределе­ нии. Существуют и более сложные статистические тесты, позволяющие проанали­ зировать выборки из двух популяций и определить, насколько сильно они различа­ ются. Примеры некоторых из этих алгоритмов можно найти в документации к Alibl Detect (https://oreil.ly/bSIZu). Это библиотека с открытым исходным кодом для об­ наружения дрейфов (среди прочих возможностей). К сожалению, многие из этих методов не справляются с высокоразмерными данными, такими как изображения и ау диоспектрограммы. На момент написания книги перед сообществом разработчиков еще стоял огром­ ный массив работы для понимания, какие подходы к обнаружению дрейфа лучше всего подходят для использования в периферийных устройствах. Сегодня для обна­ ружения дрейфа чаще всего применяются алгоритмы обнаружения аномалий (как показано в разд. "Обнаружение аномалий" главы 4). Модель обнаружения анома­ лий обучается на обучающем наборе данных, а затем запускается на устройстве на каждом новом входе. Если большая часть входов классифицируется как аномаль­ ные, возможно, имеет место дрейф данных. На сквозных платформах, как правило, предусмотрены функции для помощи в решении таких задач. Интересно отслеживать изменения распределения как входных данных, например изображений, временнь1х рядов или аудио, собранных с датчиков, так и выходных 9 Это лишь несколько сводных статистических данных, есть и другие.
Глава 382 10 данных алгоритмов, например распределений вероятностей, создаваемых класси­ фикатором. Изменения в распределении выходных данных могут быть признаком дрейфа. Например, в реальных данных баланс классов может быть иным. Это мо­ жет быть nризнаком того, что вам следует улучшить свой набор данных. Кроме того, изменения в распределении выходных данных могут предупредить вас об ошибках в алгоритмах или коде приложений. Например, если после обновления вы заметили, что модель всегда предсказывает один и тот же класс, возможно, была допущеttа ошибка. Обычно проблемы бывают более тонкими, но всегда полезно отслеживать распределение входных и выходных данных. Информацию о потенциальных изменениях в распределении можно использовать двумя способами. Если у вас есть возможность подключения к сети, можно переда­ вать данные о распределении на центральный сервер для мониторинга и анализа. Это позволит вам хотя бы в некоторой степени поддерживать обратную связь с тем, что происходит в среде эксплуатации. Если у вас вообще нет возможности подключения, вы все равно можете потенци­ ально использовать показатели изменения распределения для управления логикой приложения. Например, можно отбросить все входные данные, выходящие за пре­ делы ожидаемого распределения. Это поможет предотвратить принятие вашим приложением решений на основе данных, для которых его алгоритмы не были раз­ работаны или обучены. Если вы заметили изменения в распределении, то, как правило, лучше всего со­ брать больше обучающих данных и использовать их для улучшения алгоритмов. Подробнее об этом рабочем процессе мы узнаем в разд. "Улучшение запущенного приложения" дш,ее в этой главе. Метрики приложений. Помимо необработанных входных и выходных данных мо­ дели, полезно следить за тем, что делает приложение, сохраняя или передавая неко­ торые журналы. Системные журналы. Например, когда устройство было запущено, как долго оно работало, каковы по­ требляемая мощность и время работы от батареи. Активность пользователей. Включает в себя действия, выполняемые пользователем, нажатие кнопок или ввод данных. Действия устройства. То, что устройство сделало самостоятельно, например, произвело вывод в ре­ зультате алгоритмического решения В разд. "Искусственный интеллект" главы лекта - 1 мы решили, что определение интел­ это "знание того, что нужно делать в нужное время". Показатели примене­ ния помогают нам понять, применимо ли это утверждение к нашей системе после ее развертывания в полевых условиях. Изучая взаимосвязь между различными ти-
Оценка, развертывание и подцержка приложений с искусственным интеллектом... 1 383 пами событий, можно попытаться определить, используется ли устройство так, как мы предполагали. Если это не так, возможно, проблема в другом. Например, представьте, что мы создали микроволновую печь с ИИ периферийных устройств, способную определить оптимальное время приготовления блюда с по­ мощью компьютерного зрения. Анализ журналов приложений может показать, что пользователи постоянно включают микроволновую печь на время приготовления, немного превышающее расчетное. Это признак того, что наше приложение, воз­ можно, не справляется со своей работой и его следует изучить подробнее. Если есть доступ к журналам с нескольких устройств на центральном сервере, можно проводить высокоуровневый анализ, охватывающий все устройства. Но в зависимости от уровня подключения вы можете не иметь возможности передавать полные наборы журналов или вообще какие-либо журналы. Тем не менее вы може­ те отправить некоторую форму сводной статистики, которая описывает происхо­ дящее в ваших журналах. Например, можно заранее решить, что стоит узнать, запускает ли пользователь микроволновую печь дольше, чем рекомендуется. Затем можно отправить конкрет­ ную информацию для анализа, не загружая весь набор журналов. Если загрузить данные возможности нет, вы всегда можете зафиксировать их на устройстве - вероятно, их можно будет получить, забрав устройство и физически выгрузив данные. Может быть полезно сжать журналы для хранения на устройстве или для облегчения передачи. Вь1воды. Большинство систем ИИ периферийных устройств преследуют цели, вы­ ходящие за рамки того, что происходит на самом устройстве. Например, продукт может быть разработан для снижения стоимости промышленного процесса, стиму­ лирования пользователя к поддержанию физической формы или улучшения каче­ ства сельскохозяйственной продукции. Учитывая это, важно отслеживать результаты всех процессов, с которыми взаимо­ действует ваша система. Это поможет вам понять, приносит ли ваш проект пользу. Измерение и интерпретация влияния на результаты требует глубоких знаний и опыта. Процесс должен начаться еще до развертывания системы - вам нужно бу­ дет измерить текущие результаты работы системы, чтобы было с чем сравнивать. Это уже должно быть частью начальных этапов вашего проекта. Также можно отслеживать результаты в рамках поэтапного развертывания. Если вы развернете систему в одних местах, а не в других, вы, надеюсь, сможете измерить разницу в результатах - местоположения, где развертывание еще не произошло, будут служить в качестве контроля. При этом обязательно учитывайте любые дру­ гие факторы, вызывающие различия между разными локациями. Приятным моментом в результатах является то, что их можно измерить, не имея доступа к устройствам после их развертывания. Недостаток же заключается в том, что между внедрением и получением результатов, как правило, проходит некоторое
384 Глава 10 время, что может привести к снижению эффективности обратной связи. Кроме то­ го, сложнее учесть влияние внешних факторов. Отчеть~ пользователей. Если пользователи взаимодействуют с вашим продуктом или системами, на которые влияет продукт, вы можете опросить их для получения обратной связи. Это может стать отличным источником обратной связи, ведь имен­ но пользователи первыми заметят любые преимущества или недостатки. Важно собирать отзывы пользователей структурированным способом и признавать, что существует множество факторов, приводящих людей к разным выводам об од­ ной и той же ситуации. Следовательно, совокупные отзывы многих людей, скорее всего, будут более надежными и действенными, чем отзывы всего нескольких че­ ловек. Если у вас нет опыта сбора отзывов пользователей, стоит поработать с экс­ пертом предметной области. Стоит отметить, что пользователи не всегда честны. Сотрудникам может быть не­ удобно давать негативные отзывы о крупном проекте, или они могут оказаться в положении, когда у них есть стимул сопротивляться развертыванию проекта - на­ пример, если они считают, что проект негативно влияет на их работу. Это вполне обоснованные и понятные причины, и важно относиться к ним с пониманием. Улучшение запущенного приложения Итеративный процесс разработки не прекращается с момента развертывания, но он определенно меняется. После запуска устройств в эксплуатацию будет утрачена некоторая гибкость при внесении изменений. В зависимости от проекта могут су­ ществовать технические ограничения, не позволяющие вам обновить приложение после его развертывания. И даже если возможность вносить изменения есть, вам придется быть консервативными, чтобы не нарушить пользовательский опыт. Решение проблем с помощью обратной связи Типы обратной связи, собранные в ходе мониторинга (см. разд. "Мониторинг после развертывания" ранее в этой главе), можно использовать для выявления и решения проблем. Существует несколько типов обратной связи, и каждый из них направлен на различные аспекты решения: ♦ выборки данных дают нам представление об изменении состояния реальных данных; ♦ изменения в распределении данных дают представление о реальных данных, а также могут помочь выявить проблемы в алгоритмическом конвейере (с помо­ щью мониторинга распределения результатов); ♦ метрики приложения дают нам возможность понять работу системы на высоком техническом уровне; ♦ результаты помогают нам понять, как система ведет себя в целом и решает ли она те проблемы, для которых предназначена;
Оценка, развертывание и поддержка приложений с искусственным интеллектом ... 385 ♦ отзывы пользователей служат дополнительным подтверждением общей полезности и эффективности нашего продукта. Собирая отзывы по всем этим направлениям, можно выявить причину любых про­ блем. Например, данные о результатах могут свидетельствовать о том, что система не оказывает положительного влияния на решаемую задачу. Для исследования можно взглянуть на изменение распределений входных и выходных данных. Если распределение на входе такое же, как в вашем наборе данных, но распределение на выходе отличается от того, что вы наблюдали во время разработки, возможно, про­ блема в реализации алгоритма на устройстве. Важно наблюдать за изменениями в отслеживаемых аспектах с течением времени. Вы можете обнаружить циклические изменения в распределении входных данных, связанные с сезонностью (см. врезку "Репрезентативность и врел1Я 11 в главе 7). Их необходимо учесть в разработке приложения. Совершенствование алгоритма с течением времени Все среды подвержены дрейфу, и вам почти наверняка придется со временем усо­ вершенствовать свою систему, чтобы не отставать от них. Кроме того, поскольку об­ ласть ИИ периферийных устройств продолжает быстро развиваться, вполне вероят­ но, что в процессе развертывания могут появиться новые алгоритмические подходы. Задача по улучшению алгоритмов - это просто расширение рабочего процесса, знакомого вам по разработке. Это итеративный процесс на основе данных. Надеем­ ся, что при развертывании системы в поле вы лучше поняли условия, существую­ щие в реальном мире. Например, отслеживание различий в распределении выход­ ных данных модели может обратить ваше внимание на то, что в полевых условиях существует иной баланс классов, чем в вашем наборе данных. Даже если вы не получили такой информации, оценка перед развертыванием, на­ деюсь, сообщила вам о слабых местах в производительности системы. Например, возможно, ваше приложение недостаточно эффективно для некоторых подгрупп населения. Эту информацию можно использовать для улучшения набора данных. Если пове­ зет, вы сможете получить данные непосредственно из полевых условий, хотя это может быть ограничено техническими или юридическими препятствиями 10 . По крайней мере, вы, надеюсь, знаете, какие части системы нуждаются в улучше­ нии - возможно, вам поможет лучшее разнообразие или увеличение количества примеров определенного класса. То же самое относится и к алгоритмам. Если вы считаете, что другой алгоритм мо­ жет работать лучше, вы можете изучить его потенциал точно так же, как и в про­ цессе первоначальной разработки. Разница в том, что теперь у вас есть запущенная эксплуатируемая система для проведения сравнений. Можно даже развернуть две 10 Если вы планируете собирать данные в полевых условиях, это должно быть вк;1ючено в условия обслуживания вашего продукта. и вам необходимо убедиться, что клиент соrласи.~ся 11а ло.
386 Глава 10 разные версии алгоритмов на разных устройствах, чтобы собрать данные о том, какая из версий работает лучше. Активное обучение на производстве В разд. "Алгоритмы обучения с частичным привлечением учителя и активного обучения" главы 7 мы познакомились с концепцией активного обучения как спо­ соба управления процессом курирования и маркировки наборов данных. Взаимо­ действие между развернутой системой и процессом разработки алгоритмов целе­ сообразно рассматривать как ЦU1(Jl активного обучения. Обратная связь со средой эксплуатации используется для определения приоритетных типов собираемых выборок по мере расширения набора данных, а новые выборки потенциально мо­ гут даже поступать с находящихся в эксплуатации устройств (например, выбор­ ки, которые не у дается уверенно классифицировать, можно загрузить на сервер). Такая направленная эволюция набора данных и алгоритма может быть очень эф­ фективной. Однако это связано с некоторыми рисками. Процесс активного обу­ чения может непреднамеренно усилить степень предвзятости в системе, направ­ ляя сбор данных в сторону, приводящую к созданию модели, которая работает лучше для одних типов вход1-1ых данных, чем для других. Очень важно, чтобы учитывалась и обратная связь по результатам, чтобы эффективность системы в целом использовалась для определения потенциальных улучшений. Как только будет разработан усовершенствованный алгоритм или приложение, вам нужно будет его внедрить. Как и в большинстве случаев с ИИ периферийных уст­ ройств, это не всегда так просто, как кажется. Поддержка нескольких развернутых алгоритмов Развертывание кода на стороне сервера может быть простым, как нажатие кнопки, при этом последняя версия сразу же становится доступной всем пользователям. Развертывание на периферии, к сожалению, намного сложнее. ИИ часто внедряется в периферийные устройства как способ решения проблем с подключением и пропускной способностью. Эти проблемы могут затруднить раз­ вертывание. При развертывании на нескольких устройствах не всегда возможно одновременно распространить последнюю версию приложения на все периферий­ ные устройства. Даже если у вас достаточно пропускной способности, некоторые устройства могут быть недоступны - выключены или находятся в автономном ре­ жиме. А в некоторых случаях, по замыслу или по случайности, просто нет возмож­ ности обновить устройство после его установки в реальных условиях. Ситуация усугубляется тем, как разрабатываются и внедряются приложения для ИИ периферийных устройств. Поэтапное развертывание в рамках итеративного ра­ бочего процесса, естественно, приведет к появлению множества различных комби­ наций аппаратного и программного обеспечения в полевых условиях. И даже после
Оценка, развертывание и подцержка приложений с искусственным интеллектом ... 387 первоначального развертывания новые устройства, размещаемые в полевых усло­ виях, скорее всего, получат более новые версии аппаратного и программного обес­ печения, чем уже имеющиеся. Это означает, что в какой-то момент вы, скорее всего, столкнетесь с одновремен­ ным использованием нескольких версий приложений в эксплуатации. На самом деле существует несколько сущностей, у которых могут быть разные версии: ♦ аппаратное обеспечение устройства; ♦ встроенное ПО приложения, запущенное на устройстве; ♦ реализации алгоритмов или моделей во встроенном программном обеспечении; ♦ наборы данных, используемые для обучения любых моделей машинного обучения; ♦ любые веб-сервисы бэкенда, к которым подключается устройство. Поскольку вы вряд ли сможете обновить все эти пункты одновременно, существует огромное количество потенциальных комбинаций артефактов - их можно развер­ нуть в полевых условиях в любой момент времени. Следить за ними очень важно. Если у вас не будет хорошей записи о том, что где развернуто, возможность отлад­ ки системы будет утрачена. Если в каждом устройстве используется индивидуаль­ ная смесь компонентов, и вы не знаете, что это за компоненты, очень сложно опре­ делить первопричину проблем с производительностью. Для того чтобы обеспечить возможность отладки и отслеживания, вам понадобится система отслеживания того, какие версии каждого компонента развернуты в том или ином месте. Например, можно вести базу данных, обновляемую каждый раз, когда происходит обновление прошивки или создается новая итерация оборудова­ ния. Эту функциональность может обеспечить программное обеспечение для управления lоТ-устройствами. При отслеживании показателей необходимо связать их с записями в платформе управления устройствами, чтобы понять, какие компоненты нуждаются во внимании. Одновременное управление множеством различных версий может стать настоящим кошмаром, поэтому в ваших интересах постараться ограничить количество исполь­ зуемых в данный момент комбинаций. Если ваши устройства подключаются к бэ­ кенду, один из способов обеспечить относительное единообразие - запрашивать минимальную версию встроенного ПО. Недостатком является то, что это может повлиять на надежность и удобство использования вашей системы. Этика и долгосрочная поддержка Мир и наши приложения постоянно развиваются, поэтому важно продолжать ана­ лизировать свои системы с точки зрения этики на протяжении всего времени их использования. Ниже приведены некоторые этические проблемы, способные по­ влиять на развертывание в долгосрочной перспективе.
388 Глава 10 Снижение производительности В данной главе были представлены некоторые методы мониторинга и улучшения производительности с течением времени, поскольку этот параметр естественным образом снижается по мере дрейфа. К сожалению, реальность такова, что у боль­ шинства развертываний ограниченный срок службы. В какой-то момент либо дрейф окажется слишком сильным, чтобы его преодолеть, либо бюджет не позво­ лит обеспечить необходимое обслуживание. Например, представьте себе систему, предназначенную для выявления производст­ венных дефектов. Со временем изменения в производственном процессе могут привести к появлению различных типов дефектов. Если систему не обновить, но­ вые дефекты не будут обнаружены, что может привести к возникновению угрозы безопасности. Модель машинного обучения не всегда понимает, когда ей подают входные дан­ ные, для обработки которых она не была обучена. Вместо этого модель будет про­ должать выдавать результат, вполне вероятно, совершенно неправильный. Если кто-то зависит от корректного выполнения вашего приложения, это может привес­ ти к катастрофе. Если вы больше не поддерживаете аппаратное обеспечение, никто не сможет узнать о проблеме до той поры, пока система не причинит вред. В связи с этим возникает вопрос: что происходит с проектами с истекшим сроком эксплуатации? Правда в том, что с этической точки зрения просто отказаться от проекта недопустимо. Вместо этого вам нужно спланировать, что произойдет в случае, если обслуживание станет невозможным. Ответственное проектирование охватывает весь жизненный цикл вашего проекта, от колыбели до могилы. Проекты ИИ периферийных устройств имеют аппаратную составляющую. Напри­ мер, вам может понадобиться план действий в отношении вредоносных материа­ лов, содержащихся в аппаратных устройствах, таких как литиевые батареи. Являет­ ся ли ваше оборудование устойчивым или оно в некий момент создаст проблемы? Критерии прекращения работь1 Каждый проект, внедряемый в эксплуатацию, должен иметь критерии прекраще­ ния работы. Это список потенциальных проблем, приводящих к остановке раз­ вертывания, по крайней мере, до тех пор, пока эти проблемы не будут решены. Набор критериев прекращения работы может включать в себя следующее: • максимальное отклонение в распределении по сравнению с набором данных проекта; • прогнозируемое воздействие на любые связанные системы, а также пороги допустимых отклонений; • минимальные стандарты для успешных бизнес-метрик.
Оценка, развертывание и поддержка приложений с искусственным интеллектом... 1 389 Составив этот список заранее, вы будете готовы действовать быстро, если что-то пойдет не так. Эти критерии прекращения работы должны пересматриваться на постоянной основе и обновляться при появлении новой информации. Если же прекращение работы необходимо, вы можете положиться на возможно­ сти подхода Graceful Degradation вашего продукта, предусмотренные на этапе проектирования (см. врезку "Подход Graceful Degradation" в главе 9). Новая информация После развертывания могут всплыть новые факты, способные привести к этической переоценке проекта. Вот несколько примеров: ♦ обнаружение ограничений алгоритмов, способных нанести ущерб объективности; ♦ обнаружение уязвимостей в системе безопасности, которые могут быть исполь­ зованы; ♦ улучшение понимания проблемы, позволяющее выявить недостатки в приложении; ♦ совершенствование технологий ИИ периферийных устройств, что делает теку­ щее приложение устаревшим; ♦ изменения в проблемной области, которые делают текущее приложение устаревшим. Искусственный интеллект - быстро развивающаяся область, и часто обнаружива­ ются проблемы с существующими алгоритмами и методиками. Например, атаки типа adversarial attacks (https://oreil.ly/U4rq5) позволяют злоумышленникам мани­ пулировать моделями машинного обучения, подавая им тщательно продуманные входные данные, чтобы получить желаемый результат. Часто обнаруживаются но­ вые атаки противника, и возникает небольшая гонка вооружений, когда изобрета­ ются и побеждаются средства защиты. Также часто обнаруживаются недостатки в методах ИИ, способные привести к снижению производительности. Например, в статье "Что забывают сжатые глубо­ кие нейронные сети?" (Hooker et al. What Do Compressed Deep Neural Networks Forget? (2021 ); https://oreil.ly/QIZng) показано, как популярные методы сжатия мо­ делей могут привести к потере производительности для миноритарных классов. По мере того как мы будем узнавать все больше об ограничениях наших методов, мы можем обнаружить, что нынешние системы полны недостатков, говорящих о не­ пригодности систем к дальнейшей эксплуатации. Иногда новое открытие делает существующую методику устаревшей. В некоторых случаях продолжение использования старой техники может считаться неэтичным. Например, представьте, что у вас есть продукт для медицинской диагностики, спо­ собный выявить смертельное заболевание с коэффициентом ложноотрицательных результатов 20%. Если конкурирующая команда создаст систему с коэффициентом ложноотрицательных результатов 10%, то у каждого, кто воспользуется вашей сис­ темой вместо альтернативной, может возрасти риск смерти, поскольку вероятность
390 Глава 10 выявления заболевания будет ниже. Возможно, вам придется задуматься о том, на­ сколько этично продолжать продавать свой продукт. В некоторых случаях может появиться новый опыт в данной области, и он покажет, что система не соответствует своему назначению. Например, более глубокое пони­ мание физиологии человека может показать, что ранее адекватное носимое устрой­ ство для фитнеса на самом деле дает плохие советы спортсменам. Изменение культурнь1х норм Общество быстро меняется, и вы можете обнаружить, что ранее развернутое при­ ложение постепенно выходит за рамки допустимых стандартов. Например, ожида­ ния потребителей в отношении конфиденциальности меняются с течением времени. Сегодня потребители с пониманием относятся к умным колонкам, отправляющим записанный звук разговоров в облако для обработки - ведь исторически так сло­ жилось, что не существует другого способа точного распознавания речи. Однако по мере распространения транскрибирования на устройстве потребители, вероятно, станут ожидать этого и будут считать использование транскрибирования на стороне сервера устаревшей концепцией, нарушающей их ожидания в отноше­ нии конфиденциальности. Стоит отметить, что это явление может развиваться и в обратном направлении - к ранее неприемлемым концепциям, таким как умные камеры в частных помещениях дома, люди могут начать относиться терпимее по мере перехода к системам, обра­ батывающим изображения на самих устройствах. Как хранитель проекта, вы должны работать с экспертами предметной области, чтобы отслеживать культурные нормы и убеждаться, что ваше приложение их не нарушает. Изменение правовых норм Правовые нормы, как правило, следуют в ногу с культурными. Например, с разви­ тием ожиданий в отношении конфиденциальности в Интернете появились такие законы, как Общий регламент по защите данных (https://oreil.ly/EBy20) в Евро­ союзе. Он был разработан для регулирования того, как компании обращаются с приватной информацией. В какой бы предметной области вы ни работали, необходимо сотрудничать с экс­ пертами в этой сфере, чтобы понять свои юридические обязательства и убедиться, что вы выполняете их с соблюдением этических норм. , ~• • ••• Имейте в виду, что закон и этика- это не обязательно одно и то же. В не­ ; ' которых ситуациях от вас по закону могут потребовать действий, несовмес­ <, , . , тимых с вашими этическими нормами. Например, на некоторые компании : . .. • было оказано давление со стороны правительств (https://oreil.ly/dlEyE), чтобы они передали ключи от зашифрованных пользовательских данных. Помните об этом при разработке приложения.
Оценка, развертывание и подцержка приложений с искусственным интеллектом... 391 Что будет дальше Обсуждение долгосрочной поддержки завершает последний теоретический раздел этой книги. Примите поздравления в связи с продвижением обучения до этого этапа! В следующих трех главах будет на практике отработано все, чему вы научились ранее. В каждой главе приводится сквозное применение рабочего процесса ИИ пе­ риферийных устройств для практического использования, начиная с идеи и закан­ чивая продуктом. Надеемся, что эти главы будут познавательными и вдохновляющими. К концу кни­ ги вы будете готовы применять эти принципы на практике.

ГЛАВА 11 Вариант использования: мониторинг дикой природы Теперь, когда основы разработки моделей машинного обучения для периферийных приложений усвоены, изучим первую сферу применения, связанную с охраной и мониторингом дикой природы. Мы рассмотрим возможные задачи и их решения для каждого примера использования в этой книге с помощью рабочего процесса разработки, описанного в главе 9. Во всем мире наблюдается стремительное сокращение численности видов, находя­ щихся под угрозой исчезновения, вследствие различных воздействий человеческой цивилизации и экологических причин или катастроф. Основными причинами тако­ го сокращения являются потеря, деградация и фрагментация среды обитания 1. Причинами этих факторов стала деятельность человека, такая как урбанизация, сельское хозяйство и добыча ресурсов. В результате такого сокращения природных ресурсов многие виды находятся под угрозой исчезновения. Растет число приложений с искусственным интеллектом и ИИ периферийных уст­ ройств, призванных помочь в защите дикой природы. Эти приложения могут при­ меняться для раннего обнаружения незаконной торговли дикими животными, мо­ ниторинга исчезающих видов и автоматического выявления браконьеров. Как уже говорилось в этой книге, ИИ периферийных устройств используется для обработки данных локально на устройстве, а не в облаке. Такой способ хорошо подходит для охраны дикой природы, поскольку с его помощью можно обрабатывать данные в удаленных местах без необходимости подключения к Интернету. Это означает, что данные можно обработать быстро и без необходимости создания дорогостоящей инфраструктуры, что поможет предотвратить браконьерство в будущем и тем са­ мым защитить наиболее уязвимые виды флоры и фауны нашей планеты. При ответственном подходе ИИ периферийных устройств может и будет оказывать исключительно положительное влияние на общество и нашу планету. Однако тех­ нологии и ИИ становятся тем, что из них делают разработчики. Таким образом, они 1 См. статью Международной природоохранной организации под названием "HaЬitat (https://oreil.ly/kpOVI). Loss"
394 Глава 11 могут быть использованы во благо, а иногда - во вред и неэтично. Поэтому важно вдумчиво подходить к разработке и использованию систем - убедитесь, что пре­ имущества перевешивают риски. Организация Объединенных Наций 2 и различные крупные технологические компании, такие как Googte3, Microsoft4 и другие, призы­ вают использовать их ресурсы для ИИ в социальных и экологических целях. Одно из таких применений ИИ в благих целях - хорошо известный и изученный метод защиты, идентификации, мониторинга и отслеживания исчезающих видов фотоловуш.ка. Фотоловушки - - мощный инструмент, применяемый для различных исследований и мониторинга дикой природы. Его можно использовать для монито­ ринга исчезающих видов, изучения поведения животных и оценки влияния челове­ ческой деятельности на дикую природу. Этот метод также можно применять для обнаружения и отслеживания браконьеров, а также для мониторинга здоровья и поведения исчезающих видов. Фотоловушки часто используются в сочетании с другими методами, такими как анализ ДНК, для создания более полной картины происходящего на определенной территории. ~ Что такое фотоловуwка? Фотоловушка - это дистанционно активируемая камера, используемая для съемки животных в их естественной среде обитания. Камера обычно запускается инфракрасным (ИК) датчиком. Он срабатывает при движении животного. Фотоловушка обычно устанавливается в одном месте на земле - она особенно по­ лезна для крупных, обитающих на земле животных. Таким образом, этот метод подходит лишь для небольшой части земных видов, т. к. фотоловушки не годятся для съемки под водой, птиц в полете, быстро перемещающихся мелких насекомых ит.д. Исследование задачи Термин "сохранение дикой природы" - слишком широкое понятие, чтобы рас­ сматривать его в одной главе, и слишком большая проблема, чтобы решить ее с помощью одной модели машинного обучения. Поэтому для целей этой книги мы сосредоточимся на сохранении дикой природы с точки зрения защиты конкретных видов животных, занесенных в Красную книгу МСОП (Международного союза ох­ раны природы, https://www.iucnredlist.org). Нам также необходимо изучить сложность поставленной задачи: каковы затраты, поездки, внедрение, инфраструктура или государственные ограничения, препятст­ вующие созданию моделей машинного обучения для некоммерческих целей? 2 3 4 См. веб-сайт United Nations А! for Good (https://aiforgood.itu.int). См. веб-сайт Google и раздел под названием "А! for Social Good" (https://oreil.ly/8L3BY). См. веб-сайт Microsoft и раздел под названием "AI for Good" (https://oreil.Iy/8ZLQI).
Вариант использования: мониторинг дикой природы 1 395 Исследование вариантов решения Поскольку исчезающие виды перемещаются свободно, их трудно заметить челове­ ческим глазом среди бела дня или ночью. Фотоловушки являются особенно полез­ ными инструментами, поскольку они позволяют людям отслеживать, подсчитывать и идентифицировать как животное исчезающего вида, так и угрожающие ему опас­ ности, без вмешательства в его естественную среду обитания. Такие камеры в итоге позволяют наблюдать за животными, чтобы дистанционно защищать их, не оказы­ вая существенного влияния на их поведение, перемещения, среду обитания, источ­ ники пищи и т. д. Важным шагом в защите исчезающих видов диких животных является предостав­ ление их кураторам полезной информации. Это может проявляться в самых разных формах. Мы можем как создать модель машинного обучения, способную выявлять угрозы для этих конкретных видов и предупреждать людей о местонахождении уг­ розы, так и определить, подсчитать и/или отследить местонахождение животного. Оба подхода преследуют одну и ту же цель - предоставить людям необходимую информацию для защиты видов, находящихся под угрозой исчезновения. Однако для достижения этой цели требуется другая комбинация классов машинного обуче­ ния и входных данных датчиков. Постановка целей Браконьерство - это незаконная охота, убийство или отлов животных. Браконьеры часто охотятся на редких или исчезающих животных ради их мяса, рогов, бивней или меха. Это серьезная проблема, угрожающая выживанию многих видов диких животных. Фотоловушки могут использоваться для сокращения браконьерства, по­ могая отслеживать перемещения браконьеров и предоставляя доказательства, ис­ пользуемые для судебного преследования. Эти камеры также можно использовать для отпугивания браконьеров, давая им понять, что за ними наблюдают: "Наличие фотоловушек в удаленных районах может потенциально помочь управ­ ляющим охраняемыми территориями увеличить количество случаев обнаружения незаконной деятельности человека в их природоохранных ландшафтах. Также это поможет повысить количество арестов и судебных преследований, предоставив со­ ответствующие подтверждающие доказательства". - Статья о сохранении биологических ресурсов 5 Фотоловушки также представляют собой важный инструмент для изучения, сохра­ нения и мониторинга исчезающих видов. Они позволяют исследователям собирать 5 Хоссейн Абу Насер Мохсин и др. "Оценка эффективности отлова с помощью камер наблюдения как инструмента повышения уровня выявления преступлений против дикой природы в тропических охраняемых районах" (Abu Naser Mohsin Hossain et al. Assessing the Efficacy of Camera Trapping as а Tool for Increasing Detection Rates of Wildlife Crime in Tropical Protected Areas // Biological Conservation. - 2016. -№ 201. - Р.314-319 (https://doi.org/l0.1016/j.Ьiocon.1016.07.013)).
396 Глава 11 данные об экологии и поведении животных, не беспокоя их. Эта информация мо­ жет быть использована для разработки планов по сохранению видов, находящихся под угрозой исчезновения, и мест их обитания. Применение камер такого типа так­ же представляет собой уникальную возможность для широкомасштабного совме­ стного мониторинга видов благодаря тому, что такой подход в значительной степе­ ни недискриминационный. Эта его черта связана с объемом данных с камер. Снимки попадают на устройство на основе триггеров в виде движения в ИК­ диапазоне, и эти движения-триггеры могут принадлежать самым разным видам 6 . Разработка решения Для того чтобы избежать многих этических дилемм при создании модели машин­ ного обучения для системы фотоловушек, можно способствовать сохранению и благополучию исчезающих видов, отслеживая, а также контролируя другие инва­ зивные виды в их среде. Мониторинг местонахождения и численности инвазивных животных в области размещения устройства с помощью фотоловушки и передача этой информации людям - хранителям природы способствует сохранению исче­ зающих животных. Местные ресурсы и вторжение неестественных видов или хищ­ ников можно будет свести к минимуму. Это позволит популяции исчезающего жи­ вотного восстановиться и процветать. В этой книге мы решили разработать и внедрить недорогую, эффективную и про­ стую в обучении фотоловушку для мониторинга инвазивных видов животных по вашему выбору. Однако датчики-ловушки не всегда должны быть решениями на основе камер. Используя принципы и схему проектирования, представленные в этой главе и во всей книге, можно реализовать множество других типов моделей и приложений машинного обучения для этих целей, даже, к примеру, использование аудиоданных для классификации сигналов животных или криков птиц, подводного аудиорадара для прослушивания звуков океана, отслеживания и идентификации китов и многое другое. Какие решения уже существуют? Фотоловушки уже используются в коммерческих и природоохранных/монито­ ринговых целях и широко применяются с 1990-х годов. Благодаря интеграции дат­ чика движения в устройство камера для наблюдения за дикими животными в поле­ вых условиях срабатывает при обнаружении любого движения встроенным датчиком движения. В результате такой работы получаются тысячи изображений с постоянной точки установки камеры в течение многих дней или месяцев. Посколь­ ку сетевые возможности устройства были слишком энергоемкими для интеграции в 6 Из статьи Абу Насера Мохсина Хоссейна и др. "Панголины в глобальных данных с фотоловушек: последствия для экологического мониторинга" (Abu Naser Mohsin Hossain et al. Pangolins in Global Camera Trap Data: Implications for Ecological Monitoring // Conservation. - 2016. - № 201. - Р. 314319 (https://doi.org/10.1016/j.gecco.2019.e00769)).
Вариант использования: мониторинг дикой природы 1 397 удаленное полевое устройство, исследователям приходилось отправляться непо­ средственно к аппаратуре, чтобы вручную получить изображения с камеры. Иногда это становилось трудоемкой задачей в зависимости от того, где камера была раз­ мещена. После того как изображения были получены, исследователям с натрениро­ ванными глазами потребовались бы недели или месяцы, чтобы вручную прочесать их и найти на фотографиях нужный вид. Путем интеграции ИИ в саму камеру исследователи получили возможность значи­ тельно сократить время, необходимое для определения местонахождения целевого животного/вида, поскольку теперь устройство определяет вероятность присутствия животных для каждого снимка, сделанного после срабатывания датчика движения. Только наиболее вероятные изображения отправляются по сети в лабораторию ис­ следователям, что избавляет человека от необходимости физически отправляться в поле для получения изображений с камеры вручную (потенциально опасная задача, учитывая окружающую среду) и сокращает количество человеко-часов, необходи­ мых для отсеивания отснятых изображений. Уже существуют специальные инструменты ИИ для фотоловушек: от автоматиче­ ского обнаружения специфических объектов на изображениях без меток или ви­ деоматериалах до инструментов ввода данных для постобработки, отслеживания и подсчета видов в облаке. Эти инструменты очень ценны для исследователей, а по­ скольку применение фотоловушек - хорошо изученный и широко адаптирован­ ный метод, существует огромное количество таких решений. Простой поиск в Ин­ тернете (https://oreil.ly/RSntF) поможет вам найти все эти готовые решения. У каждого из этих готовых устройств есть свои положительные и отрицательные сто­ роны, учитывая, что пока невозможно создать единую модель, способную иденти­ фицировать и отслеживать все виды ныне существующих животных на нашей пла­ нете в любых условиях. В этой главе мы не будем слишком углубляться в имеющиеся решения, а вместо этого пройдем через процесс разработки и установ­ ки фотоловушек самостоятельно для наших местных сред обитания. Подходы к разработке решений Опираясь на постановку задачи, можно разработать решение разными способами, причем для каждого подхода есть свои плюсы и минусы. Определение животных, находящихся под угрозой исчезновения. Если имеется достаточно большой набор данных или достаточно общедоступ­ ных помеченных изображений животного, наборы данных для обучения/тести­ рования будет легко собрать, а последующая модель получит достаточно высо­ кую точность для условий работы устройства. Однако такая постановка задачи потенциально позволит браконьерам и другим угрозам со стороны человека лег­ ко создать устройство, по сути, представляющее собой удивительно точный ин­ струмент для охоты, особенно в зависимости от качества данных, используемых для среды размещения устройства.
Глава 398 11 Определение инвазивных хищников животных, находящихся под угрозой исчезновения. В хорошо изученной среде обычно имеется много общедоступных данных по различным регионам мира об инвазивных видах, включая инвазивных хищни­ ков, растения и другие виды дикой природы. Подобные проблемы и их решение обычно приносят пользу людям, пытающимся увеличить шансы вымирающих животных на восполнение их численности, поскольку люди могут использовать данные ловушек для поиска и устранения инвазивных угроз. Однако точно определить, какие инвазивные виды могут оказаться в среде оби­ тания исчезающего животного в тот или иной момент, бывает непросто, а инва­ зивные виды, наносящие вред животному, могут представлять собой любую уг­ розу - от человека до других животных или ядовитых растений. Таким образом, постановка задачи здесь может быть слишком широкой, чтобы защи­ тить вымирающее животное со всех сторон. Еще одним недостатком этого подхода является то, что он требует от создателя модели осознания того, что модель инвазивного вида будет полезной и этичной только в том случае, если она используется в среде, где идентифицируемый вид действительно является инвазивным. От разработчика МL-модели требуется добросовестный труд, чтобы убедиться, что созданная им модель действительно относится к инвазивным видам в целевой зоне. А также необходимо ограничить распространение модели в зонах, где инвазивный вид на самом деле не является таковым. Это решение также требует от конечного пользователя убедиться в том, что мо­ дель не используется для чрезмерной охоты на выявленную угрозу. И что ситуа­ ция соответствует правилам охоты и сезонным правилам региона, а также по­ становлениям о кормлении/собирании/удалении растений, если это применимо. Выявление браконьеров и связанных с 1-1ими угроз. Идентификация изображений человека или даже просто обнаружение человека или объекта уже являются широко распространенным подходом в области раз­ работки моделей машинного обучения. Уже существует множество наборов данных для идентификации людей, находящихся в поле зрения объектива каме­ ры, как для маломощных, так и для высокопроизводительных компьютеров. Од­ нако решение этой проблемы связано со многими этическими обязательствами и вопросами безопасности. Разработчик модели должен убедиться, что данные, используемые в обучающих и тестовых наборах, представляют контекст исполь­ зования и разрешены к применению в соответствии с законом об авторском пра­ ве/добросовестном использовании. Полученная модель также должна использоваться только для бинарной класси­ фикации: да (в кадре объектива камеры присутствует человек) или нет (человека на изображении нет). Это похоже на обнаружение объектов человеческих тел. От разработчиков требуется добросовестность, чтобы гарантировать, что данные о лице, биометрические данные и другая идентифицирующая информация не будут использоваться или собираться. Разработчику также необходимо убедить­ ся, что модель соответствует многочисленным законам о конфиденциальности и данных, действующим в регионе, где будет развернута модель.
Вариант использования: мониторинг дикой природы 1 399 Определение других инвазивных видов. Такой подход сулит много возможностей для определения того, какие иные ви­ ды могут представлять угрозу для исчезающих видов в выбранной вами среде. Растения, насекомые и животные - вариаций для этого типа моделей бесконеч­ ное множество, и все они направлены на защиту и обеспечение выживания вы­ бранного вами исчезающего вида. Однако есть и недостатки, аналогичные тем, что возникают при попытке определить хищников вымирающих животных. У каждого типа подходов и их решений есть множество плюсов и минусов. Вам нужно использовать собственные исследовательские методы, чтобы составить спи­ сок достоинств и недостатков для выбранного решения! Хорошим первым шагом будет проведение мозгового штурма с участием различных заинтересованных сто­ рон и людей, не понаслышке знакомых с вашей задачей и ее решением. Помимо этих "за" и "против" есть еще множество соображений, которые необходимо учи­ тывать для обеспечения ответственного подхода к проектированию. Их мы рас­ смотрим далее в этой главе. Соображения относительно дизайна Для достижения общей цели - поддержки исследователей, изучающих определен­ ные виды диких животных, и/или выявления и отслеживания угрожающих инва­ зивных видов на указанных территориях, - с технологической точки зрения мож­ но использовать широкий спектр источников данных, включая различные типы датчиков и камер (табл. Таблица 11.1. Датчики 11.1 ). дпя достижения различных целей по сохранению дикой природы Цель Датчики Подсчет слонов в дикой природе Камера Определение птицы по ее пению Микрофон Прослушивание криков китов в океане Микрофон, HARPs (высокочастотные комплекты акустической записи)* Прослушивание угроз в окружающей среде Микрофон (браконьеры, выстрелы и т. д.) Отслеживание и выявление браконьеров Камера, микрофон Общий контроль и отслеживание Камера, микрофон, акселерометр, неместных/инвазивных видов допплеровский радар • См. статью NOAA Fisheries под названием "Пассивная Acoustics in the Pacific Islands; https://oreil.ly/d-yVo). акустика на островах Тихого океана" (Passive Во всех предыдущих случаях используется типичный подход к машинному обуче­ нию - /(J/ассификация либо выполняется загрузка обучающего набора данных. В нем должна содержаться информация, которую необходимо обнаружить в новом потоке данных, поступающих на устройство от датчиков. Для того чтобы освежить
400 Глава 11 в памяти различные алгоритмы машинного обучения, см. разд. "Типы алгоритмов по функционалыюстu" главы 4. При выборе цели и варианта использования мониторинга дикой природы необхо­ димо также учитывать, насколько легко будет собрать большой, надежный и каче­ ственный набор данных для обучения модели машинного обучения. Как мы выяс­ нили в предыдущих главах (особенно в главе 7), качество модели зависит только от качества исходных данных. Например, если требуется создать модель для иденти­ фикации птичьего крика редкой и исчезающей птицы, вам, возможно, не у дастся получить достаточно большой набор данных, чтобы успешно обучить высокоточ­ ную модель классификации. См. разд. "Сбор набора данных" далее в этой главе. К счастью, в век Интернета, широкодоступных исследовательских баз данных и совместных проектов разработ­ чики моделей могут получать множество уже существующих баз изображений для идентификации конкретного вида животных. Также можно загружать свободно доступные исследования, включая различные данные датчиков или аудиоданные о криках, вокализации, химическом следе животного в окружающей среде и т. д. В разд. "Получение данных" главы 7 обсуждаются некоторые плюсы и минусы такого подхода к формированию наборов данных. Кроме того, подумайте о том, где будет располагаться устройство и какие датчики потребуются для выбранной среды: ♦ местоположение устройства на начальном этапе сбора данных; ♦ местоположение устройства после развертывания; ♦ средние погодные условия в месте расположения устройства; ♦ питание от аккумулятора или USВ-питание либо постоянная линия электропе­ редачи; ♦ требования к окружающей среде (например, вода, туман, грязь и другие факто­ ры окружающей среды), способные помешать номинальному использованию датчика или разрушить устройство. Устройство может находиться в очень удаленных местах. В зависимости от усло­ вий использования ему может потребоваться больше или меньше вычислительной мощности, а значит, и больше заряда батареи. Устройство может быть подключено к постоянной линии электропередач, а может быть сверхмаломощным и работать на батарейках, требующих замены раз в год или раз в несколько лет. Постоянная линия электропередачи может оказаться нецелесообразной для конкретного случая использования или целевой среды. Рассмотрим также возможность передачи результатов работы модели обратно в облачную платформу. Такая связь может ограничивать энергопотребление и мощ­ ность в зависимости от типа выбранного сетевого протокола и влиять на то, как долго устройство будет работать в полевых условиях без вмешательства человека, замены батареи и т. д. Если устройство постоянно перемещается, как модель долж­ на адаптироваться, чтобы хорошо работать во всех этих средах и ситуациях?
Вариант использования: мониторинг дикой природы 1 401 Воздействие на окружающую среду Пожалуйста, перечитайте разд. "Ответственное создание приложений" главы 2, а затем вернитесь к этому разделу. Мы обсудим конкретные соображения, касаю­ щиеся воздействия решения на окружающую среду. Разработчики моделей также должны учитывать, как их устройство будет непо­ средственно влиять на окружающую среду, в которой оно будет находиться. На­ пример, если вы разместите в тропическом лесу большое устройство для отслежи­ вания человеческой активности, оно, скорее всего, будет инвазивным по своей сути. Это не зависит от мер и приспособлений, используемых на фи·шческом уст­ ройстве. Однако необходимо подумать о том, сколько животных иш1 исчезающих видов будут потенциально спасены с помощью этого устройства и полученных данных, а затем взвесить все за и против. Приведем другие требующие внимания заметки и вопросы. ♦ Является ли само целевое существо инвазивным для среды установки? ♦ Будет ли устройство инвазивным в окружающей среде? Закрепление устройства может непреднамеренно оказать негативное воздействие на другие виды, насе­ комых, бактерий и т. д. ♦ Сколько человек потребуется для физической установки устройства в окру­ жающей среде? Какие следы передвижения и установки останутся после уста­ новки? (Человеческий мусор, следы, разрушение среды обитания других живот­ ных и т. д.) ♦ Как устройство оповестит пользователя или облачную систему о том, что оно идентифицировало целевой вид? ♦ Где будет размещено устройство и как часто людям придется физически перемещаться к нему? Мы также должны убедиться, что устройство не излучает свет, звуки, шумы и не выделяет химические вещества, которые не являются естественными или привыч­ ными для среды расположения оборудования. Эти факторы могут заставить отсле­ живаемое животное вести себя ненормально, что исказит ваши данные и результа­ ты прогнозирования. ; ~ Предупреждение! · • Фотоловуwки моrут бь1ть услыwаны и замечены животными 7 ·/,r •· Разработчику фотоловушки необходимо учитывать следующие факторы, . . . • влияющие на навязчивость устройства в среде обитания • • • 7 аудиораздражители; обонятельные раздражители; • • животного: визуальные (днем); визуальные (ночью). обучающаяся ассоциация; См. статью Пола Д. Мика и др. "Фотоловушки могут быть услышаны и замече11ы животными" (Meek Р. D. et al. Camera Traps Сап Ве Heard and Seen (https://doi.org/10.1371/journal.pone.0I I 0832)). Ьу Animals // PLOS. - 2014. - October 29
Глава 402 11 Если использовать фотоловушку для обнаружения браконьерской деятельности, она может стать причиной этической дилеммы и оказать прямое неrативное воз­ действие на местное население защищаемых земель. Есть сведения, что инициати­ вы по борьбе с браконьерством использовались правительствами для того, чтобы изгнать местные меньшинства из районов, где они традиционно жили и собирали пищу. Любой ИИ, предназначенный для определения людей для наказания, несет высокий риск злоупотреблений, потому что он может быть использован так, как разработчи­ ки модели не планировали. Например, племя выселяют из деревни, а правительство устанавливает "антибраконьерские" камеры, чтобы убедиться, что они не вернутся, или авторитарный режим использует их против повстанцев. Эта возможность, пре­ доставляемая западными организациями, также перекликается со многими случая­ ми передачи вредных технологий, происходившими на протяжении многих лет 8 . Начальная загрузка В этой главе мы реализуем решение, направленное на "выявление инвазивных хищников вымирающего животного" (см. разд. "Подходы к разработке решений" ранее в этой главе), и разработаем модель, способную обнаружить и классифици­ ровать животное Callosciurus finlaysonii (белка Финлайсона) (https://oreil.ly/JRz_2), также известное в народе как тайская белка. Она официально является инвазивным видом в Нидерландах согласно списку Европейского союза по состоянию на густа 2022 года (https://oreil.ly/fSbmw). 2 ав­ Автор этой главы проживает в Нидерлан­ дах, поэтому в качестве примера для данного случая использования был выбран официальный инвазивный вид в этой стране. После того как будет собран набор данных с целевым животным, мы добавим еще один класс данных для общих изо­ бражений окружающей среды, не включающих Callosciurus finlaysonii. Эти два класса позволят нашей модели машинного обучения классификации изображений определять, когда камера срабатывает при движении в окружающей среде - каме­ ра делает снимок, а обученная модель машинного обучения делает выводы и опре­ деляет, где в окружающей среде присутствует Ca/losciurus finlaysonii. Полученное изображение, если в нем есть инвазивные виды, будет отправлено по выбранному сетевому соединению для дальнейшей обработки человеком или в облаке. По данным правительства Нидерландов и Европейского союза (https://oreil.ly/ vlXZh): "В Италии тайская белка (Callosciurus flnlaysonii) сдирает кору с деревьев, увеличи­ вая вероятность заражения грибками и беспозвоночными. В своем родном ареале тайская белка часто считается хищником в отношении птичьих яиц, но нет никакой информации о подобном влиянии в районах, куда эта белка была перемещена. Сня­ тие коры с деревьев упоминается как негативное воздействие на экосистемные услу- См. эту статью в газете Guardian: "Отчет снимает с WWF обвинения в соучастии в насильственных (Report Clears WWF of Complicity in Violent Abuses Ьу Conservation Rangers (https://oreil.ly/JQ2tE)). 8 действиях со стороны инспекторов по охране природы"
Вариант использования: мониторинг дикой природы 1 403 ги. Это может иметь большое значение как для отдельных деревьев, так и для целых лесных массивов. Снятие коры также может привести к вторичному заражению, на­ пример, грибками. Результатом этого стали вырубленные деревья в Италии" 9 . Определение классов машинного обучения В табл. 11.2 показаны возможные комбинации сценариев использования, типов датчиков и входных данных. Также в ней представлены классы машинного обуче­ ния, используемые для сбора и присвоения меток обучающим и тестовым наборам данных. Примеры применения и связанные с ними метки классов важны для ис­ пользуемого в этой главе типа алгоритмов машинного обучения, а именно для классификации. Подробнее об этом можно узнать в разд. "Классификация" главы Таблица Пример 11.2. 4. Классы машинного обучения для различных случаев использования Данные для обучения Метки классов использования Фотоловушка Изображения Целевое животное, фоновая среда (с другими животными или без них) Звуковая Данные микрофона Крик целевого животного, окружающий шум, "другие" крики животных, ловушка не относящиеся к крикам целевого животного Обнаружение Изображения животных (с ограничительными рамками) Ловушка Акселерометр, радар или другие движений пространственные сигналы Химическая Газовые сигналы ловушка Целевое животное Перемещение желаемого животного Окружающая среда, химическая сигнатура целевых видов В этой главе мы выберем традиционный вариант использования фотоловушки для машинной классификации изображений с помощью методов обучения с передачей данных. Это позволит нам дать ответ на вопрос: "Присутствует ли целевое живот­ ное в поле зрения камеры?" Классами машинного обучения в нашем проекте будут "целевое животное" и "фоновая среда (с другими животными или без них)", или, проще говоря, "неизвестное". Сбор набора данных Техническую и конкретную информацию о том, как собрать чистый, надежный и полезный набор данных, см. в разд. "Получение данных" ,"!Лавы 9 "Thai Squirrel", Dutch Food Safety Authority. 2022. 7. Можно также ис-
404 Глава 11 пользовать различные стратегии сбора данных из нескольких источников, чтобы создать собственный уникальный набор данных для вашего случая: ♦ объединение общедоступных исследовательских наборов данных; ♦ объединение изображений окружающей среды без присутствия животного из нескольких общедоступных наборов данных с набором помеченных изображе­ ний целевого животного; ♦ использование существующих массивных наборов данных изображений, таких как СОСО (common objects in context- общие объекты в контексте). Поиск общедоступнь1х наборов данных изображений Всегда можно использовать набор данных, казалось бы, из не относящего­ ся к делу источника. Например, если ваш целевой инвазивный вид обитает в Португалии, но в этой среде нет большого количества наборов изображе­ ний с нужными метками, можно найти исследовательские наборы данных для других видов Португалии. А после использовать их данные в качестве "нецелевых инвазивных видов" в наборе данных для обучения/тести­ рования. Возможно, на этих изображениях даже присутствуют целевые инвазивные виды, и ваша модель сможет идентифицировать их после обу­ чения, без ведома разработчика исходного набора данных! Edge lmpulse Edge Impulse Studio - это свободно распространяемая облачная платформа, содер­ жащая все инструменты и код, необходимые для полного цикла машинного обуче­ ния. Она поддерживает сбор и маркировку высококачественных обучаю­ щих/тестовых наборов данных, извлечение наиболее важных признаков данных с помощью различных методов цифровой обработки сигналов, разработку и обуче­ ние модели машинного обучения, тестирование и проверку модели на реальную производительность/точность, а также развертывание модели в различных библио­ течных форматах с помощью простого в использовании набора инструментов Impulse SDK. В этой и последующих главах Edge Impulse Studio, чтобы сократить время Edge данной книги мы будем использовать разработки модели и количество вво­ димого кода для создания полного конвейера разработки и последующего развер­ тывания модели машинного обучения. Дополнительное обоснование использования Edge Impulse для разработки моделей периферийного машинного обучения см. в разд. "Комплексные платформы для ИИ периферийных устройств" главы 5. Для того чтобы следовать остальным инструкциям в этой главе, вам необходимо создать бесплатную учетную запись Edge Impulse (https://edgeimpulse.com). Публичный проект Каждая глава этой книги содержит письменное руководство по демонстрации и по­ лучению полной сквозной модели машинного обучения для описанного случая ис-
Вариант использования : мониторинг дикой природы 1 405 пользования. Однако если вы хотите сразу перейти к делу и увидеть точные данные и модель, разработанные авторами для этой главы в ее окончательном виде, можете перейти к публичному проекту Edge Impulse (https://oreil.ly/DPlgJ) для этой главы. Также можно напрямую клонировать этот проект, включая все исходные данные обучения и тестирования, промежуточную информацию о модели , результаты обу­ чения модели и все параметры развертывания, нажав на кнопку вать) в правом верхнем углу страницы Clone (Клониро­ Edge lmpulse (рис. 11. 1). - i· Рис.11.1. Клонирование публичного проекта Edge lmpulse Выбор оборудования и датчиков В этой книге мы стараемся оставаться максимально независимыми от устройств, но нам также необходимо обсудить, как можно применять готовый, простой в исполь­ зовании набор средств разработки для создания решения этого случая. Поскольку мы предполагаем , что описанное в этой главе руководство, скорее всего, будет ис­ пользоваться в этических, некоммерческих целях, а это означает, что потенциаль­ ный доступ читателя к средствам, ресурсам, разработчикам и другому для встраи­ ваемого оборудования будет ограничен. Таким образом, цель этой книги - сделать выбор оборудования максимально простым, доступным и недорогим . Для быстрого и простого поглощения и развертывания данных, без необходимости писать код, мы будем как вводить новые данные, так и развертывать полученную обученную модель на мобильном телефоне с помощью библиотеки Edge lmpttlse WebAssemЫy и мобильного клиента. Для других, столь же простых в развертыва­ нии устройств, Edge lmpulse предоставляет большой набор официально поддержи­ ваемых платформ (https://oreil.ly/stMSR), от MCU до графического процессора. Все они включают в себя доступную для применения предварительно написанную прошивку с открытым исходным кодом. Если у вас есть устройство, не попавшее в список официально поддерживаемых Edge lmpulse платформ, его все равно можно использовать . Но для этого потребуется интегрировать развернутую библиотеку С++ и код драйвера устройства в код приложения, как это обычно делается при разработке встраиваемого ПО. Выбор платформы не так важен для этой книги, поскольку мы пытаемся убедиться, что каждый пример из этой главы может быть реализован практически на любой
406 Глава 11 платформе физического устройства (за исключением ограничений на память или задержку). Вы могли бы решить все примеры из этой главы с помощью Pi Raspberry и различных конфигураций датчиков и достичь поставленных здесь целей. Однако в зависимости от цели использования выбор Raspberry Pi заставит вас учи­ тывать дорогостоящие требования к питанию, необходимые для работы Pi. Но, с другой стороны, такой выбор устройства будет потенциально ниже по стоимости и значительно сократит общее время разработки программного обеспечения для од­ ного устройства в полевых условиях. Конечно, если требуется большое количество одинаковых устройств, то конфигурация "Raspberry Pi + датчик/камера", вероятно, будет дороже, чем, например, решение "МСU/интегрированный датчик/камера". Конфиrурация аппаратного обеспечения Можно бесконечно долго выбирать комбинации для основного устройства и до­ полнительной камеры. В этой главе мы не будем привязываться к устройствам, но предположим, что наше целевое устройство похоже на камеру Plus (со встроенной RGВ-камерой; OpenMV Cam Н7 https://oreil.ly/hZddx). Эта типовая схема уже подразумевает несколько ограничений: наша фотоловушка будет надежно работать только при дневном свете; качество входного изображения может быть слишком низким для точного обнаружения всех экземпляров целевого животного, если оно находится слишком далеко от объектива; устройство может быть слишком энергоемким для длительной работы в поле без присмотра; если не­ обходимо определить животное с определенным окрасом, используя оттенки серо­ го, входное изображение может давать неточные прогнозы 10 • Ниже приведен список некоторых других вариантов установки камеры и важных требований, которые позволят повысить точность модели мониторинга дикой при­ роды для конкретной среды, условий использования, бюджета проекта и т. д.: ♦ высококачественные камеры; ♦ низкокачественные камеры; ♦ инфракрасные, тепловые камеры; ♦ цветные (RGB) или входные данные в оттенках серого; ♦ фокусное расстояние объектива; ♦ плотность пикселов входного изображения. Сбор данных При использовании Edge Impulse доступно множество вариантов загрузки и при­ своения меток данным в вашем проекте. 10 В этой статье содержится дополнительная информация: Фишер Й. Х. и др. "Потенциальная ценность исследований с использованием фотоловушек для идентификации, определения возраста, пола и изучения фенологии фазанов рода Lophura на Борнео" (Fischer J. Н. et al. The potential value of camera-trap studies for identifying, ageing, sexing and studying the phenology of Bornean Lophura pheasants // Forktail. - 2017 June. -№ 33. - Р. 92-102 (https://oreil.ly/id-Bc)).
Вариант использования: мониторинг дикой природы Edge lmpu/se Studio up/oader 1 407 (https:lloreiLly/Ыurl). Веб-загрузчик позволяет напрямую загружать файлы с вашего компьютера в проект Edge Impulse в различных форматах. Вы также можете указать студии автоматически маркировать выборки, основываясь на имени файла. CLI up/oader (https:/loreiLlylcxdp4). СLI-загрузчик позволяет напрямую загружать файлы из терминала командной строки вашего компьютера в проект Edge Impulse, используя различные форма­ ты файлов и параметры ввода. Вы также можете указать студии автоматически маркировать выборки, основываясь на имени файла. Ingestion АР1 (https:l/oreiLly/myL 7К). Напишите скрипт сбора данных, подключив свою платформу по сетевому про­ токолу к проекту Edge Impulse, просто вызвав API для поглощения данных. Ис­ пользуя выбранный язык скриптов, вы можете установить таймеры и триггеры для автоматической загрузки изображений в проект с помощью АРI-ключа про­ екта Edge Impulse (https://oreil.ly/6231y). Источники данных (интеграция облачных бакетов; https://oreiLly/lQweQ). Прямое получение данных из облачного хранилища бакетов и автоматический за­ пуск реакций в проекте Edge lmpulse (эта функция особенно полезна для улучше­ ния модели с течением времени с помощью стратегий активного обучения). Более подробную информацию о формате сбора данных в справочной документации Edge Impulse Edge lmpulse API (https://oreil.ly/ZSizD). Подключение устройства непосредственно к можно найти Edge lmpulse для сбора данных Существует множество способов загрузить данные непосредственно из нужной платформы в проект Edge lmpulse. Если выбранная платформа устройства официш,ьно поддерживается, можно сле­ довать руководству по обновлению прошивки. Его можно найти в документации по платам разработки Edge Impulse (https://oreil.ly/ULldQ). Если выбранная вами платформа устройства не поддерживается официш,ьно, сле­ дуйте руководству по портированию платформы разработки чтобы полностью интегрировать (https://oreil.ly/iOo23), Edge lmpulse ingestion API (https://oreil.ly/FsCTx) в прошивку вашего встроенного устройства. Обратите внимание, что портирование обычно занимает много времени и не является необходимым для большинства про­ ектов. Сделайте это, только если хотите, чтобы ваша цель была представлена на странице Edge lmpulse community boards (https://oreil.ly/xxTwr). Или используйте Edge Impulse CLI serial data forwarder (https://oreil.ly/ c9qb0), чтобы быстро и легко интегрировать данные через последовательный порт или WebUSB в ваш проект Edge Impulse. Также можно использовать мобильный телефон или компьютер для прямой загруз­ ки новых изображений с камеры на устройство. Проверьте все варианты подклю­ чения устройств на вкладке Devices (Устройства) проекта (рис. 11.2).
Глава 408 'f Collect You . сап 11 data х collect data from development boards, from your own devices, ог Ьу uploadlng ап existing dataset. Connect а fully supported development board Get started with геаl hardware from fully supported Ьу Edge lmpulse. а Browse dev boards wide range of silicon vendors - Use your moЫle phone [j Show QR code Use уоuг moblle phone to capture movement, audlo ог images, and even run your trained model locally. No арр requlred. Use your computer Collect data Capture audio ог images from your webcam ог microphone, ог from an external audio device. Data from any devlce with the data forwarder .... ,_ Show docs Capture data from апу device ог development board over а serial cor1nectlon, in 1О lines of code. Upload data .t. • Go to the uploader Already have data? You сап upload уоuг existing datasets directly in WAV, JPG, PNG, CBOR, CSV, JSON, МР4 ог AVI format. lntegrate wlth your cloud The enterprlse verslon of Edge lmpulse integrates directly with the data stored in your cloud platform. Рис. 11.2. Вид окна сбора данных Collect data [_Go to organ11ation ... на вкладке V ) Devices iNaturalist Поскольку большинство людей, скорее всего, не имеют в своем распоряжении крупного набора изображений инвазивных видов, для создания базы данных с изо­ бражениями инвазивного животного необходимо использовать вторичную форму сбора данных . В этой главе мы не будем устанавливать устройство в полевых усло­ виях для сбора новых, немаркированных изображений животных, а воспользуемся изображениями , полученными в сообществе в нужном нам месте. Эти изображения уже были (в некоторой степени) надежно помечены названием нашего целевого вида. На сайте iNaturalist (https://www.inaturalist.org) мы запросим их базу данных для поиска изображений с идентифицированными нами видами. Сделаем запрос по этому назва11ию вида и загрузим набор изображений с указанными в каждом из них идентификатором iNatural и именем пользователя-фотографа.
Вариант использования: мониторинг дикой природы Вам понадобится учетная запись export (https://oreil.ly/u4m7i) iNaturalist, чтобы войти на веб-сайт 409 iNaturalist и выполнить следующие запросы. Сначала мы запросим название нужного нам вида животного и получим СSV-файл со следующими столбцами в image_url (пример 11 .1 и рис. iNaturalist: id, user_login, quality_grade, license, url, 11.3). Пример 11.1. Запрос дпя Callosciurus finlaysonii ! . .. .. .............................................................................................................................................,....................................................................................................................: q=Calloscturus+ftnlaysontt&search_on=naP1es&has%SB%SD=photos &qualtty_grade=any&tdenttftcattons=any 1 : , ,,.,,,,, , Export Observations 1 Create а Query Create an oЬscrvation query just like you would elsewhere оп the site. You can also cut and paste an ol,,;ervations URL from another part of the slte. Your query should retum по more than 200,000 observations. 3 Choose columns Choose the columns you want to export Basic (AII I Non,, О oЬмrved_onJtrma О observed on о tm,e_oЬs,N<d_ot o ..... _id еа use,Joain о....,_...,. О updatecl.11 12 quallt'1 ..,,ш !211се,,я r'.lurt e'J lm11e_ur1 О юund_url Otq../lR О deкrlption О num_ident1f1c,1tюnJ1reements О num_id,entlП~t1on_dis,greement, О c.apt1we-_cult1vo1ted Ot,m11_юn• О oauth..applicotJon.id Рис. 11.3. Выбор столбuов для файла CSV Нам также понадобится набор изображений, включающих "неизвестные" виды или изображения окружающей среды в Нидерландах, .finlaysonii (или на которых нет Cal/osciurus вообще каких-либо животных). Эти "неизвестные" данные позволят обучить модель, чтобы более точно предсказывать, когда животное, попавшее в объектив ловушки, было сфотографировано/поймано нашим устройством. Запроси­ те эти данные со следующими столбцами в license, url, image_url (пример 11.2 и рис. iNaturalist: id, user_login, quality_grade, 11.4).
Глава 410 11 1••· ····· .. •••• .. ••• •• ••••• ... ••••••••••••••• •• ••••••• .. ••• .. ••• •••••• ............ . ............... ,,,,,,,,,, ..... , ... , •• ,, ... ,. ..... , ...... , .. ,,,,,,,,,,,, ............................................... , ........ ,,.,,.,,, ..... ,,,,,,,,,,,, ........................................ .. ! Пример 11.2. Запрос для немаркированных изображений в местоположении 1D 7506 1 [.. (Нидерланды)....................................................................................................................................................................................................................................i search_on=place&has[]=photos&quality_grade=any&identifications=any &iconic_taxa[]=unknown&place_id=7506 1 Create а Query Create an oЬservation query just like you would elsewhere on the site. You сап also cut and paste an observations URL from another part of the site. Your query should retum по more than 200,000 obвervationв. search_on=place&has%58%SD=photos&quallty_grэde=any&ldentlflcations=any&iconlc...taxa%58%SD=unknown&place_id=7506 З Choose columns Choose the columns you want to export Baslc (AII I None} О observed_on_strlna О oЬsem,d_on О t1mt_oЬserY"Cd_1t O uw_id f2 О О cre1Ф11d_at О updвted..,t С!2 quality..arade ~ licen,e ~ url f3 О sound_url O t.Lli,t О descrlptюn О num_ld8f'ltifk..-tion_ввreementa О num_ident1f1catlon_dlu1niernents О captive_tt.1lt1vated О tlme_zone imaa:e_url user_lQ11n uset_n.ime О a.uth..,ppliatlol"l..id Рис. 11.4. Выбор столбцов дr1я файла Загрузите СSV-файлы, созданные в CSV (для немаркированных изображений) iNaturalist в результате выполнения предыду­ щих запросов, и сохраните их на своем компьютере. Теперь, используя созданные СSV-файлы, с помощью кода на языке ре 11.3 загрузите и сохраните изображения из запроса iNaturalist Python в приме­ на своем компьюте­ ре. При этом необходимо присвоить загруженным файлам имя пользователя ориги­ нального загрузчика iNaturalist. - целевых животных, а второй Запустите скрипт дважды: один раз для изображений для "неизвестных" изображений. Сохраните эти фай­ лы в двух разных каталогах, например /unknownl и lanimall (см. Возможно, вам понадобится дополнительно установить пакет менеджера пакетов pi.p: python -1'1 пример 11.3 ). requests при помощи pip insta l l requests . • ••·· · ···· · · · · .. ••••• .. ••• • •• • ••••• ... •••••••• • • • .. ··············· · ··· · ························"·""·'········""''·'·'······ ···· ........................................ , ••• , ............. , ............ , ................. ,.,, ..................................... , ............ . 't 1" Пример"11_.з ...Руthоп-код. для. загрузки" изображений"из"i_Nаturаlist ...................................................................... j -u,югt csv frOPI pathlib 'U'lport Path -u,югt requests
Вариант использования: мониторинг дикой природы d'lrectory = Path("unknown") # Замена названия d'lrectory.~kdtr(parents=True, ex'lst_ok=True) каl'/ОЛога, wi.th open("observat'lons-xxx.csv") as f: # Удаление reader = csv.reader(f) next(reader, None) # пропуск смроки заголовка fог data i.n # "unknown" ш,и названия файла csv 1 411 "anil'/Ql" геаdег: имя файла смроul'/Ся как id.useг_login.extension td_, user_log'ln, url = data[0], data[l], data[S] extens'lon = Path(url).suff'lx path = d'lrectory / f"{'ld_}.{user_log'ln}{extens'lon}" i.l'lg = requests.get(url).content path.wr'lte_bytes('l~) Если требуется добавить параметры запроса в URL-aдpeca изображений (как объясня­ лось выше), замените выражение Path(url).suff'lx на Path(url.spl'lt("?")[0]).suff'lx. Выполнение этого скрипта может занять некоторое время в зависимости от размера СSV-файла iNaturalist. и количества записей, полученных в результате запроса к базе Для этого случая я рекомендую ограничить количество результатов за­ проса числом 4000. Можно уменьшить результат запроса iNaturalist, изменив на­ стройки запроса, чтобы включить в него только изображения исследовательского качества, изображения с определенным идентификатором места и т. д. 1D конкрет­ iNatura\ist (https://oreil.ly/SGClr) и вве­ дя местоположение в текстовое поле Place (Местоположение) в строке поиска ldentify (Идентификация), после чего значение 1D места появится в URL после на­ жатия кнопки Go (Выполнить). Например, у Нью-Йорка идентификатор местопо­ ложения - 1D 674: https://www.inaturalist.org/observations/identify?p1ace_id=674. ного места можно найти, зайдя на веб-сайт Ограничения набора данных Даже при наличии надежного набора данных, полученного с помощью iNaturalist, все равно возникает множество ограничений. Когда камера регистрирует несколько обнаружений немаркированного животного, невозможно определить, представляют ли эти изображения несколько подвижных особей или одну особь, неоднократно попадающую в поле зрения камеры 11 . В базе iNaturalist предпочтение отдается изображениям животных крупным планом/ в приближении в кадре. Такая предвзятость изображений животных может снизить 11 См. статью Нила А. Гилберта и др. "Оценка численности немаркированных животных на основе данных фотоловушек" (Gilbert N. А. et al. Abundance Estimation of Unmarked Animals Based on CameraTrap Data // Conservation Biology. - 2020. - Vol. 35, № \. - Р. 88-100 (https://doi.org/10.1111/ cobl.13517)).
412 Глава 11 точность получаемой модели машинного обучения в реальном мире, поскольку изображения крупным планом, как правило, не содержат большого фона окружаю­ щей среды. Эго приводит к созданию модели, ожидающей, что каждое животное будет находиться близко к объективу камеры. Для борьбы с этой предвзятостью может потребоваться подход "активного обуче­ ния" для улучшения модели с течением времени. Первоначально потребуется раз­ вернуть некачественную модель для фиксации новых изображений целевого суще­ ства. Далее их необходимо сохранить непосредственно на устройстве или загрузить в облако, затем подтвердить, что животное находится на этих изображениях. После пометить и загрузить их в исходный обучающий набор данных проекта, и, наконец, переобучить модель и снова развернуть ее на устройстве. Лицензирование наборов данных и юридические обязательства После создания учетной записи Edge Impulse каждый пользователь этой платформы должен соблюдать следующие условия использования, лицензии и политики: ♦ Edge lmpulse Privacy Policy (https://oreil.ly/Ud6ja); ♦ Edge lmpulse Terms of Service (https://oreil.ly/0y-PK); ♦ Edge Impulse ♦ Edge Impulse DMCA (Digital Millennium Copyright Act) Policy (https://oreil.ly/ a6SwO). ResponsiЬ\e AI License (https://oreil.ly/rmeaN); При соблюдении вышеуказанных правил и условий после создания и развертыва­ ния модели на своем устройстве вас не будут принуждать оформлять подписки или оплачивать услуги. На момент написания этой книги пользователи Edge lmpulse (2022 год) все бесплатные могли распространять и развертывать свою модель на бесконечном количестве устройств в эксплуатации бесплатно. Если используемые данные изначально были вашими, вы сохраняете свою интеллектуальную собст­ венность на протяжении всего жизненного цикла вашей модели ИИ периферийных устройств. При использовании набора данных, загруженного со стороннего сайта, такого как iNaturalist, вам необходимо убедиться, что полученные данные могут быть пере­ распределены или использованы в коммерческих целях. Более подробную инфор­ мацию об условиях использования iNaturalist можно просмотреть на их веб-сайте (https://oreil.lyffhjyc ). При использовании любых других наборов данных обязательно убедитесь, что вы приобретаете, распространяете и используете данные на законных, справедливых и этических основаниях. Многие сайты, собирающие базы данных, работают на ос­ нове таких лицензий, как Creative Commons (https://oreil.ly/AyCfy), Apache и т. д. При использовании этих наборов данных для обучения и тестирования периферий­ ных моделей машинного обучения вам придется руководствоваться своими сооб­ ражениями. Если у вас есть какие-либо сомнения, напишите владельцу набора дан-
Вариант использования: мониторинг дикой природы 413 ных или в службу поддержки сайта сбора данных, чтобы получить дополнительную информацию о требованиях к использованию данных или обязательствах по указа­ нию авторства, а также юридические разъяснения. Очистка набора данных Поскольку мы загрузили набор данных изображений с сайта и, таким iNaturalist образом, уже пометили наши изображения соответствующим классом машинного обучения, нам не нужно проводить дополнительную очистку набора данных перед загрузкой изображений в проект Edge lmpulse. Data explorer The data explorer shows а complete view of all data in your project. Use it to quickly label your data, ог spot outliers. Learn more. How should we generate the data explorer? о Uslng а pretralned vlsual model ('-21 Great fo r most image classification projects. Using your tralned impulse Works great if you have collected some labeled data already and have а trained model. Uslng the preprocesslng Ыocks ln your lmpulse Use this ,fyou don't have апу labels for your data yet, and thus can't train а ft1II model. Dlmenslonallty reductlon technique о t-SNE L Recommended for your dataset. Separates best, but takes а slgnificant amount of tlme о п large datasets. РСА L Separates less well, but works оп апу dataset slze. 1 • ,, f Generate data explorer , ,' Рис. 11.5. Окно Data explorer (Проводник данных) в ,''9 Edge lmpulse Studio Однако если у вас есть небольшой набор помеченных изображений, а также боль­ ший набор связанных, но не помеченных изображений, Edge Impulse предлагает data explorer (https://oreil.ly/uhD9P). Он позволяет ис­ предварительно обученную модель (рис. 11.5), ранее обученный им­ инструмент под названием пользовать пульс или ваш блок предварительной обработки для массового присвоения меток немаркированным изображениям в обучающем или тестовом наборе данных. Ко-
414 Глава 11 нечно, этот инструмент не будет работать, если вы . еще не обучили модель на меньшем подмножестве своих данных, т. к. уникальные названия видов не прохо­ дят предварительное обучение в существующих сетях ImageNet, таких как MoblleNetV2 например . Вы также можете выбрать один из двух типов сокращения размерности: t-SNE (хорошо работает с небольшими наборами данных) и РСА (ра­ ботает с любым размером набора данных) . Загрузка данных в Edge lmpulse Python для загрузки данных iNaturalist, загрузите изображения в проект Edge Impulse (рис . 11.6) с помощью веб-интерфейса проекта Edge lmpulse или uрlоаdеr-командой для Edge Impulse CLI (https://oreil.Iy/1_OQo ). Следуя скрипту Upload exlstlng data You сап upload exlstlng data to your project ln the Data Acqulsltlon Format (CBOR, JSON, CSV), or as WAV, JPG, PNG, AVI or МР4 flles. Select ftles 1 Choose flles I No file chosen Upload lnto category О Automatically split between training and testing Ф Tralnlng Testlng Label О lnfer from fllename ф Leave data unlabeled Ф Enter /abel: Enter а label •1• Рис. 11 .6. Загрузка существующего набора данных в веб-загрузчик Edge Impulse
Вариант использования: мониторинг дикой природы 1 415 [your-api.-key] на АРI-ключ своего проекта Edge Impulse, [laЬel] на слово "unknown" или название своего целевого животного, а [di.rectory] на каталог файлов, указанный в скрипте Python для iNaturalist: $ edge-i.~pulse-uploader --api.-key [your-api.-key] --laЬel [laЬel] \ --category spli.t .[di.rectory]/* Как веб-интерфейс, так и CLl загрузчика позволяют автоматически разделить за­ груженные изображения на обучающий trai.ni.ng и тестовый testing наборы данных в соотношении 80/20 (хорошее соотношение для большинства проектов машинного Обязательно замените выражение обучения). Рабочий процесс DSP и машинного обучения Теперь, когда все изображения загружены в наборы данных для обучения и тести­ рования, необходимо извлечь наиболее важные признаки из исходных данных с помощью цифровой обработки сигналов (digital signal processing, DSP). Затем нуж­ но обучить модель машинного обучения выявлять закономерности в извлеченных из изображений признаках. и ML "дизайном импульса" Edge Impulse называет (Impulse design). рабочий процесс обучения DSP lmpulse design (Дизайн импульса) вашего проекта Edge lmpulse позволяет просматривать ваш полный конвейер машинного обучения и в графическом виде отображать его. Слева находится блок исходных данных, в него Edge Impulse Studio Вкладка поместит данные и выполнит их предварительную обработку. В нашем случае для изображений платформа нормализует все изображения, чтобы они имели одинако­ вые размеры, а если размеры не квадратные, то кадрирует изображение выбранным вами методом. Далее следует блок DSP, откуда мы будем извлекать наиболее важные признаки изображений с помощью скрипта цифровой обработки сигнала с открытым исход­ ным кодом. После того признаки данных будут сгенерированы, обучающий блок обучит нашу нейронную сеть, основываясь на желаемой архитектуре и настройках конфигурации. Наконец, можно увидеть информацию о результатах развертывания, включая же­ лаемые классы, которые должна классифицировать наша обученная модель ма­ шинного обучения. В проекте Edge lmpulse настройте 11. 7 или как как показано на рис. вкладку lmpulse design варианты из различных раскрывающихся списков, затем Impulse (Сохранить (Дизайн импульса) так, указано в списке, вводя значения или выбирая нажмите кнопку Save lmpulse). lmage data (данные изображения). • Image width (Ширина изображения): 160. • Image height (Высота изображения): 160. • Resize mode чайшей оси). (Режим изменения размера): Fit shortest axis (Подгонка по крат­
Глава 416 11 Processing Ыосk • Image (Блок обработки). (Изображение). Learning Ыосk (Блок обучения). • Transfer Leaming (lmages) lmage (Трансферное обучение (изображения)) . о .':~i\~;~~~-;:~:_\ _~-~:,~i 2((,tUJJrliJrt)!l:f;I\L,~Nt,Uni.MWJ'\! '~,r ~ ~~ ~J'~=,~~ 1 ,~ ~- 'х~) '¾ i <~:.~ lnputues(1 J Рис. 11.7. Конфигурация вкладки lmpulse design Блок цифровой обработки сигналов Для проекта, представленного в этой главе, мы будем использовать алгоритм DSP - он по умолчанию включен в вкладке lmpulse design Edge lmpulse Studio. lmage Выбранный нами на (Дизайн импульса) блок обработки изображений уже напи­ сан и доступен для свободного использования и бесплатного развертывания с платформы. Код, используемый в блоке Edge lmpulse lmage, под названием "processing-Ыocks" доступен в репозитории (https://oreil.ly/jjL2E). GitHub Подробнее об особенностях алгоритма спектрального анализа можно узнать в разд. "Обна­ ружение признаков на изображении" главы Если вы хотите написать собственный блок Studio, это легко сделать на вашем языке, processing Ыocks (https://oreil.ly/Dx2KJ). 4. DSP для использования в следуя руководству Однако если вы решите написать собственный блок обработки Edge lmpulse Edge lmpulse custom DSP для своего при­ ложения, обратите внимание: для того чтобы развертывание модели в SDK Edge lmpulse работало как надо, вам придется написать соответствующую реализацию на С++ вашего пользовательского кода DSP Python/MA ТLАВ/др . Это главное пре­ DSP в Edge lmpulse Studio, по­ имущество использования легкодоступного блока скольку оно позволяет сократить общее время разработки от сбора данных до из­ влечения признаков и последующего развертывания. собственный код С++ на стороне приложения - Вам не нужно писать все уже интегрировано в развер­ нутую библиотеку и готово к компиляции. На вкладке Image цвета в значении (Изображение) в боковой панели навигации оставьте глубину RGB и нажмите кнопку Save parameters (Сохранить параметры).
Вариант использования : мониторинг дикой природы Теперь нажмите кнопку мировать окно Generate features (Сгенерировать признаки), Feature explorer (Проводник признаков) (рис. 11.8). Tralning set 1 417 чтобы сфор­ Feature explorer D111i11 ln tr~nlna set l,5191t@ms ci.sиs 2 (Citllosourus fin~,. Unkno-,r,,nl On-devlce performance ф Рис. 11.8. Блок DSP ~ PROCESЯNG TIM[ PU. 11.AMUSA.Gf V 4ms. 4 кв изображения и проводник функций Блок машинного обучения Теперь мы готовы к обучению нашей периферийной модели машинного обучения! Существует несколько способов обучения модели в из них Edge lmpttlse. Самый простой режим визуального (или веб-rрафического) редактирования. Однако если - вы инженер, специалист в области машинного обучения или уже имеете опыт рабо­ ты с библиотеками TensorFlow/Keras, то вы также можете редактировать свой блок трансферного обучения локально или в экспертном режиме в Edge lmpl1lse Stttdio. Задать архитектуру нейронной сети и другие параметры конфиrураtщи обучен~1я проекта можно на вкладке Transfer learning (Трансферное обучение). Визуальный режим Самый простой способ настроить и задать параметры обучения маш11Нному обуче­ нию и архитектуру нейронной сети - это режим умолчанию, когда вы выбираете вкладку в разделе стройки lmpulse lmpulse design автоматически Edge lmpttlse Visual, Transfer learning или вид по (Трансферное обучение) (Дизайн импульса) на панели навигации. Следующие на­ применяются по умолчанию с блоком трансферного обучения (рис. 11.9). при сохранении проекта Если в вашем проекте эти на­ стройки отличаются, скопируйте их в конфигурацию блока трансферного обучения: ♦ Number of training cycles ♦ Learning rate (Темп (Количество циклов обучения): обучения): 0.0005; 100;
418 Глава 11 ♦ Validation set size (Размер проверочного набора) : ♦ Auto-balance dataset 20%; (Набор данных с автоматической балансировкой) : флажок не установлен; ♦ ♦ Data augmentation (Аугментация данных) : флажок не установлен; Neural network architecture (Архитектура нейронной сети): MoЬileNetV2 96х96 0.35 (final layer: 16 neurons, 0.1 dropout). Neural Network settings Tralnlng settlngs Number of tralnlng cycles ф 100 Learning rate ф 0.0005 Validatlon set slze Ф 20 Auto-balance dataset Ф Data augmentatlon Ф Neural network archltecture lnput lауег (76,800 features) MoЬlleNetV2 96•96 0.35 (flnal Choose а lауег. 1б neurons, 0.1 dropout) dlfferent model Output layer (2 classes) Рис. 11 .9. Настройки нейронной сети с трансферным обучением по умолчанию После ввода настроек достаточно нажать кнопку Start training (Начать обучение) под конфигурацией архитектуры нейронной сети, чтобы запустить задание на обу­ чение на серверах Edge Jmpulse. Возникающее задание обучает вашу модель точно TensorFlow/ Keras локально на своем компьютере . При работе с Edge lmpulse нам не нужно ис­ так же , как вы обычно обучали бы модель, если бы выполняли скрипт пользовать локальные ресурсы на собственном компьютере. Вместо этого будут задействованы облачные вычисления , которые платформа Edge lmpulse предлагает бесплатно всем разработчикам . В зависимости от размера набора данных этот этап
Вариант использования: мониторинг дикой природы 1 419 обучения может занять некоторое время, и в этом случае можно выбрать значок колокольчика в окне Training output (Результаты обучения), чтобы получить уве­ домление по электронной почте о завершении работы и увидеть результаты обуче­ ния (рис. 11.1 О и 11 . 11 ). . 1 ( (' ~(О) Рис.11.10. Значок колокольчика с уведомлением об обучающем задании Notlfication settings х These users will Ье notified over emall when thls job finlshes. 0 NAME о Jenny Plunkett EDGE IMPULS,STAFF t, •• ~ •• ~ , , ·~·~J't-: - .. ~~,;'-- ~:,~-1---..J:; \ "' save notiflcatlon settings \~~ ?~ °':t-·,:· ,-._ .,_ ;{~)_,-.~ '..{-~:.!»~~"iQ,,;-: ;~ Рис. 11.11. Настройка параметров уведомления о заданиях После завершения обучения модели вы можете просмотреть результаты трансфер­ ного обучения в окне Model > Last training performance последнего обучения) (рис. (Модель > Результаты 11.12). Учитывая, что все, что мы сделали до сих пор, - это загрузили наши обучающий и тестовый наборы данных, извлекли наиболее важные признаки с помощью блока DSP для изображений и обучили нашу модель, используя стандартные настройки конфигурации блока и не написав никакого кода, эти результаты довольно прилич­ ные! Результат 76,3% - это весьма хорошая начальная точность, учитывая, что мы не делали никаких специальных настроек архитектуры нейронной сети, блока DSP и других параметров для нашего конкретного случая использования . Однако можно еще больше повысить точность модели, используя иные инструменты, доступные в Edge lmpulse, такие как EON Tuner. О нем мы расскажем в следующем разделе . Режим эксперта Вы инженер в области машинного обучения или уже умеете писать код для TensorF\ow/Keras на Python? Используйте режим эксперта в Edge Impulse для загрузки собственного кода или редактирования существующего кода блока локально, нажав на выпадающую кнопку с тремя точками справа от
420 Глава 11 строки Neural Network settings (Настройки нейронной сети) и выбрав Switch to Expert (Keras) mode (Переключить в режим эксперта (Keras)) (https://oreil.ly/wpEzB) или Edit Ыосk locally (Редактировать блок локально) (https://oreil.ly/s YSIP) из меню. пункт Model Model verslon: ф Quantlzed (lnt81 • Last tralnlng performance (valldatlon setl о ACCURACY • 76.3% LOSS 0.91 Confuslon matrlx (valldatlon setl CALLOSCIURUS FINLAVSONII UNKNOWN CALLOSCIURUS FINLAYSONII 43.5'16 :.~·=-$,~\: ;.1~- 56 5~ UNKNOWN 1.1% ~{~;~;;--~:~-\ 989'ь F1 SCORE 0.60 ~' 0.83 Data explorer (full training set) ф 1Э 8 •• Callosclurus flnlaysonll • correct Unknown ~ соггес t On-devlce performance Ф • INFERENCING Т... РЕАК 4ms. 346.бК RAM USA ... о FLASH USAGE 585.7К Рис.11.12. Результаты трансферного обучения с использованием стандартной конфигурации блоков (точность 76,3%) EON Tuner Инструменты автоматического машинного обучения являются очень ценными. Они могут автоматически выбирать и применять лучшие алгоритмы машинного обуче­ ния для ваших данных и автоматически настраивать параметры модели машинного обучения, что позволяет еще больше повысить ее производительность на перифе­ рийных устройствах. Edge lmpulse Studio предоставляет инструмент под названием
Вариант использования : мониторинг дикой природы для автоматического машинного обучения в вашем проекте. EON Tuner 421 EON Ttшer одновременно оценивает множество возможных архитектур моделей и блоков DSP (выбранных с учетом требований к целевому устройству и задержке), чтобы по­ мочь найти архитектуру с наилучшими характеристиками для вашего приложения машинного обучения. На вкладке рис. EON Tuner проекта Edge Impulse настройте параметры, показанные на 11.13. Выберите следующие параметры из выпадающих настроек конфигурации ♦ Dataset category ♦ Target device (Категория набора данных): (Целевое устройство): (Визуальный); Vision Cortex-M7 EON Tuner: (или любая другая поддержи­ ваемая платформа; если вы не используете официально поддерживаемую плат­ форму, выберите платформу с аппаратной начинкой, наиболее похожей на ту, что используется в вашем устройстве); ♦ Time per inference (ms) (Время ~ на получение вывода (мс)): 100. [O N Tuncr st'Ш n gs >< Flnd the optlmal archltecture for your machlne learnlng model Тhf ЕО№'" Oataset category Vlslon Tuner \V 11 evaluate mariy candtdate model arct,ttPctures (selected based ori your target devtce and latency requlrements) concurrently to t1e:p you find thl! ~st pertorm1ng afch~e-ctcJre for your applкdtюn Target devlce Cortex-M7 216MHz The search process can take up to 6 hours to complete Whtle the EON Tuncr 1~ runn1ng you c.:,n vsew thc progress оп thls p.1ge at .iny tlme Tlme per lnference (msJ 100 Рис. Затем нажмите кнопку рис. 11.13. Настройки конфигурации Start EON tuner (Запустить EON Tuner EON tuner), как показано на 11.14. Сравнивая результаты работы включенными в стандартный EON Tuner с блоками классификации изображений, проект Edge lmpulse, мы видим огромную разницу между ними . С помощью инструментов машинного обучения можно быстрее и эф­ фективнее определять лучшие архитектуры нейронных сетей, блоки DSP, парамет­ ры и многое другое для нашего случая. На рис. 11.15 показаны результаты работы блока по умолчанию с блоком lmage RGB DSP и оригинальным блоком нейронной сети Transfer leaming с MobileNetV2 96х96 0.35 (final layer: 16 neurons, 0.1 dropout), 100 обучающих циклов и темпом обучения равным 0,0005.
422 Глава 11 Using the EON tuner you can effortlessly find the mosr optimal arch,tecture fог уоuг embedded machine- learnlng applicationl '11 Рис. 11.14. Staгt EON tun1r Запуск инструмента Model verslon: Ф Model Last tralning performance (valldatlon S<!t) • ACCURACY • EON Tuner 89.5% Confusion matrix (validatlon setJ 87 914, UNKNOWN 9.AI< F1 SCORE 0.87 • ) LOSS 0.39 CAllOSCIURUS FINLAYSONII CALLOSCIURUS FINLAYSONII [ Qu•ntlzed (lntBJ UN KNOWN 12.114. 0 .9, Data explorer (full tralnlng set) ф О О 8 • Callosciurus finlaysonll - correct Unknown - correct Callosclurus finlaysonil. lncorrect On-device performance Ф INFERENCING Ti ... • Рис. 11.15. 120 ms. о РЕАК RAM USAGE 260.7К о FLASH USAGE 342.1К Результаты трансферного обучения с конфигурацией блока (точность 89,5%) EON Tuner
Вариант использования : мониторинг дикой природы 423 После завершения работы автоматического машинного обучения посмотреть результаты. Из показанных на рис. точности 90%. EON Tuner можно 11. 16 результатов первый достигает Однако мы не будем выбирать эту модель, поскольку затраты и ОЗУ, и ПЗУ превышают аппаратные спецификации нашей цели. Поэтому выберем второй по точности результат rJЬ-moЫleneiv2-810 • [ S•l•ct ) - PERFORMANCE ■ ,xb-moЫlenetv1-df8 100ms PERFORMANCE ------ 585 •• t,cceю-.t••t(>tt,y90k8 585kB DSP • NN Unu,ed OSP • NN 58SlcB ., " с• ·" " u" S4SkB Unused 1 - 160 160 IМAGE j) • RGB S8SkB • DSP • NN Unused ACCURACY .17 " С• Unk ., " с, ·" u" INPUT (.~\ INPUT :!) INPUT - 160 585k8 ROM ACCURACY ACCURACY 100ms 11АМ ROM • - LATfNCY 100ms IIAM ROM rgb-moЬllenotv1-bbЗ • LAT[NCV .... IMAGE 89% . PERFORMANCE L,\1ENCY • - 1 160 - 160 1 160 IMAGE J) j) • RGB • RGB Рис.11.16. Матрица результатов EON Tuner (лучший результат, не выходящий за пределы целевой оперативной памяти, имеет точность 89%) Основываясь на этих результатах, мы определенно захотим обновить информацию о первичном блоке с помощью автоматически сгенерированных блоков для нашего случая с использованием стью нажмите кнопку на рис. EON Tuner. Select Рядом с конфигурацией с наилучшей точно­ (Выбрать) и обновите основную модель, как показано 11.17. Дождитесь, пока обновит блоки lmpulse design в вашем проекте (рис. 11.18), Transfer learning (Трансферное обучение) и посмотрите об­ Studio затем нажмите кнопку новленные результаты обучения модели, точность и расчет задержки, как показано на рис . 11. 19.
424 Глава 11 Updating primary model ге you sure you want set this model as pпmary? Th,s wШ set all Ыocks i this varlant as prlmary, overriding апу current primary Ыocks. Алу Ыocks not created Ьу the EON Tuner w,11 Ье deleted. Cancel Рис. 11.17. Обновление основной модели с помощью EON Tuner etwor sett1ngs Training settings Number of training cycles Ф 20 Learning rate Ф 0.0005 Validation set size Ф 20 Auto-balance dataset Ф Data augmentation Ф Neural network architecture lnput layer (76,800 features) MoblleNetV1 96х96 0.25 (final layer: 64 neurons, 0.5 dropout) Choose а different model Output layer (2 classes) lif!Fi·Hf Рис. 11.18. Настройки нейронной сети EON Tuner
Вариант использования : мониторинг дикой природы Model verslo n : ф Model 425 Quantized (lnt8) • Last tralning performance (vallda tlon set) • ACCURACY LOSS 87.5% 0.38 Confuslon matrix (valldatlon set) CAlLOSCtuRUS FINt.AYSONII UNKNOWN CALLOSCIURUS FINLAYSONII UNKNOWN 0.90 F1 SCORE Data explorer (full tra,nlng set) Ф С Callosciurus finlaysonil - correct Ф Unknown - correct Callosclurus finlaysonli • incorrect 8 • On-devlce performance Ф INFERENCING TI ... • Bms. о РЕАК RAM USAGE 260.ЗК о FLASH USAGE 319.SK Рис.11.19. Обновление модели первичного трансфертного обучения с помощью EON Tuner Тестирование модели Edge lmpulse предоставляет несколько типов инструментов тестирования и провер­ ки, чтобы повысить уверенность в реальной точности обученной модели машинно­ го обучения, или импульса. После завершения обучения импульса на панели нави­ гации вашего проекта можно перейти к вкладкам Live classification (Классифи­ (https://oreil.ly/lBG87) и Model testing (Тести­ модели) (https://oreil.ly/g02EL). кация в режиме реального времени) рование Тестирование аудиомоделей с помощью калибровки производительности Если вы разработали звуковую ловушку, как описано во врезке "Глубокое погружение: демонстрация 1-::1ассифuкацuи звуков птиц с помощью Lacuna Space" да7ее в этой 2лаве, то вы также можете использовать модель тести­ рования Performance Calibration (https://oreil.ly/В3eQh) и реальный усилитель производительности в своем проекте Edge lmpulse.
426 Глава 11 Классификация в реальном времени На вкладке Live classification (Классификация в режиме реального времени) можно протестировать отдельные выборки из набора тестовых данных в сравнении с обу­ ченной моделью или подключить устройство и записать новые изображения и тес­ товые выборки в режиме реального времени, а затем просмотреть извлеченные из изображения признаки и полученный результат классификации, а также итоговые прогнозы (рис . 11.20). Classlfy new data ( DevlceФ ~ Connect using WebUS8 ] No devi ces connected Classify existing test sample 18872577.johnhowes (Callosciurus finlaysonii) Sensor Sample length (ms.) ,мннм 5000 Frequency Рис. 11.20. Классификация в реальном времени Classification result Summary Name 106007S28.andaman Expected outcome C.1llosclurus fintayюnll Callмt"IUNS flnta)°S°"II Unknown lmage Deulled result Show only unknowns .... олs Proc:essed features ,.2sa1, Рис. 11 .21 . е.1мз, 1.1111, 1.3688, е.3898, 1.2661, 1 . бS◄9, Результат классификации в реальном времени 1.1н1s, е.б21s, 1.S451 , _
Вариант использования: мониторинг дикой природы Подключите официально поддерживаемое устройство к вкладке 1 427 Live classification (Классификация в режиме реального времени) через установленную прошивку уст­ ройства Edge lmpulse или через пересылку данных Edge lmpulse CLI. Например, Arduino Nano 33 BLE Sense к вашему проекту, чтобы получить новые тестовые изображения в среде устройства с помощью следующей команды CLI: edge-'i.мpulse-daeмon . Следуйте подсказкам CLI, чтобы подключить устройство к про­ подключите екту и записать новые выборки . Или загрузите изображение существующего тестового набора данных в разделе Classify existing test sample (Классифицировать существующую тестовую выбор­ ку), чтобы просмотреть извлеченные признаки этой выборки и результаты предска­ зания обученной модели (как показано на рис . 11 .21 ). Протестируйте модель Вы также можете провести массовую классификацию тестового набора данных по обученной модели, перейдя на вкладку (https://oreil.ly/gPhj3) вашего проекта кнопку Classify all (Классифицировать Model testing (см. рис. 11.23). (Тестирование модели) Здесь вы можете нажать все), чтобы автоматически собрать резуль­ таты выводов и предсказания модели в одной длинной таблице . Здесь же можно установить порог уверенности (показан на рис. 11 .22) для результатов вывода мо­ дели , нажав на выпадающую кнопку с тремя точками Set confidence thresholds (Установить пороги уверенности). Пороговая оценка определяет степень доверия к обученной нейронной сети. Если рейтинг доверия ниже установленного вами зна­ чения, выборка будет помечена как "неопределенная" (uncertain). Можно использо­ вать результаты вывода с параметром неопределенности, чтобы еще больше повы­ сить точность вашей модели с помощью стратегии разработки модели "активного обучения". Загрузите эти неопределенные изображения, пометьте их, переобучите свою модель и заново установите ее на устройство! Результаты тестирования моде­ ли см. на рис. О 11.23. Set confidence thresholds х Every learnlng Ыосk has а threshold. This сап Ье the mlnimum confidence that а neural network needs to have, or the max1mum anomaly score before а sample is tagged as an anomaly. You сап configure these thresholds to tweak the sensltivity of these learning Ыocks. This affects both live classification and model testing. Transfer learning • Minimum confidence rating Ф 0.6 "•: Set confidence threshold~ " Рис. 11 .22. Установка порогов уверенности ' 1 ~
Глава 428 11 11111111 Testdata Model testlng output Set the '@xpected outcoml!' for each sample ro 1~ deslred outcome to automatJcally score the """""" 127693342.Ы ... ~- 1t76S0077.an.., Unkno1,m •~1(Crt0 '1217).Dбl,ot),.. Model testin3 results ОUТСОм, ~tN<ИH ACCUkA(Y ... """"""" ~ """ """ 1 Unknewn Unknown "'°" 1 Unknown Unknown ''°" 1 Unknown 1Щ'?o449".otlf•' Ul'l~n 1Ш2181t ,UI - Unknown 126493SS9,puN, Unk,,own 12bl.11473J~. ""'""''"' 1262014:JU••N Unl(nown Feature explorer Ф ... 1 Unknown ,,,.,. 1 ""'" """' f•lln1<IUП1'1 flnl"Y'Onll•(O,Т!'(t Unknown - lnmrтю ~=$:::r::~riil•lntoюю е le • • ,. un"'°"" о • е • ., ." '""'""'"'" . . t о " 1 Un~nown "°" 11.23. ф : 8 1 Ctllosd111usf\t\l.1ysonll "°" Рис. 88.68% CAH0$CIUIIUJfllHAYf0 12""""70.f>t- un,._,,, ACCURA.CY ! unitnown 12747201ЭJе... 127081107.tn- V 1 CallosdYM !Way,on!f • • 1 Unknown Результаты тестирования модели на вкладке Model testing Протестируйте свою модель локально Вы также можете загрузить все результаты промежуточных блоков и информацию об обученной модели, чтобы протестировать модель локально с помощью любого метода Python для тестирования модели, как это TensorFlow/Keras. Перейдите на Dashboard (Панель инструментов) проекта Edge lmpulse, чтобы просмотреть все доступные выходные файлы блоков, как показано на рис. 11.24. - например, с помощью скрипта обычно делается для рабочего процесса Download Ыосk output TIТLE ТУРЕ SIZ E Transfer learning model TensorFlow Lite (fioat32) 855 кв Transfer learning model Т ensorFlow 302 кв Transfer learning model TensorFlow SavedModel 862 кв Transfer learning model Keras hS model 827 кв Рис. Lite (int8 quantized) 11 .24. Окно Download Ыосk output
Вариант использования: мониторинг дикой природы 1 429 Развертывание Поздравляем! Вы только что закончили сбор и присвоение меток обучающему и тестовому наборам данных, извлечение признаков из данных с помощью блока DSP, разработку и обучение модели машинного обучения, а также тестирование модели на тестовом наборе данных. Теперь, когда у нас есть весь код и информация о модели, требуемые для построения выводов на периферийном устройстве, необ­ ходимо прошить предварительно собранный двоичный файл на устройство или ин­ тегрировать библиотеку С++ в код нашего встроенного приложения. Выберите вкладку Deployment (Развертывание) проекта Edge Impulse и выполните ша­ ги для одного из множества вариантов развертывания в следующих разделах, чтобы запустить обученную модель машинного обучения на периферийном устройстве. Создание библиотеки Для упрощения процесса разработки Edge Impulse предоставляет множество гото­ вых примеров кода для интеграции развернутой модели в прошивку встроенного приложения. Использование официально поддерживаемой платы для разработки обеспечит наиболее быстрое развертывание и наименьшее время разработки. По­ скольку в таком случае можно перетащить готовое приложение прошивки на вашу плату или клонировать репозиторий прошивки платы с открытым исходным кодом из репозитория Edge lmpulse GitHub (https://oreil.ly/rH9IO). В нем есть все про­ шивки устройства и драйверы, необходимые для быстрого начала процесса разра­ ботки и отладки встраиваемых приложений. Если вы развертываете свою модель на "неофициально поддерживаемой" платфор­ ме, существует множество ресурсов для помощи в интеграции Edge Impulse SDK в код вашего приложения, независимо от варианта развертывания библиотеки: ♦ готовые прошивки ♦ ♦ интеграция Edge lmpulse (https://oreil.lyNЗeRI); Edge Impulse SDK в ваше приложение (https://oreil.ly/yAlgD); изучение кода библиотеки С++ и получение результатов вывода модели (https://oreil.ly/-gPy_). Большинство проектов, использующих "неофициально поддерживаемое" устройст­ во, будут развертываться с помощью параметра библиотеки С++, доступной в окне Create library екта (рис. (Создать библиотеку) на вкладке 11.25). Deployment (Развертывание) про­ Библиотека С++ переносима, у нее нет внешних зависимостей, и ее можно скомпилировать любым современным компилятором С++. ~ Пользовательские блоки обработки Если вы решили использовать собственный пользовательский блок DSP в Edge lmpulse Studio, вам нужно будет написать эквивалентную реализацию блока DSP на С++ и интегрировать ее в код Edge Impulse SDK. Более подробную информацию можно найти в документации Edge Impulse проекте (https://oreil.ly/tl KI _).
430 Глава 11 Create library Turn your impulse into optimized source code that you сэ С++ ~ TensorRT library Ethos-U l1brary ВЕТА brainchip MetaTF Madel Flow library Meta TF Model ~ QpenMV Simpl,city Studlo Component OpenMV library SILICONLAIS • • • Cube.MX CMSIS·PACK ПVIDIA. Synaptics device. ' Arduino library WebAssemЫy оп апу . ARDUINO 111 Гensai run 00 llbrary [t] сап UШ\ l lDL·Rl' L,brary Рис.11.25. Создание библиотеки с открытым исходным кодом Мобильный телефон и компьютер Быстро разверните модель на периферии с помощью компьютера или мобильного телефона, выбрав параметры развертывания Moblle phone Edge lmpulse Computer (Компьютер) и (Мобильный телефон). В этих вариантах развертывания используется открытая прошивка мобильного клиента (https://oreil.ly/4-S9S). Она создает биб­ лиотеку WebAssemЬ\y для вашего обученного импульса, чтобы классифицировать совершенно новые данные прямо с камеры на вашем телефоне или компьютере. Этот вариант отлично подходит для быстрого создания прототипов и тестирования моделей, поскольку вам не нужно писать код для этого варианта развертывания, если вы используете стандартный/интегрированный тип датчика в своих наборах данных для обучения/тестирования. В этом проекте, поскольку наши данные для обучения и тестирования - это про­ сто изображения, можно использовать камеру телефона для тестирования модели непосредственно на периферии с помощью кеша веб-браузера телефона и интегри­ рованных данных камеры (рис. 11.26).
Вариант использования : мониторинг дикой природы Run your impulse dlrectly Run this lmpulse dlrectly оп your moЫle phone MoЬile Computer Рис. ог computer, по арр requlred . phone 11.26. Запуск импульса напрямую (с мобильного телефона и компьютера) 20:39-1 ◄ • ••• , 9 • - Can,era ' : 11 smartphoпe.edgcirripulse.co~ •. -;;_-\ t!J ': Е. Classifier ! -:: \ ' t' " ..,,.~ ,., •~,.. . GI lnfercnc,ng, ., uncertain CALLOSCIURUS FINt.AVSONII 0.66 176 175 . UNKNOWN 0.67 0.33 - +. 0 ... Рис.11.27. Модель фотоловушки, работающая на мобильном телефоне 431
432 Глава 11 Выберите значок вкладке Computer (Компьютер) или Moblle phone (Мобильный телефон) на Deployment (Развертывание) вашего проекта и нажмите кнопку Build (Сбор­ ка) . Если вы пользуетесь мобильным телефоном , отсканируйте сгенерированный QR- код с помощью камеры телефона ~1 откройте URL-aдpec в веб-браузере телефона. Предоставьте мобильному клиенту доступ к камере вашего телефона и ждите, пока проект будет создан. Теперь вы можете просматривать обученную модель фотоло­ вушки, работающую на периферийном устройстве, и отображать результаты вывода прямо на своем мобильном телефоне! Результат показан на рис . 11.27. Готовая бинарная прошивка На вкладке Deployment форму разработки (Разработка) выберите официально поддерживаемую плат­ Edge lmpulse в разделе Build firmware (Создать прошивку), а затем нажмите кнопку Build (Сборка) . Вы также можете использовать компилятор EON, позволяющий запускать нейронные сети, используя на 25-55% меньше опе­ ративной памяти и до 35% меньше флеш-памяти, сохраняя при этом ту же точность по сравнению с TensorFlow Lite for Microcontrollers 12 . Рис. 11 .28. Развертывание модели для OpenMV Cam Н7 Plus в OpenMV IDE Затем перетащите или прошейте полученное приложение прошивки на официально поддерживаемую платформу, следуя инструкциям , показанным после нажатия См. запись в блоrе Яна Йонrбума "Введение в EON: нейронные сети с объемом оперативной памяти 55% меньше и объемом постоянной памяти на 35% меньше" (Jongboom J. lntroducing EON: Neural Networks in Up to 55% Less RAM and 35% Less ROM (https://oreil.ly/3-kTN)). 12 на
Вариант использования: мониторинг дикой природы кнопки Build (Сборка) на вкладке Deployment 1 433 (Развертывание). Более подробные инструкции по прошивке предварительно собранных двоичных файлов можно най­ ти в документации для выбранной вами платформы разработки Edge Impulse (https://oreil.ly/llg9B). Для этого проекта мы выберем вариант развертывания запустить обученную модель на устройстве EfJwe), показанном ранее на рис. "OpenMV Library", чтобы OpenMV Cam Н7 Plus (https://oreil.ly/ 11.25. Следуйте указаниям, приведенным в документации по развертыванию веб-сайте Edge lmpulse OpenMV на (https://oreil.ly/82tКN) для загрузки и установки необходи­ мого программного обеспечения. Затем распакуйте загруженный ZIР-файл с про­ шивкой вашей модели и перетащите или скопируйте файлы labels.txt и trained.tflite в файловую систему подключенной камеры OpenMV Cam Н7 Plus. Откройте файл скрипта ei_image_classification.py OpenMV Cam через значок USB и в среде OpenMV IDE. Подключитесь к плате Python, чтобы увидеть резуль­ запустите скрипт таты вычислений вашей модели на периферии в виде последователыюго термина­ ла, как показано на рис. 11.28. Приложение-runnеr для Также можно использовать lmpulse Edge lmpulse CLI (https://oreil.ly/KVUJf) для загрузки, развертывания и непрерывного запуска ваших моделей через последовательное со­ единение USB на официально поддерживаемой платформе по вашему выбору. Или воспользуйтесь инструментом Edge lmpulse Linux runner (https://oreil.ly/SJZex) для Edge Impulse на Raspberry Pi 4 или дру­ загрузки, развертывания и запуска модели гом Linuх-устройстве. Исходный код GitHub Исходный код приложения, использованный в этой главе, включая развернутую библиотеку из публичного проекта Edge Impulse (https://oreil.ly/I_EIA) код приложения, доступны для просмотра и загрузки и готовый в репозитории GitHub (https://oreil.ly/ rmE7-). Итерации и циклы обратной связи Теперь, когда развертывание первой итерации модели мониторинга дикой природы на периферии выполнено, вы можете быть удовлетворены результатами и на этом прекратить разработку. Однако если вы хотите продолжить итерации над своей мо­ делью и еще больше повысить точность со временем или, например, с обновлением приобретенного оборудования, существует множество адаптаций и вариаций для усовершенствования этого проекта. ♦ Добавьте в модель больше классов машинного обучения для разных животных. ♦ Создайте фотоловушку для инвазивных видов растений, а не животных местного садоводства, кормовых целей и т. д. - для
Глава 434 11 ♦ Используйте разные датчики для достижения одной и той же цели - например, в ловушке для диких животных используйте датчик газа или переключите дан­ ные обучения камеры с помеченных изображений на ограничительные рамки для обнаружения видовых объектов (см. разд. "Обнаружение и сегментация объектов" главы 4). ♦ Используйте ту же модель для достижения другой цели или поместите ее в дру­ гую среду, уточняя "неизвестный" класс. ♦ Используйте комбинацию датчиков для повышения точности модели, например камера+ аудиовход, аудиовход + газовый анализатор Вы также можете создать несколько проектов в и т. д. Edge Impulse, чтобы построить множество различных моделей машинного обучения для нескольких мест распо­ ложения устройств, нескольких наборов данных и классификации других целевых животных. Например, вы можете использовать одну и ту же модель пустыни Саха­ ра для нескольких видов животных, просто заменив основной вид на другой по ва­ шему выбору в исходном наборе данных, а затем провести повторное обучение и развертывание. Это позволяет использовать конфигурацию модели из одной среды в другой. Глубокое погружение: демонстрация классификации звуков птиц с помощью Lacuna Space Ниже представлена интересная демонстрация использования звуков птиц для классификации и отслеживания конкретных видов птиц по всему миру с помо­ щью космических спутников и сети LoRaWAN, Space (https://lacuna.space, рис. 11.29) 13 • и Lacuna С помощью веб-трекера вы можете определить, в какое время спутник Lacuna Space созданной Edge Imputse будет пролетать в районе расположения вашего устройства, а затем принять сигнал через приложение The Things Network (https://www.thethingsnetwork.org) и просмотреть результаты анализа модели для классификации птичьих криков в среде вашего устройства: { "housesparrow": "0.91406", "redгtngedparakeet": "0.05078", "notse": "0,03125", "satelHte": true, } Вы можете ознакомиться с данными обучения/тестирования, кодом цифровой обработки сигналов и кодом машинного обучения, использованными в этом проекте, перейдя на страницу проекта Edge Impulse "Bird sound classifier" (https://oreil.lyNf4Q0). См. запись в блоrе Орельена Лекертье и др. "Классификация птиц в отдаленных районах с помощью Lacuna Space и The Things Network" (Lequertier А. et al. Bird Classification in Remote Areas with Lacuna Space and The Things Network (https://oreil.ly/4Rneh)). 13
Вариант использования : мониторинг дикой природы Рис. 1 435 11.29. Демонстрация Lacuna Space Имеется и недостаток этого решения: хотя можно идентифицировать и отслежи­ вать классифицированные птичьи крики в окружении вашего устройства, вы мо­ жете получить только общие данные классификации с помощью этого подхода. Какие-либо точные данные о местоположении или отслеживании/учете конкрет­ ных отдельных птиц будут недоступны . Поэтому предложенный метод, скорее всего, более эффективен для отслеживания целых видов, схем миграции и дан­ ных о сезонной идентификации, а не как метод предотвращения чрезмерной охо­ ты, анализа влияния инвазивных угроз и т. д. Искусственный интеллект во благо На протяжении всей этой книги мы обсуждали важность этичного использования инструментов машинного обучения и описанных в ней знаний. Многие компании уже воплотили в жизнь идею "технологии во благо" - от Edge Impulse до Google, а также создали множество проектов по сохранению окружающей среды и диких жи­ вотных и взяли на себя обязательства: ♦ проект" 1% for the Planet" (https://oreil.ly/_xwYK); ♦ обязательство Edge Impulse (https://oreil.ly/CRHOm) перед проектом "1 % for the Planet"; ♦ на сайте Google блог "Tale of а Whale Soпg" (https://oreil.ly/wtlpX); ♦ на сайте Microsoft проект "AI for Good Lab" (https://oreil.ly/oOTGV). Похожие работы Как уже говорилось в этой главе, фотоловушки и природоохранные ловушки - это устоявшиеся, известные и широко используемые устройства в исследовательских
Глава 436 11 работах и в практике этичной охоты. В следующих разделах описываются различ­ ные устройства, наборы данных, научные статьи и книги по теме этичного отлова с помощью камер для решения проблемы сокращения популяций различных исче­ зающих видов и последующей защиты существующих популяций. В этой книге в сносках на каждой странице также указаны источники информации о различных приложениях, методах, устройствах и цитаты из различных исследо­ ваний и коммерческого использования фотоловушек на протяжении всей главы. Наборы данных В Интернете можно найти множество существующих наборов данных и платформ для сбора данных. Их можно использовать в подобных случаях. Простой поиск в Google может дать множество результатов, однако ниже перечислены еще несколь­ ко платформ для сбора данных и исследовательских наборов данных, подходящих для нашего случая: ♦ Kaggle Invasive Species Monitoring Competition (https://oreil.ly/Н4Y3N); ♦ Invasive Alien Plant dataset (https://oreil.ly/xffiKr); ♦ iWildcam 2021 (https://oreil.ly/76OW4); ♦ Labeled Information Library of Alexandria: Biology and Conservation; list of other conservation datasets (https://oreil.ly/-IUvi); ♦ Caltech-UCSD Birds-200-2011, ILU00); ♦ Caltech Camera Traps (https://oreil.ly/boZ8q). классификация птиц по камерам (https://oreil.ly/ Опять же, помните, что вы используете каждый набор данных в этических целях, и убедитесь, что целевой вид в вашей модели не считается исчезающим или находя­ щимся под угрозой исчезновения в месте/регионе, где установлено ваше устройство. Исследования ♦ Хорхе А. Ахумада и др. "Wildlife lnsights: платформа для максимального исполь­ зования потенциала фотоловушек и других пассивных сенсорных данных о дикой природе для планеты" (Ahumada J. А. et al. Wildlife Insights: А Platforrn to Maximize the Potential of Camera Trap and Other Passive Sensor Wildlife Data for the Planet. Cambridge University Press, 2019 (https://doi.org/10.1017/S0376892919000298)). ♦ Питер Эппс, Джон Уэлдон Макнатт "Подходят ли фотоловушки для использо­ вания по назначению? Тщательный, воспроизводимый и реалистичный тест (Apps Р., McNutt J. W. Are Camera Traps Fit for Purpose? А Rigorous, ReproduciЫe and Realistic Test of Camera Trap Performance. - Wiley Online Library, 2018 (https://doi.org/10.llll/aje.12573)). производительности фотоловушки" ♦ Йоханнес Х. Фишер и др. "Потенциальная ценность исследований с использова­ нием фотоловушек для идентификации, определения возраста, пола и изучения
Вариант использования: мониторинг дикой природы 1 437 фенологии фазанов рода Lophura на Борнео" (Fischer J. Н. et al. The Potential Value of Camera-Trap Studies for ldentifying, Ageing, Sexing and Studying the Phenology of Bomean Lophura Pheasants. -ResearchGate, 2017 (https://oreil.ly/udikН)). ♦ Ухьюк Чан, Юй Чхоль Ли "Мноrоклассовая классификация изображений попу­ гаев, включая подвиды со схожей внешностью" (Jang W., Lee Е. С. Multi-Class Parrot lmage Classification Including Subspecies with Similar Appearance // MDPI. - 2021. - November 5 (https://doi.org/10.3390/Ьiol ogy10111140)). ♦ Тимоти Г. О'Брайен, Маргарет Ф. Киннэрд "Лучше один раз увидеть: применение фотоловушек к изучению птиц" (O'Brien Т. G., Kinnaird М. F. А Picture ls Worth а Thousand Words: The Application of Camera Trapping to the Study of Birds. - Cambridge University Press, 2008 (https://doi.org/10.1017/S09S9270908000348)). ♦ Аллан Ф. О'Коннелл и др. (ред.) "Фотоловушки в экологии животных: методы и анализы" (O'Connell А. F. et al., eds. Camera Traps in Animal Ecology: Methods and Analyses. -Springer Tokyo, 2011 (https://doi.org/10.1007/978-4-431-9949S-4)). ♦ Франческо Роверо и др. "Каков тип фотоловушки и сколько их нужно?" (Rovero F. et al. Which Camera Trap Туре and How Many Do I Need? // Hystrix. 2013. -№ 24 (https://doi.org/10.4404/hystrix-24.2-8789)). ♦ Эндрю Шепли и др. "Автоматизированное инвариантное обнаружение живот­ ных на изображениях фотоловушек с использованием общедоступных источни­ ков данных" (Shepley А. et al. Automated Location lnvariant Animal Detection in Camera Trap lmages Using Puьticly Availaьte Data Sources. - ResearchGate, 2021 (https://oreil.ly/FUEJN)).

ГЛАВА 12 Вариант использования: обеспечение качества пищевых продуктов Промышленный ИИ периферийных устройств используется в сфере контроля каче­ ства продуктов питания для автоматического обнаружения и устранения дефектов и предотвращения порчи продуктов. Для этого необходимо обучить модель ма­ шинного обучения распознавать на изображениях продуктов питания или с различ­ ных промышленных датчиков паттерны, указывающие на наличие дефекта. Затем модель устанавливается на периферийное устройство, например камеру, для авто­ матического обнаружения и устранения дефектов в режиме реального времени. Это позволяет обеспечить высокое качество продуктов и свести к минимуму количест­ во отходов. С помощью ИИ периферийных устройств можно предотвращать утилизацию про­ дуктов питания, более эффективно контролируя и управляя их производством и распределением. Например, если возникла проблема с порчей продуктов питания, ИИ периферийных устройств можно использовать для отслеживания проблемы и принятия корректирующих мер. В этой главе мы рассмотрим различные подходы к использованию ИИ периферийных устройств для контроля качества пищевых про­ дуктов, соответствующие конфигурации датчиков и устройств, а также подробно обсудим выбранный нами подход и решение для конкретного случая. Исследование задачи Термин "обеспечение качества пищевых продуктов" - слишком широкое понятие, чтобы рассматривать его в одной главе. И это слишком большая задача, чтобы ре­ шить ее с помощью одной модели машинного обучения. Поэтому в рамках данной книги мы сосредоточимся на обеспечении качества пищевых продуктов с точки зрения предотвращения и минимизации возникновения пищевых отходов на до­ машней кухне, на линии производства или на холодильных складах/стеллажах в продуктовом магазине.
Глава 440 12 Предотвращение утилизации пищевых продуктов может принимать самые разные формы. Можно создать модель машинного обучения, способную определять, когда продукт питания вот-вот испортится или уже испортился. Или создать модель, оп­ ределяющую факторы в среде производства продуктов питания или неправильного обращения с ними, которые приводят к возникновению заболеваний пищевого происхождения. Оба эти подхода преследуют одну и ту же цель - предотвращение и минимизацию утилизации пищевых продуктов, но для ее решения может потре­ боваться различная комбинация классов машинного обучения и входных данных от датчиков. Развертывание устройств с ИИ периферийных устройств на умных фабриках также может привести к повышению производительности и улучшению качества. Вне­ дрение ИИ в производственный процесс поможет сократить количество ошибок и сэкономить время и деньги. С помощью смартфона, подключенного к облаку, со­ тру дни к и службы контроля качества могут следить за производственным процес­ сом из любого места. Применяя алгоритмы машинного обучения, производители могут сразу же обнаруживать ошибки 1 • Исследование вариантов решения lndustry 4.0, по-другому "Четвертая промышленная революция", представляет со­ бой стремительное изменение технологий, отраслей промышленности и общест­ венных моделей и процессов в XXI веке благодаря растущей взаимосвязанности и интеллектуальной автоматизации 2 . ~ Основные тенденции развития четвертой промышленной революции • • Умная фабрика. • • 30-печать. Предиктивное техобслуживание. Умные датчики (сельское хозяйство и пищевая промышленность). ИИ периферийных устройств все чаще используется для контроля качества продук­ тов питания, поскольку с его помощью можно проверять продукты на наличие за­ грязнений, тестировать их качество и даже предсказывать проблемы с безопасно­ стью продукции еще до их возникновения. Контроль качества продуктов это процесс, помогающий обеспечить безопасность и высокое качество потребляемых нами продуктов. Эгот процесс включает в себя множество этапов, питания - таких как проверка продуктов питания на наличие загрязнений, проверка качества, а также поддержание чистоты и безопасности при работе с пищевыми продуктами. 1 См. статью IВМ под названием "Что такое Industry 4.0? Как технологии Jndustry 4.0 меняют производство" (Wl1at 1s lndustry 4.0? How Industry 4.0 Technologies Are Changing Manufacturing ( https://oreil. ly/ZMhe7) ). 2 См. статью 1ш сайте Wikipedia под названием "Четвертая промышленная революция" ( https://oreil.ly/39viN ).
Вариант использования: обеспечение качества пищевых продуктов 1 441 Следуя этим рекомендациям, можно гарантировать, что наша пища безопасна и ка­ чественна. Можно начать интуитивно думать о том, как применить ИИ периферийных уст­ ройств и машинное обучение к проблеме обеспечения качества продуктов питания, обдумав и изучив существующие проблемы и факторы, приводящие к порче про­ дуктов, появлению аллергенов, перекрестному загрязнению производственных процессов и т. д. При погружении в эти существующие области исследований и промышленности возникнет множество проблем, связанных с датчиками и меха­ низмами. Просто подключившись к существующим датчикам или добавив неболь­ шой, минимально инвазивный микроконтроллер в существующую структуру обо­ рудования, можно выявить новые закономерности в установленных наборах данных и конфигурациях датчиков или даже создать совершенно новый датчик ("виртуальный датчик") с помощью концепции, называемой "объединение датчи­ ков" (см. разд. "Объединение признаков и датчиков" главы 4). Постановка целей Безопасность продуктов питания очень важна, поскольку она позволяет гарантиро­ вать, что в потребляемой нами пище нет вредных примесей. Эти загрязнения могут поступать из различных источников, включая бактерии, вирусы и химические ве­ щества. Соблюдая правила безопасности при производстве пищевых продуктов, можно снизить риск заболеть от употребления зараженной пищи в результате пи­ щевых заболеваний. , ••• ~ •-•· Факторы порчи пищевь1х продуктов , • • Существует множество факторов, •( ;i .. • способствующих порче продуктов, включая бактерии, вирусы, грибки, химические вещества и другие различ- . . . • ные факторы окружающей среды, • внешние тепло/холод; • внутренняя температура; • кислород; • соль; • влажность воздуха; • воздействие отходов; • содержание влаги в продукте; • свет; • простейшие организмы. в том числе: Инструменты ИИ для контроля качества продуктов питания важны для обеспече­ ния здоровья работников на производственных линиях и приобретающих продукты потребителей. А также для сокращения общего количества пищевых отходов и ми-
Глава 442 12 нимизации изменения климата и негативного воздействия на окружающую среду. ИИ периферийных устройств для обеспечения качества пищевых продуктов пре­ доставляет возможность исследовать другие значимые области социального воздей­ ствия, например, помогать людям с пищевой аллергией определять, какие продукты безопасны для употребления, а какие - нет, в зависимости от их собственной инди­ видуальной матрицы аллергии. Разработка решения В этой книге мы решили разработать и внедрить недорогую, эффективную и про­ стую в обучении модель ИИ периферийных устройств для контроля качества про­ дуктов питания, чтобы сократить количество пищевых отходов с помощью микро­ контроллера с подключенным датчиком газа. Однако модель ИИ периферийных устройств для обнаружения порчи продуктов нужно создавать не только с помо­ щью газового датчика. Используя принципы и порядок разработки, представленные в этой главе и во всей книге, можно реализовать множество других типов моделей и приложений машинного обучения для поставленных целей. Также можно исполь­ зовать изображения с камер для мониторинга и оборудования, выявлять различные заболевания пищевого происхождения или наличие аллергенов с помощью различ­ ных датчиков окружающей среды и многое другое. Какие решения уже существуют? Контроль качества продуктов питания был и будет одним из главных приоритетов для многих компаний. Для продуктового магазина, который рассчитывает на то, что нестабильный продукт будет продан до истечения срока годности или до того, как он испортится или зачерствеет, любая технология или решение, способные по­ мочь повысить прибыль и сократить количество пищевых отходов, станут ценными инвестициями. Uber тавке помощью еды с использует достижения ИИ, чтобы избежать потерь при дос­ (https://oreil.ly/dtgtz). Michelangelo, платформы машинного обучения Uber Эта модель предсказывает примерное время доставки блюда и помогает водителям доставки и ресторану в режиме реального времени получать обратную связь и расчеты по каждой части процесса доставки заказа пользователя Uber Eats от кухни ресторана до его дома. Местные органы власти также во многом заинтересованы в предотвращении и со­ кращении количества продуктов питания, ежедневно выбрасываемых впустую. По оценкам специалистов Продовольственной сельскохозяйственной Объединенных Наций ежегодно выбрасывается 1,3 Организации млрд тонн продовольствия, что составляет почти треть от всего производимого продовольствия 3 . Этого достаточно, чтобы четыре раза прокормить 815 млн человек4 . 3 Пини Мандель "Внедрение ИИ n продуктовых магазинах" (Mandel Р. Putting the А! in Grocery Aisles (https://oreil.ly/W rkj Е) ). 4 База данных по потерям и порче продовольствия (https://oreil.ly/xe0z6).
Вариант использования: обеспечение качества пищевых продуктов 1 443 Концепции обеспечения качества пищевых продуктов и решения в области ИИ также применяются в продуктах, необходимых для помощи людям, страдающим от различных пищевых аллергий. Самый маленький и быстрый в мире потребитель­ ский датчик пищевых аллергенов Allergy Amulet (https://oreil.ly/ECfGo) позволяет конечному пользователю собрать образец пищи и в течение нескольких секунд по­ лучить отчет о наличии пищевого аллергена. Подходы к разработке решений Опираясь на постановку задачи, можно разработать решение с помощью множества различных подходов. Некоторые из них описаны здесь. Обнаружение порчи продуктов питания, предназначенных для потребительского UllU промышленного использования. Датчик газа (или газовый анализатор)- это устройство, имеющее возможность определять наличие различных газов в воздухе. Он часто применяется в про­ мышленных условиях для отслеживания опасных газов. Однако его можно ис­ пользовать и для определения того, что мясо, рыба или другие особо пахну­ щие/газообразующие пищевые продукты вот-вот испортятся. В сочетании с ИИ периферийных устройств такой анализатор порчи продуктов питания явля­ ется отличным инструментом как для промышленных, так и для домашних ус­ ловий, чтобы минимизировать пищевые отходы и предотвратить заболевания, передающиеся через пищу. Установка датчика газа в холодильнике или на производственной линии продук­ тов питания позволяет пользователю устройства с ИИ в кратчайшие сроки полу­ чить информацию о степени порчи продуктов. Датчик может работать, опреде­ ляя уровень углекислого газа, аммиака или других газов в воздухе, которые образуются, когда мясо или рыба начинают портиться. Обнаружив эти газы на ранней стадии, датчик может предупредить пользователя или работника фабри­ ки об утилизации пищи до того, как она успеет загрязнить другие продукты. Контроль соблюдения требований безопасности к пищевым продуктам. В пищевой промышленности безопасность и соблюдение норм являются перво­ очередными задачами и обычно регулируются местными органами власти. Один из способов защиты конечного потребителя - убедиться, что все люди, рабо­ тающие на линиях упаковки продуктов питания, одеты в соответствующую форму, обеспечивающую безопасность пищевых продуктов, такую как белые халаты, сетки для волос, защитные очки и перчатки. Для отслеживания этой ин­ формации и выявления аномалий можно использовать модель компьютерного зрения. Кроме того, аудиоданные можно использовать для прослуш11вания не­ обыч~ых звуков, указывающих на проблемы в процессе приготовления пище­ вых продуктов. Помимо контроля наличия регламентированной одежды у работников на произ­ водственных линиях, можно разработать модель для отслеживания мытья рук, чтобь, убедиться, что все работники соблюдают определенный протокол безо-
444 Глава 12 пасности и гигиены. Это можно сделать с помощью звука или других данных датчиков. Отслеживая эти данные, можно помочь обеспечить безопасный и эф­ фективный процесс производства продуктов питания. Мониторинг контроля качества пищевой продукции. Фальсификация продуктов питания и обман потребителей - прискорбная ре­ альность современного мира. Например, фальсификация при помощи более де­ шевых или низкокачественных масел оказывает огромное влияние на качество масла в продукте. Среди оливковых масел наиболее часто подделки создаются с использованием подсолнечного, кукурузного, кокосового и масла лесного ореха. Использование электронных носов в этой части обработки является переломным моментом с точки зрения проверки качества для борьбы с этой проблемой 5. Также можно контролировать температуру продуктов на протяжении всего про­ изводственного цикла - от момента производства до упаковки, от упаковки до стеллажей в магазине, от машины доставки до клиента и т. д. Еще важно следить за температурой в морозильной камере и холодильнике и за тем, как она влияет на качество продуктов (количество кристаллов льда, ожоги при замораживании и т. д.), а также за состоянием продуктов- истек ли срок годности или обнару­ жена ли в упаковках гниль. Применяя эти различные меры контроля качества, можно гарантировать, что потребляемые продукты питания будут максимально высокого качества. Обнаружение перекрестного загрязнения и пищевых Ш1Лергенов. Такие аллергены, как орехи и глютен, могут вызывать у некоторых людей серь­ езные реакции и даже смерть. Заводское оборудование иногда ломается, и ку­ сочки металла могут попасть в пищу. Обращение человека с пищей также может привести к появлению таких загрязнителей, как бактерии. Есть несколько спо­ собов определить, не попали ли аллергены в пищевые продукты. Сначала необ­ ходимо проверить, нет ли признаков загрязнения. Это можно сделать, обратив внимание на изменения в цвете, текстуре или запахе. Если пищевой продукт вы­ глядит или пахнет иначе, чем когда он был изначально упакован, он может быть загрязнен 6 . Как же обнаружить эти потенциальные проблемы? Есть несколько способов. Во-первых, можно искать признаки аллергенов в пище. Если в списке ингредиентов есть, например, орехи или глютен, мы знаем, что они могут при­ сутствовать в продукте. Также можно искать признаки загрязнения металлами, например маленькие кусочки металла в пище. Наконец, можно поискать призна­ ки загрязнения людьми, например отсутствие перчаток или других средств за­ щиты. Любой из описанных ранее подходов к решению задач может помочь обеспечить безопасность и отсутствие загрязнений в продуктах питания. Это поспособствует 5 Илькер Коксал "Использование ИИ для повышения качества продуктов питания" (Koksal 1. Using AI to lncrease (https://oreil.ly/kvHri)). 6 Николае Дж. Уотсон и др. "Интеллектуальные датчики для устойчивого производства продуктов питания и напитков" (Watson N. J. et а!. lntelligent Sensors for SustainaЫe Food and Drink Manufacturing // Front. Sustain. Food Syst. - 2021. - Vol. 5 (https://oreil.ly/weN5Q)).
Вариант использования: обеспечение качества пищевых продуктов достижению цели данной главы - 1 445 сокращению пищевых отходов, обеспечению общего качества продуктов питания и повышению благосостояния потребителей и работников производственных линий. Соображения относительно дизайна Для достижения общей цели - предотвращения и минимизации пищевых отходов и улучшения контроля качества и безопасности производства/хранения продуктов питания - с технологической точки зрения можно использовать самые разные ис­ точники данных, включая различные типы датчиков и камер (табл. 12.1 ), чтобы достичь аналогичной цели (сокращение пищевых отходов и повышение безопасно­ сти продуктов питания). Таблица 12.1. Датчики для достижения различных целей контроля качества пищевых продуктов Цель Датчики Выявление утечек в пищевой упаковке Газ, влажность, уровень воды, камера Осмотр пищи на наличие загрязнений Камера или посторонних предметов Контроль качества и дозревания продуктов Камера, температура, газ Обнаружение порчи продуктов Экологические, химические, фотокамера Определение пищевых аллергенов Экологические, химические, газовые Идентификация оборудования/аппаратуры Камера,аудиодатчики для обеспечения безопасности пищевых продуктов человека Определение сроков годности на упаковке Камера Перекрестное загрязнение на упаковочной Камера, химические датчики, тепловизор, линии рентгеновская камера, инфракрасная камера, газовые датчики При выборе цели и варианта использования системы контроля качества пищевых продуктов необходимо учитывать, насколько легко будет собрать большой, надеж­ ный и качественный набор данных для обучения модели машинного обучения. Как мы выяснили в предыдущих главах (особенно в главе 7), качество модели зависит только от качества исходных данных. Если вы хотите создать модель для иденти­ фикации одежды и оборудования на конкретном пищевом предприятии, возможно, вам не у дастся получить достаточно большой набор данных, чтобы успешно обу­ чить высокоточную модель классификации с первой попытки. Конечно, с помощью таких методов, как "активное обучение", модель с низкой точностью можно раз­ вернуть на фабрике. Со временем ее можно улучшить с помощью новых посту­ пающих данных и другой фоновой информации о местоположении устройства.
Глава 446 12 Учитывайте, где будет располагаться устройство, а также различные требования к датчикам и устройствам. ♦ Расположение устройства на этапе сбора первичных данных. ♦ Расположение устройства после развертывания. ♦ Питание от аккумулятора или USВ-питание, или постоянная электросеть. ♦ Требования к окружающей среде (например, вода, туман, грязь и другие факто­ ры окружающей среды), которые могут помешать номинальному использова­ нию датчика или вывести устройство из строя. ♦ Как часто нужно будет заменять датчик - есть ли у него характеристика дегра­ дации в жизненном цикле? ♦ Должен ли датчик быть постоянно включен для достижения номинальных рабо­ чих параметров (т. е. спецификации датчика выгорания газа)? ♦ Сколько времени потребуется датчику для достижения номинального состояния записи, время разогрева и т. д. Экологическое и социальное воздействие По мере роста населения планеты увеличивается и количество производимых нами пищевых отходов. По оценкам, более трети производимых в мире продуктов пита­ ния пропадает зря. Это 1,3 млрд тонн продовольствия в год! Это не только огром­ ная трата ресурсов, но и значительное влияние на окружающую среду 7. Пищевые отходы являются одним из основных источников выбросов парниковых газов. Когда продукты гниют на свалках, они выделяют метан - газ, более мощ­ ный, чем углекислый газ. Сокращение количества пищевых отходов - один из са­ мых простых и эффективных способов уменьшить наше воздействие на экологию планеты и снизить темпы развития глобального изменения климата 8 . Помимо экологических преимуществ, сокращение количества пищевых отходов может положительно сказаться на нашем здоровье. Выявление порчи продуктов или заболеваний на ранних стадиях может предотвратить вспышки пищевых от­ равлений, сальмонеллы и других болезней, передающихся с пищей. А уменьшение количества пищевых аллергенов и перекрестного загрязнения улучшит жизнь лю­ дей со смертельно опасной пищевой аллергией. Повышение безопасности и качества продуктов питания на производственных ли­ ниях способствует физической безопасности работников и общему здоровью ко­ нечного потребителя. Инспекторы по контролю качества играют важную роль в обеспечении безопасности и высочайшего качества наших продуктов питания. Со7 См. веб-сайт Продовольственной сельскохозяАственной Организации Объединенных Наций (https://www.fao.org/hom e/ru ). 8 См. статью "Пищевые отходы и их связь с парниковыми газами и изменением климата" (Food Waste and lts Links to Greenhouse Gases and Climate Change (https://oreil.ly/AMnGh)).
Вариант использования: обеспечение качества пищевых продуктов 1 447 кращая отходы всех ресурсов в целом, при своевременном выявлении проблем с качеством продуктов питания можно спасти жизни людей, выявляя и устраняя пи­ щевые аллергены. Начальная загрузка По аналогии со статьей Бенджамина Кабе "Создание электронного носа", в этой главе мы рассмотрим комплексное решение для обеспечения качества продуктов питания, особенно в части сокращения пищевых отходов путем определения и классификации того, когда филе лосося было куплено (и, надеемся, свежее), а когда оно испортилось. После того как будет собран набор данных с выборками данных газовых сенсоров "испорченный" и "дата покупки/свежий", мы соберем третий класс данных для "окружающей среды", чтобы убедиться, что обученная модель машинного обучения может различать данные о газе, образуемом при изменении свежести рыбы вблизи устройства. Эти три класса позволят модели машинного обучения по классификации опреде­ лить, какой вид рыбы присутствует в зоне действия газового датчика на нашей це­ левой периферийной платформе. Устройство, расположенное на периферии, непре­ рывно получает исходные данные с газового датчика, а обученная МL-модель определяет, можно ли употреблять филе лосося, находящееся рядом с устройством, или оно уже испортилось. Полученный результат прогнозирования и данные газо­ вого сигнала, если будет сделан вывод о том, что филе лосося испорчено, будут от­ правлены по сетевому соединению или сохранены локально на устройстве для дальнейшей обработки человеком или в облаке. Определение классов машинного обучения В табл. 12.2 показаны возможные комбинации сценариев использования, типов датчиков и входных данных. Также в ней содержатся классы машинного обучения, используемые для сбора и присвоения меток обучающим и тестовым наборам дан­ ных. Примеры применения и связанные с ними метки классов важны для исполь­ зуемого в этой главе типа алгоритмов машинного обучения, а именно для класси­ фикации. Подробнее об этом можно узнать в разд. "Классификация" главы Таблица 12.2. 4. Классы машинного обучения для решения задач, связанных с 1<ачеством пищевых продуктов Пример использования Данные для обучения Обнаружение порчи продук- Газ Метки классов Испорчено, свежее, окружающая среда тов питания Обнаружение одежды для Изображения (с ограничи- Защитная одежда или СИЗ обеспечения безопасности тельными рамками) (средства индивидуальной пищевых продуктов защиты)
Глава 448 12 Таблица 12.2 (окончание) Данные для обучения Метки классов Определение срока годности Изображения (с ограничи- Дата истечения срока по упаковке тельными рамками) годности Выявление нарушения Уровень воды, влажность Номинальное значение, пищевой упаковки воздуха, содержание влаги утечка Пример использования в продукте Контроль качества продуктов Готово, не дожарено, пере- Температура, газ жарено, окружающая среда питания В этой главе мы выберем и выполним сборку на примере обнаружения порчи про­ дуктов питания с помощью машинного обучения классификации данных датчиков. А классами машинного обучения в нашем проекте будут purchase_date spoiled (испорченный), (дата покупки) и amЬient (окружающая среда). Сбор набора данных Техническую и конкретную информацию о том, как собрать чистый, надежный и полезный набор данных, см. в разд. "Получение данных" главы 7. Можно также ис­ пользовать различные стратегии сбора данных из нескольких источников, чтобы создать собственный уникальный набор данных для вашего случая: ♦ объединение общедоступных исследовательских наборов данных; ♦ использование существующих наборов данных датчиков с сайтов по сбору дан­ ных, созданных сообществом, таких как Kaggle; ♦ заручитесь помощью коллег, чтобы собрать выборки для вашего совместного проекта Edge Impulse. Edge lmpulse В разд. аккаунт "Edge lmpulse" главы 11 описано, что вам Edge Impulse (https://edgeimpulse.com), необходимо создать бесплатный чтобы следовать инструкциям, описанным в этой главе. Дополнительное обоснование использования Edge Impu\se для разработки моделей периферийного машинного обучения с.н. в разд. ''Комплексные платформы для ИИ периферийных устройств" главы Публичный проект Публичный 5. Edge lmpulse проект https://oreil.ly/W3_vb. Edge Impulse для этой главы доступен по ссылке:
Вариант использования: обеспечение качества пищевых продуктов 1 449 Выбор оборудования и датчиков В этой книге мы стараемся вести работу максимально независимо от устройств, но нам также необходимо обсудить, как можно использовать готовый, простой в при­ менении комплект для разработки, чтобы создать решение для нашего случая. Та­ ким образом, цель этой книги - выбрать максимально простое, доступное и недо­ рогое оборудование. Поскольку Edge Impulse уже предоставляет большой набор официально поддержи­ ваемых платформ для разработки с различными встроенными драйверами датчиков и прошивками с открытым исходным кодом, для простоты этого проекта и сбора данных газовых датчиков контроля качества пищи мы будем использовать устрой­ ство ком Arduino Nicla Sense МЕ (https://oreil.Iy/tepYH) Bosch ВМЕ688 (https://oreil.ly/zlBzE). со встроенным газовым датчи­ Конфиrурация аппаратного обеспечения Встроенный датчик ВМЕ688 платформы Arduino Nicla Sense ME's (https://oreil.ly/QrdRl) может обнаруживать летучие органические соединения (ЛОС - volatile organic compounds, VOC), летучие сернистые соединения (ЛСС volatile sulfur compounds, VSC) и другие газы, такие как угарный газ ~, водород, в диапазоне миллиардной доли (ррЬ)9 . Ниже приведен список некоторых других типов датчиков. Их следует рассмотреть для повышения точности модели обеспечения качества продуктов питания в зави­ симости от конкретной среды, условий использования, бюджета проекта и т. д.: ♦ другие газы: аммиак, метан, кислород, СО 2 и др.; ♦ температура; ♦ давление; ♦ влажность воздуха; ♦ радиолокация; ♦ качество воздуха. ~ Объединение датчиков Объединение датчиков - популярная техника во встраиваемых системах, когда вы объединяете данные с различных датчиков, чтобы получить более полное или точное представление о мире вокруг вашего устройства. Под­ робнее об объединении нескольких датчиков знаков и датчиков" главы c.w. в разд. "Объединение при­ 4. Сбор данных При использовании Edge lmpulse существует масса возможностей для загрузки и маркировки данных в ваш проект. Многие из наиболее распространенных инстру- 9 См. статью Bosch о датчике ВМЕ688 (https://oreil.ly/zlBzE).
Глава 450 12 ментов ввода данных были описаны ранее в разд. "Сбор данных" главы 11 . В сле­ дующих разделах мы рассмотрим конкретные инструменты сбора данных, которые будем использовать в этой главе об обеспечении качества продуктов питания. Встроенное программное обеспечение для сбора данных Дnя того чтобы получить данные с устройства прошить скетч поглощения данных из Arduino Nicla Sense МЕ, необходимо Arduino CLI (https://oreil.ly/YyOZ6) на сво­ ем устройстве. Затем, используя Edge lmpulse CLI (https://oreil.ly/rPI3S), подключим устройство к Nicla проекту и начнем записывать новые выборки данных с датчика газа на плату Sense. Сначала создайте на компьютере новый каталог под названием food и новый файл food. ino с кодом, приведенным в примере 12.1. , .................. ................................................................................................................................................................................................................................................................ ] \ Пример 12.1. Скетч Arduino для записи данных о rазе Nicta Sense на ) последовательный терминал : ........................................ ,.........................,...................................... ,, .............. ,.. ,, ............ ,.. ,, ............. ,.. ,.,,, .. ,· ... ,,.,, ............ ,,,, .............................. ,,.,, ................ ,,,,,,, ...................... ,.J /** * Нйсl'lройка чacf'/ON дискреl'luзации. 3Рю чacl'IOl'IO, используемая для 01'/nравки * данных * * в сf'lудию, независимо Ol'I чacf'IOl'IЬI, используемой для выборки данных с даl'IЧика. Для разных даf'IЧиков 31'/О значение различно и можеf'I быf'lь изменено в API даf'/Чuка. */ #deftne FREQUENCY_HZ 10 /*Включения•······························································*/ #i.nclude "Ardutno_ВЖ2.h" Консf'/ОнN •······························································ */ #deftne INTERVAL_MS (1000 / FREQUENCY_HZ) #deftne CONVERT_G_TO_MS2 9.8066Sf /* /* Предвариl'lе//ьное объявление··············································*/ voi.d et_prtntf(const char /* *fогмаt, ... ); Прuваf'lные переменные•····················································*/ stati.c unstgned tong last_tnteгval_l'IS = Sensor gas(SENSOR_ID_GAS); voi.d setup() { /* Инициализация серии */ 0;
Вариант использования: обеспечение качества пищевых продуктов 1 451 Serial.Ьegin(115200); Serial.println("Edge Il'lpulse sensor data /* ingestion\г\n"); Инициализация и запуск газового даf'/Чuка */ BНV2.Ьegin(NICLA_I2C); gas.Ьegin(); } voi.d loop() { BНV2.update(); delay(INTERVAL_MS); ei_printf( "%. 2f", gas. value()); ei_prtntf("\r\n"); } /** * @Ьгiеf через * printf испальзуеРI vsnprintf, Arduino Serial Функция * * @paraPl[in] forPIOt */ voi.d ei_printf(const а вывод осУ14есР1вляеР1Ся Список аргуменf'Юв переменных сhаг *forl'lat, ... ) { stati.c сhаг print_buf[1024] = { 0 }; va_ti.st aгgs; va_start(args, forl'lat); i.nt г = vsnprintf(print_buf, si.zeof(print_buf), forl'lat, args); va_end(args); i.f (г > 0) { Serial.write(print_buf); } } Arduino Nicla Sense МЕ показано в примере 12.2. Скомпилируйте и загрузите скетч в плату Arduino CLI (https://oreil.ly/YyOZ6), как при помощи
452 i Глава 12 Пример 12.2. Команды интерфейса Arduino CLI , i :......... .... ..... ................ ........... .. ,,1,, .. .. ...... .. .... ................ , ............. ... ....................... ...... ...... ,,, ,., , ........ ....................... ... ............ ..... ..... ..... .......... ...... ....... ,,,,, ...... .... ... ........... , ... ,,, ,, ,, .. , .... ,: $ $ $ $ $ $ cd food arduino-cli соге install arduino:мЬed_nicla arduino-clt ltb tnstall Ardutno_BНY2 arduino-clt ltb install ArdutnoBLE ardutno-cli coмpile --fqbn arduino:мЬed_ntcla:ntcla_sense --output-dtr . --verЬose arduino-clt upload --fqbn arduino:мЬed_nicla:ntcla_sense --tnput-dir --verЬose Загрузка данных в Edge lmpulse Теперь, когда мы прошили наш скетч получения данных на плату пользуя Edge lmpu\se CLI Nicla Sense, ис­ (edge-iмpulse-data-forwarder), войдите в свой проект и подключите устройство для поглощения данных с последовательного порта ком­ пьютера в проект Edge Impulse (пример 12.3). [.. Пример"12.3 ... подключение. Nicla"Sense .к _проекту" Edge _lmpulse ............................................................................. $ edge-tмpulse-data-forwarder Edge Iмpulse data forwarder vl .16.0 Endpoints: Websocket: wss://rerюte-мgмt.edgeiмpulse.coм API: https://studto.edgeiмpulse.coм Ingestton: https://ingestion.edgetмpulse.coм ? Which devtce do you want to connect to? /dev/tty.usЬrюdeмES3378312 (Ardutno) [SER] Connecting to /dev/tty.usЬмodeмES3378312 [SER] Sertal ts connected (ES:33:78:31) [WS] Connecting to wss://reмote-мgмt.edgetмpulse . cOl'1 [WS] Connected to wss://rerюte-мgмt.edgeiмpulse.cOl'1 ? which project do you want to connect thts devtce? AI at the Edge / Use Case: Food Qualtty Assuran [SER] Detecting data frequency ... [SER] Detected data frequency: 10Hz ? 1 sensor axes detected (ехамрlе values: [9513]). What do you want to call theм? Separate the памеs wtth ',': gas ? What паме do you want to give thts device? Ntcla Sense [WS] Device "Ntcla Sense" is now connected to project "Use Case: Food Quality Assurance" [WS] Go to https://studio.edgetмpulse.cOl'l/studio/115652/acqutsttton/tratntng to build your мachtne learning мodel! То i
Вариант использования : обеспечение качества пищевых продуктов Теперь поместите Nicla 1 453 Seпse МЕ рядом с испорченным или свежим (по дате по­ купки) продуктом (в данном случае лососем) или где-нибудь в том помещении, где находится продукт. На вкладке Data acquisition (Сбор данных) своего проекта установите перечислен­ ные ниже настройки в разделе нажмите кнопку Sense Record new data (Запись новых данных), а затем Start sampling (Начать выборку). Это даст команду плате Nicla через последовательное соединение начать запись данных и продолжать ее в течение 20 минут ( 1 200 ООО мс) со встроенного датчика газа ВМЕ688 (рис. 12. 1). Убедитесь, что вы ввели соответствующую метку выборки для текущей конфиrу­ рации записи вашего устройства . Label (Метка) . spoiled (испорченный), purchase_date (дата покупки) или amblent (окружающая среда). Sample length (ms.) (Дrщна выборки (,'Wc)). 1200000. Sensor (Датчик). Sensor with 1 axes (gas) Frequency lOНz (Датчик с одной осью (газ)). (Частота). ( 1О Гц). Record new data ..,.. Connect uslng WebUSB DevlceФ Nlcla Sense Sample length (ms.) Label spolled 1200000 Frequency Sensor Sensor wlth 1 axes (gas) 10Hz V I 1 Start sampling Рис. 12.1. Сбор данных: запись новых данных Повторяйте этот процесс до тех пор, пока у вас не будет по крайней мере минут данных для каждого класса машинного обучения ния (в общей сложности). - 20-60 обучения и тестирова­
454 Глава 12 Автоматическая выборка с помощью автоматизации браузера Вы можете легко автоматизировать процесс в консоли разработчика веб­ браузера с вызовом JavaScript-кoдa, сымитировав автоматическое повтор­ ное нажатие кнопки lmpulse каждые const de1ay 22 = мs => (Начать выборку) в проекте Start sampling минуты (или 1 320 new PrOl'1tse(res Edge ООО мс): => setTil"leOut(res, мs)); whi.le(l) { docuмent.getE1eмentByid("tnput-start-saмpltng").cltck(); awatt delay(1320000); }; Очистка набора данных Просмотрите советы, приведенные в разд. "Очистка набора данных" главы 11, а затем вернитесь к этой главе. Поскольку выборки газовых датчиков записывались в течение 20 минут, чтобы по­ лучить более четкое представление о содержимом каждой выборки, мы разделим их на несколько подвыборок длительностью случае). На вкладке Data acquisition 30 ООО мс (или 29 880 мс в данном (Сбор данных) в выпадающем списке с тремя точками справа от названия выборки щелкните левой кнопкой мыши по пункту Split sample (Разделить выборку) (рис. 12.2). т Collected data !,! SAMPlE NAME LABEL AODED lENGTH purchase_date .Зe9dn3gg purchase_date Yesterday, 10:29:25 4m 59s spoiled3ebjl1 ns.s2 spolled Yesterd,iiJ, 10:28:SЗ 4m59s spoiled.Зebnispv. s1 spolled Yesterday, spoiled .Зebnispv.s2 spoiled Yesterday, 1~ spoiled.ЗeЫdkja.sЗ spoiled Yesterday, 1С spoiled.ЗeЬq06Ы.s2 spoiled Yesterday, spoiled.ЗeЬldббj . s4 spoiled Oct 03 2022, 1С .t. Rename Edit label Move to test set 1С DisaЬle Сгор sample Split sample Download spolled.ЗeЬldббj.s3 spoiled Ос103 spoiled.ЗeЬldббj . s1 spolled Ос1 Рис. 12.2. 2022. Delete 03 2022, 16:5... 4m59s Сбор данных: выпадающее меню выборки
455 Вариант использования: обеспечение качества пищевых продуктов 30 ООО мс в Add Segment Скорее всего, вы сможете уместить четыре подвыборки длиной около представлении Split sample (Разделение (+ Добавить сегмент), чтобы Split (Разделить) (рис. 12.3). выборки). Нажмите кнопку+ добавить больше сегментов, затем нажмите кнопку Shlftsamplesф C1ncel Рис. 12.3. Сбор данных: Рис. 12.4. разделение выборки Сбор данных: обрезка выборки -
Глава 456 12 Также можно обрезать выборки, выбрав пункт Crop sample (Обрезать выборку) из выпадающего меню рядом с названием выборки, как показано на рис. 12.4. Лицензирование наборов данных и юридические обязательства Ознакомьтесь с разд. ''Лицензирование наборов данных и юридические обязатель­ ства" главы 11, чтобы определить лицензионные и юридические обязательства ва­ шего набора данных. Поскольку мы напрямую загружаем и используем данные, собранные с нашего домашнего и личного устройства Nicla Sense через последова­ тельный порт компьютера, у нас не будет никаких лицензий на наборы данных или юридических проблем, требующих рассмотрения. Однако если вы используете данные о газе или другие данные датчиков из публич­ ного источника в дополнение к собственным данным, полученным с помощью та­ кого устройства, как Arduino Nicla Sense МЕ, проявите должную осмотрительность. Вам предстоит определить правила использования данных и требования к авторст­ ву, преЖде чем загружать эти выборки в наборы данных для обучения/тести­ рования и использовать обученную модель на основе этих данных. Рабочий процесс DSP и машинного обучения Теперь, когда мы загрузили все изображения в обучающий и тестовый наборы дан­ ных, необходимо извлечь наиболее важные признаки исходных данных с помощью цифровой обработки сигналов (DSP). Затем нужно обучить модель машинного обу­ чения выявлять закономерности в извлеченных признаках данных датчиков. Impulse называет (lmpulse design). Вкладка рабочий процесс обучения Impulse design DSP и ML (Дизайн импульса) вашего проекта Edge "дизайном импульса" Edge Impulse позволяет просматривать ваш полный конвейер машинного обучения и в графическом виде отображать его. Слева находится блок исходных данных, в него Edge Impulse Studio поместит данные и выполнит их поглощение и предварительную обработку, а так­ же установит увеличение и размер окна. В этом представлении можно также пони­ зить или повысить дискретность данных временного ряда, если вы загрузили вы­ борки данных с устройств, выполнявших запись с разной частотой. Далее следует блок DSP, откуда мы будем извлекать наиболее важные признаки газовых данных с помощью скрипта цифровой обработки сигнала с открытым ис­ ходным кодом под названием Flatten. После того как признаки данных будут сгене­ рированы, обучающий блок обучит нашу нейронную сеть, основываясь на желае­ мой архитектуре и настройках конфигурации. Наконец, можно увидеть информацию о результатах развертывания, включая желаемые классы, которые наша обученная модель purcl1ase_date (дата машинного покупки), обучения должна spoiled (испорченный) и классифицировать ambient (окружающая как среда).
Вариант использования: обеспечение качества пищевых продуктов В проекте 1 457 Edge lmpulse настройте вкладку lmpulse design (Дизайн импульса) так, 12.5, или как указано в списке далее, выбирая из различных как показано на рис. всплывающих окон Impulse (Сохранить Тiте series data блоков нужные варианты, нажмите кнопку Save (Данные временного ряда). • Window size (Размер окна): 10000 ms (мс). • Window increase (Увеличение • а затем импульс). Frequency (Hz) • Zero-pad data размера окна): (Частота (Гц)): 500 ms (мс). 1О. (Данные нулевого уровня): установить флажок [х] . Processing Ыосk (Блок обработки). • Flatten. Learning Ыосk (Б1ок обучения). • Classification (Keras) (Классификация). о Flatten flatt@n lnput a.x@s (1) а ... • .................................._______ . , 1 t 1..... ~~d_. Рис. • proce~s,n~Ыo:: 12.5. •• .... •·········•····· ~ Add а !••:.~:~.~-~~:... .. ....i Конфигурация дизайна импульса Блок цифровой обработки сигналов Для проекта, представленного в этой главе, мы будем использовать по умолчанию включенный в Edge lmpulse Studio алгоритм цифровой обработки сигнала. Этот блок Flatten уже написан и доступен для свободного применения и бесплатного развертывания с платформы. Код, используемый в блоке Flatten, доступен в репози­ тории GitHub Edge lmpulse под названием processing-Ьlocks (bttps://oreil.ly/_dSjf). обработки Вы также можете узнать о специфике различных алгоритмов цифровой обработки сигналов в разд. "Алгоритмы цифровой обработки сигншюв" главы 4.
Глава 458 12 Если вы знакомы с написанием собственного кода цифровой обработки сигналов или хотите использовать собственные пользовательские DSР-блоки, ознакомьтесь с ин­ формацией, представленной в разд. "Блок цифровой обработки сигналов" главы Настройте блок выбрав вкладку Flatten, параметры, которые показаны на рис. Flatten на 12.6, или, как панели навигации, задав те же указано в списке, отредактиро­ вав различные флажки и поля текстового ввода . Затем нажмите кнопку parameters (Сохранить 11. Save параметры) . Parameters Scaling Scale axes 0.001 Method Average Mlnlmum Maxlmum Root-mean square а Standard deviation а Skewness Kurtosis Save parameters Рис. 12.6. Конфигурация параметров блока Flatten Масштабирова11ие. • Scale axes (Оси масштабирования) : 0.001 . Метод. • Average (Среднее): • Minimum (Минимальное) : установить флажок [х). • Maximum (Максимальное): установить флажок [х]. • Root-mean square установить флажок [х]. (Среднеквадратичное значение) : установить флажок [х).
Вариант использования : обеспечение качества пищевых продуктов • Standard deviation (Стандартное отклонение): установить флажок [х] . • Skewness (Асимметрия) : • Kurtosis снять флажок (Куртозис): снять флажок Теперь нажмите кнопку 459 [ ]. [ ]. Generate features (Сгенерировать признаки), чтобы про­ смотреть проводник признаков ваших данных (рис . 12. 7). Feature explorer ф Tralnlng~t 2h S4m 18s Oat.a in trainlnJ set XAxls ZAxls YAxls 111sM11xln1Um • 10,,,s Tr11lnin& wlndows . аmо"м • pun:l'lt141..d1tt • 1pollltd \ " Calcul11te reatur1 lmporunct • • iЫlfliil:iiilii • feature gen,ratlon output '$.(01 Cre1tU'l/jl win!Ю,,,s frOII ti\e1 .. , 1211,1 P~-<:t<.h1ng t1le1 ... lll/1t] Pre-C&cl\ingtl.lt1,,, Pre-co<ri1no f1\es ок 1 1/]SI trett1ng windOlo'S fr0/1 t1le1 ... 1))/]!il Crп'1ng w1ndows froм fHes,., (re1ttd 1t\15 winc1ows1 111Ь1ent: 4]]!1, purch11e_d1te: 11!16, spo1\ed: 462• On-device performence Ф С,е11uн, fe1ture1 1/IIHSI Cro1lng fellures.,, 1 l\t115/lt1l51tre1tl.1111te1tures,,, PROctSSINC. 11МЕ • C""•tlIO f•1tur11 Рис. 12.7. о Oms. Проводник признаков блока PLA.КRAMU:МGE 820 Bytes Flatten Блок машинного обучения Теперь мы готовы к обучению нашей периферийной модели машинного обучения! Существует несколько способов обучения модели в из них - Edge Impulse. Самый простой режим визуального (или веб-графическоrо) редактирования. Однако если вы инженер, специалист в области машинного обучения или уже имеете опыт рабо­ ты с TeпsorF\ow/Keras, то вы также можете редактировать свой блок трансферного обучения локально или в экспертном режиме в Edge lmpulse Studio. Можно задать архитектуру нейронной сети и другие параметры конфигурации обу­ чения проекта на вкладке NN Classifier (Нейросетевой классификатор). Визуальный режим Самый простой способ настроить и задать параметры обучения машинному обуче­ нию и архитектуру нейронной сети - это режим умолчанию, когда вы выбираете вкладку Edge Impulse Visual, или вид по NN Classifier (Нейросетевой классифика-
460 Глава тор) в разделе 12 Impulse design (Дизайн импульса) на панели навигации (рис. 12.8). Скопируйте эти настройки в конфигурацию блока нейросетевого классификатора, а затем нажмите кнопку Start training ♦ Number of training cycles ♦ Learning rate ♦ Validation set size ♦ Auto-balance dataset (Начать обучение): (Количество циклов обучения): (Темп обучения): 50; 0.0005 ; (Размер проверочного набора) : 20%; (Набор данных с автоматической балансировкой) : флажок не установлен ; Neural Network settings Training settings Number of training cycles Ф 50 Learning rate Ф 0.0005 Validation set size Ф 20 Auto-balance dataset Ф Neural network archltecture lnput layer (5 features) Dense layer (8 neurons) Dense layer (4 neurons) Flatten layer Add an extra layer Output layer (3 classes) Рис. 12.8. Настройки нейронной сети %
Вариант использования : обеспечение качества пищевых продуктов ♦ Neural network architecture (Архитектура нейронной сети): • Dense layer (8 neurons) (Полносвязный слой (8 нейронов)); • Dense layer (4 neurons) (Полносвязный слой (4 нейрона)); • Flatten layer (Сглаживающий Полносвязные (плотные) слои 461 слой). это полностью связанные слои, простейшая фор­ - ма слоев нейронной сети. Мы используем их для обработанных данных с выхода блока Flatten DSP. Model verslon: (Z) Model Quantized (lnt8) • Last tralnlng performance (validation set) ACCURACY • 99.7% Confuslon matrlx (valldation set) • LOSS 0.02 PURCHASE_DATE AMBIENT SPOILED AMBIENT О'6 PURCHASE_DAТE 100% SPDILED 1.00 F1 SCORE 1.00 0.99 Data explorer (full trainlng set) ® 8 8 8 8 amblent • correct purchase_date - correct spoiled • correct purchase_date - incorrect On-devlce performance ® • INFERENCING ... РЕАК 1 ms. 2.2К Рис. RAM USA... о FLASH USAGE 46.4К 12.9. Окно Model > Last training performance
462 Глава 12 Сглаживающий слой преобразует многомерные данные в одно измерение . Перед возвратом данных из сверточноrо слоя их нужно сгладить. Подробнее о конфигу­ рации нейронной архитектуры (https://oreil.ly/J57H-). можете узнать в документации Edge lmpulse После завершения обучения модели можно просмотреть результаты трансферного обучения в окне Model > Last training performance 12.9). (Мо­ дель> Результаты последнего обучения) (рис. Вы уже знаете, как писать код TensorFlow/Кeras на ность включения экспертного режима (Expert mode) Python? Используйте возмож­ в Edge lmpulse, чтобы загру­ зить собственный код или отредактировать существующий код блока локально, нажав кнопку с тремя точками справа от заголовка блока (Настройки нейросети) (рис. Neural Network settings 12.1 О). etwor sett ngs Tralning settings Valldation set slze Ф 20 Neural network architecture 4 5 б 7 8 9 10 mport tensorflow as tf from tensorftow . keras .nю dels "import Sequentiat from tensorflow . keros. layers "import Dense , InputLayer, Dropout , Conv1D, ConvZD, Flotten, Reshope, МaxPooli.nglD, МoxPooli.ngZD , BotchNonnoli.zation, TimeDistributed , ReLU , Softmax from tensorflow. keras. optimizers i~rt Adam EPOCHS - args . epochs or 50 LEARNING_RATE - orgs . learning_rate or 0 .0005 # this controls the batch size, or you сап nюnipulate the tf . data . Dataset objects yourself BATCH_SIZE - 32 tratn_dataset • tratn_dataset. batch(BATCH_SIZE, drop_remai nder -False) vol tdotton_dotoset • vol i.dotion_dotoset. botch(BдTCH_SIZE, drop_remainder-Folse) 11 12 # model archi tecture 13 modet • Sequentiol() 14 modet .odd(Dense(B, activotion- 'relu' , 15 acti vi ty_regutarizer• tf . keras . regutarizers . l1(0 . 00001))) 16 modet.odd(Dense(4, octivation•'relu', 17 octi vi ty_regutarizer• tf . keras. regutarizers . l1(0 . 00001))) 18 modet . odd(Flatten()) 19 nюdet .odd(Dense(closses, nome• 'y_pred', octivotion- ' softmax' )) 20 21 22 23 24 25 # this controls the learning rote opt • Adom(leorning_rate• LEARNING_RATE, beta_l-0. 9, beta_2-0. 999) cot lbacks .oppend(BotchloggerCal tback(BдTCH_ SIZE, troin_sC1111)le_count, epochs- EPOCHS)) # troin the neural network Рис. 12.10. Редактор в экспертном режиме
Вариант использования : обеспечение качества пищевых продуктов 463 Тестирование модели Подробные детали и описания всех возможностей тестирования модели, доступных в Edge lmpulse, описаны в разд. "Тестирование модели" главы 11. Classlfy new data [ ~ Classlfy exlsting test sample Connect usl ng WebUSB ) Device Ф Nlcla Sense Sensor Sensor w ith 1 axes (gas) Sample length (ms.) 10000 Frequency 10Hz s poiled . ЗeЬldббJ. s2 Рис.12.11. Классификация в реальном времени (spoiled) Arduino Nicla Sense МЕ Summary test1ng.3eg61cJf6 Nam e Ех рюеd outcom1 (AHGOA'f' tesnng COUNf •mЬent purchase:_ CUt1 Flatten uncert.1ln х Dttalled result flMISTAMr Show onty unknowns AMIIENT 1.00 ,uACHASI_OAТf Axis gas Average • pun:hlsc_daie sp01i.d 8 d1sstflc.111000 ZAJcls 1as Mlnimum 1as Maxlmum so •mЬi•nt • • V AJtls •\ .,, '; ~ ,. \ "' ~ ,о g,, "' ..,, ,. ~....,,'>1'1111r1) "' ,о ' J <tf 10 ~ Proc1111d f•1tur11 ••.J•oa, • 1.121t, ••.t64e, Рис. 4s . з set , е .19 s з 12.12. Классификация в реальном времени с результатом тестирования без меток
Глава 464 12 Классификация в реальном времени На вкладке Live classification (Классификация в режиме реального времени) можно тестировать отдельные тестовые выборки непосредственно с подключенного уст­ ройства Arduino Nicla Sense 12.3. МЕ (рис. 12. 11 , 12.12). Инструкции по подключению описаны в примере Или загрузите изображение существующего тестового набора данных в разделе Classify existing test sample (Классифицировать существующую тестовую выбор­ ку), чтобы просмотреть извлеченные признаки этой выборки и результаты предска­ зания обученной модели, как показано на рис. 12.13. Classification result Summary Name spoiled.3eЫdббj.s2 Exp«ted outcome spoil~ соuнт !ATfGOJtY amЬlern purdwse_date Flatten 578 uncertвin У XAxis Detalled rмult Show only unknowns TIM[SТAMP Sl'Olt[O gas Average . ·• О.'9 500 0.99 1000 0.99 1500 0.99 Рис. 12.13. • cli,ss/f1ed Axis . gasMlnlmum ZAxls g.asMaximum , purct,.иe_date • spoilt(I 8 cl.1ss/fii:atJonO Классификация в реальном времени с существующим результатом тестирования с метками Протестируйте модель Вы также можете провести массовую классификацию тестового набора данных по обученной модели, перейдя (https://oreil.ly/1Xc63) на вкладку в своем проекте. Model testing (Тестирование модели) Подробнее об этой вкладке читайте в разд. "Тестируем модель" главы 11. Нажмите на кнопку (Классифицировать все), чтобы получить матрицу Classify all результатов выводов, сделанных обученной моделью на выборках тестового набора данных (рис . 12.14).
Вариант использования: обеспечение качества пищевых продуктов l·F#U Testdata 465 Model testlng output ~t the exp«tl!d outcom@' for each sample to the desired outcome to Model testlng results automaticall)I score the 1mpulse. EXPf(l'fO OUT \.fNC. spolled.Je_ spo,Jod .,,,.._ spolled.Эe .. , spolled SAM~l( .. ir.1111 spoiledЗ. ... _... ""15. 1mtмnt.Э ... ,mblent ~5... •mblent.3- emЫ@n\ .tmS ... amb~. amЬ"'1t 4m5.. ptКChne_- pu,Ch.1se_c1Мe 4mS_ purchase_... pufCN~_dat.e 4mS... 4tft5,_ ACCUUCV IIESULT """' ,_ 578 spo,ted о ACCURACY 100.00% 578-led ···- AM81f.NT Alo't81[NT 576spo<led ,_ l'VIICHASE S18•mtмent S78 arr\Ьient ,_ 578amblent 578 purCNse_dat! ,_ S78 pwchise_ d.lte ОАТf °"' Sl'OILED "' FI SCOltf "" ОАН ••- °"' SJIC!I...E0 UNORrAIN О.. C-'lt 04' 0.. MI , . 0-. Feature explorer ф gasAverage • • amЬ~nt - corrкt 8 spoilIO • СОfТЮ gasMinimum gas Max:mum 1О purctuse_d.J~ - corrкt 25 "i zo ,s ~ 12.14. ОМ, м ~ Рис. PURCHAH M··:W ,о Результаты тестирования модели Развертывание Поздравляем! Вы только что закончили сбор и присвоение меток обучающему и тестовому наборам данных, извлечение признаков из данных с помощью блока DSP, разработку и обучение модели машинного обучения, а также тестирование модели на тестовом наборе данных. Теперь, когда у нас есть весь код 11 информация о модели, необходимая для выводов на периферийном устройстве, необходимо прошить предварительно собранный двоичный файл на устройство или интегриро­ вать библиотеку С++ в код нашего встроенного приложения . Выберите вкладку шаги для одного Deployment (Развертывание) проекта Edge lmpulse и выполните из множества вариантов развертывания в следующих разделах, чтобы запустить обученную модель машинного обучения на периферийном уст­ ройстве. Также доступно множество других вариантов развертывания, некоторые из них уже были описаны в разд. "Развертывание" главы 11 . Готовая бинарная прошивка На вкладке Deployment форму разработки (Разработка) выберите официально поддерживаемую плат­ Edge lmpulse в разделе Build firmware (Создать 11рошивку), а
Глава 466 затем 12 нажмите кнопку Build (Сборка). У вас также есть возможность вклю­ чить/выключить компилятор EON 10 . Затем перетащите или прошейте полученное приложение прошивки на официально поддерживаемую кнопки Build платформу, следуя (Сборка) на вкладке инструкциям, Deployment показанным после нажатия (Развертывание). Более подробные инструкции по прошивке предварительно собранных двоичных файлов можно най­ ти в документации Edge lmpulse (https://oreil.ly/O-ZFY). для выбранной вами Для этого проекта мы выберем вариант развертывания Arduino), чтобы запустить нашу обученную модель (https://oreil.ly/9QfS6) (как показано на рис. 12.15). платформы разработки Arduino library (Библиотека Arduino Nicla Sense МЕ на Deploy your impulse You can deploy your impulse to any devlce. Thls makes the model run without an internet • 1 ••••••• • • connectlon, minimizes latency, an • sumption . Read more. An Ardu1no l1brary w1th examples tt1at Create llbrary Arm-based Turn your impulse into optimized (Э С++ ruпs on most Ardшno n any device. dPvPlopmPnt hnards 00 ARDUINO l1brary Arduino library Cube.MX CMSIS-PACK ~ ПVIDIA. WebAssemЫy TensorR I l1brary Ethos-U l1brary IЕТА ~ LAIS SI ШDII ~'ynaptics Tensai Flow l1brary TIDL RT Llbrary s,mplioty Studio Component Рис. 10 на 12.15. Вариант развертывания Arduino library См. запись в благе Яна Йонгбума "Введение в EON: нейронные сети с объемом оперативной памяти 55% меньше и объемом постоянноll памяти на 35% меньше" (Jongboom J. lntroducing EON : Neural Networks in Up to 55% Less RAM and 35% Less .ROM (https://oreil.ly/B6Dfi)).
Вариант использования : обеспечение качества пищевых продуктов Следуйте инструкциям в документации по развертыванию Impulse (https://oreil.ly/CmTyr) Arduino Show Sketch Folder lnclude Library Add File ... 12.16. Arduino IDE: Рис. Edge для загрузки и установки необходимого программ­ ного обеспечения. Рис. на сайте 467 импорт ZIР-файла библиотеки 12.17. Arduino IDE: выбор Nicla Sense
Глава 468 12 Сначала импортируйте загруженный ZIР-файл библиотеки ботки Arduino Затем откройте пример библиотеки Arduino из развернутой lmpu\se Arduino для Nicla Sense в IDE Arduino (рис. 12.17). Теперь сохраните файл скетча (рис. в среду разра­ Arduino IDE (рис. 12.16). nicla_senseJusion.ino библиотеки Edge где-нибудь на компьютере 12.18). 1• Edge Impulse Ardui.no examples • Copyri.ght (с) 2022 Edgeimpulse Inc. . • • • • • • Permi.ssion i.s hereby granted, free of charge, to any person obtaining а сору of thi.s software and associ.ated documentati.on files (the "Softwore"), to deol in the Software w'lthout restr1ction, i.ncludi.ng wi.thout li.mi.tatton the ri.ghts to use, сору, modHy, merge, puЫish, distri.bute, suЫi.cense, and/or sell copies of the Software, and to permi. t persons to whom the Softwore i.s furni.shed to do so, subject to the following condi.tions: • • The above copyri.ght noti.ce and thi.s permission noti.ce shall Ье tncluded tn • all copies or substanti.al porti.ons of the Software . . • ТНЕ SOFТWARE IS PROVIDED "AS IS", WПНОUТ WARRANTY OF ANY KINO, EXPRESS OR • IMPLIEO, INCLUDING BUT NOT LIMIТED ТО ТНЕ WARRANПES OF MERCHANTAВILПY, * FIТNESS FOR А PARПCULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENТ SHALL ТНЕ • AUТНORS OR COPYRIGНТ HOLDERS ВЕ LIABLE FOR ANY CLAIM, DAМAGES OR ОТНЕR • LIAВILПY, WНЕТНЕR IN AN АСПОN OF CONTRACT, TORT OR OTHERWISE, ARISING FROМ, • О\JТ OF OR IN CONN[CПON WПН ТНЕ SOFТWARE OR ТНЕ USE OR OTHER DEALINGS IN ТНЕ • SOFТWARE. •1 /* lncludes -------·------------------------------------------------ - -- •1 #i nclude <Use_Case_Food_Qual i. ty_дssurance_i.nferencing. h> #i.nclude "Arduino_BHY2.h" //Cli.ck here to get the l'ibrary: http://Hbrgrymanager/All#Ardy\no ВНУ2 1•• Struct to li.nk sensor axi.s name to sensor value functi.on •1 typedef struct{ const char • naJТ.e ; f l oat (•get_value)(void); }eiSensors; 1 )}lf{ , i. ,-1~.(, ~t Рис. ; 1 ' ~ _ 11 12.18. Arduino IDE: , №cla 1 сохранение скетча Либо скомпилируйте и прошейте в Nicla Sense Sense МЕ nicla_senseJusion.ino непосредственно из Arduino IDE, либо перейдите в каталог, где вы сохранили скетч на своем компьютере, в терми­ нале командной строки и выполните команды ре 12.4. Arduino CLI, показанные в приме­
Вариант использования : обеспечение качества пищевых продуктов 1 469 ......................,.. ,,,,,,,, ......... ,,,,,,, ....................................... ,.. ,,,.,, .......... ,,,,,,,..,... ,, .... ,.. ,.,.... ,.,,.,.,......... ,.... ,... .................... ,............ ,, ...................... ,...... ,..,..,..... ,, ..................................,.. i... пример.. 12.4...Команды..Аrduinо_ СLl_для..скетча ..с .. nрошивкой ..выводов.........................................................J $ cd nicla_sense_fusion $ arduino-cli cOl'1pile --fqbn arduino:~Ьed_nicla:nicla_sense --output -dtr. --vегЬоsе $ arduino-cli upload --fqbn arduino:~bed_nicla:nicla_sense --input-dir. --vегЬоsе Просмотрите результаты анализа модели контроля качества продуктов питания, запущенной прямо на периферии на терминале на скорости передачи • Arduino Nicla Sense МЕ в последовательном 115 200 бод (рис. 12.19). Nicla Sense CMSIS_OAP- 80х24 -1115200.8.N 1 Predictions (DSP: 0 ms., Classification: 0 ms., Anomaly: 0 ms.): amЫent: 0.93750 purchase_date: 0,06250 spoiled: 0.00000 Start1ng inferencing in 2 seconds ... Sampling ... Predictions (DSP: 0 ms., Classification: 0 ms., Anomaly: 0 ms.): ambient: 0.99609 purchase_date: 0.00000 spoiled: 0.00000 Starting inferencing in 2 seconds ... Sampling ... Predictions (DSP: 0 ms., Classification: 0 ms., Anomaly: 0 ms.): amЫent: 0.99609 purchase_date: 0.00000 spoiled: 0.00000 Starting inferencing in 2 seconds ... Samp ling ... Рис. 12.19. Arduino Nicla Sense Исходный код МЕ: результаты обучения выводов модели GitHub Полный исходный код приложения, используемый в этой главе, включая разверну­ тую библиотеку из публичного проекта Edge lmpulse (https://oreil.ly/wPTwd) и за­ вершенный код приложения, доступен для просмотра и загрузки в репозитории GitHub (https://oreil.ly/9lusE). Итерации и циклы обратной связи Теперь, когда развертывание первой итерации модели обеспечения качества про­ дуктов питания завершено, вы можете быть удовлетворены результатами и прекра­ тить разработку на этом этапе. Однако если вы хотите продолжить итерации над своей моделью и еще больше повысить точность со временем или, например, с об-
470 Глава 12 новлением приобретенного оборудования, существует множество адаптаций и ва­ риаций для усовершенствования этого проекта. ♦ Добавьте в модель больше классов машинного обучения для разных типов про­ дуктов. ♦ Сделайте корпус для устройства, чтобы никакие пищевые загрязнения не влияли на показания газового датчика. ♦ Добавьте классы машинного обучения, чтобы определить, сколько дней прошло с момента покупки продукта. ♦ Добавьте другие оси датчиков, например температуры или влажности, к выбор­ кам входных данных для обучения/тестирования, используя объединение датчи­ ков (см. врезку "Объединение датчиков" ра11ее в этой главе). ♦ Запустите несколько моделей контроля качества продуктов питания параллель­ но или на соседних устройствах для несвязанных, но схожих целей, например для обнаружения порчи продуктов и наличия аллергенов . Глубокое погружение: машина для приготовления идеальных тостов Тостер с искусственным интеллектом, показанный на рис. 12.20, использует за­ пахи для приготовления идеальных тостов! Рис. Шон Хаймел использовал 12.20. Тостер Шона Хаймела Edge lmpulse и машинное обучение для создания уст­ ройства, которое каждый раз готовит идеальные тосты, независимо от толщины, состава и начальной температуры хлеба. Модель была обучена на различных данных газовых датчиков и использует регрессию, чтобы предсказать, когда тост подгорит. Шон разобрал недорогой тостер, чтобы процессом поджаривания тостов можно было управлять с помощью микроконтроллера. Микроконтроллер непрерывно считывает данные о запахах с газовых датчиков, делает выводы с помощью мо­ дели машинного обучения и останавливает процесс приготовления тостов за секунд до того, как они подгорят . 45
Вариант использования: обеспечение качества пищевых продуктов 1 471 Это кажущееся излишним применение встроенного машинного обучения имеет несколько важных последствий. Во-первых, возможно, в будущем нам не придется полагаться на таймеры и ин­ туицию при приготовлении пищи. Вероятно, однажды мы увидим кухонные приборы со встроенными интеллектуальными датчиками, которые помогут нам подать идеальное блюдо и предотвратить пищевые отходы из-за выброса пере­ жаренной еды. Во-вторых, создание идеального тоста - отличная демонстрация предиктивноrо обслуживания. В этом примере замените тосты на технику. Мож­ но ли обучить МL-модели, чтобы они заранее предсказывали, когда детали на­ шего автомобиля выйдут из строя? Время простоя крупного промышленного оборудования может стоить тысячи или миллионы долларов, и предиктивное об­ служивание может помочь выявить проблемы до того, как они усугубятся. Просмотрите репозиторий Perfect Toast Machine на GitHub (https://oreil.ly/DIRu4). Похожие работы Как уже говорилось в этой главе, ИИ периферийных устройств - это перспектив­ ная технология, используемая в широком спектре устройств для контроля качества пищевых продуктов, от производственных линий до потребительских детекторов аллергенов. В следующих разделах описываются различные устройства, наборы данных, исследовательские статьи и книги по теме ИИ периферийных устройств для контроля качества продуктов питания. В этой книге также указаны источники для различных приложений, методов, уст­ ройств и цитат из различных исследований и примеров коммерческого внедрения моделей и методов машинного обучения для обеспечения качества пищевых про­ дуктов во всех главах в сносках на каждой странице. Исследования ♦ Нурия Банус и др. "Глубокое обучение для контроля качества термоформован­ ных пищевых упаковок" (Banus N. et al. Deep Leaming for the quality control of thermoforming food packages // Scientific Reports. 2021. № 11 (https://oreil.ly/8Oaec)). ♦ Федерика Джерина и др. "Распознавание действий по приготовлению пищи с помощью данных датчиков качества воздуха для поддержки ведения журнала приготовления пищи" (Gerina F. et al. Recognition of cooking activities through air quality sensor data for supporting food joumaling // Hum. Cent. Comput. Inf. Sci. 2020. - № 1О (https://oreil.ly/2Dj7L)). ♦ Абдо Хассун и др. "Food Quality 4.0: от традиционных подходов к цифровому (Hassoun А. et al. Food Quality 4.0: from traditional approaches to digitalized automated analysis // J. Food Engineering. 2023. - Vol. 337 (https://doi.org/10.1016/j,jfoodeng.2022.111216)). автоматизированному анализу"
472 ♦ Глава 12 В. Хемамалини и др. "Контроль качества пищевых продуктов и их сортировка с использованием эффективной сегментации изображений и системы машинного обучения" (Hemamalini V. et al. Food quality inspection and grading using efficient image segmentation and machine learning-based system // Journal of Food Quality. 2022 (https://oreil.ly/lz5z0)). ♦ Ровшен Ишанrулыев и др. "Потери и расточительство продуктов питания. По­ чему мы теряем и тратим впустую продукты питания?" (lshangulyyev R. et al. Understanding food loss and waste-why are we \osing and wasting food? // Foods. 2019. - № 8 (8). - Р. 297 (https://oreil.lyNmwyg)). ♦ Гокче Ай мен и др. "Идентификация разновидностей сливочного масла на основе искусственного интеллекта в качестве модельного исследования для выявления фальсификации пищевых продуктов" (Iymen G. et al. Artificial Intelligence-Based ldentification of Butter Variations as а Model Study for Detecting Food Adulteration // J. Food Eng. - 2020. - Vol. 66 (https://doi.org/10.1016/j.ifset.2020.102527)). ♦ Джаянт Джатхар и др. "Обеспечение качества пищевых продуктов с использова­ нием искусственного интеллекта: обзорная статья" surance t1sing artificial intelligence: (https://oreil.ly/9WUim)). а (Jathar J. et al. Food quality asreview paper // ResearchGate. - 2021 ♦ Айдин Кайя, Али Сейди Кечели "Допустимый отказ датчика, основанный на машинном обучении, в режиме прогнозирования качества пищевых продуктов" (Кауа А., Ke9eli А. S. Sensor Failure ToleraЫe Machine Learning-Based Food Quality Prediction Model // ResearchGate. -2020 (https://oreil.ly/eGnDv)). ♦ Г. Арун Кумар "Основанный на датчиках Arduino подход к обнаружению порчи (Kumar G. А. An Arduino Sensor-Based Approach for Detecting the Food Spoilage // Int. J. Eng. Technol. Manag. Appl. Sci. - 2020. - Vol. 5, Issue 3. - ISSN No. 2455-2143 (https://oreil.ly/ECgqq)). продуктов питания" ♦ Жан Нтурамбирве и др. "Классификация и изучение скрытых повреждений яб­ лок от ударов с помощью коротковолновой инфракрасной rиперспектральной визуализации" (Nturamblrwe J. et al. Classification leaming of latent bruise damage to apples using shortwave infrared hyperspectral imaging // MDPI. 2021 (https://oreil.ly/ 2zmhw)). ♦ Ахмед Ради и др. "Влияние интенсивности света, высоты датчика и методов предварительной спектральной обработки при использовании БИК­ спектроскопии для идентификации различных порошкообразных пищевых про­ дуктов, содержащих аллергены" (Rady А. et al. The Effect of light intensity, sensor heig'1t, a11d spectral pre-processing methods when using NIR spectroscopy to identify different allergen-containing powdered foods // Sensors (Basel). - 2019. - № 20 ( 1). - Р. 230 (https://oreil.ly/vGyiR)). ♦ Экта Сонвани и др. "Подход с использованием искусственного интеллекта к об­ наружению и анализу порчи пищевых продуктов" (Sonwani Е. et al. An Artificial Intelligence Approach Toward Food Spoilage Detection and Analysis // Front PuЫic Health. -2022. - Vol. 9 (https://oreil.ly/Slmft)).
Вариант использования: обеспечение качества пищевых продуктов ♦ 1 473 Николае Дж. Уотсон и др. "Интеллектуальные датчики для экологически чистого производства продуктов питания и напитков" (Watson N. J. et al. lntelligent Sensors for SustainaЫe Food and Drink Manufacturing // Frontiers in Sustainaьte Systems. 2021. - Vol. 5 (https://oreil.ly/laoql)). Новости и другие статьи ♦ "Машинное обучение для автоматизированного контроля качества пищевых продуктов" (Machine (https://oreil.ly/kldsz)). ♦ "Датчики NIRONE Learning for Automated Food Quality Inspection показывают многообещающие результаты при обнаружении пищевых аллергенов" (NIRONE Sensors Show Promising Results on Detection on Food Allergen (https://oreil.ly/0-GVd)). ♦ "Идентификация" ♦ "Использование искусственного интеллекта для повышения качества продуктов питания" ♦ (ldentification (https://oreil.ly/0-GVd)). (Using AI to lncrease Food Quality (https://oreil.ly/00j3H)). "Что такое lndustry 4.0? Как технологии lndustry 4.0 меняют производство" (What Is lndustry 4.0? How Industry 4.0 Technologies Are Changing Manufacturing (https://oreil.ly/ОУzAK) ). ♦ "Лучшие технологии в борьбе с пищевой аллергией" (The Best Technologies Against Food Allergies (https://oreil.ly/mKQyc)). ♦ "Рассматриваете вариант умного тостера? Приобретите вместо него мультиварку" (Considering а Smart Toaster Oven? Get а Multi-Oven lnstead (https://oreil.lyffuZ3P)).

ГЛАВА 13 Вариант использования: потребительские товары Периферийное машинное обучение используется в потребительской электронике и устройствах, позволяя им принимать решения на основе данных без отправления их в облако. Такое применение помогает сэкономить время и полосу пропускания, а также может использоваться в тех случаях, когда данные являются конфиденци­ альными и их необходимо сохранить в тайне. Машинное обучение периферийных устройств также может использоваться для решения задач, ориентированных на потребителя, таких как распознавание лиц, обнаружение объектов, распознавание голоса и классификация датчиков. Анализируя и распознавая закономерности в данных, поглощаемых устройством, и отправляя их в облако для дальнейшей обра­ ботки, продукты могут быстро адаптироваться к потребностям пользователя. Они способны показывать желаемое использование продукта, направлять потребителю индивидуальные оповещения о продукте и многое другое. Благодаря использованию ИИ периферийных устройств потребительские товары могут интегрироваться с данными бортовых датчиков и использовать их практиче­ ски в неограниченном количестве случаев. Например, велосипед может анализиро­ вать окружающую обстановку на предмет наличия информации о дорожном дви­ жении и данных об окружающей среде, способных повлиять на качество езды, а умный холодильник способен автоматически определять, когда продукт почти за­ кончился, и добавлять его в список покупок. В этой главе мы рассмотрим различ­ ные подходы к использованию ИИ периферийных устройств в сфере потребитель­ ских товаров, соответствующие конфигурации датчиков и устройств, а также подробно остановимся на выбранном нами подходе и решении для конкретного случая. Исследование задачи Многие потребительские технологические устройства уже постоянно подключены к Интернету, например оборудование для умного дома, камеры безопасности, но­ симые устройства, беспилотные автомобили и дроны. Эти устройства должны об-
476 Глава 13 рабатывать большие объемы данных или отправлять их на удаленную обработку в облачную платформу. Периферийный ML позволяет этим потребительским про­ дуктам быстро реагировать на изменения в окружающей среде на основе огромного количества данных датчиков, уже поступающих на устройство. В таком случае нет необходимости отправлять данные в облако для дальнейшей обработки, что обыч­ но требует большого количества времени, расхода батареи, пропускной способно­ сти канала передачи и т. д. Применяя изученные в этой книге методы, вы поняли, что разработка модели ма­ шинного обучения для конечной потребительской электроники представляет собой чрезвычайно широкую задачу. Для того чтобы сузить фокус, мы обсудим множест­ во всеобъемлющих, общих целей, а затем глубоко погрузимся в реализацию одной из них. Примером такой всеобъемлющей потребительской цели может служить продукт, способный каким-то образом успокоить домашнего питомца. Рассуждая с этой точки зрения, можно создать модель машинного обучения для анализа состоя­ ния миски с водой и предупреждения человека, когда вода почти закончится. Или встроить в ошейник питомца устройство, определяющее определенный тип шума или звука, вызывающего беспокойство, а затем обеспечивать успокаивающую об­ ратную связь. Оба подхода решают одну и ту же задачу - успокаивают питомца с помощью конечного устройства, но для решения каждой из них может потребо­ ваться индивидуальная комбинация классов машинного обучения и входных дан­ ных датчиков. Постановка целей Создание полезных и эффективных потребительских продуктов с использованием передовых технологий ИИ периферийных устройств необходимо по мере развития мировых тенденций. Потребители будут ожидать, что их технологические устрой­ ства будут становиться все умнее, но при этом не будут нарушать их права на кон­ фиденциальность данных. Существует практически бесконечное количество вари­ антов интеграции данных встроенных датчиков в модели машинного обучения. Благодаря использованию интеллектуальных данных, полученных от этих встроен­ ных датчиков, в ИИ периферийных устройств потребительские продукты могут получить более высокую общую производительность, увеличить время автономной работы (в зависимости от условий использования), а также повысить общую удов­ летворенность конечного пользователя и удобство/доступность. Разработка решения В этой главе мы решили разработать и реализовать недорогую, эффективную и простую в обучении модель ИИ периферийных устройств для потребительских то­ варов, относящихся к устройству мониторинга велосипедистов со встроенным дат­ чиком акселерометра. Однако модель ИИ периферийных устройств для обнаруже-
Вариант использования: потребительские товары 1 477 ния опасностей и мониторинга безопасности велосипедиста нужно создавать не только с помощью акселерометра. Используя принципы и схему проектирования, представленные в этой главе и во всей книге, можно реализовать множество других типов моделей машинного обучения и приложений для устройства мониторинга велосипедистов. Например, можно использовать изображения с камер для монито­ ринга окружающей обстановки и потенциальных столкновений/дорожных проис­ шествий, выявлять дорожно-транспортные происшествия по входящим данным звукового сигнала и др. Какие решения уже существуют? Множество интеллектуальных потребительских продуктов с ИИ периферийных устройств уже существуют на рынке или недавно вышли из стадии прототипов. Умные кухонные приборы, такие как Series 6 (https://oreil.ly/yS58F), June Oven (https://oreil.ly/W_aZa) оснащены технологией ИИ, помогающей во и Haier всем - от планирования питания до уборки. Пользователи мобильных телефонов по всему миру привязаны к экосистеме своего производителя, выбирая носимые устройства с ИИ, такие как Apple Watch, Samsung Smartwatch или Fitblt. Медицинские устройства все чаще разрабатываются с учетом потребностей конеч­ ного пользователя. Например, кольцо Oura Ring (https://ouraring.com) оснащено датчиками, отслеживающими сон, активность и общее состояние здоровья, позво­ ляя лучше понять ваши ежедневные привычки. Будущее многих потребительских технологических продуктов будет включать в себя интеграцию встроенных датчи­ ков и ИИ периферийных устройств, работающего в режиме реального времени. Это позволит повысить производительность продуктов такого типа, их полезность и привлекательность для конечного потребителя, а также снизить энергопотребление. Подходы к разработке решений Опираясь на постановку задачи, можно разработать решение с помощью множества различных подходов. Некоторые из них описаны здесь. Успокоитель и монитор для до.uашних животных. Владельцу животного важно следить за жизненными показателями и общим со­ стоянием здоровья питомца. Контролируя жизненные показатели домашнего животного с помощью устройств с ИИ периферийных устройств, можно преду­ предить о любых изменениях в его здоровье или поведении и принять соответ­ ствующие меры. Существуют различные датчики, позволяющие следить за жиз­ ненными показателями питомца, в том числе датчики камеры и умные миски для воды. Также можно использовать ошейник с ИИ для отслеживания местопо­ ложения и уровня активности вашего питомца. Эти умные товары для животных помогут облегчить нам заботу о здоровье и благополучии питомца и подарят душевное спокойствие.
Глава 478 13 Велосипедный монитор. Многие виды транспорта оснащаются датчиками с ИИ периферийных уст­ ройств, в том числе и велосипеды. Производители предлагают множество функ­ ций, которые делают поездки на работу более безопасной и приятной. Потенциал сбора данных с помощью велосипедов, оснащенных датчиками, или дополни­ тельных потребительских товаров огромен. Благодаря различным конфигураци­ ям датчиков велосипеды могут собирать данные о рельефе местности, погоде и дорожной обстановке в режиме реального времени. Это позволяет получить бо­ лее полное представление об условиях на местности и в окружающей велосипе­ диста среде. Кроме того, велосипеды могут быть оснащены датчиками, определяющими, ко­ гда на них ездят небезопасным или незаконным способом, например, вклинива­ ются в дорожное движение или едут по неправильной стороне дороги. Можно интегрировать и другие датчики, чтобы обеспечить автоматическое обнаруже­ ние краж и сделать езду на велосипеде более безопасной как в центре города, так и за его пределами. Наконец, велосипеды, оснащенные камерой заднего вида или радарным датчиком, также смогут обнаруживать движение позади велоси­ педиста, что позволит избежать аварий, предупреждая человека о необходимо­ сти съехать с дороги, ускориться или замедлиться в зависимости от движе­ ния/информации или визуальных препятствий 1• Детские игрушки. Существуют три основные категории интерактивных детских игрушек, в кото­ рых используются передовые технологии ИИ периферийных устройств: обу­ чающие, реагирующие на эмоции или следящие за здоровьем и безопасностью ребенка и его окружения. Обучающие игрушки призваны помочь детям освоить новые навыки или информацию. Часто они представлены в виде развивающих игр или головоломок, помогающих детям потренироваться в таких вещах, как счет, формы и цвета. Эмоциональные игрушки предназначены для взаимодейст­ вия с детьми и реагирования на их эмоции. Эти игрушки способны восприни­ мать звуковые сигналы, например крик или плач, и даже распознавать выраже­ ния лица и другие визуальные сигналы, связанные с эмоциональным состоянием ребенка. Игрушки, контролирующие безопасность и здоровье, призваны помочь сохранить здоровье детей. Эти игрушки могут определять, когда пальцы каса­ ются горячей плиты, например, или следить за сердечным ритмом и дыханием ребенка. Некоторые из этих игрушек даже оснащены системой GРS-навигации на случай, если ребенок потеряется, что еще больше повышает уровень комфор­ та родителей. Однако развитие технологий ИИ периферийных устройств требует разработки очень разумных и этичных рекомендаций по использованию ИИ в любой иг­ рушке, устройстве или услуге, взаимодействующей с детьми. К сожалению, чем 1 См. статью Edge lmpulse под названием "Велосипедный радар заднего вида" (Bike Rearview Radar (https://oreil.ly/12041)).
Вариант использования: потребительские товары 1 479 сложнее становятся технологии ИИ, тем труднее их регулировать, и вероятность использования ИИ дЛЯ эксплуатации детей, их эмоций и личных данных возрас­ тает2 . Pery лирование технологий искусственного интеллекта - сложный во­ прос, и мы не будем подробно рассматривать его в этой главе. Однако многие правительственные агентства и компании проводят исследования и разрабаты­ вают политику именно в этой области, поскольку простого решения не сущест­ вует3 . Учитывая потенциально пагубные последствия дЛЯ детей, когда техноло­ гии ИИ попадают в чужие руки, становится очевидным, что регулирование в той или иной форме необходимо 4 . Бытовая техника. Бытовая техника с ИИ периферийных устройств, например холодильник, может обнаружить, когда продукты заканчиваются, и автоматически заказать новые, так что вам больше никогда не придется беспокоиться о том, что молоко закон­ чится. Они также могут отслеживать ваши предпочтения в еде, чтобы вы могли получить информацию о своем питании, и даже идеально готовить для вас еду. Но не только холодильники становятся умнее. Существуют всевозможные ум­ ные кухонные устройства, использующие компьютерное зрение и другие дан­ ные датчиков дЛЯ идеального приготовления пищи с визуальной оценкой разме­ ра5 и автоматическим контролем температуры. А кофемашины используют периферийное машинное обучение, чтобы персонализировать кофе в соответст­ вии с предпочтениями пользователя. Даже стиральные машины используют ма­ шинное обучение дЛЯ определения различных типов одежды и настройки циклов стирки и сушки в соответствии с результатами анализа. Любой из описанных ранее подходов к решению сценариев использования удовле­ творяет потребительские запросы, способствующие достижению поставленной в этой главе цели - разработке этичных и ценных потребительских продуктов дЛЯ широкого применения и обеспечению этичного и ответственного использования данных, поступающих к конечному пользователю. Соображения относительно дизайна Для достижения общей цели - разработки полезного, этичного и доступного по­ требительского продукта ИИ периферийных устройств зрения камеры (табл. 2 - с технологической точки можно использовать самые разные источники данных, включая датчики и 13.1 ). См. статью "Цифровые детские игры: защита детей от воздействия искусственного интеллекта" (Digital Child's Play: Protecting Children from the lmpacts of А! (https://oreil.ly/2rc83)) в разделе UN News. 3 См. статью UNICEF под названием "Эффективное управление данными о детях" (Good Govemance ofChildren's Data (https://oreil.ly/EzNvZ)). 4 См. статью "Искусственный интеллект для детей" (Artificial Intelligence for Children (https://oreil.ly/aHHЗE)), написанную для Мирового экономического форума. См. блоr Edge lmpulse под названием "Оцените вес фотографии. используя визуальную регрессию в Edge" (Estimate Weight From а Photo Using Visual Regression in Edge lmpulse (https://oreil.ly/qfZxT)). 5
Глава 480 13 Таблица 13.1. Какие датчики можно использовать в каждом конкретном случае? Цель Датчики Детектор ДТWкражи Акселерометр, аудио, радар, камера для велосипедистов Успокоитель для животных Камера,аудиосистема,радар Печь с искусственным интеллектом Инфракрасная камера, датчики температуры и газовый Носимое устройство для контроля состояния здоровья ФПГ (фотоплетизмография), частота сердечных сокращений, ЭКГ (электрокардиография), температура, уровень влажности/пота Безопасность и автоматизация дома Роботизированная детская игрушка Камера,аудиодатчики Камера,аудиодатчик,акселерометр,гироскоп, радар Автоматизированная стиральная Камера, датчики химический, газовый, цветовой, машина интенсивности света В разд. "Получение данных" главы 7 рассматриваются другие подходы к сбору дан­ ных с датчиков и набору данных. Кроме того, в процессе дизайна и мозгового штурма учитывайте следующие мо­ менты: ♦ Кто будет конечными пользователями продукта? ♦ Кто главным образом заинтересован в продукте? ♦ Каким образом этот продукт может быть использован недобросовестно или не­ этично? ♦ Где хранятся данные? Оrправляются ли результаты работы на облачную плат­ форму? ♦ Как потребитель/конечный пользователь узнает о том, каким образом использу­ ются поступающие данные датчиков на устройстве, в облаке или через сетевое соединение? Экологическое и социальное воздействие Несмотря на то что достижения ИИ периферийных устройств в области потреби­ тельских технологий могут сделать нашу жизнь проще, они также несут в себе ряд проблем. К ним можно отнести недоступность или ограниченность в использова­ нии для значительной части населения, в результате часть конечных потребителей не смогут воспользоваться достижениями многих технологий ИИ периферийных устройств. Один из способов производителей решить эти проблемы - создание
Вариант использования: потребительские товары устройств, более удобных и доступных для всех. Один из таких примеров 1 481 - неко­ торые компании выпускают устройства, позволяющие снизить бремя домашних забот. Эти устройства могут помочь пожилым людям или инвалидам справиться с такими сложными для них задачами, как уборка или приготовление пищи. Это не только облегчит им жизнь, но и поможет предотвратить несчастные случаи или травмы. Компании также стремятся сократить количество технологичесю1х или общих отходов, заранее предупреждая клиентов о возможных проблемах или ре­ монте, который может потребоваться их устройству. Это не только поможет сохра­ нить устройства в рабочем состоянии, но и предотвратить нанесение вреда поль­ зующимся ими детям. Заносим детей и подростков в контрольный список Приведенный ниже контрольный список (FIRST) - FIRST 6 это отличный стартовый на­ бор идей и ограничений. Их можно установить, когда вы проводите мозговой штурм новых идей продуктов с ИИ периферийных устройств для сферы потреб­ ления, даже если предполагаемая аудитория/пользователи продукта не дети. Fair (честность). Этика, непредвзятость и ответственность. Inclusive (инклюзивность). Доступность, нейронные различия и отзывы детей/целевой возрастной группы. ResponsiЬ/e (ответственность). Соответствует возрасту и стадии развития; отражает последние научные дос­ тижения в области обучения и разработана с учетом целевого возраста. Safe (безопасность). Не навреди; кибербезопасность и снижение зависимости Transparent (прозрачность). Может объяснить новичкам или неспециалистам, как работает ИИ и для чего он используется. Начальная загрузка В этой главе мы рассмотрим комплексное решение для создания модели ИИ пери­ ферийных устройств потребительского продукта, в частности для устройства, от­ слеживающего и защищающего велосипедиста с помощью предупреж,дений о дви­ жении и столкновениях. Для того чтобы создать начальную модель мониторинга велосипедистов, мы соберем выборки для классов машинного обучения 6 См. статью "Искусственный интеллект для детей" (Artificial lntelligence for Children (https://oreil.ly/aHH3E)), написанную для Мирового экономического форума. idle (без-
482 Глава действие), 13 sudden stop (внезапная остановка) и nominal (номинал) с датчика-акселе­ рометра нашего устройства. Эти три класса позволят классификационной модели машинного обучения опреде­ лить, какой тип событий движения испытывает велосипедист в реальном времени. Периферийное устройство непрерывно получает исходные данные с акселерометра, а обученная модель машинного обучения определяет, является ли обнаруженное устройством движение бездействием, поворотом, внезапной остановкой (возможно, свидетельствующей об аварии) или движением по неровной местности. Если в ре­ зультате прогнозирования, оценки аномалии и данных сигнала акселерометра уст­ ройство придет к выводу, что оценка аномалии высока или произошла внезапная остановка, эта информация будет немедленно передана конечному пользователю устройства с помощью звукового уведомления или светодиодного предупреждения. Также данные будут отправлены по сетевому соединению или сохранены локально на устройстве для дальнейшей обработки человеком или в облаке. Определение классов машинного обучения В табл. 13.2 приведены возможные комбинации сценариев использования, типов датчиков и входных данных, а также классов машинного обучения, используемых для сбора и присвоения меток обучающим и тестовым наборам данных. Примеры использования и связанные с ними метки классов важны для типов алгоритмов ма­ шинного обучения в этой главе, а именно для классификации и обнаружения ано­ малий. Подробнее об этих алгоритмах вы можете узнать в разд. "Классификация" и "Обнаружение аномалий" главы Таблица 13.2. 4. Классы машинного обучения дnя решения задач по обеспечению безопасности велосипедистов Пример использования Данные для Метки классов обучения Обнаружение велосипедной Акселерометр Номинал, аномалия (или заданная метка "аварии", если данные аварии уже существуют) Отслеживание встречного Камера (с ограничи- Автомобиль, велосипед, мотоцикл, движения тельными рамками) другие объекты дорожного движения Слежение за слепыми зонами Радиолокация Прослушивание автомобильных сигналов, звуков аварии Номинал, объект в непосредственной близости от велосипедиста велосипедиста Аудиодатчик Фон, шум, автомобильная сигнали- зация, автокатастрофа, гудок и иных звуков дорожного автомобиля, человеческий движения голос/выкрики
Вариант использования: потребительские товары 1 483 В этой главе мы соберем данные датчиков и с помощью машинного обучения по­ строим на основе потребительского устройства для мониторинга велосипедистов пример классификации данных датчиков. Начальными классами машинного обуче­ ния в нашем проекте будут idle, sudden stop и nominal, относящиеся к возможному варианту использования "обнаружение велосипедных аварий". Однако, поскольку вы, скорее всего, не захотите специально попадать в велосипедную аварию, чтобы записать и загрузить такие выборки, для достижения этой цели мы воспользуемся методами машинного обучения классификацией и обнаружением аномалий. - Сбор набора данных Техническую и конкретную информацию о том, как собрать чистый, надежный и полезный набор данных, см. в разд. "Получеиие даииых" ,"Лавы 7. Можно также ис­ пользовать различные стратегии сбора данных из нескольких источников, чтобы создать собственный уникальный набор данных для вашего случая: ♦ объединение общедоступных исследовательских наборов данных; ♦ использование существующих наборов данных датчиков с сайтов по сбору дан­ ных, созданных сообществом, таких как Kaggle; ♦ заручитесь помощью коллег, чтобы собрать выборки для вашего совместного проекта Edge lmpulse. Edge lmpulse В разд. аккаунт "Edge Impulse" главы/ 1 описано, что вам необходимо создать бесплатный Edge lmpulse (https://edgeimpulse.com), чтобы следовать инструкциям, описанным в этой главе. Дополнительное обоснование использования Edge Impulse для разработки моделей периферийного машинного обучения см. в разд. "Комплекс11ые платформы для ИИ периферийных устройств" главы Публичный проект 5. Edge lmpulse Каждая глава этой книги содержит письменное руководство по демонстрации и получению полной сквозной модели машинного обучения для описанного случая использования. Однако если вы хотите сразу перейти к делу и увидеть точные данные и модель, разработанные авторами для этой главы в ее окончательном ви­ де, можете перейти к публичному проекту этой главы. Edge Impulse (https://oreil.ly/iuJp9) для
484 Глава 13 Также можно напрямую клонировать этот проект, включая все исходные данные обучения и тестирования, промежуточную информацию о модели, результаты обу­ чения модели и все параметры развертывания, нажав кнопку правом верхнем углу страницы Edge lmpu\se (рис. Clone (Клонировать) в 13.1 ). Рис. 13.1. Клонирование публичного проекта Edge lmpulse Выбор оборудования и датчиков В этой книге мы стараемся вести работу максимально независимо от устройств, но нам также необходимо обсудить, как можно использовать готовый, простой в ис­ пользовании комплект для разработки, чтобы создать решение для нашего случая. Таким образом, цель этой книги подобрать максимально простое, доступное и - недорогое оборудование . Поскольку Edge Impu\se уже предоставляет большой набор официально поддержи­ ваемых платформ для разработки с различными встроенными драйверами датчиков и прошивками с открытым исходным кодом, для простоты этого проекта и сбора данных акселерометра потребительского продукта для велосипедистов мы будем использовать комбинацию наших мобильных телефонов со специальным клиентом Edge lmpulse (https://oreil.ly/RКA Wb) и платформы Nordic Semi Thingy:53 (https://oreil.ly/Wfl.J0M) с приложением nRF Edge Impulse для мобильных телефо­ нов (https://oreil.ly/OnTtw), что позволит нам получать данные и развертывать мо­ дели . Однако если у вас нет описанного выше оборудования, вы можете обратиться к до­ кументации Edge Impulse (https://oreil.ly/zQryl), чтобы найти другие подходящие платы с различными официально поддерживаемыми датчиками для удобного сбора данных и развертывания. Или вы можете использовать собственную платформу разработки и свои комбинации датчиков и продолжить изучение этой главы после создания работающей прошивки устройства для первоначального сбора данных с датчиков (самый простой (https://oreil.ly/MXDZM)). способ - с помощью Edge Impulse data forwarder
Вариант использования: потребительские товары 1 485 Конфигурация аппаратного обеспечения Закрепленный на руле вашего велосипеда встроенный акселерометр инерционного измерительного блока внутренний IMU (Inertial Measurement Unit, IMU) Nordic Semi Thingy:53 и/или вашего мобильного телефона будут использоваться для обнару­ жения движения на велосипеде. Ниже приведен список некоторых других типов датчиков. Их следует рассмотреть для повышения точности модели мониторинга велосипедистов для конкретной сре­ ды, условий использования, бюджета проекта и т. д.: ♦ гироскоп; ♦ инфракрасная камера, камера ночного видения или тепловизор; ♦ радиолокация; ♦ аудиодатчик. Сбор данных При использовании Edge Impulse существует масса возможностей для загрузки и маркировки данных в ваш проект. Многие из наиболее распространенных инстру­ ментов ввода данных были описаны ранее в разд. "Сбор данных" главы 11. В сле­ дующих разделах мы рассмотрим конкретные инструменты сбора данных, которые будем использовать в этой главе для обеспечения безопасности велосипедистов. Встроенное программное обеспечение для сбора данных Для того чтобы получить данные с нашей платформы новить прошивку Edge Impulse (https://oreil.Iy/bHbVN). необходимо уста­ Затем, используя или мобильное приложение nRF Edge Impulse" Thingy:53, на устройство, следуя инструкциям в документации Edge Impulse CLI (https://oreil.Iy/DSrv7) nRF Edge Impulse (см. разд. "Мобw,ьное прwюжение дшzее в этой главе), подключим устройство к проеюу и начнем записывать новые выборки данных со встроенных датчиков Thingy:53 или из мо­ бильного телефона. Мобильный телефон Один из самых простых способов загрузить новые данные акселерометра ключить мобильный телефон непосредственно к проеюу Edge lmpulse - под­ и записать данные акселерометра со встроенного IМU-блока телефона. Инструкции по под­ ключению мобильного телефона можно найти в документации Edge Impulse (https://oreil.ly/UoiqJ) (рис. 13.2). Мобильное приложение nRF Edge lmpulse Сначала загрузите и установите приложение фон на базе Nordic nRF Edge lmpulse на свой теле­ iPhone (https://oreil.ly/2w5n0) или Android (https://oreil.ly/Q_bVН).
Глава 486 13 Затем следуйте инструкциям в документации чтобы войти в приложение подключить Thingy:53 Edge lmpulse (https://oreil.ly/orIOa), nRF Edge lmpulse с учетной записью Edge lmpulse и к своему проекту . Дnя того чтобы записать и загрузить в проект новую выборку данных, нажмите на кнопку+ в правом верхнем углу приложения . Выберите датчик, введите метку вы­ борки , выберите длительность и частоту выборки, а затем нажмите кнопку Sampling (Начать 'lf выборку) (рис . Start 13.3). Collect data х You can collect data from development boards, from your own devices, or Ьу uploadlng ап existing dataset. • Connect а fully supported development board Get started with real hardware from fully supported Ьу Edge lmpulse. а Browse dev boards wlde range of silicon vendors - Use your moЫle phone □ Use your moblle phone to capture movement, audlo ог images, and even run your tralned model locally. No арр requlred. Show QR codc Use your computer Capture audlo or lmages from your webcam or mlcrophone, external audio devlce. ог from an [ C ollectdata - J [ - Show docs Г Go to the Data from any device wlth the data forwarder Capture data from any devlce or development board over а serial connectlon, ln 1О llnes of code. -:J Upload data .t. Already have data? You can upload your existing datasets directly ln WAV,JPG, PNG, CBOR. CSV,JSON, МР4 ог AVI format. uplo~~ lntegrate with your cloud The enterprlse version of Edge lmpulse integrates directly with the data stored ln your cioud platform. Рис. 13.2. [ Go 10 organ1zatlor1 v ) Подключение мобильного телефона к проекту Edge lmpulse Продолжайте собирать выборки данных, передвигаясь на своем велосипеде, для всех трех классов машинного обучения: idle, sudden stop и nominal. Будьте осто­ рожны и обращайте внимание на окружающую обстановку во время сбора данных!
Вариант использования: потребительские товары Рис. 13.3. Сбор данных для мобильного приложения 1 487 nRF Edge lmpulse Очистка набора данных Просмотрите советы, приведенные в разд. "Очистка набора данных" главы 11, а затем вернитесь к этой главе. Поскольку выборки данных с акселерометра записывались с длительностью кунд кунд 30 се­ (30 ООО мс), мы разделим их на несколько подвыборок длительностью 10 се­ ( 1О ООО мс). На вкладке Data acquisition (Сбор данных) в выпадающем списке
488 Глава 13 с тремя точками у названия выборки щелкните левой кнопкой мыши по пункту Split sample (Разделить выборку). Вероятно, вы сможете уместить три подвыборки длиной около 1О ООО мс в окне Split sample (Разделение выборки). Нажмите кнопку + Add Segшent (+ Добавить сегмент), чтобы добавить больше сегментов, а затем нажмите кнопку Split (Разделить) (рис. 13.4). Рис. 13.4. Сбор данных: разделение выборки Вы также можете обрезать выборки, выбрав пункт Crop sample (Обрезать выбор­ ку) из выпадающего меню рядом с именем выборки, как описано в разд. "Очистка иабора данных" с''. 11авы 12. Лицензирование наборов данных и юридические обязательства Ознакомьтесь с разд. "Лицензирование наборов даю1ых и юридические обязательст­ ва" главы 11, чтобы урегулировать юридические моменты для вашего набора данных. Поскольку мы напрямую загружаем и используем данные, собранные с нашего до­ машнего и личного мобильного телефона (https://oreil.ly/RZxEO) или устройства Nordic Thingy:53 (https://oreil.ly/E91_-) через последовательный порт компьютера или мобильное приложение Nordic nRF Edge lmpulse (https://oreil.lyNxQКE), у нас не будет никаких лицензионных или юридических проблем с набором данных, тре­ бующих рассмотрения. Однако если вы используете данные акселерометра или другие типы данных дат­ чиков из общедоступных наборов данных в дополнение к собственным данным с мобильного телефона или устройства, такого как Nordic Thingy:53, проявите
Вариант использования: потребительские товары должную осмотрительность - 1 489 необходимо определить правила использования данных и требования к авторству, прежде чем загружать данные в свои наборы для обучения/тестирования и использовать полученную на основе этих данных обученную модель. Рабочий процесс DSP и машинного обучения Теперь, когда мы загрузили все выборки движения акселерометра в обучающие и тестовые наборы данных, необходимо извлечь наиболее важные признаки из ис­ ходных данных с помощью цифровой обработки сигналов (DSP). Затем нужно обу­ чить модель машинного обучения выявлять закономерности в извлеченных призна­ ках данных датчиков. "дизайном импульса" Вкладка Edge lmpulse называет (lmpulse design). Impulse design рабочий процесс обучения (Дизайн импульса) вашего проекта Edge Impulse DSP и ML позволяет просматривать ваш полный конвейер машинного обучения и в графическом виде отображать его. Слева находится блок исходных данных, в него Edge lmpulse Studio поместит данные и выполнит их поглощение и предварительную обработку, а так­ же установит увеличение и размер окна. В этом представлении можно также пони­ зить или повысить дискретность данных временного ряда, если вы загрузили вы­ борки данных с устройств, выполнявших запись с разной частотой. Далее следует блок DSP, где мы будем извлекать наиболее важные признаки дан­ ных акселерометра с помощью скрипта цифровой обработки сигнала с открытым исходным кодом под названием Spectral analysis. После того признаки данных бу­ дут сгенерированы, обучающий блок обучит нашу нейронную сеть, основываясь на желаемой архитектуре и настройках конфигурации. Наконец, можно увидеть ин­ формацию о результатах развертывания, включая желаемые классы, которые наша обученная модель машинного обучения должна классифицировать: и idle, sudden stop nominal. В проекте Edge lmpulse настройте вкладку Impulse design (Дизайн импульса) так, как показано на рис. 13.5, или как указано в списке далее, выбирая настройки из различных всплывающих окон блоков, а затем нажмите кнопку Save Impulse (Со­ хранить импульс). Тiте series data (Данные временного ряда). • Window size (Размер окна): 5000 ms (мс). • Window increase (Увеличение • Frequency (Hz) • Zero-pad data (Частота (Гц)): размера окна): 250 ms (мс). 62.5. (Данные нулевого уровня): установить флажок [х]. Processing Ыосk (Блок обработки). • Spectral Analysis (Спектральный анализ).
Глава 490 Learning Ыосk 13 (Блок обучения). • Classification (Keras) (Классификация). • Anomaly detection (K-Means) (Обнаружение аномалий (метод k-средних)). о Output f~atures . эiw-."°""•~WOtlt!\\toJJ iilii:jj■ ll'!put-..n(1\ а ~сх a ~c'f' ,&,dd • prO(l'iJlnк Ыосk Рис. 13.5. Конфигурация дизайна импульса Блок цифровой обработки сигналов Дr~я проекта, представленного в этой главе, мы будем использовать алгоритм циф­ ровой обработки сигналов, по умолчанию включенный в Edge lmpulse Studio. Этот блок обработки спектрального анализа уже написан и доступен для свободного применения и бесплатного развертывания с платформы. Код, используемый в блоке Spectral Analysis, доступен в репозитории GitHub Edge lmpulse под processing-Ыocks (https://oreil.ly/oAvln). Подробнее об особенностях названием алгоритма спектрального анализа можно узнать в разд. "Спектрш,ьпый аиш,uз" ?лавы 4. Если вы знакомы с написанием собственного кода цифровой обработки сигналов или хотите использовать собственные пользовательские DSР-блоки, ознакомьтесь с информацией, представленной в разд. "Блок цифровой обработки cu?nшioв" ?ла­ вы 11 . Настройте блок Spectral Analysis, выбрав вкладку Spectral features (Спектральные возможности) на панели навигации и указав те же параметры, что показаны на рис. 13 .6, или как перечислено в списке далее, отредактировав различные флажки и поля текстового ввода.
Вариант использования: потребительские товары Parameters Fllter Scale axes Туре none Spectral power FFТ 1б length Take log of spectrum? а Overlap FFТ frames? а EiliHll::iiiBM Рис. G 13.6. Параметры блока Spectral features rat feature Feature explorer Data ln tralnln1 set бm0s Classes 3 (ldle, nomlnal, sudden •• • ldle nomln•I sudden stop • • • stop) Tr1ining wlndows Calculate feature lmportance 756 а • l:r • • , ' • • Feature importance Ф • дll data -- ICCY RMS ассУ Рис. Spectral Power 1.9S • 5.86 Hz -ассХ RMS 1ссУ Spectral Power 13.67 - , 7.S8 Hz 13.7. Генерация признаков с учетом их важности 4'• • 491
Глава 492 Filter 13 (Фильтр}. • Scale axes (Оси масштабирования): 1. • Туре (Тип): попе (никакой) . Spectral power (Спектрат1ьная мощность). • FFT length (Длина БПФ7): 16. • Take log of spectrum? (Получить журнал спектра?): установить флажок [х]. • Overlap FFT frames? (Перекрытие кадров БПФ): установить флажок [х]. Feature explorer 8 8 8 8 idle sudden stop turnlng uneven terrain Feature lmportance ассХ ® Spectral Power 5.86 • 9.77 Hz -ассУ Spectral Power 5.86 • 9.77 Hz ассХ RMS Рис. AII data 13.8. Блок специальных Затем нажмите кнопку признаков: проводник признаков Save parameters (Сохранить параметры). Для того чтобы использовать расширенные функции обнаружения аномалий, доступные в lmpulse (https://oreil.ly/bQUyh), 7 БПФ - поставьте флажок быстрое преобразование Фурье. - Прш,. ред. Edge Calculate feature importance
Вариант использования: потребительские товары (Рассчитать важность признаков) на вкладке признаки) (рис. Generate features 1 493 (Сгенерировать 13. 7). Теперь нажмите кнопку Generate features (Сгенерировать признаки), чтобы про­ смотреть проводник признаков ваших данных (рис. 13.8). Блоки машинного обучения Теперь мы готовы к обучению нашей периферийной модели машинного обучения! Существует несколько способов обучения модели в Edge lmpulse. Самый простой из них- режим визуального (или веб-графического) редактирования . Однако если вы инженер, специалист в области машинного обучения или уже имеете опыт рабо­ ты с TensorFlow/Keras, то вы также можете редактировать свой блок трансферного Edge lmpulse Studio. обучения локально или в экспертном режиме в Можно задать архитектуру нейронной сети и другие параметры конфигурации обу­ чения проекта на вкладке NN Classifier (Нейросетевой классификатор) . Визуальный режим Самый простой способ настроить и задать параметры обучения машинному обучению и архитектуру нейронной Edge lmpulse Visual, когда вы lmpulse design навигации Neural Network settlngs это режим - Tra lning settlngs или вид по умолчанию, выбираете (Нейросетевой сети вкладку NN Classifier классификатор) в (Дизайн импульса) на панели (рис . Скопируйте 13.9). эти на­ стройки в конфигурацию блока нейросетевого классификатора, Start training ♦ а затем нажмите Number of tralnlng cycles (!) 30 Learning rate Ф 0.0005 Validatlon set size (!) 20 разделе кнопку Auto-balance dataset ф (Начать обучение) : (Количество Number of training cycles циклов обучения): Neural network archltecture 30; lnput layer (33 fedtures) ♦ Learning rate ♦ Validation set size набора): (Темп обучения): 0.0005; (Размер проверочного L 20%; [ ♦ Dense layer (20 neurons) Auto-balance dataset Oense layer (10 neurons) (Набор данных с ав­ томатической балансировкой): флажок не Add ап extra layer установлен; ♦ Neural network architecture (Архитектура нейронной сети): • Dense layer (20 neurons) ный слой (20 (Полносвяз- ( 1О fifijf Щfi нейронов)); • Dense layer (10 neurons) (Полносвязный слой Output layer (4 classes) нейронов)). Рис. 13.9. Настройки нейронной сети
494 Глава 13 Подробнее о конфигурации нейронной архитектуры можете узнать в документации Edge lmpulse (https://oreil.ly/oMVFd). После завершения обучения модели вы мо­ жете просмотреть результаты трансферного обучения в окне performance Model > Last training (Модель> Результаты последнего обучения) (рис . 13.10). Дополнительные сведения о редактировании блока нейронной сети локально или в экспертном режиме см. в главах ния" главы 11 и 12 (особенно в разд. "Блок машинного обуче­ 11). Model verslon: Ф Model [ Quantlzed (lnt8) • ] Last tralnlng performance (valldatlon set) • ACCURACY • 81.7% Confuslon matrlx (valldatlon set) IDLE SUDOEN STOP LOSS 0.51 TURNING UNEVEN TERRAIN IDLE l SUDOEN STOP TURNING F1 SCORE Data explorer (full tralnlng set) ф 8 8 8 8 8 8 8 • ldle • correct sudden stop - correct turnlng • correct uneven terraln • correct ldle • lncorrect sudden stop - lncorrect turnlng • lncorrect On-devlce performance ф INFERENCING TI ... • 1 ms. Рис. о РЕАК RAM USAGE 2.2К о FLASH USAGE 47.бК 13.10. Окно Model > Last training performance
Вариант использования: потребительские товары 495 Обнаружение аномалий Нейронные сети отлично справляются с распознаванием образов, но им сложно ра­ ботать с новыми, неизвестными данными. Это происходит потому, что они обуча­ ются только на определенном наборе данных; поэтому, если вы предоставите им что-то новое, они не смогут правильно классифицировать это 8 . Подробнее о методике обнаружения аномалий, используемой в этой главе, читайте в разд. "Обнаружение ано.«алий" главы 4. Anomaly detection settings Cluster count 32 [* Axes Select suggested а ассХ RMS ассУ Spectral Power 17.58 - 21.48 Hz ассХ Skewness ассУ Spectral Power 21 .48 - 25.39 Hz ассХ Kurtos is ассУ Spectral Power 25.39 - 29.3 Hz а ссХ Spectral Power 1.95 - 5.86 Hz ассУ ассХ Spectral Power 5.86 - 9.77 Hz accZ RMS а ссХ Spectral Power 9.77 - 13.67 Hz accZ Skewness ассХ Spectral Power 13.67 - 17.58 Hz accZ Kurtosls ассХ Spectral Power 17.58 - 21 .48 Hz accZ Spectral Power 1.95 - 5.86 Hz ассХ Spectral Power 21 .48 - 25.39 Hz accZ Spectral Power 5.86 - 9.77 Hz ассХ Spectral Power 25.39 - 29.3 Hz accZ Spectral Power 9.77 - 13.67 Hz ассХ Spectral Power 29.3 - 33.2 Hz accZ Spectral Power 13.67 - 17. 58 Hz Spectral Power 29.3 - 33.2 Hz а ассУ RMS accz Spectral Power 17.58 - 21.48 Hz ассУ Skewness accZ Spectral Power 21 .48 - 25.39 Hz ассУ Kurtosis accZ Spectral Power 25.39 - 29.3 Hz а ассУ Spectral Power 1.95 - 5.86 Hz Рис. 13.11. accZ Spectral Power 29.3 - 33.2 Hz Окно настроек обнаружения аномалий с возможностью выбора предложенных осей 8 См. статью "Обнаружение аномалий (мето,1 k-средних)" (Лnomaly Detection (K-Means) (https://oreil.ly/kGM6C)) из Edge lmpulse. •••s ]
Глава 496 13 Выберите вкладку Anomaly detection (Обнаружение аномалий) на панели навига­ Select suggested axes (Выбрать предложенные оси), ции, затем нажмите кнопку чтобы автоматически выбрать предложенные оси важности признаков для нашего случая использования (рис. 13.11 ). Затем нажмите кнопку вившийся Start training (Начать обучение), чтобы Anomaly explorer (Проводник аномалий) (рис. 13.12). просмотреть поя­ Anomaly explorer (756 samples) • XAxis YAxls ассХ ассУ RMS Test data Spectral Power 1.95 - 5. -- No test data v trained N :i: '° .,; 00 U'\ ~ .,... ~ ассХ Рис. 13.12. Окно RMS Anomaly explorer Тестирование модели Подробные детали и описания всех возможностей тестирования модели, доступных в Edge lmpulse, описаны в разд. "Тестирование Аtодели" главы 11. Классификация в реальном времени На вкладке Live classification (Классификация в режиме реального времени) можно тестировать отдельные тестовые выборки непосредственно с подключен­ ного устройства Nordic Thingy:53 (рис. 13.13, 13.14). Инструкции по подключе-
Вариант использования: потребительские товары 497 нию описаны в разд. "Встроенное программное обеспечение для сбора данных" ранее в этой главе. Или загрузите изображение существующего тестового набора данных в разделе Classify existing test sample (Классифицировать существующую тестовую выбор­ ку), чтобы просмотреть извлеченные признаки этой выборки и результаты предска­ зания обученной модели, как показано на рис. 13.15. Classify new data [ DeviceФ Eб:23:46:DE:D7:ЗF Sensor Accelerometer Sample length (ms.) 10000 Frequency 62.SHz Рис. 13. 13. ~ Connect uslng WebUSB ] Классификация в реальном времени при помощи Nordic Tl1i11gy:53 Classiflcatlon result Sumnwiry ..... Ьpectedouttome S~ctral features . °'1Ailtd rtsult • Showonlyunt.nown, .., ... ,.. Рис. ,....., 13.14. ... • .,. .... Proc@Ss«I rutures .... 1,651N, ......75, .. ~1.2s•э. ... ... • • ---=:---- • I.S,H7, 1.1415, 1,11117, 1.118), t.1111, 1 17"t, I.HJ1, &.l◄ ?t, ).2211, Anom;iily explOfer rтп samples) Классификация в реальном времени с результатом тестирования без меток w
498 Глава 13 Classification result Expectldoщwme Spectr•I ft•tures Deиl l\edrиult . ....... ... .··-- • ·--· 5no,,ot>ty1,1111,:- -,"" 001 РrоснмО futures .- • • • - ... . -4-т:• - • '" Anom•ly explor..- (177 Рис. 13.15. мmplesJ Классификация в реальном времени с существующим результатом тестирования с метками Протестируйте модель Вы также можете провести массовую классификацию тестового набора данных по модели, обученной перейдя (https://oreil.ly/Ngn8a) своего на вкладку проекта. разд. "Тестирование модели" главы Model testing Подробнее об (Тестирование этой вкладке модели) читайте 11 . '$. ( О ) Mode! IНUnt output Test data Set 1М '1щм-c:tl'd owome· fOf uct, wmpt. to t:N dнk" outcomt 10 •utom.1rufl)' к~е tti. ll<ipuiи Model te,t1n1 results IVl('ffOOl.lffOfilt 1ett1,,..з.mr1Jhb ltмlftJ,~tJIФ6 ,_,. ..... ~ -- ---tntJ"JЗerrvkt,q t•lllll'II ---·1'0f'l-..i.Jfmlм.., - ................. ... _,.., --Рис. J,Sl,!1f о ...CCVI.AC'I' 58,36" '" "' '" ,. ,. "' "' 13.16. '"" ,... - 21 t\Ь/711r,AI -- """""" . 1•~•~-. ~ ... . ... , "'' 11r\OМIМ.t~-,, Fut&кeeJCPOl'tr Ф .·-- • о•- _,...,._,.. IN...М 8 lclt 8 ~ · -·IIOp•ln(ort«I lncOttIO - Результаты тестирования модели на вкладке • Model testing в
Вариант использования: потребительские товары Нажмите на кнопку 1 499 (Классифицировать все), чтобы получить матрицу Classify all результатов выводов, сделанных обученной моделью на выборках тестового набора данных (рис. 13.16). Однако результаты тестирования модели на этой вкладке не выглядят мно­ гообещающими для реального использования. Это обусловлено тем, что мы загрузили всего несколько минут обучающих данных., но чем больше данных будет загружено, тем лучше модель будет работать в реальном ми­ ре и на нашем тестовом наборе данных. Более подробная информация об улучшении и получении готовой к эксплуатации модели потребительского продукта содержится в главе 9. Развертывание Поздравляем! Вы только что закончили сбор и присвоение меток обучающим и тестовым наборам данных, извлечение признаков из данных с помощью блока DSP, разработку и обучение модели машинного обучения, а также тестирование модели на тестовом наборе данных. Теперь, когда у нас есть весь код и информация о мо­ дели, необходимая для выводов на периферийном устройстве, необходимо прошить предварительно собранный двоичный файл на устройство или интегрировать биб­ лиотеку С++ в код нашего встроенного приложения. Выберите вкладку шаги для одного Deployment из (Развертывание) проекта Edge lmpulse множества вариантов развертывания и выполните в следующих разделах, чтобы запустить обученную модель машинного обучения на периферийном уст­ ройстве. Также доступны и другие варианты развертывания, некоторые из них уже были описаны в разд. "Развертывание" гJ1авы 11. Готовая бинарная прошивка На вкладке Deployment форму разработки (Разработка) выберите официально поддерживаемую плат­ Edge Impulse затем нажмите кнопку Build в разделе Build firmware (Создать прошивку), а (Сборка). У вас также есть возможность вклю­ чить/выключить компилятор EON 9 . Затем перетащите или прошейте полученное приложение прошивки на официально поддерживаемую кнопки Build платформу, следуя (Сборка) на вкладке инструкциям, Deployment показанным после нажатия (Развертывание). Более подробные инструкции по прошивке предварительно собранных двоичных файлов можно най­ ти в документации Edge lmpulse для выбранной вами платформы разработки (https://oreil.ly/socrt). См. запись в блоrе Яна Йонrбума "Введение в EON: нейронные сети с объемом оперативной памяти 55% меньше и объемом постоянной памяти на 35% меньше" (Joпgboom J. lntroducing EON: Neural Networks in Up to 55% Less RAM and 35% Less ROM (https://oreil.ly/kXvlt)). 9 на
Глава 500 13 Исходный код GitHub Исходный код приложения, использованный в этой главе, включая развернутую библиотеку из публичного проекта код приложения, доступны для Edge Impulse (https://oreil.ly/rKSDT) просмотра и загрузки в и готовый репозитории GitHub (https://oreil.ly/bjJwl). Итерации и циклы обратной связи Теперь, когда развертывание первой итерации нашей модели завершено, вы можете быть удовлетворены результатами и прекратить разработку на этом этапе. Однако если вы хотите продолжить итерации над своей моделью и еще больше повысить точность со временем или, например, с обновлением приобретенного обору дова­ ния, существует множество адаптаций и вариаций для усовершенствования этого проекта. ♦ Попытайтесь изменить конструкцию устройства, чтобы сделать его более чувст­ вительным к авариям (замените аппаратное обеспечение, применявшееся в этом руководстве, на более чувствительный датчик или процессор более высокого класса). ♦ Примените стратегии активного обучения для улучшения алгоритмов, исполь­ зуемых в этой модели, DSP и нейронной сети машинного обучения. Другие стратегии также описаны в главах 9 и 10. ♦ Загрузите больше обучающих и тестовых данных для существующих классов модели, а также создайте новые классы для обучения в модели. ♦ Регулярно оценивайте работу устройства и со временем вносите соответствую­ щие улучшения. Ваша модель будет настолько хороша, насколько хороши лока­ ции/окружающая среда, в которых были записаны обучающие данные. ♦ Вместо акселерометра на руль велосипеда можно установить камеру. ♦ Снимите устройство с руля велосипеда, прикрепите его на голову (например, на шлем) и посмотрите, как оно работает. Похожие работы Как уже говорилось в этой главе, ИИ периферийных устройств - это перспектив­ ная технология. Ее применяют в широком спектре потребительских товаров, от иг­ рушек, наблюдающих за здоровьем ребенка, и велосипедов, отслеживающих до­ рожную обстановку и возможные аварии, до бытовой техники, автоматически готовящей еду до идеальной степени готовности. В следующих разделах описыва­ ются различные устройства, наборы данных, исследовательские статьи и книги по теме ИИ периферийных устройств для потребительских товаров.
Вариант использования: потребительские товары 1 501 В этой книге также приводятся источники различных приложений, методов, уст­ ройств и цитат из различных исследований и потребительских продуктов, исполь­ зующих периферийные модели машинного обучения, в сносках на каждой странице. Исследования ♦ "Цифровые детские игры: защита детей от воздействия искусственного интел­ лекта" (Digital Child's Play: Protecting Children from the Impacts of AI // UN News: [site ]. - 2021 (https://oreil.ly/ORRNY)). ♦ "Искусственный интеллект для детей" Economic Forum. -2022 ♦ (Artificial Intelligence for Children // World (https://oreil.ly/alПIЗE)). "Эффективное управление данными о детях" (Good Governance of Children's Data // Unicef: [site] (https://oreil.ly/9Dy2B)). ♦ "Личная жизнь детей" (Children's Privacy // Federal Trade Comissions: [site] (https://oreil.ly/6v-hh) ). ♦ "Правило защиты конфиденциальности детей в Интернете" Privacy Protection Rule ("СОРРА") (https://oreil.ly/RP-BI)). ♦ (Children's Online "Изучение технологий искусственного интеллекта через призму прав детей" (Examining Artificial lntelligence Technologies Through the Lens of Children's Rights // EU Science Hub. -2022 (https://oreil.ly/etUIC)). ♦ Правила в области ИИ (Евросоюз) ♦ (EU AI Act (https://oreil.ly/ERtтX)). Э. Фош-Вилларонrа и др. ",,История игрушек" или "История детей"? Ставим детей и их права во главу угла революции в области искусственного интеллекта" (Fosch-Villaronga Е. et а\. Тоу Story or Children Story? Putting Children and Their Rights at the Forefront of the Artificial lntelligence Revolution // Springer-Link. 2021 (https://oreil.ly/FlrVс)). ♦ Лиа Марра и др. "Искусственный интеллект в бытовой электронике" et а\. Artificial lntelligence in Consumer Electronics // (Morra L. IEEE. 2020 (https://oreil.ly/58КzЕ) ). ♦ Танмай У. Сане и др. "Применение искусственного интеллекта и глубокого обу­ чения в роботах для уборки урожая: обзор" (Sane Т. U. et al. Artificial intelligence and deep learning applications in crop harvesting robots: а survey // IEEE. - 2021 (https://oreil.ly/tNhwb)). ♦ Сараджу П. Моханти "Искусственный интеллект для умной бытовой электрони­ ки: на периферии или в облаке?" (Mohanty S. Р. AI for smart consumer electronics: at the edge or in the cloud? // IEEE Consumer Electronics Magazine. - 2019 (https://oreil.ly/pZToK)). ♦ Ханьюн Го и др. "Машинное обучение роботов в сфере туризма и гостиничного бизнеса: модель внедрения интерактивных технологий (iТ АМ) - Передовые (Go Н. et al. Machine learning of robots in tourism and hospitality: interactive technology acceptance model (iTАМ) - Cutting Edge // Emerald lnsight. 2020 (https://oreil.ly/dxShS)). технологии"
502 Глава 13 ♦ Тяньтянь Сюй и др. "Гибридная модель машинного обучения для прогнозирова­ ния спроса на систему совместного использования велосипедов на базе передо­ вых вычислений с использованием Интернета вещей" (Xu Т. et al. А hybrid machine learning model for demand prediction of edge-computing-based Ьike-sharing system using intemet of things // IEEE. - 2020 (https://oreil.ly/UKtYx)). ♦ "Велосипедный радар заднего вида" (Bike Rearview Radar // Edge Impulse: [site] (https://oreil.Jy/AI9cL)). ♦ Матеус К. Сильва и др. "Современные носимые приложения с искусственным (Silva М. С. et al. WearaЫe edge AI applications for ecological environments // MDPI. -2021 (https://oreil.ly/МdkaY)). интеллектом для защиты окружающей среды" ♦ Рутвик Какадия и др. "Автоматическое обнаружение ограблений/краж на основе искусственного интеллекта с использованием интеллектуального видеонаблю­ (Kakadiya R. et al. AI based automatic robbery/theft detection using smart surveillance in banks // IEEE. - 2019 (https://oreil.Jy/SDPYG)). дения в банках" ♦ Реджинальд Экене обнаружения Ory и др. "Использование искусственного интеллекта для аномалий в передовых измерительных инфраструктурах" (Ogu R. Е. et al. Leveraging artificial intelligence of things for anomaly detection in advanced metering infrastructures // ResearchGate. - 2021 (https://oreil.ly/lesae)). Новости и другие статьи ♦ "Потенциал искусственного интеллекта для компаний, производящих потреби­ тельские товары" (Al's Potential for Consumer Products Companies // Deloitte: [site]. -2022 (https://oreil.ly/lOYQR)). ♦ "Потребительские товары: повышайте инновационность продукции и доходы с (Consumer Goods: lncrease Product Innovation and Revenue with Edge AI // Gartner: [site]. -2021 (https://oreil.ly/ZEn7F)). помощью ИИ периферийных устройств" ♦ "Внедряйте инновации с помощью ИИ периферийных устройств" (Innovate with Edge AI // Gartner: [site]. - 2019 (https://oreil.ly/1-lhF)). ♦ "Передовое машинное обучение: от РоС к реальным приложениям искусствен­ (Edge Machine Learning: From РоС to Real-World AI Applica- ного интеллекта" tions // Gartner: [site]. - 2021 (https://oreil.ly/x_0ja)). ♦ "Ducati и Lenovo продолжают сотрудничество, чтобы возглавить инновации в MotoGP" (Ducati and Lenovo Continue Partnership to Lead lnnovation in MotoGP // BusinessWire: [site]. -2022 (https://oreil.lyNcOrE)).
Предметный указатель А AliЬi Detect, библиотека 381 Application-specific integrated circuit (ASIC) 106 aptitude 170 Arduino 188 Arduino Pro 188, 190, 250 Area Under the Curve (AUC) 361 Ann Yirtual Hardware 191 AutoML 181 в Вinary neural networks (BNN) 149 BLERP 40, 205 Bootstrapping 336 с CFU Playground 187 CLI uploader 407 CMSIS DSP, библиотека 185 CMSIS NN, библиотека 185 D Digital signal processing 38 Digital signal processor (DSP) 102 Docker 170 Edge lmpulse Studio uploader 407 EfficientNet 140 EON Tuner 420 EON, компилятор 186 Exploratory data analysis (EDA) 333 F False Negative Rate (FNR) 360 False Positive Rate (FPR) 360 Faster objects, more objects (FOMO) 327 FFTW, библиотека 185 Field-programmaЫe gate array (FPGA) 38, 106 FIRST, список 481 Floating point operation (FLOP) 366 Floating-point operations per Second (FLOPS) 366 G gemmlowp, библиотека 185 Global positioning system (GPS) 91 GNU Octave 177 н Hardware description language (HDL) 106, 187 Homebrew 170 Е Edge lmpulse 166, 198, 276, 483 ◊ data explorer 413 Edge lmpulse data forwarder 484 Edge lmpulse Linux runner 433 Edge lmpulse Studio 278, 404 ◊ EON Tuner 420 ◊ источник данных 407 lnertial measurement unit (IMU) 91 lngestion API 407 lntemet ofThings (loT) 30 J Jupyter Notebook 176
504 1 Предметный указатель К KISS FFТ, библиотека 185 Kubeflow 171 Kubemetes 170 k-блочная перекрестная проверка R 292 L LIDAR, датчик 89 Linux встроенный 192 м MATLAB 177 Matplotlib, библиотека 175, 283 Matthe,vs Correlation Coefficient (МСС) 361 Mean abso\ute error (МАЕ) 362 Mean average precision (mAP) 363 Mean squared error (MSE) 363 Micro Controller Unit (MCU) 224 microTVM 141 MLflow 180 MLOps 182, 297 MoЬileNet 140 N Neural Processing Unit (NPU) 105 NumPy, бибтютека 174 о OpenCV 123 OpenMV 123 OpenMV IDE 177 р Pandas, библиотека 174, 282 Papers with Code 243 Passive lnfrared (PIR) 205 Performance Calibration 425 Plotly, библиотека 175 Poetry 169 PyTorch 177 Q Quality assurance (QA) 355 Ray Tune 181 Real-time \ocating systems (RTLS) 91 Renode 191 RОС-кривая 361 Root mean squared error (RMSE) 363 ruy, библиотека 185 s scikit-leam, библиотека 174 SciPy, библиотека 174, 192 scipy.signal, модуль 177 SeaЬom, библиотека 175 Single-shot detector (SSD) 327 Spiking neural networks (SNN) 149 Subject matter experts (SME) 237 Sweeps Ьу Weights & Biases 181 System-on-chip (SoC) 48, 103 т Tensil 187 TensorBoard 180 TensorFlow 177 TensorFlow Federated 188 TensorFlow Lite 140-142, 166, 185, 188, 192 ◊ для микроконтроллеров 185 True Negative Rate (ТNR) 360 True Positive Rate (TPR) 360 V Volatile organic compound (VOC) 65 w Weights& Biases 180 у YOLO 140 z Z-оценка 261
Предметный указатель А Акселерометр Данные: 217 90 Алгоритм: ◊ постобработки ◊ разработка 144 173 Анализ: ◊ данных разведочный ◊ регрессионный 333 135 ◊ спектральный 121 Анализатор газовый 443 Аномалия, обнаружение 128 Ансамбль 143 Архитектура 140 аппаратной системы 96 ◊ модели ◊ системы ИИ периферийных 140 устройств Аугментация Аудиосигнал ◊ аугментация ◊ версионирование ◊ временнь1х рядов ◊ конвейер о метка 3 12 набор эталонный ◊ ошибки264 о помеченные о признак сбор сезонность о синтетические ◊ управление о хранение 91 в (IMU) 255 Взвешивание подгрупп данных Видеоданные 287 85 Выборка: ◊ по неопределенности ◊ разнообразия 272 Вывод 265 35 Вычисления: гетерогенные 103 ◊ граничные ◊ облачные ◊ распределенные 30 171 170 о детектор полупроводниковый емкостной сенсорный биосиrналов о изгиба ◊ изображения 289 Гиперпараметр, оптимизация Гироскоп 90 88 характеристики 88 о магнитометр о наклона о напряжения о оптический 92 90 93 92 положения 90 потока 92 ◊ приближения индуктивный ◊ радиационный о растяжения о силовой 92 91 91 ◊ спектроскопический о тактильный о 94 93 тензодатчики 92 тока 93 фотодатчик 92 химический 94 ◊ 181 91 летучих органических соединений о Генерализация 93 91 ◊ ◊ г 83 ◊ о Выброс 251, 370 172 172 о о 272 260 акустический - Версионирование данных 171 87 94 времени полета 91 газа 93,443 давления 92 движения 90 о 135 214 233 о ◊ Блок инерционный измерительный 243 266 о о Ближайшие соседи 173 небезопасные ◊ Б 255 83 234 о ◊ 151 данных 294 84 294 о Датчик Ассоциация неявная ◊ 505 д Автоматизация задач ◊ 1 ◊ о 91 твердых частиц температуры 92 93 65
Предметный указатель 506 92 ◊ цвета о электромагнитного поля (ЭДС) ◊ электромагнитный Количество операций над операндами Деревья решений 92 93 с плавающей точкой в секунду ◊ 141 EON 186 байт-кода 186 13 5 ◊ генерации кода о Детектор полупроводниковый Дизайн ответственный 93 71 Дискретизация: 186 Конвейер: ◊ повышающая ◊ данных о понижающая ◊ машинного обучения ◊ обработки данных 118 118 Дистилляция знаний 148 Дрейф 242, 266 з Задержка 363 Коэффициент: 233 122, 177 и Изображение ◊ корреляции Мэтьюза ◊ ложного отклонения ◊ ложного ◊ Извлекатель признаков Изменение масштаба 144 125 85 106 Кривая Интеллект: искусственный ◊ общий о 32 периферийных устройств 33 искусственный узкий 33 33 30 118 Интерпретатор 140, 185 Интерпретируемость 134 36 361 310 соответствия 31 О результатов: - Интегральная схема специального назначения истинноотрицательных 360 360 ложноотрицательных 360 ложноположительных 360 ошибок 361 истинноположительных л Лес случайный 135 м Интернет вещей Магнитометр Интерполяция Масштабирование: 92 ◊ непоследовательное о признаков 265 124 Матрица: к Кадр 43 Корень из среднеквадратической ошибки 41, 117 Зрение компьютерное 170 Конфиденциальность 336 204 Запись набора данных 182 297 признаков 115 170 Контейнеризация Загрузка начальная ◊ 173 Конструирование Контейнер Задача, описание 366 Компилятор 86 Каскад 143 147 Классификация 126,357 ◊ бинарная 126 о многозначная 126 о мультиклассовая 126 о точность 357 Кластеризация 129, 135 Кнопка 91 Кодирование ручное 141 Квантование ◊ неточностей ◊ ошибок 358 358 ◊ программируемая вентильная ◊ умножение 185 Машина: 186 ◊ виртуальная ◊ опорных векторов 135 34, 133 автоматизированное 181 недостатки 213 операции 182 систем встраиваемых 37 Машинное обучение ◊ ◊ ◊ ◊ 38, 106
Предметный указатель Метаданные 234 234 Модель ◊ 98 встраивания мультимодальная ◊ оптимизация точкой 144 последовательности предвзятость ◊ сверточная сжатие 139 Отслеживание объектов 215 139 велосипедный о для домашних животных 478 477 н 233 42 аномалий объектов Обобщение Полнота 355 Потери 128 127 91 150 189 361 88 359 358 359 о 177 177 - цифровая 38, 177 297 изображений сигналов Обучение: без учителя 134 134, 136 с учителем 134 трансферное 139, 144 федеративное 151 глубокое Объединение: 123 признаков 123 357 Предвзятость: данных, конвейер ◊ 97 118 Порог уверенности 35,289 датчиков 363 362 30 Полнота модели 121 о о средняя абсолютная Площадь под кривой Обработка: ◊ ◊ Персонализация Обновление по беспроводной сети о среднеквадратическая Плата макетная Обнаружение: ◊ данных Поле зрения Обеспечение качества ◊ 264 о ◊ Периферия 125 212 Область частотная ◊ 351 Переключатель 118 о о системы Передискретизация Нос электронный о FI 361 о Память энергозависимая 243 Наложение спектров Нормализация о п Набор данных: эталонный 59 Ошибка: о о 181 Оценка: Монитор: записи 204 171 Оркестровка 179 ◊ 366 Оптимизация гиперпараметров о о 127 127 134 116 Описание задачи 179 полносвязная 138 ◊ о сегментация Операция над операндами с плавающей ◊ Надежность обнаружение Окно временное 140 139 о ◊ о ◊ Объяснимость 35 архитекrура 507 Объект: Метка данных Микроконтроллер 1 152 о алгоритмическая о данных ◊ 77 модели 215 о тестирования о человеческая 77 77 77 Представление непоследовательное 265 Преобразование 130 ◊ сигналов 67 Преобразователь 140 Признак: о данных ◊ масштабирование 233 124 Программное обеспечение, встроенное Процессор: ◊ ◊ ◊ встраиваемый 189 105 приложений 96 нейронный 27
Предметный указатель 508 ◊ цикл рабочий ◊ цифровой сигнальный Прошивка 367 Фильтр: 102 99 р Рабочая характеристика приемника Размерность, уменьшение 361 129 Распределение: ◊ верхних частот Калмана 120 135 ◊ нижних частот ◊ скользящего среднего ◊ цифровой ◊ частота среза 120 120 120 120 Фильтрация: вероятностей 359 267 127 Регрессия ◊ логистическая ◊ изображений ◊ шума 120 120 Фотодатчик 92 Фотоловушка 66, 394 ◊ ошибок 135 Фреймворк глубокого обучения Функция потерь 357 с Сбор данных 171 Сезонность данных 260 бинарная нейронная ◊ пиковая нейронная 149 149 Хранилище признаков Цикл: ◊ встроенная ◊ локации реального времени ◊ позиционирования 27 (RTLS) 91 глобальная (GPS) 91 Слияние операторов Слой полносвязный 148 461 Сопроцессор встроенный Способность пропускная выполнения приложения ◊ обратной связи 386 314 202 84, 118 ◊ дискретизации ◊ кадров ◊ среза фильтра 84, 118 86, 117 Черный ящик т 120 75 ш 92 Шум меток Тестирование оборудования автоматизированное 192 классификации ◊ модели 357 Экономика 358 средняя 363 23 7 Экспертиза: 185 ◊ в предметной области ◊ этическая Эмулятор 148 ◊ Ускоритель глубокого обучения Устройство периферийное 30 ф 42 Эксперт предметной области у Умножение матриц 262 э 359 ◊ Файл манифеста активного обучения Частота 97 40 185 Статистика сводная 381 У сечение ◊ ◊ ч Среда выполнения Точность 254 ц 191 Система: Тензодатчик 185 х ◊ Симуляция 177 Фурье быстрые преобразования Сеть: ◊ ◊ ◊ 105 154 219 191 Renode 191 Энкодер линейный 90 я Язык описания аппаратного обеспечения 281 106, 1
Об авторах Дэннел Снтунаяке ния в компании (Daniel Situnayake) Edge lmpulse, в котором руководитель отдела машинного обуче­ он управляет исследованиями и разработ­ ками в области встроенного машинного обучения. Он соавтор книги "ТinyML: Machine Leaming with TensorFlow Lite on Arduino and UltraLow Power Microcontrollers" издательства O'Reilly - стандартного учебника по встроенному ма­ шинному обучению. В качестве приглашенного специалията Дэниел также читал гостевые лекции в Гарварде, Калифорнийском университете в Беркли и Ранее Дэн работал над Farms - TensorF\ow Lite в Goog\e UNIFEI. Tiny и стал соучредителем первой американской компании, использующей автоматизацию для про­ изводства белка из насекомых в промышленных масштабах. Свою карьеру он на­ чал, читая лекции по автоматической идентификации и сбору данных в Бирмингем­ ском городском университете. Дженнн Планкетт старший инженер по связям с разработчика­ ми в компании выступает в качестве технического спикера, (Jenny Plunkett) Edge lmpulse, где она евангелиста разработчиков и создателя технического контента. Помимо ведения документации по Edge Impulse, она также создавала ресурсы для разработчиков для Arm Mbed OS и Pelion IoT. Она выступала с семинарами и докладами на таких крупных технологических конференциях, как Grace Hopper Celebration, Edge AI Summit, Embedded Vision Summit и др. Ранее Дженни работала инженером­ программистом и консультантом по loT в компаниях Arm Mbed и Pelion. Окончила платформ Техасский университет в Остине со степенью бакалавра в области электротехники.

Об изображении на обложке Животное на обложке книги "Искусственный интеллект для периферийных уст­ ройств" - сибирский горный козел Особей этого вида можно (Capra siblrica). встретить по всей Азии в таких странах, как Китай, Монголия, Пакистан и Казах­ стан. Сибирские горные козлы - это, по сути, крупный вид диких козлов. Цвет их меха варьируется от темно-коричневого до светло-коричневого с рыжеватым от­ тенком. У самцов большие, черные, кольчатые рога, а у самок серые рога по­ - меньше. Бороды есть у обоих полов. Зимой их шерсть светлеет, а летом темнеет. Они обычно перемещаются однополыми стадами от 5 до 30 особей. Идеальное место обитания сибирских горных козлов - выше линии деревьев на крутых склонах и каменистых осыпях. В полузасушливых пустынях их можно встретить на высоте до семисот метров. Их рацион состоит в основном из трав и травянистых растений, произрастающих в кустарниковых зарослях и на лугах. Поскольку в естественной среде обитания сибирские горные козлы встречаются в изобилии, они считаются видом, вызывающим наименьшую озабоченность, не­ смотря на то что их популяция сокращается. Наибольшую угрозу для этого вида представляют охота ради пищи и браконьерство в спортивных целях. Многие жи­ вотные на обложках издательства O'Reilly находятся под угрозой исчезновения, и все они важны для планеты. Иллюстрацию на обложке выполнила Карен Монтгомери основе черно-белой гравюры из книги ная история животных"). (Karen Montgomery) на "The Natural History of Animals" ("Естествен­
Дэниел Ситунаяке, Дженни Планкеп Искусственный интеллект для периферийных устройств Перевод с ан?лийского М Райт..,,ана ТОО"АЛИСТ' Республика Казахстан, г. Астана, пр. Сарыарка, д. 17, ВП 010000, 30 Подписано в печать 09.01 .25. Формат 70х100 1 /, 6 . Печать офсетная. Усл. nеч. л. 41,28. Тираж 1000 экз. Заказ № 0194 Отпечатано в АО «Первая Образцовая типоrрафия» Филиал «Чеховский Печатный Двор» 142300, Московская область, г. Чехов, ул. Полиграфистов, д. 1 Сайт: WWIN.chpd.ru, E-mail: sales@chpd.ru, тел. 8(495)107-02-68