Только совсем далекий от современных технологий человек не слышал про нейросети. Хотим мы того или нет, нейросети уже интегрированы в нашу повседневную жизнь.
Во многих случаях информация про нейронную сеть больше выглядит как хайп, чего только стоят следующие заголовки:
Поисковые алгоритмы от Google и Яндекса построены на нейронных сетях. Онлайн-переводчики используют нейросеть в своей работе. Сервисы товарных рекомендаций, которые мы можем встретить на многих Web-сайтах, также основаны на нейронной сети. Алиса от Яндекса - еще одно детище нейросети.
Понятие "нейросеть" было придумано достаточно давно и является синонимом алгоритма машинного обучения. Первая версия формального нейрона, ячейки нейронной сети, была предложена Уорреном Мак-Каллоком и Уолтером Питтсом в 1943 г. А уже в 1958 г. Фрэнк Розенблатт разработал первую нейронную сеть. Но первый блин оказался комом, и другие алгоритмы машинного обучения отодвинули на какое-то время нейросети на второй план.
Популярность нейронные сети стали завоевывать после 2010 г. Для того чтобы разобраться, почему это произошло, мы должны понимать, как устроена нейросеть и в чем ее особенность.
Нейронные сети с помощью аппаратных и программных средств имитируют паутину нейронов в человеческом мозге. Но так как мы говорим о машинном обучении, результатом всех вычислений являются ноль (нет) или единица (да): то есть машина нам дает ответ, который близок к значению "нет" или "да". Соответственно, для того чтобы обучить машину распознавать числа, нам понадобится нейросеть, состоящая из секторов, каждый из которых будет отвечать за свою цифру от 0 до 9. Чем больше нам необходимо получить ответов вариантов ответов может быть, тем крупнее будет наша нейросеть.
Глубинные нейронные сети состоят из слоев, поэтому мы часто и слышим термин "глубинное обучение". Каждый слой выполняет свою задачу и дальше взаимодействует со следующим слоем. Для того чтобы сеть работала правильно, мы должны дать ей на распознавание подготовленный объект. Многие слои нейросети как раз отвечают за такую подготовку: находят объект на фотографии, по контурам, убирают шумы и т.п.
Хорошим сравнением для понимания, как мне кажется, будет аналогия, как мы учим детей узнавать, например, волка. Волки ведь бывают разные: в зоопарке они одни, а в мультфильмах и сказках совсем другие. Волк из "Ну, погоди!" очень сильно отличается от волка из сказки про семерых козлят, ну и тем более от волка на фотографиях живой дикой природы. Если мы встретим ростовую куклу или пойдем в театр на детский спектакль, то это будет уже другой волк. Тем не менее через какое-то время ребенок начинает узнавать волка. Как же это происходит?
Первое: мы учим ребенка находить на наблюдаемой сцене животное, то есть объект. Для этого мы тыкаем пальцем и говорим: "Смотри - волк". Или: "Смотри - заяц". Такая идентификация и является первой задачей нейросети. Дальше мы обучаем ребенка на разных изображениях определять волка; если ребенок угадывает, то мы его хвалим (этап обучения). Но иногда картинок для обучения нам не хватает и тогда мы можем нарисовать волка сами, слепить его из пластилина, показать новый мультик. В машинном обучении это называется "синтетическая генерация данных", необходимая для расширения обучающей выборки. Ребенок должен узнавать волка даже в том случае, если он спрятался за деревом и когда он лежит в чепчике и очках в кровати бабушки, которую только что съел. После того как мы окончательно поняли, что ребенок узнает волка в 90-95% случаев, мы уже не говорим ребенку: "Смотри - волк", так как знаем, что он может найти волка на картинке и его безошибочно распознать. Знания ребенка проверяются на новых книжках, и на этом процесс обучения заканчивается.
А теперь вернемся в 2010 г. В 2010 г. появилась база ImageNet, содержащая 15 млн изображений в 22 тыс. категорий. Эта была достаточная выборка для обучения нейросетей.
В 2012 г. Крижевски и Хинтон для вычислений в нейронной сети решили использовать ресурсы графических процессоров (видеокарт). Технология глубокого обучения с ускорением на GPU (графический процессор) вообще в корне поменяла подход к разработке программного обеспечения. Раньше ПО создавали программисты и они же писали коды для алгоритмов. Теперь машинные алгоритмы обучаются сами на многочисленных примерах из жизни, таким образом программа улучшает себя сама. Самое главное, существенно сократилось время обучения сети. Ведь мы не можем ждать год или два (время, необходимое для узнавания волка ребенком), пока наша нейросеть обучится.
Очень полезным инструментом для видеоанализа оказалась сверточная нейросеть. Сверточные нейронные сети обеспечивают частичную устойчивость к изменениям масштаба, смещениям, поворотам, смене ракурса и прочим искажениям в изображениях. Сейчас в анализе видео- и фотоизображений в основном используются такие сети.
Появление множества библиотек и инструментов, которые облегчают работу программистов с нейросетью, способствовали бурному росту глубинного обучения на основе нейросетей и дошли до отрасли технических систем безопасности. В принципе, любой желающий может взять готовую нейросеть и доработать ею под свои нужды.
Самым известным и масштабным экспериментом с работой искусственного интеллекта по обработке изображений стал опыт Google в распознавании кошек на видео YouTube. Как и в примере с волком, изначально самообучаемая нейросеть не знала о существовании кошек, но после просмотра 10 млн случайных кадров с YouTube в нейросети сформировались нейроны, селективно реагирующие на присутствие кошачьих мордочек на изображениях.
Еще одним примером служит проект Facebook под названием DeepFace, алгоритм распознавания лиц на фотографиях, точность которого достигает 97%, независимо от качества фото, степени освещенности и расположения человека на снимке. Разработчики обучали свой алгоритм, используя 4 тыс. фотографий из альбомов 4 млн человек.
Но нейросеть нельзя назвать универсальным инструментом. В ее обучении и использовании есть определенные сложности.
Одно дело, если ребенок сможет определить волка, найдя его среди овец (только если волк не будет в овечьей шкуре). А если это будет большая лохматая собака, бегущая по улице? Или, наоборот, некрупный степной волк размером с обычную собаку? Не всякий взрослый найдет отличия между таким хищником и домашним питомцем. Для полноценного обучения нейросети требуется:
Не стоит стремится применять нейросеть во всех случаях. Например, для подсчета посетителей отлично подходят классические методы детекции, дающие высокую степень точности. А вот там, где нельзя заранее сформулировать какие-то четкие признаки объекта, нейросеть подойдет как нельзя лучше (например, детекция дыма и огня), ведь она сама на основании данных будет устанавливать признаки и закономерности. Правда, в отличие от запрограммированных человеком алгоритмов, эти признаки и закономерности будут находиться глубоко на ее дне, недоступные для понимания пользователей. Некоторых это пугает: даже обращаясь к врачу, мы должны понимать, о чем он говорит и по каким признакам ставит нам диагноз. Но в последнее время ведутся разработки, направленные на перевод машинного языка на "человеческий", чтобы нейросеть могла объяснить, какие критерии она посчитала важными, и уже человек будет в дальнейшем решать, права она или нет и, если что, расставлять для сети приоритеты.
Искусственные нейронные сети применимы практически во всех областях, использующих видеонаблюдение. Как и другие методы машинного зрения, нейросети используются для извлечения из потока изображений информации о наблюдаемой сцене и присутствующих на ней объектах.
Розничная торговля
Контроль работы персонала магазина и анализ поведения посетителей. Например, сбор информации о количестве посетителей, их поле и возрасте, длине очередей, времени обслуживания. Выявление наиболее посещаемых мест, определение особых клиентов, контроль заполненности полок и правильности расстановки на ней товаров, выявление потенциально мошеннических операций кассиров. Появляется возможность контроля времени реакции консультантов на появление в магазине посетителя.
Транспорт
Определение статистических характеристик транспортных потоков, контроль соблюдения правил парковки, подсчет количества пассажиров для контроля оплаты проезда.
Банковская отрасль
Определение поз людей, нетипичных для помещений с банкоматами:
Общественная безопасность
Определение позы: вскинутые вперед руки для стрельбы (особенно актуально для школ в США), обнаружение лежащего человека. Обнаружение оставленных предметов с возможностью выделения предметов определенного типа.
Производство, строительство
Определение появления людей в опасных зонах при наличии большого количества визуальных помех (работающая техника, сложные погодные условия), контроль использования спецодежды и соблюдения техники безопасности. Контроль соблюдения технологического процесса, контроль качества.
Охрана природы
Обнаружение лесных пожаров по поднимающемуся дыму.
Работа с видеоархивом
Поиск похожих объектов – например, людей или автомобилей. Позволяет выделить объект на видео или загрузить в систему фотографию и найти все видеозаписи, на которых присутствуют похожие объекты.
Для обучения нейросетей мы используем открытый пакет Caffe. Для применения нейросетей (inference) – пакет Caffe и оптимизированный для устройств компании Intel пакет OpenVINO (поддерживает CPU, встроенный GPU, специализированные USB-устройства, устройства FPGA). Планируем также использовать пакет TensorRT компании NVidia, оптимизированный для ее устройств. До недавнего времени его использование сдерживалось отсутствием версии для ОС Windows.
Каждый этап разработки искусственной нейронной сети сопряжен со своими сложностями:
Многие виды деятельности, которые сейчас считаются прерогативой человека, будут автоматизированы. В том числе работа операторов видеонаблюдения. В статье, опубликованной в четвертом номере журнала «Системы безопасности» за прошлый год, я давал приблизительный прогноз развития нейросетевых технологий на рынке видеонаблюдения. С тех пор прошло полгода и пока создается впечатление, что события развиваются быстрее прогноза. Взрывное развитие сдерживается только отсутствием доступного оборудования для использования нейросетей. Но ситуация меняется – в игру за рынок такого оборудования активно вступают разные компаний. Например, Intel, планирующая в очередном поколении процессоров поддержать специальные инструкции для ускорения нейросетей, и HiSilicon, уже выпустившая SoC для видеокамер, содержащий нейросетевой ускоритель.
Нейронные сети успешно решают задачи в тех случаях, когда для достижения таких же результатов классическими видеоаналитическими методами требуется гораздо большее количество ресурсов.
Например, при распознавании автомобильных номеров трекер на основе классических алгоритмов видеоаналитики находит в кадре любые наборы символов, похожие на автомобильные номера, и пытается их распознать. Классический детектор не позволяет с достаточной степенью надежности определять номера с малым количеством символов. Также огромное многообразие надписей на контейнерах и грузовиках мешает корректно находить номер. В этих случаях нейросетевой детектор успешно решает задачу. После того как мы обучили нейросетевой локализатор находить номерную пластину в кадре и отсеивать лишнее, мы добились значительно более высокой точности распознавания номеров. Модуль локализации корректно находит номерную пластину в кадре, исключая прочие надписи. Нейросетевой локализатор успешно работает там, где объекты нужного типа «перекрывают» друг друга в кадре или присутствует большое количество визуальных помех.
Другой пример - трекинг людей на пешеходном переходе. Нейросетевой детектор, обученный на очень большой выборке, предназначенный для детекции пешеходов на «зебре» позволяет с высокой точностью детектировать людей. При этом он крайне устойчив к колебаниям внешней среды, таким как освещение, погодные условия, «перекрытие» другими объектами и помехи.
Мы используем OpenVINO, Caffe, Caffe2, Tiny-dnn, TensorFlow.
Предположим, перед нами стоит задача узнавать о наличии припаркованного автомобиля или об образовавшемся заторе в зоне посадки/высадки из транспортного средства в аэропорту. Сложность заключается в том, что считать количество машин и отслеживать траекторию перемещения каждой нужно на многополосном участке с камер, расположенных на крыше многоэтажного терминала аэропорта. Система должна работать в меняющихся условиях освещенности при любой погоде. Решением этой задачи будет трекинг на нейросетях.
На основе наработанного опыта и анализа научных работ выбираем тип нейросети. Далее оцениваем фреймворк на перспективность использования для решения поставленной задачи и определяем материал, на котором будет проходить обучение. В процессе обучения анализируем поведение нейросети, вносим изменения в выборку, архитектуру, проводим несколько итераций до достижения нужного результата. Следить за поведением нейросети и менять наборы параметров, чтобы получить результат высокой точности, помогают разносторонний опыт специалистов в программировании и решении практических задач в нейросетевой разработке. Разработчики высокого уровня могут по выходам промежуточных слоев целенаправленно вносить изменения в алгоритм обучения, архитектуру и ряд других параметров и быстрее добиваться нужного результата.
Опыт последних нескольких лет позволил сформировать понимание как действовать для решения той или иной задачи.
Чтобы обучить нейронную сеть нужно собрать и разметить огромное количество данных. Сбор данных, пожалуй, одна из самых затратных задач в нейросетевой разработке. Обучающая выборка должна максимально разносторонне представлять целевой объект. Сеть нужно обучать на множестве изображений с вариантами погодных условий, угла и дистанции съемки, освещенности и других параметров. Где взять такое разнообразие? В нашем распоряжении огромная база для обучения: у компании более 100 тыс. внедрений по всему миру. Кроме того, практикуем сбор данных под целевую задачу, организуя фотосъемку нужных для обучения объектов.
Моделям машинного обучения нужно большое число размеченных данных. Разметка данных - длительный и трудоемкий процесс. На каждом изображении нужно вручную обвести границы объекта. Чем точнее мы выделим границы номерной пластины автомобильного номера, тем выше будет качество алгоритма. Соответственно размечать нужно с точностью до пикселей. Как организовать разметку данных и проконтролировать её корректность, когда речь идет о десятках и сотнях тысяч изображений? Мы используем Computer Vision Annotation Tool – инструмент с открытым исходным кодом для разметки цифровых изображений и видео. Сервис поддерживает разные типы и форматы разметки и многократно ее ускоряет.
Анализ поведения нейросети с помощью стандартных инструментов в фреймворках и наших внутренних средств визуализации помогает проводить регулировку обучающего процесса. Кроме того, стандартные подходы к тестированию не всегда соответствуют практическим задачам. В результате мы выработали собственные подходы из средств программной реализации для тестирования нейросетей.
Порой нейросети находят применение в самых неожиданных областях. Необычный свежий пример — анализ корректности юридических документов. Не так давно даже прошло соревнование нейросети с американскими юристами, в котором нейросеть одержала победу. Однако, на мой взгляд, целесообразнее всего применять нейросети и искусственный интеллект там, где требуется монотонное повторении одних и тех же операций, монотонный труд. Если говорить о видеонаблюдении, которым занимается Ivideon, огромный потенциал нейросетей используется для анализа видео. Просмотр многочасовых видеозаписей — утомительное занятие, поэтому человеческий фактор здесь может играть решающую, а лучше сказать — критическую, роль. Нейросети эффективно решают эту проблему.
Есть множество библиотек, которые облегчают работу программистов с нейросетями. Для языка Python это TensorFlow, Keras, Pytorch. Для С++ используется Caffe.
Пример из моей практики — метод обучения с «учителем», при котором используются размеченные данные для тренировки сети.
1. Подготовка данных для обучения и разметка данных. Для этого частично используется автоматизация: использование больших уже натренированных сетей для разметки или алгоритмов видеоаналитики, работающих по другому принципу, например, детекция движения.
2. Аугментация данных: предварительная подготовка данных перед обучением (поворот на случайный угол, изменение баланса белого, яркости, перемещение, масштабирование).
3. Перетренировка сети. Для решения этой проблемы анализируются результаты работы нейросети на тестовом наборе данных на всем этапе обучения.
4. Ускорение работы сети. Для ускорения сети производится уменьшение количества вычислений на основе анализа значимости её нейронов (Pruning).
Не очень люблю фантазировать, однако, что касается видеонаблюдения, применение нейросетей, несомненно, повысит качество и существенно расширит спектр предоставляемых услуг.
Нейросети переживают настоящий бум. Исследователи занимаются искусственными нейронными сетями достаточно долго, не менее 70 лет, но огромный шаг вперед в развитии архитектуры искусственных нейросетей был сделан примерно в 2012-2015 годах. Нейросети стали значительно экономичнее в использовании своих параметров, возникла волшебная модель под названием «сверточная нейросеть» (кто о ней не слышал?). Такие нейросети обладают замечательной способностью самостоятельно находить в данных те признаки, с помощью которых можно наилучшим образом решить поставленную перед ними задачу, например, отличить один объект на изображении от другого. Другой популярный термин – “глубокое обучение” говорит нам о том, что современные нейросети имеют большое (иногда очень большое – более сотни) число слоев, что позволяет им находить решения для более сложных данных. Почти все современные нейросетевые модели – это глубокие свёрточные нейросети.
Всё в это привело к такому значительному расширению диапазона задач, которые можно успешно решать с помощью нейросетей, что и сам термин “искусственный интеллект” заиграл новыми красками.
В первую очередь штурму подверглись разнообразные задачи обработки изображений и анализа видеоданных: детектирование различных объектов на изображении и их классификация (эти задачи тесно связаны). Сюда относятся задачи обнаружения и распознавания лиц и автомобильных номеров, поиск и определение местоположения людей и других объектов в кадре, обнаружение огня, дыма, воды там, где их не должно быть, и т.д. Нейросети могут предсказывать последовательности кадров (а также временные ряды других данных). Эти задачи из области анализа изображений могут решаться в продукте как по-отдельности, так и в сложных комбинациях, необходимых для решения каких-то еще более сложных задач, например, обеспечения работы автопилота беспилотного автомобиля.
Другой большой класс задач, где нейросети успешно применяются – обработка текстов на естественном языке. Это всевозможные задачи классификации текстов (например, классификация отзывов на положительные и отрицательные), машинный перевод, и, наконец, чат-боты и таск-боты – программы, которые сейчас в состоянии заменить, например, продавцов билетов.
Также неросети применяются в задачах анализа научных данных, в играх, в финансах для оценки клиентов и всевозможных рисков и во многих других областях. В общем, свёрточные нейросети хорошо работают с теми данными, в которых есть корреляция по измерениям (изображения, звук, тексты, временные ряды). Там где её нет, например, разнородные данные о клиенте – лучше применить простую полносвязную сеть или вообще другую модель классификатора.
Взрывному росту сложности и количества задач, решаемых при помоши нейронных сетей, очень способствует то, что сейчас в распоряжении исследователей и разработчиков имеется огромное количество инструментов, позволяющих быстро создать (или взять готовую), обучить, протестировать и развернуть нейросеть любой сложности. Одни из них могут являться надстройками над другими, так что прямое сравнение всех со всеми не очень уместно.
Кроме инструментов современным разработчикам доступны и готовые нейросети, уже обученные, например, для решения задач классификации изображений и находящиеся в открытом доступе. Их вполне можно использовать для решения своих задач, взяв за основу как инструмент, так как их можно дообучить классифицировать именно те объекты, которые нужны вам, а хорошие признаки из изображений они выделять уже умеют. Однако в этой области доводилось встречать и злоупотребления. Например, попытку неких самонадеянных разработчиков продать известную нейросеть YOLOv2, находящуся в открытом доступе, в качестве собственного готового решения для обнаружения разнообразных объектов на видео. Надо помнить, что это всего лишь инструмент, который вряд ли будет хорошо работать в реальных сложных уловиях.
Можно ли считать, что нейронные сети развились до уровня, когда любой человек может легко решить любую сложную задачу, взяв готовую модель, данные, и запустив обучение? Скорее всего, нет. Можно легко получить хорошее решение для простых случаев, и намного сложнее выжать необходимую точность в сложных реальных условиях работы. Проблема кроется в том, что какая бы сложная модель нейросети не использовалась – это по-прежнему всего лишь математическая функция, хорошо аппроксимирующая ваши данные. Нейросети замечательно научились угадывать ответы в сложных задачах. Но они всегда умеют только то, чему вы их учите.
Представьте, что вы собираетесь обучить нейросеть распознавать лица, то есть отличать изображение лица одного человека от изображения лица другого. В обучающей выборке у каждого человека несколько фотографий и, допустим, так получилось, что люди, носящие очки всегда или почти всегда изображены в очках. Чему обучится нейросеть? Конечно тому, что очки – это неотъемлимая часть лица этих людей. Если вдруг он затем снимет очки перед камерой, система с вероятностью, близкой к единице, посчитает его другим человеком.
Так что обучение – это всё еще опыт исследователя и глубокое понимание возможностей машинного обучения, несмотря на то, что процесс обучения – это всего лишь подгонка функции, реализуемой нейросетью, под обучающие данные путем подбора параметров этой функции. В этом плане мало что изменилось за 70 лет и это всё еще очень мало похоже на то, как обучается человеческий мозг. Может, в этой области и нужно ждать следующего революционного прорыва?
После нескольких лет бурного развития нейросетевых технологий, начавшегося примерно в 2012 году, нейросети взяли некоторую паузу. Сейчас мы находимся на этапе осмысления возможностей и поиска задач, которые еще можно решить. Когда возможностей перестанет хватать, неизбежно последует новый прорыв, и рано или поздно мы приблизимся к сильному искусственному интеллекту. Когда это произойдёт? 60 лет назад думали, что через 10 лет. Может быть, всё еще через 10 лет?
Нейронные сети находят применение практически во всех областях деятельности человека – от автоматизации технологических операций на производстве до автопилотов автомобилей и искусства. Во многих областях нейронные сети уже превзошли человека (распознавание текста для узких задач, классификация изображений – конкурс ImageNet, программа AlphaGo, использующая нейронные сети, в 2016 году выиграла матч у одного из сильнейших игроков в истории Go). Можно выделить следующие популярные области применения нейронных сетей: анализ изображений, анализ текста, распознавание речи рекомендательные системы, поисковые системы.
Для обучения нейронной сети необходимы 3 составляющие - обучающие данные, специализированное программное и аппаратное обеспечение.
Обучающих данных требуется очень много - десятки тысяч–миллионы объектов.
Для подготовки (разметки) обучающих данных разработан ряд инструментов: LabelMe – бесплатная утилита от MIT. Платные сервисы для разметки данных: Prodi.gy, Scale.ai, Supervise.ly. Краудсорсинговые сервисы: Яндекс.Толока, Amazon Mechanical Turk.
Для обучения нейронных сетей наиболее популярна связка языка Python и одной из библиотек для машинного обучения: Tensorflow, Keras, Caffe, PyTorch.
Обучение нейронных сетей связано с огромным объемом обучающих данных и как следствие большим объемом вычислений. Для их ускорения используются графические видеокарты - GPU (самая популярная модель GeForce GTX 1080 Ti).
При отсутствии устройства GPU можно воспользоваться платными облачными сервисами с ускорением вычислений на GPU: Amazon Web Services, IBM Cloud, Microsoft Azure или Google Cloud (сервера с тензорными процессорами Google TPU).
Наиболее распространенным методом обучения нейронных сетей является метод обратного распространения ошибки и его вариации. Использование библиотек для машинного обучения значительно снизило порог входа в область машинного обучения. Библиотеки экономят время разработки и предоставляют уже готовые реализации нейронных сетей и методов их обучения, исключая тем самым наиболее трудные этапы разработки. Многие библиотеки машинного обучения бесплатны и доступны с открытым исходным кодом, что обусловило существенный прогресс в области машинного обучения в последние годы.
В открытом доступе доступен зоопарк обученных нейронных сетей для разного рода задач. Сети, обеспечивающие впечатляющие результаты как правило обучены на выборках, содержащих миллионы объектов и повторить их обучение на обычных компьютерах часто не представляется возможным. Однако, обученную сеть можно адаптировать к решению вашей задачи, используя технологию переноса обучения (Transfer Learning) и ваш небольшой набор данных.
Подготовка обучающей выборки – трудоемкий процесс. Для увеличения размера выборки используют аугументацию данных - создание дополнительных обучающих данных из имеющихся, например, для изображений это можно сделать путем их преобразований и искажений. Существующая выборка должна максимально полно представлять все многообразие входных данных.
В реальных задачах данные обычно неравномерно распределены по классам, что может представлять проблему при обучении нейронной сети. Простейшим решением этой проблемы является дублирование примеров в классах с малым количеством примеров.
Этапы выбора архитектуры нейронной сети, способа нормализации данных, параметров обучения нейронной сети выполняются вручную на основе накопленного опыта.
В процессе обучения полезно выполнять визуализацию, чтобы контролировать эффективность обучения.
Чтобы быть уверенным, что обученная сеть будет хорошо работать на новых данных, обычно выборку делят на обучающую, тестовую и валидационную. На обучающей происходит обучение нейронной сети. По тестовой выборке (примеры из которой не используются в обучении) производят оценку адекватности работы нейронной сети и подбор параметров обучения. Валидационная выборка используется для финальной оценки обученной сети.
Обучение нейронной сети занимают очень много времени. Обученная же нейронная сеть работает довольно быстро, но обычно дольше классических алгоритмов анализа изображений.
Прорыв в применении нейронных сетей стал возможен благодаря появлению достаточно больших выборок обучающих данных (ImageNet – 21 млн. изображений) и возросшим вычислительным возможностям, позволяющим обработать такой объем данных. Немаловажную роль также сыграли предоставление в открытый доступ библиотек машинного обучения мировыми лидерами IT-индустрии. Дешевый сбор и анализ больших данных с помощью сенсорных сетей может в корне изменить управление многими отраслями экономики. Большие открытые данные и международный интеллект - основа прогресса в области анализа данных. Следующие прорывы следует ожидать от накопления и изучения новых больших данных - переход к пожизненному хранению персональных медицинских данных каждого человека и улучшение постановки диагноза на основе их анализа. Похожая задача — накопление персональной информации об образовании, достижениях, интересах и способностях каждого человека с раннего детства. Технологии социальной инженерии и анализа больших данных можно направить на выявление талантов, персонализацию образовательных программ, трудоустройство и формирование коллективов под проекты. Это автоматизированная биржа труда, которая имеет огромный потенциал и способна изменить облик общества.
Везде, где есть данные и есть необходимость их анализировать и обрабатывать, будь то распознавание изображений, синтез контента, управление роботом, перевод одного типа данных в другой, анализ и принятие решений, прогнозирование и т.д.
Процессоры NVIDIA для центров обработки данных, такие как Tesla V100 и T4, могут значительно ускорить практически все виды нейронных сетей. От сверточных нейронных сетей (CNN) для изображений и видео до рекуррентных нейронных сетей (RNN) для обработки естественного языка и нейронных коллаборативных фильтров (NCF) для рекомендательных механизмов. Платформа центра обработки данных NVIDIA ускоряет все современные платформы глубокого обучения.
Технология компьютерного зрения служит мостом между миром визуальной информации и миром интеллектуального анализа данных. Так как изображения и видео занимают существенную роль в современном информационном пространстве, необходимо обладать инструментом для обработки данных такого типа. Зачастую необходимо анализировать именно содержимое в семантическом смысле: что изображено на этой картинке, какие там присутствуют объекты и где они находятся, какие взаимосвязи между этими объектами и т.д. Точно такой же способ анализа изображений необходим для обеспечения зрения роботам и навигаторам беспилотных автомобилей, которым нужно «видеть» мир, с которым они взаимодействуют.
Независимо от того, вы разработчик, стартап или большая компания, вам нужны правильные инструменты для работы. Так как нейронные сети глубокого обучения становятся более сложными, время на тренировку существенно увеличивается, что выражается в снижении продуктивности и повышении затрат. Технология глубокого обучения NVIDIA и полный программный стек решения существенно ускоряют тренировку искусственного интеллекта. Среды глубокого обучения предлагают строительные блоки для проектирования, обучения и проверки правильности глубоких нейронных сетей через интерфейс программирования высокого уровня. Широко используемые платформы глубокого обучения, такие как Caffe2, Cognitive toolkit, MXNet, PyTorch, TensorFlow и другие, используют библиотеки с ускорением на GPU, такие как cuDNN и NCCL, для обеспечения высокопроизводительного обучения с ускорением на нескольких GPU.
Разработчики, исследователи и исследователи данных могут получить легкий доступ к оптимизированным контейнерам инфраструктуры глубокого обучения NVIDIA, производительность которых настроена и протестирована для графических процессоров NVIDIA. Это устраняет необходимость управления пакетами и зависимостями или создания структур глубокого обучения из исходного кода.
Графические процессоры NVIDIA для центров обработки данных доступны на всех основных облачных платформах (AWS, Google Cloud Platform, Azure, Oracle, IBM и многих других). Это означает значительные возможности ускорения для облачных компаний, а также отличную платформу для компаний, только начинающих работать с ИИ.
Разработка приложений ИИ начинается с обучения глубоких нейронных сетей с большими наборами данных. Для исследователей ИИ и разработчиков приложений графические процессоры NVIDIA Volta и Turing, работающие на тензорных ядрах, обеспечивают вам быстрое обучению и более высокую производительность глубокого обучения. С включенными тензорными ядрами матрица смешанной точности FP32 и FP16 значительно увеличивает вашу пропускную способность и сокращает время обучения ИИ.
Для разработчиков приложений, интегрирующих глубокие нейронные сети в свои облачные или встроенные приложения, Deep Learning SDK предоставляет высокопроизводительные библиотеки, которые реализуют API-интерфейсы строительных блоков для реализации обучения и логического вывода непосредственно в своих приложениях. Благодаря единой модели программирования для всех платформ графических процессоров - от настольных компьютеров до центров обработки данных и встраиваемых устройств, разработчики могут начать разработку на своем настольном компьютере, масштабировать в облаке и развертывать на своих периферийных устройствах - с минимальными изменениями кода или без изменений.
Разработчики, исследователи и исследователи данных могут получить легкий доступ к оптимизированным контейнерам инфраструктуры глубокого обучения NVIDIA, производительность которых настроена и протестирована для графических процессоров NVIDIA. Это устраняет необходимость управления пакетами и зависимостями или создания структур глубокого обучения из исходного кода.
Например: задача компьютерного зрения является достаточно сложной. Цифровые изображения представляют собой огромные таблицы чисел (интенсивности в пикселях), в которых нетривиально «разглядеть» тот или иной объект. Для решения этой задачи необходим промежуточный этап – извлечение признаков.
Грубый пример: чтобы найти на фотографии котика, надо сначала найти его уши, глаза и т. д. Долгое время такого типа визуальные признаки были очень специализированными и конструировались вручную. С приходом в компьютерное зрение свёрточных нейросетей появилась возможность обучать эти признаки автоматически из данных.
Основные проблемы возникают с реальной возможностью внедрить ИИ в ту или иную отрасль. Зачастую всё сводится к одной из следующих проблем: недостаток данных для обучения, плохо формализованные и неструктурированные данные, которые тяжело подать на вход какому-либо алгоритму, или же просто для данной задачи (типа данных) еще не изобретена подходящая по эффективности архитектура нейронной сети. Именно из-за таких проблем некоторые идеи умирают, не успев развиться, и не становятся «общеизвестными».
Разработчикам, исследователям и бизнесу не нужно просто отличное оборудование. Им нужна надежная платформа. Платформа центра обработки данных NVIDIA обеспечивает наиболее конкурентоспособную эко-системную поддержку для ИИ, машинного обучения, глубокого обучения и высокопроизводительных вычислений (HPC) для научных и медицинских исследований. Кроме того, эти ресурсы платформы находятся в свободном доступе на NVIDIA GPU Cloud (NGC) в виде контейнеров, которые можно быстро развертывать и использовать как локально, так и в облаке.
Мы наблюдаем невероятный уровень инноваций с тех пор, как в 2012 году началась глубокая революция в обучении. Архитектура нейронной сети продолжает развиваться, поскольку исследователи открывают новые подходы к решению сложных проблем, которые раньше считались невозможными. ИИ помогает быстрее выводить лекарственные препараты на рынок, помогает врачам быстрее диагностировать опасные для жизни заболевания,а также предоставляет потребителям бесчисленное количество услуг на основе ИИ: качественно улучшено распознавание речи в голосовых помощниках, улучшен машинный перевод, анализ комментариев пользователя во всевозможных сервисах, анализ изображений с камер на производстве для выявления аномалий и детектирования других важных вещей, распознавание лиц в банках и учреждениях, анализ пользователей и предсказание их поведения, робототехника и другие умные гаджеты. Прогресс в создании автономных транспортных средств также продвигается вперед, чтобы обеспечить безопасность и эффективное использование уже перегруженных дорог. В будущем применение ИИ во всех сферах нашей жизни станет просто рядовым событием, что позволит существенно уменьшить количество рутинной работы для человека и повысить качество продуктов и сервисов.
Искусственный интеллект в будущем станет универсальным массовым инструментом для решения самых разнообразных задач по работе с любыми типами данных. Практически вся работа, которую мы сегодня делаем в офисе, будет выполняться с помощью ИИ. Уже сейчас с помощью ИИ можно автоматизировать множество рутинных вещей. В будущем выполнение всё более интеллектуальных задач будут переходить под ответственность ИИ.