Нейросети взяли паузу

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

Нейросети переживают настоящий бум. Исследователи занимаются ими достаточно давно, не менее 70 лет, но огромный шаг развитии архитектуры искусственных нейросетей был сделан примерно в 2012-2015 годах. В 1988 году Яном Лекуном была предложена модель под названием «сверточная нейросеть». Такие нейросети обладают способностью самостоятельно находить в данных те признаки, с помощью которых можно наилучшим образом решить поставленную перед ними задачу, например, отличить один объект на изображении от другого. Популярный термин – “глубокое обучение” говорит о том, что современные нейросети имеют большое (иногда более сотни) число слоев, что позволяет им находить решения для более сложных данных. Большинство современных нейросетевых моделей – это глубокие свёрточные нейросети.

Всё в это привело к такому значительному расширению диапазона задач, которые можно успешно решать с помощью нейросетей, что и сам термин “искусственный интеллект” заиграл новыми красками.

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

Другой большой класс задач, где нейросети успешно применяются – обработка текстов на естественном языке. Это всевозможные задачи классификации текстов (например, разделение отзывов на положительные и отрицательные), машинный перевод, и, наконец, чат-боты и таск-боты – программы, которые сейчас в состоянии заменить, например, продавцов билетов.

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

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

В настоящее время самыми популярными и в то же время активно развивающимися являются Keras, PyTorch и Tensorflow.

Keras не является самостоятельным, требует наличия более низкоуровневой нейросетевой библиотеки в качестве бэкенда (например, Tensorflow), для него доступна документация с большим количеством примеров, накоплено огромное количество кода, который можно использовать, у него более компактный и простой API, полученные модели достаточно удобно разворачивать и применять.

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

Библиотека Tensorflow от компании Google является самым низкоуровневым, мощным и популярным инструментом среди перечисленных. Её можно как использовать в составе Keras (где она может быть полностью скрыта от разработчика), так и самостоятельно. Но за возможности придется платить временем на изучение, так как порог вхождения у неё определенно выше, чем у остальных.

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

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

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

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

После нескольких лет бурного развития нейросетевых технологий, начавшегося примерно, повторюсь, в 2012 году, нейросети взяли некоторую паузу. Сейчас мы находимся на этапе осмысления возможностей и поиска задач, которые еще можно решить. Когда возможностей перестанет хватать, неизбежно последует новый прорыв, и рано или поздно мы приблизимся к сильному искусственному интеллекту. Когда это произойдёт? 60 лет назад думали, что через 10 лет. Может быть, всё еще через 10 лет?

Алексей Ястребов,

ведущий разработчик компании Macroscop

Опубликовано 06.02.2019

Похожие статьи