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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник: http://www.it-world.ru/it-news/it/143444.html