Подписка

Нейросети в повседневной жизни

Михаил Бялый, 16/04/19

Только совсем далекий от современных технологий человек не слышал про нейросети. Хотим мы того или нет, нейросети уже интегрированы в нашу повседневную жизнь.
 

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

  • "Сотрудники Яндекса Алексей Тихонов и Иван Ямщиков выпустили альбом "Нейронная оборона", состоящий из песен и стихотворений, написанных роботом";
  • "Нейронная сеть AlphaGo от Google одержала третью победу над одним из сильнейших игроков мира в го";
  • "Кинокомпания RitZEED сняла фильм по сценарию, который написала нейросеть";
  • "На аукционе Christie’s за 432,5 тыс. долларов продали картину, созданную искусственным интеллектом".

Поисковые алгоритмы от Google и Яндекса построены на нейронных сетях. Онлайн-переводчики используют нейросеть в своей работе. Сервисы товарных рекомендаций, которые мы можем встретить на многих Web-сайтах, также основаны на нейронной сети. Алиса от Яндекса – еще одно детище нейросети.

Понятие "нейросеть" было придумано достаточно давно и является синонимом алгоритма машинного обучения. Первая версия формального нейрона, ячейки нейронной сети, была предложена Уорреном Мак-Каллоком и Уолтером Питтсом в 1943 г. А уже в 1958 г. Фрэнк Розенблатт разработал первую нейронную сеть. Но первый блин оказался комом, и другие алгоритмы машинного обучения отодвинули на какое-то время нейросети на второй план.

Популярность нейронные сети стали завоевывать после 2010 г. Для того чтобы разобраться, почему это произошло, мы должны понимать, как устроена нейросеть и в чем ее особенность.

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

Обучение нейросети

Глубинные нейронные сети состоят из слоев, поэтому мы часто и слышим термин "глубинное обучение". Каждый слой выполняет свою задачу и дальше взаимодействует со следующим слоем. Для того чтобы сеть работала правильно, мы должны дать ей на распознавание подготовленный объект. Многие слои нейросети как раз отвечают за такую подготовку: находят объект по контурам, убирают шумы и т.п.

Хорошим сравнением для понимания, как мне кажется, будет аналогия, как мы учим детей узнавать, например, волка. Волки ведь бывают разные: в зоопарке они одни, а в мультфильмах и сказках совсем другие. Волк из "Ну, погоди!" очень сильно отличается от волка из сказки про семерых козлят, ну и тем более от волка на фотографиях дикой природы. Если мы встретим ростовую куклу или пойдем в театр на детский спектакль, то это будет уже другой волк. Тем не менее через какое-то время ребенок начинает узнавать волка. Как же это происходит?

jpg

Первое: мы учим ребенка находить на наблюдаемой сцене объект. Для этого мы тыкаем пальцем и говорим: "Смотри – волк". Или: "Смотри – заяц". Такая идентификация и является первой задачей нейросети. Дальше мы обучаем ребенка на разных изображениях определять волка; если ребенок угадывает, то мы его хвалим (этап обучения). Но иногда картинок для обучения нам не хватает и тогда мы можем нарисовать волка сами, слепить его из пластилина, показать новый мультик. В машинном обучении это называется "синтетическая генерация данных", необходимая для расширения обучающей выборки. Ребенок должен узнавать волка даже в том случае, если он спрятался за деревом и когда он лежит в чепчике и очках в кровати бабушки, которую только что съел. После того как мы окончательно поняли, что ребенок узнает волка в 90–95% случаев, мы уже не говорим ребенку: "Смотри – волк", так как знаем, что он может найти волка на картинке и его безошибочно распознать. Знания ребенка проверяются на новых книжках, и на этом процесс обучения заканчивается.

А теперь вернемся в 2010 г. В 2010 г. появилась база ImageNet, содержащая 15 млн изображений в 22 тыс. категорий. Эта была достаточная выборка для обучения нейросетей. В 2012 г. Крижевски и Хинтон для вычислений в нейронной сети решили использовать ресурсы графических процессоров (видеокарт). Технология глубокого обучения с ускорением на GPU (графический процессор) вообще в корне поменяла подход к разработке программного обеспечения. Раньше ПО создавали программисты и они же писали коды для алгоритмов. Теперь машинные алгоритмы обучаются сами на многочисленных примерах из жизни, таким образом программа улучшает себя сама. Самое главное, существенно сократилось время обучения сети. Ведь мы не можем ждать год или два (время, необходимое для узнавания волка ребенком), пока наша нейросеть обучится.

Сверточная нейросеть

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

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

Масштабные эксперименты и проекты

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

Еще одним примером служит проект Facebook под названием DeepFace, алгоритм распознавания лиц на фотографиях, точность которого достигает 97%, независимо от качества фото, степени освещенности и расположения человека на снимке. Разработчики обучали свой алгоритм, используя 4 тыс. фотографий из альбомов 4 млн человек.

Необходимые инструменты для полноценного использования

Но нейросеть нельзя назвать универсальным инструментом. В ее обучении и использовании есть определенные сложности.

Одно дело, если ребенок сможет определить волка, найдя его среди овец (только если волк не будет в овечьей шкуре). А если это будет большая лохматая собака, бегущая по улице? Или, наоборот, некрупный степной волк размером с обычную собаку? Не всякий взрослый найдет отличия между таким хищником и домашним питомцем. Для полноценного обучения нейросети требуется:

  1. Большая и разнообразная выборка, при этом данные для обучения должны быть репрезентативными. Чем больше данных для обучения, тем умнее нейросеть.
  2. Подготовка данных для обучения и разметка данных. Для этого частично используется автоматизация: использование больших, уже натренированных сетей для разметки или алгоритмов видеоаналитики, работающих по другому принципу, например детекции движения.
  3. Аргументация данных: предварительная подготовка данных перед обучением (поворот на случайный угол, изменение баланса белого, яркости, перемещение, масштабирование) для того, чтобы сеть научилась определять объекты, как они встречаются "в жизни".
  4. Выбор конкретного набора алгоритмов, то есть определение принципа работы каждого слоя нейросети и его взаимодействия с соседними слоями.
  5. Тренировка и перетренировка сети.
  6. Своевременность завершения процесса обучения. Нейросеть нельзя обучать "на ходу": такая практика является рискованной, так как сеть может переобучиться или подстроиться под самые последние поступившие данные, потеряв при этом наработанную и "утвержденную" до этого логику.

Признаки и закономерности

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

Опубликовано: Журнал "Системы безопасности" #1, 2019

Темы:AIНейросети

Хотите сотрудничать?

Выберите вариант!

 

Печатное издание
Интернет-портал
Стать автором
Комментарии

More...