Разное

Как работают нейронные сети: обучение, функции активации и потери

Содержание

Как работают нейронные сети и почему они стали приносить большие деньги / Хабр

Нейросети выросли от состояния академической диковинки до массивной индустрии

За последнее десятилетие компьютеры заметно улучшили свои возможности в области понимания окружающего мира. ПО для фототехники автоматически распознаёт лица людей. Смартфоны преобразуют речь в текст. Робомобили распознают объекты на дороге и избегают столкновения с ними.

В основе всех этих прорывов лежит технология работы искусственного интеллекта (ИИ) под названием глубокое обучение (ГО). ГО основывается на нейросетях (НС), структурах данных, вдохновлённых сетями, составленными из биологических нейронов. НС организуются послойно, и входы одного слоя соединены с выходами соседнего.

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


В данной статье мы введём вас в мир НС. Мы объясним, что такое НС, как они работают и откуда взялись. И мы изучим, почему– несмотря на многие десятилетия предыдущих исследований – НС стали чем-то реально полезным только в 2012 году.

Нейросети появились ещё в 1950-х

Фрэнк Розенблатт работает над своим перцептроном – ранней моделью НС

Идея НС довольно старая – по крайней мере, по стандартам информатики. Ещё в 1957 году Фрэнк Розенблатт из Корнеллского университета опубликовал отчёт с описанием ранней концепции НС под названием перцептрон. В 1958 году при поддержке ВМФ США он создал примитивную систему, способную анализировать изображение 20х20 пикселей и распознавать простейшие геометрические фигуры.

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

«Сегодня ВМФ США раскрыл миру зародыш электронного компьютера, который, как ожидается, сможет ходить, говорить, видеть, писать, воспроизводить себя и осознавать своё существование», — писали в The New York Times.

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

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

Такая процедура позволяла ранним НС «обучаться» способом, немного напоминающим поведение нервной системы человека. Шумиха вокруг этого подхода не умолкала в 1960-е. Однако затем влиятельная книга 1969 года за авторством специалистов по информатике Марвина Минского и Сеймура Паперта показала, что у этих ранних НС есть значительные ограничения.

У ранних НС Розенблатта было всего один-два обучаемых слоя. Минский и Паперт показали, что подобные НС математически неспособны моделировать сложные явления реального мира.

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

В итоге НС растеряли всю поддержку в 1970-х и начале 1980-х – это была часть эры «зимы ИИ».

Прорывной алгоритм

Моя собственная нейросеть на основе «мягкого оборудования» считает, что вероятность присутствия на этой фотографии хот-дога равна 1. Мы разбогатеем!

Удача вновь повернулась лицом к НС благодаря знаменитой работе 1986 года, введшей в обиход концепцию обратного распространения – практический метод обучения НС.

Допустим, вы работаете программистом в воображаемой компании, производящей ПО, и вам дали поручение сделать приложение, определяющее, есть ли на изображении хот-дог. Вы начинаете работу со случайным образом инициализированной НС, принимающей на вход изображение, и выдающей на выход значение от 0 до 1 – где 1 означает «хот-дог», а 0 означает «не хот-дог».

Для обучения сети вы набираете тысячи изображений, под каждой из которых есть метка, обозначающая, есть ли на этом изображении хот-дог. Вы скармливаете ей первое изображение – и хот-дог на нём есть – в нейросеть. Она выдаёт выходное значение в 0,07, что означает «хот-дога нет». Это неправильный ответ; сеть должна была выдать ответ, близкий к 1.

Цель алгоритма обратного распространения – так подстроить входные веса, чтобы сеть выдавала более высокое значение в случае, если ей снова выдать это изображение – и, желательно, другие изображения, где есть хот-доги. Для этого алгоритм обратного распространения начинает с изучения входных нейронов слоя, являющегося выходным. У каждого значения есть переменная веса. Алгоритм обратного распространения подстраивает каждый вес в таком направлении, чтобы НС выдавала более высокое значение. Чем выше входное значение, тем больше увеличивается его вес.

Пока что я описываю простейший алгоритм восхождения к вершине, знакомый исследователям ещё в 1960-х. Прорыв обратного распространения стал следующим шагом: алгоритм использует частные производные для распределения «вины» за неверный выход среди входов нейронов. Алгоритм подсчитывает, как на окончательный выход нейрона будет влиять небольшое изменение каждого входного значения, и подвинет ли это изменение результат ближе к правильному ответу, или наоборот.

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

Затем алгоритм снова использует частные производные для расчёта того, как значение каждого входа предыдущего слоя повлияло на ошибки выхода этого слоя – и распространяет эти ошибки назад, на пред-предыдущий слой, где процесс снова повторяется.

Это просто упрощённая модель работы обратного распространения. Если вам нужны подробные математические детали, рекомендую книгу Майкла Нильсена по этой теме [и у нас есть её перевод / прим. перев.]. Для наших целей достаточно того, что обратное распространение радикально изменило диапазон обучаемых НС. Люди уже не были ограничены простыми сетями с одним-двумя слоями. Они могли создавать сети с пятью, десятью или пятидесятью слоями, и у этих сетей могла быть произвольно сложная внутренняя структура.

Изобретение обратного распространения запустило второй бум НС, начавший выдавать практические результаты. В 1998 году группа исследователей из AT&T показала, как можно использовать нейросети для распознавания рукописных цифр, что позволило автоматизировать обработку чеков.

«Основной посыл этой работы в том, что мы можем создавать улучшенные системы распознавания закономерностей, больше полагаясь на автоматическое обучение и меньше – на разработанную вручную эвристику», — писали авторы.

И всё же в этой фазе НС были лишь одной из многих технологий в распоряжении исследователей машинного обучения (МО). Когда я обучался на курсе ИИ в институте в 2008 году, нейросети были всего лишь одним из девяти алгоритмов МО, из которых мы могли выбирать вариант, подходящий для выполнения задания. Однако ГО уже готовилось затмить остальные технологии.

Большие данные демонстрируют всю мощь глубокого обучения

Обнаружено расслабление. Вероятность пляжа 1.0. Запускаем процедуру употребления Май Тай.

Обратное распространение облегчило процесс обсчёта НС, однако более глубоким сетям всё равно требовалось больше вычислительных ресурсов, чем мелким. Результаты исследований, проводимых в 1990-х и 2000-х годах часто показывали, что от дополнительного усложнения НС можно было получать всё меньше выгоды.

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

AlexNet разработала троица специалистов по информатике из университета Торонто для участия в научном конкурсе ImageNet. Организаторы конкурса насобирали в интернете миллион изображений, каждое из которых было размечено и отнесено к одной из тысяч категорий объектов, например, «вишня», «контейнеровоз» или «леопард». Исследователям ИИ предлагалось обучить свои МО-программы на части из этих изображений, а потом попытаться проставить правильные метки для других изображений, с которыми ПО не встречалось до этого. ПО должно было выбрать пять возможных меток для каждой картинки, и попытка считалась удачной, если одна из них совпадала с реальной.

Это было сложной задачей, и до 2012 года результаты были не очень хорошими. У победителя 2011 года процент ошибок составлял 25%.

В 2012 году команда AlexNet обошла всех конкурентов на голову, выдав ответы с 15% ошибок. У ближайшего конкурента этот показатель равнялся 26%.

Исследователи из Торонто скомбинировали несколько техник для достижения прорывных результатов. Одной из них было использование свёрточных нейростей (СНС). По сути, СНС как бы обучает небольшие нейросети – входные данные которых представляют собой квадраты со стороной 7-11 пикселей – а потом «накладывают» их на более крупное изображение.

«Это похоже на то, как если бы вы взяли небольшой шаблон или трафарет, и пытались сравнить его с каждой точкой изображения, — рассказал нам в прошлом году исследователь ИИ Цзе Тан. – У вас есть трафарет собачки, и вы прикладываете его к изображению, и смотрите – есть ли там собачка? Если нет, сдвигаете трафарет. И так для всей картинки. И неважно, где на картинке появляется собачка. Трафарет с ней совпадёт. Каждая подсекция сети не должна становиться отдельным классификатором собак».

Ещё одним ключевым фактором успеха AlexNet стало использование графических карт для ускорения процесса обучения. У графических карт есть параллельные вычислительные мощности, хорошо подходящие для повторяющихся вычислений, необходимых для обучения нейросети. Перенеся груз вычислений на пару GPU — Nvidia GTX 580, по 3 Гб памяти на каждой – исследователи смогли разработать и обучить чрезвычайно крупную и сложную сеть. У AlexNet было восемь обучаемых слоёв, 650 000 нейронов и 60 млн параметров.

Наконец, успех AlexNet обеспечил ещё и большой размер базы обучающих изображений из ImageNet: миллион штук. Нужно очень много изображений для точной подстройки 60 млн параметров. Достичь решительной победы AlexNet помогла комбинация из сложной сети и крупного набора данных.

Интересно, почему же подобный прорыв не произошёл ранее:

  • Пара GPU потребительского качества, использованная исследователями AlexNet, была далеко не самым мощным вычислительным устройством для 2012 года. За пять и даже за десять лет до этого существовали более мощные компьютеры. Кроме того, технология ускорения обучения НС при помощи графических карт была известна по крайней мере с 2004.
  • База из миллиона изображений была необычно большой для обучения алгоритмов МО в 2012 году, однако сбор подобных данных не был новой технологией для того года. Исследовательская группа с хорошим финансированием смогла бы без особых проблем собрать базу данных такого размера ещё на пять или десять лет раньше.
  • Основные алгоритмы, использовавшиеся в AlexNet, не были новыми. Алгоритм обратного распространения к 2012 году существовал уже примерно четверть века. Ключевые идеи, связанные со свёрточными нейросетями были выработаны в 1980-х и 1990-х.

Так что каждый из элементов успеха AlexNet существовал по отдельности задолго до происшедшего прорыва. Очевидно, никому не пришло в голову скомбинировать их – по большей части потому, что никто не догадался, насколько это будет мощная комбинация.

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

Бум глубокого обучения

Демонстрацию всей мощи глубокой НС, обеспеченной достаточным количеством обучающих данных, заметило много людей – как среди учёных-исследователей, так и среди представителей индустрии.

Первым изменилось само состязание ImageNet. До 2012 года большая часть участников соревнования использовали технологии, отличные от глубокого обучения. В состязании 2013 года, как писали спонсоры, «большая часть» конкурсантов использовали ГО.

Процент ошибок у победителей постепенно снижался – от впечатляющих 16% у AlexNet в 2012 году до 2,3% в 2017 году:

Революция ГО быстро распространилась и по индустрии. В 2013 Google приобрёл стартап, сформированный из авторов работы AlexNet, и использовал его технологию в качестве базы для функции поиска изображений в сервисе Google Photos. К 2014 году Facebook расхваливала собственное ПО, распознающее изображения при помощи ГО. Apple использует ГО для распознавания лиц в iOS, по крайней мере, с 2016 года.

ГО также лежит в основе недавнего улучшения технологии распознавания голоса. Siri от Apple, Alexa от Amazon, Cortana от Microsoft и ассистент от Google используют ГО – либо для понимания слов человека, либо для генерации более естественного голоса, либо и для того, и для другого.

В последние годы в индустрии образовалась самоподдерживающаяся тенденция, в рамках которой увеличение вычислительных мощностей, объёмов данных и глубины сетей поддерживают друг друга. Команда AlexNet использовала GPU потому, что они предлагали параллельные вычисления за разумные деньги. Но за последние несколько лет всё больше компаний начали разрабатывать собственные чипы, специально предназначенные для применения в области МО.

Google объявила о выпуске специально предназначенного для НС чипа Tensor Processing Unit в 2016. В том же году Nvidia объявила о выходе нового GPU под названием Tesla P100, оптимизированного для НС. Intel ответила на вызов своим ИИ-чипом в 2017. В 2018 Amazon объявила о выпуске собственного ИИ-чипа, который можно будет использовать в рамках облачных сервисов компании. Даже Microsoft, как говорят, работает над своим ИИ-чипом.

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

Даже Tesla вступила в эту игру со специальными чипами. В этом году Tesla показала новый мощный компьютер, оптимизированный для расчётов НС. Tesla назвала его Full Self-Driving Computer и представила, как ключевой момент стратегии компании по превращению парка Tesla в робомобили.

Доступность компьютерных мощностей, оптимизированных для ИИ, породила запрос на данные, необходимые для обучения всё более сложных НС. Эта динамика наиболее очевидна в секторе робомобилей, где компании собирают данные о миллионах километров реальных дорог. Tesla может собирать такие данные автоматически с автомобилей пользователей, а её конкуренты, Waymo и Cruise платили водителям, которые ездили на их автомобилях по общественным дорогам.

Запрос на данные даёт преимущество крупным онлайн-компаниям, у которых уже есть доступ к большим объёмам пользовательских данных.

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

Тому, конечно, есть ограничения. К примеру, некоторые люди баловались с идеей обучения робомобилей при помощи одного лишь ГО – то есть, скармливать изображения, получаемые с камеры, нейросети, и получать от неё инструкции по повороту руля и нажатию педалей. Я скептически отношусь к такому подходу. НС пока ещё не продемонстрировали способности проводить сложные логические рассуждения, которые требуются для понимания определённых условий, возникающих на дороге. Более того, НС представляют собой «чёрные ящики», рабочий процесс которых практически невидим. Оценить и подтвердить безопасность такой системы было бы сложно.

Однако ГО позволило сделать весьма широкие скачки в неожиданно большом спектре приложений. В ближайшие годы можно ожидать очередных подвижек в этой области.

Нейросети. Куда это все движется / Хабр

Статья состоит из двух частей:

  1. Краткое описание некоторых архитектур сетей по обнаружению объектов на изображении и сегментации изображений с самыми понятными для меня ссылками на ресурсы. Старался выбирать видео пояснения и желательно на русском языке.
  2. Вторая часть состоит в попытке осознать направление развития архитектур нейронных сетей. И технологий на их основе.

Рисунок 1 – Понимать архитектуры нейросетей непросто

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

  • Back-end demo, когда данные обрабатываются на сервере и передаются на телефон. Классификация изображений (image classification) трех типов медведей: бурого, черного и плюшевого.
  • Front-end demo, когда данные обрабатываются на самом телефоне. Обнаружение объектов (object detection) трех типов: фундук, инжир и финик.

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

  • Серия архитектур на основе R-CNN (Regions with Convolution Neural Networks features): R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN. Для обнаружения объекта на изображении с помощью механизма Region Proposal Network (RPN) выделяются ограниченные регионы (bounding boxes). Первоначально вместо RPN применялся более медленный механизм Selective Search. Затем выделенные ограниченные регионы подаются на вход обычной нейросети для классификации. В архитектуре R-CNN есть явные циклы «for» перебора по ограниченным регионам, всего до 2000 прогонов через внутреннюю сеть AlexNet. Из-за явных циклов «for» замедляется скорость обработки изображений. Количество явных циклов, прогонов через внутреннюю нейросеть, уменьшается с каждой новой версией архитектуры, а также проводятся десятки других изменений для увеличения скорости и для замены задачи обнаружения объектов на сегментацию объектов в Mask R-CNN.
  • YOLO (You Only Look Once) – первая нейронная сеть, которая распознавала объекты в реальном времени на мобильных устройствах. Отличительная особенность: различение объектов за один прогон (достаточно один раз посмотреть). То есть в архитектуре YOLO нет явных циклов «for», из-за чего сеть работает быстро. Например, такая аналогия: в NumPy при операциях с матрицами тоже нет явных циклов «for», которые в NumPy реализуются на более низких уровнях архитектуры через язык программирования С. YOLO использует сетку из заранее заданных окон. Чтобы один и тот же объект не определялся многократно, используется коэффициент перекрытия окон (IoU, Intersection over Union). Данная архитектура работает в широком диапазоне и обладает высокой робастностью: модель может быть обучена на фотографиях, но при этом хорошо работать на рисованных картинах.
  • SSD (Single Shot MultiBox Detector) – используются наиболее удачные «хаки» архитектуры YOLO (например, non-maximum suppression) и добавляются новые, чтобы нейросеть быстрее и точнее работала. Отличительная особенность: различение объектов за один прогон с помощью заданной сетки окон (default box) на пирамиде изображений. Пирамида изображений закодирована в сверточных тензорах при последовательных операциях свертки и пулинга (при операции max-pooling пространственная размерность убывает). Таким образом определяются как большие, так и маленькие объекты за один прогон сети.
  • MobileSSD (MobileNetV2 + SSD) – комбинация из двух архитектур нейросетей. Первая сеть MobileNetV2 работает быстро и увеличивает точность распознавания. MobileNetV2 применяется вместо VGG-16, которая первоначально использовалась в оригинальной статье. Вторая сеть SSD определяет местоположение объектов на изображении.
  • SqueezeNet – очень маленькая, но точная нейросеть. Сама по себе не решает задачу обнаружения объектов. Однако может применяться при комбинации различных архитектур. И использоваться в мобильных устройствах. Отличительной особенностью является то, что сначала данные сжимаются до четырех 1×1 сверточных фильтров, а затем расширяются до четырех 1×1 и четырех 3×3 сверточных фильтров. Одна такая итерация сжатия-расширения данных называется «Fire Module».
  • DeepLab (Semantic Image Segmentation with Deep Convolutional Nets) – сегментация объектов на изображении. Отличительной особенностью архитектуры является разряженная (dilated convolution) свертка, которая сохраняет пространственное разрешение. Затем следует стадия постобработки результатов с использованием графической вероятностной модели (conditional random field), что позволяет убрать небольшие шумы в сегментации и улучшить качество отсегментированного изображения. За грозным названием «графическая вероятностная модель» скрывается обычный фильтр Гаусса, который аппроксимирован по пяти точкам.
  • Пытался разобраться в устройстве RefineDet (Single-Shot Refinement Neural Network for Object Detection), но мало чего понял.
  • Также посмотрел, как работает технология «внимание» (attention): видео1, видео2, видео3. Отличительной особенностью архитектуры «внимание» является автоматическое выделение регионов повышенного внимания на изображении (RoI, Regions of Interest) с помощью нейросети под названием Attention Unit. Регионы повышенного внимания похожи на ограниченные регионы (bounding boxes), но в отличие от них не зафиксированы на изображении и могут иметь размытые границы. Затем из регионов повышенного внимания выделяются признаки (фичи), которые «скармливаются» рекуррентным нейросетям с архитектурами LSDM, GRU или Vanilla RNN. Рекуррентные нейросети умеют анализировать взаимоотношение признаков в последовательности. Рекуррентные нейросети изначально применялись для переводов текста на другие языки, а теперь и для перевода изображения в текст и текста в изображение.

По мере изучения этих архитектур я понял, что ничего не понимаю. И дело не в том, что у моей нейросети есть проблемы с механизмом внимания. Создание всех этих архитектур похоже на какой-то огромный хакатон, где авторы соревнуются в хаках. Хак (hack) – быстрое решение трудной программной задачи. То есть между всеми этими архитектурами нет видимой и понятной логической связи. Все, что их объединяет – это набор наиболее удачных хаков, которые они заимствуют друг у друга, плюс общая для всех операция свертки с обратной связью (обратное распространение ошибки, backpropagation). Нет системного мышления! Не понятно, что менять и как оптимизировать имеющиеся достижения.

Как результат отсутствия логической связи между хаками, их чрезвычайно трудно запомнить и применить на практике. Это фрагментированные знания. В лучшем случае запоминаются несколько интересных и неожиданных моментов, но большинство из понятого и непонятного исчезает из памяти уже через несколько дней. Будет хорошо, если через неделю вспомнится хотя бы название архитектуры. А ведь на чтение статей и просмотр обзорных видео было потрачено несколько часов и даже дней рабочего времени!

Рисунок 2 – Зоопарк нейронных сетей

Большинство авторов научных статей, по моему личному мнению, делают все возможное, чтобы даже эти фрагментированные знания были не поняты читателем. Но деепричастные обороты в десяти строковых предложениях с формулами, которые взяты «с потолка» – это тема для отдельной статьи (проблема publish or perish).

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

Куда все это движется. Основные результаты:

  • Число стартапов в области машинного обучения в последние два года резко упало. Возможная причина: «нейронные сети перестали быть чем-то новым».
  • Каждый сможет создать работающую нейросеть для решения простой задачи. Для этого возьмет готовую модель из «зоопарка моделей» (model zoo) и натренирует последний слой нейросети (transfer learning) на готовых данных из Google Dataset Search или из 25-ти тысяч датасетов Kaggle в бесплатном облаке Jupyter Notebook.
  • Крупные производители нейросетей начали создавать «зоопарки моделей» (model zoo). С помощью них можно быстро сделать коммерческое приложение: TF Hub для TensorFlow, MMDetection для PyTorch, Detectron для Caffe2, chainer-modelzoo для Chainer и другие.
  • Нейросети, работающие в реальном времени (real-time) на мобильных устройствах. От 10 до 50 кадров в секунду.
  • Применение нейросетей в телефонах (TF Lite), в браузерах (TF.js) и в бытовых предметах (IoT, Internet of Things). Особенно в телефонах, которые уже поддерживают нейросети на уровне «железа» (нейроакселераторы).
  • «Каждое устройство, предметы одежды и, возможно, даже пища будут иметь IP-v6 адрес и сообщаться между собой» – Себастьян Трун.
  • Рост количества публикаций по машинному обучению начал превышать закон Мура (удвоение каждые два года) с 2015 года. Очевидно, нужны нейросети по анализу статей.
  • Набирают популярность следующие технологии:
    • PyTorch – популярность растет стремительно и, похоже, обгоняет TensorFlow.
    • Автоматический подбор гиперпараметров AutoML – популярность растет плавно.
    • Постепенное уменьшение точности и увеличение скорости вычислений: нечеткая логика, алгоритмы бустинга, неточные (приближенные) вычисления, квантизация (когда веса нейросети переводятся в целые числа и квантуются), нейроакселераторы.
    • Перевод изображения в текст и текста в изображение.
    • Создание трехмерных объектов по видео, теперь уже в реальном времени.
    • Основное в DL – это много данных, но собрать и разметить их непросто. Поэтому развивается автоматизация разметки (automated annotation) для нейросетей с помощью нейросетей.
  • С нейросетями Computer Science внезапно стала экспериментальной наукой и возник кризис воспроизводимости.
  • ИТ-деньги и популярность нейросетей возникли одновременно, когда вычисления стали рыночной ценностью. Экономика из золотовалютной становится золото-валютно-вычислительной. Смотрите мою статью по эконофизике и причине появления IT-денег.

Постепенно появляется новая методология программирования ML/DL (Machine Learning & Deep Learning), которая основана на представлении программы, как совокупности обученных нейросетевых моделей.

Рисунок 3 – ML/DL как новая методология программирования

Однако так и не появилось «теории нейросетей», в рамках которой можно думать и работать системно. Что сейчас называется «теорией» на самом деле экспериментальные, эвристические алгоритмы.

Ссылки на мои и не только ресурсы:

Спасибо за внимание!

Как работают двоичные нейронные сети, и почему они будут популярными в 2020-м / Хабр

Нейросети – штука классная, однако их потенциал до сих пор ограничивают стоимость и энергия; с этим, возможно, помогут справиться двоичные нейросети

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

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


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

Одна из альтернатив, которые изучают многие организации – двоичные сети. Это достаточно новая технология, но она, вероятно, станет достаточно влиятельной в 2020-м. Чтобы понять, почему, нам нужно уяснить, как работают оба типа сетей.

Как работают нейросети

Нейросети состоят из нескольких слоёв взвешенных сумм. Каждая взвешенная сумма даёт число, которое либо говорит о том, что в этих данных, вероятно, есть некий признак, или его там, вероятно, нет. Эти слои комбинируют, к примеру, необработанные изображения в наборы признаков, и рекомбинируют их, чтобы в итоге прийти к ответу.

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

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

Рис. 1

На рис. 1 (а это фото Барака Обамы) видно, как эти слои анализа и вероятностей суммируются, позволяя сети, работающей с приближёнными значениями, выдавать относительно точный ответ.

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

Недостатки традиционных нейросетей

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

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

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

Как работают двоичные сети

Если обычная нейросеть – это картина Пикассо, то двоичная нейросеть – это грубый карандашный набросок.

Если нейросети присваивают каждому сегменту точно подсчитанную вероятность, то двоичные нейросети, как следует из их имени, сводят вероятные значения к чёрно-белому варианту, то есть, либо к -1 (если сеть считает, что признака в этом фрагменте нет), либо +1 (если он есть).

Теперь взвешенная сумма оценивает каждый признак либо положительно (умножая на +1), либо отрицательно (умножая на -1), и вместо полных перемножений нам нужно рассматривать лишь умножения на +1 и -1.

Рис. 2

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

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

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

Будущее двоичных сетей

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

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

Таким образом, следующее поколение технологий будет основано на простоте.

Нейронные сети — простыми словами: история, типология, будущее нейронных систем

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

Биологические нейронные сети

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

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

По упрощенной теории естественной нейросети рассмотрим составляющие нейрона. Состоит он из тела клетки и ядра. К телу относится множество ответвлений, называемых дендритами. Длинные дендриты называться Аксонами. С их помощью проходит связь между нейронами с помощью синапсов (места контакта двух нейронов, по которым проходит импульс). В этом случае можно уловить закономерность. На дендрит приходит сигнал (значит это вход), по аксону (выход) передается на другую нейронную клетку. В точке синаптической передачи импульса, его частота и амплитуда может изменяться (переменные составляющие сложного уравнения, влияющие на состояние сигнала). Примерно так работает естественная нейросеть в голове каждого человека. В таком случае, почему бы не создать искусственную нейросеть наподобие естественной, откинув биологическую составляющую. Дендрит будет выступать в роли входа, аксон – выход, тело нейрона в виде сумматора, а кодом, состоящим из 0 и 1 можно регулировать частоту, импульс сигнала, перед подачей на сумматор в разделе «Веса». Это основная составляющая нейрона. В целом, математическую и графическую модель нейрона можно записать так.

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

Изучив основные аспекты, можно дать определение искусственной нейронной сети – это построенная по математическим правилам модель естественной нейросети, которая воплощена в жизнь с помощью программных и аппаратных составляющих.

История нейронных сетей

Развитие искусственной нейросети началось с появлением электронно-вычислительных машин (ЭВМ) в конце 1940 года. В это время, канадский физиолог и нейропсихолог Дональд Хебб создал алгоритм нейронной сети, и заложил принципы его работы в ЭВМ. Затем, важными точками в развитии искусственных нейросетей были такие даты: 1. 1954 год – на рабочей ЭВМ впервые на практике применили нейросеть. 2. 1958 год – американским ученым по нейрофизиологии и искусственного интеллекта, Фрэнком Розенблаттом был разработан алгоритм распознавания образов и предоставлено его краткое изложение для общественности. 3. 1960 год – ЭВМ не могла должным образом из-за слабых мощностей выполнять сложные задачи, возложенные на нее, поэтому интерес к технологии немного угас. 4. За двадцатилетний период полным ходом шла «компьютеризация», и мощности тогдашних компьютеров хватило, чтобы вновь разжечь интерес к нейросетям. В 1980 году появилась система с механизмом обратной связи и начались разработки алгоритмов по самообучению. 5. Спустя следующие 20 лет, мощности компьютеров выросли настолько, что в 2000 году ученые-исследователи смогли применять нейросети во многих сферах. Появились программы распознавания речи, имитация зрения, когнитивного восприятия информации. Нейросеть, машинное обучение, робототехника, компьютеризация стали частью нечто большего, под названием «искусственный интеллект».

Типы нейронных сетей

За период развития, нейронные сети поделились на множество типов, которые переплетаются между собой в различных задачах. На данный момент сложно классифицировать какую-либо сеть только по одному признаку. Это можно сделать по принципу применения, типу входной информации, характеру обучения, характеру связей, сфере применения. 

Нейронная сеть

Принцип применения

Обучение с учителем (+) или без(-) или смешанное (с)

Сфера применения

Перцептрон Розенблатта

Распознание образов, принятие решений, прогнозирование, аппроксимация, анализ данных

+

Практически любая сфера применения, кроме оптимизации информации

Хопфилда

Сжатие данных и ассоциативная память

Строение компьютерных систем

Кохонена

Кластеризация, сжатие данных, анализ данных, оптимизация

Финансы, базы данных

Радиально-базисных функций (RBF-сеть)

Принятие решений и управление, аппроксимация, прогнозирование

с

Управленческие структуры, нейроуправление

Свёрточная

Распознание образов

+

Обработка графических данных

Импульсная

Принятие решение, распознавание образов, анализ данных

с

Протезирование, робототехника, телекоммуникации, компьютерное зрение

 

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

Сверточные

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

  1. Отличная масштабируемость – проводят распознания образов любого разрешения (какое бы не было оно большое).
  2. Использование объемных трехмерных нейронов – внутри слоя, нейроны связаны малым полем, именуемы рецептивным слоем.
  3. Механизм пространственной локализации – соседние слои нейронов связаны таким механизмом, за счет чего обеспечивается работа нелинейных фильтров и охват все большего числа пикселей графического изображения.

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

Рекуррентные

Этот тип нейросети, в котором связи между элементами могут обрабатывать серии различных событий во времени или работать с последовательными цепочками в пространстве. Такой тип часто применяют там, где что-то целое разбито на куски. Например, распознавание речи или рукописного текста. От нее пошло множество видов сетей, в том числе Хопфилда, Элмана и Джордана.

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

Один из главных и самый важный критерий – возможность обучения нейросети. В целом, нейросеть – это совокупность нейронов, через которые проходит сигнал. Если подать его на вход, то пройдя через тысячи нейронов, на выходе получится неизвестно что. Для преобразования нужно менять параметры сети, чтобы на выходе получились нужные результаты.

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

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

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

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

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

Обучение с учителем

Обучение таким способом подразумевает концепцию: даете выборку входных сигналов нейросети, получаете выходные и сравниваете с готовым решением.

Как готовить такие выборки:

  1. Для опознавания лиц создать выборку из 5000-10000 фотографий (вход) и самостоятельно указать, какие содержат лица людей (выход, правильный сигнал).
  2. Для прогнозирования роста или падения акций, выборка делается с помощью анализа данных прошлых десятилетий. Входными сигналами могут быть как состояние рынка в целом, так и конкретные дни.

Учителем не обязательно выступает человек. Сеть нужно тренировать сотнями и тысячами часов, поэтому в 99% случаев тренировкой занимается компьютерная программа.  

Обучение без учителя

Концепция состоит в том, что делается выборка входных сигналов, но правильных ответов на выходе вы знать не можете.

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

Сколько нейронным сетям еще до человеческого мозга?

В некоторых аспектах, нейронная сеть уже превосходит человеческий мозг – это запоминание информации и быстродействие, ее обработка. Однажды запомнив данные, нейросеть навсегда отложит их в своей памяти.

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

Почему нейронные сети стали так популярны именно сейчас

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

Применение нейронных сетей

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

Поисковые системы

Яндекс и Google не первый год используют нейронные сети для обучения собственный поисковых систем, делая их «умнее». Они адаптируются под конкретного пользователя, узнают о его предпочтениях и выдают максимально релевантные результаты. Тот же принцип применяется и в контекстной и таргетированной рекламе.

Голосовые ассистенты

Системы распознавания речи достигли такого уровня, что позволяют распознать вопрос и предоставить информацию по нему, или выполнить ту или иную функцию. Эти голосовые ассистенты внедряются в технику, поэтому мы можем голосом попросить включить медленную музыкальную композицию, притушить свет в комнате, открыть окно на проветривание и поставить таймер на приготовление еды в мультиварке.

Автономное управление автомобилем

Управление без участия водителя – это уже реальность сегодняшнего дня. Благодаря нейронной сети, что входит в комплекс систем автономного управления, автомобиль может передвигаться в автоматическом режиме, соблюдая все правила дорожного движения.

Фотофильтры

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

Заключение

Искусственные нейронные сети – технология, что уже позволяет приниматься человечеству за задачи, на решение которых ушли бы тысячелетия. Это перспективная и востребованная ветвь развития науки и техники, которая будет популярна на протяжении многих лет.

Кто делает нейронные сети, зачем они нужны и сколько денег могут приносить — Будущее на vc.ru

В первой половине 2016 года мир услышал о множестве разработок в области нейронных сетей — свои алгоритмы демонстрировали Google (сеть-игрок в го AlphaGo), Microsoft (ряд сервисов для идентификации изображений), стартапы MSQRD, Prisma и другие.

Редакция vc.ru рассказывает, что из себя представляют нейронные сети, для чего они нужны, почему захватили планету именно сейчас, а не годами раньше или позже, сколько на них можно заработать и кто является основными игроками рынка. Своими мнениями также поделились эксперты из МФТИ, «Яндекса», Mail.Ru Group и Microsoft.

Что собой представляют нейронные сети и какие задачи они могут решать

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

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

Руководитель направления «Поиск Mail.ru» в Mail.Ru Group Андрей Калинин отмечает, что нейронные сети способны решать такие же задачи, как и другие алгоритмы машинного обучения, разница заключается лишь в подходе к обучению.

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

Директор программ технологического сотрудничества Microsoft в России Влад Шершульский замечает, что сейчас нейросети применяются повсеместно: «Например, многие крупные интернет-сайты используют их, чтобы сделать реакцию на поведение пользователей более естественной и полезной своей аудитории. Нейросети лежат в основе большинства современных систем распознавания и синтеза речи, а также распознавания и обработки изображений. Они применяются в некоторых системах навигации, будь то промышленные роботы или беспилотные автомобили. Алгоритмы на основе нейросетей защищают информационные системы от атак злоумышленников и помогают выявлять незаконный контент в сети».

В ближайшей перспективе (5-10 лет), полагает Шершульский, нейронные сети будут использоваться ещё шире:

Представьте себе сельскохозяйственный комбайн, исполнительные механизмы которого снабжены множеством видеокамер. Он делает пять тысяч снимков в минуту каждого растения в полосе своей траектории и, используя нейросеть, анализирует — не сорняк ли это, не поражено ли оно болезнью или вредителями. И обрабатывает каждое растение индивидуально. Фантастика? Уже не совсем. А через пять лет может стать нормой. — Влад Шершульский, Microsoft

Заведующий лабораторией нейронных систем и глубокого обучения Центра живых систем МФТИ Михаил Бурцев приводит предположительную карту развития нейронных сетей на 2016-2018 годы:

  • системы распознавания и классификации объектов на изображениях;
  • голосовые интерфейсы взаимодействия для интернета вещей;
  • системы мониторинга качества обслуживания в колл-центрах;
  • системы выявления неполадок (в том числе, предсказывающие время технического обслуживания), аномалий, кибер-физических угроз;
  • системы интеллектуальной безопасности и мониторинга;
  • замена ботами части функций операторов колл-центров;
  • системы видеоаналитики;
  • самообучающиеся системы, оптимизирующие управление материальными по

как работают нейросети и их разработчики

Нейронные сети не только распознают тексты, изображения и речь, но и помогают диагностировать заболевания и искать полезные ископаемые. Как это происходит? Дата-сайентист и руководитель направления продвинутой аналитики и машинного обучения в ПАО «Газпром нефть» Анна Дубовик рассказала, как это работает и почему не стоит верить громким заявлениям компаний, которые «распознали все». T&P записали главное.

Анна Дубовик

Дата-сайентист, руководитель направления продвинутой аналитики и машинного обучения в ПАО «Газпром нефть»

Три важных факта об искусственном интеллекте

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

Не бывает «волшебных черных ящиков». Не существует искусственного интеллекта, в который вы что-то забрасываете, и он все за вас высчитывает. Самое важное — это качественные данные, на которых происходит обучение. Все архитектуры и алгоритмы известны, и секрет какого-то нового классного приложения всегда в данных.

Машинное обучение развивается в основном силами открытого сообщества. Мы за открытый код — так же, как Google и другие разработчики всего открытого и хорошего.

От эвристики к обучению

Небольшой ликбез: ИИ — большая отрасль, частью которой является машинное обучение. В нем есть много алгоритмов, самые интересные — нейросети. Глубокое обучение — конкретный тип нейросетей, которым мы занимаемся:

Почему старые алгоритмы не работают и зачем нужно машинное обучение? Да, врачи распознают рак лучше, чем нейросети, — но они делают это чаще всего на четвертой стадии, когда с человеком уже происходят необратимые изменения. А чтобы распознавать болезнь на первой, нужны алгоритмы. Раньше нефть сама лилась из-под земли, но такого больше не будет, природные ресурсы становится все сложнее добывать.

Все наше предыдущее знание строится на эвристических алгоритмах. Например, если человек чем-то болел и у него есть определенная семейная предрасположенность, то мы понимаем, что обнаруженное нами новообразование, скорее всего, то-то и то-то. Мы отправим человека на сканер, начнем проверять. Но если этих знаний о человеке у нас нет, то мы ничего с ним делать не будем. Это и есть эвристика.

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

Например, у Pornhub отличные нейросетевые алгоритмы, но есть и эвристики. На сайте представлены разделы: «Популярное» — по количеству просмотров, «Лучшее» — по количеству лайков, и есть «Горячее» (Hottest). Как определить его эвристику? Она вычисляется не по количеству просмотров и не по популярным хэштегам. Это видео, которые смотрят последними перед уходом с сайта — именно они вызывают у пользователей больше всего эмоций.

Когда и почему появились нейросети? Впервые о них написали в 1959 году, но количество публикаций стало резко увеличиваться только с 2009 года. 50 лет ничего не происходило: не было возможности проводить вычисления, не существовало современных графических ускорителей. Чтобы обучить нейросеть чему-то, необходимо много вычислительных мощностей и сильное железо. Но теперь каждый день выходит по 50 публикаций о достижениях нейросетей, и обратного пути нет.

Важнее всего, что нейросеть — это не волшебство. Когда люди узнают, что я занимаюсь data science, начинают предлагать мне идеи стартапа: взять откуда-нибудь, например в Facebook, все данные, забросить в нейросеть и предсказать, условно говоря, «все». Но это так не работает. Всегда есть конкретный тип данных и четкая постановка задачи:

Как видите, в списке нет «распознавания», потому что так это называется на языке людей, а математически может формулироваться по-разному. И поэтому сложные задачи всегда разбиваются на более простые подзадачи.

Вот оцифрованное изображение рукописной цифры 9, 28 на 28 пикселей:

Источник: www.3blue1brown.com

Первый слой нейросети — это вход, который «видит» 784 пикселя, окрашенных в разные оттенки серого. Последний — выход: несколько категорий, к одной из которых мы просим отнести то, что было отправлено на вход. И между ними — скрытые слои:

Эти скрытые слои — это некоторая функция, которую мы не задаем никакой эвристикой, она сама учится выводить математическую последовательность, которая с определенной вероятностью отнесет «входные» пиксели к определенному классу.

Как нейросети работают с изображениями

Классификация. Можно научить нейросеть классифицировать изображения, например распознавать породы собак:

Но для обучения ей потребуются миллионы картинок — и это должен быть тот тип данных, которые вы потом действительно будете использовать. Потому что, если вы обучили нейросеть искать собак, а показываете кексы, она все равно будет искать собак, и получится что-то вроде этого:

Детекция. Это другая задача: на изображении нужно найти объект, принадлежащий к определенному классу. Например, мы загружаем в нейросеть снимок побережья и просим найти людей и кайты:

Подобный алгоритм сейчас проходит бета-тестирование в поисковом отряде «Лиза Алерт». Во время поисков участники отрядов делают множество снимков с помощью беспилотников, затем их отсматривают — и иногда именно так находят потерявшихся людей. Чтобы сократить время на отсмотр всех снимков, алгоритм отсеивает те снимки, на которых нет значимой для поисков информации. Но никакая нейросеть не даст стопроцентной точности, поэтому снимки, отобранные алгоритмом, валидируются людьми.

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

Генерация. У генерирующих сетей на входе — пустота, на выходе — какой-то класс объектов, а скрытые слои пытаются научиться превращать пустоту во что-то определенное. Например, вот два лица — оба были сгенерированы нейросетью:

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

А если мы можем сгенерировать изображение, значит, можно заставить его двигаться так же, как определенный человек, — то есть сгенерировать видео. Пример — недавний вирусный ролик, в котором Обама говорит, что Трамп идиот. Обама никогда этого не говорил, просто нейросеть научили мэтчиться (от англ. match — «совпадать, соответствовать, сопоставлять». — Прим. T&P) на Обаму, и когда другой человек говорил, камера транслировала его мимику на лицо бывшего американского президента. Другой пример — Ctrl Shift Face, который делает прекрасные дипфейки❓Deep fake — от deep learning (англ. «глубинное обучение») и fake (англ. «фейк, фальшивка»). — Прим. T&P на звезд. Пока что нейросети не всегда срабатывают идеально, но с каждым годом будут делать это все лучше, и скоро на видео отличить реального человека от «намазанного» сетью будет невозможно. И никакой Face ID нас больше не застрахует от мошенничества.

Как нейросети работают с текстами

Тексты для сетей не имеют смысла, для них это просто «векторы», над которыми можно производить разные математические операции, например: «Король минус человек плюс женщина равно королева»:

Но из-за того, что нейросети учатся на текстах, созданных людьми, возникают курьезы. Например: «Доктор минус мужчина плюс женщина равно медсестра». В представлении нейросети женщин-врачей не существует.

Машинный перевод. Раньше многие пользовались переводчиком, работа которого была построена на эвристиках: эти слова значат то-то, их можно переводить и склонять только так-то и располагать вот в таком порядке. Он не мог отойти от этих правил, и часто в целом получалась ерунда:

Сегодня в работу Google Translate добавили нейронные сети, и переведенные им тексты выглядят уже гораздо более литературно.

Генерация текста. Полгода назад сделали нейросеть, которой можно задать тему, несколько ключевых слов, и она сама напишет сочинение-размышление. Работает прекрасно, но не проверяет факты и не задумывается об этичности написанного:

Сочинение о вреде переработки отходов

Авторы не выложили код в открытый доступ, не показали, на чем они обучали сеть, обосновав это тем, что мир не готов к этой технологии, что она будет использована во вред.

Распознавание и генерация речи. Все то же самое, что и с распознаванием изображения: есть звук, нужно оцифровать сигнал:

Именно так работают «Алиса» и Siri. Когда вы пишете в Google Translate некий текст, он его переводит, формирует из букв звуковую волну и воспроизводит ее, то есть генерирует речь.

Обучение с подкреплением

Игра в «Арканоид» — самый простой пример обучения с подкреплением:

Есть агент — то, на что вы воздействуете, что может менять свое поведение, — в данном случае это горизонтальная «палка» внизу. Есть среда, которая описана разными модулями, — это все, что вокруг «палки». Есть награда: когда сетка роняет шарик, мы говорим, что она теряет свою награду.

Когда нейросеть выбивает очки, мы говорим ей, что это здóрово и она работает хорошо. И тогда сеть начинает изобретать действия, которые приведут ее к победе, максимизируют выгоду. Сначала кидает шарик и просто стоит. Мы говорим: «Плохо». Она: «Ладно, кину, подвинусь на один пиксель». — «Плохо». — «Кину, подвинусь на два, влево, вправо, буду рандомно дергаться». Процесс обучения нейросети — очень долгий и дорогой.

Другой пример обучения с подкреплением — это го. В мае 2014 года люди говорили, что компьютер еще не скоро научится понимать, как играть в го. Но уже в следующем году нейросеть обыграла чемпиона Европы. В марте 2016 года AlphaGo обыграла чемпиона мира высшего дана, а следующая версия выиграла у предыдущей с разгромным счетом 100:0, хотя делала абсолютно непредсказуемые шаги. У нее не было никаких ограничений, кроме игры по правилам:

Зачем учить компьютер играть в игры за бешеные деньги, вкладываться в киберспорт? Дело в том, что обучение движению и взаимодействию роботов в среде стоит еще дороже. Если ваш алгоритм ошибается и разбивает многомиллионный дрон, это очень обидно. А потренироваться на людях, но в Dota, сам Бог велел.

Открытый код

Как и кем реализуются приложения машинного обучения? Смелые заявления в интернете о том, что какая-то компания написала очередное приложение, которое «все распознало», не соответствуют действительности. Есть лидеры рынка, которые разрабатывают инструменты и выкладывают их в открытый доступ, чтобы все люди могли писать код, предлагать изменения, двигать отрасль. Есть «хорошие парни», которые тоже делятся некоторой частью кода. Но есть и «плохие парни», с которыми лучше не связываться, потому что они не разрабатывают собственные алгоритмы, а пользуются тем, что написали «хорошие парни», делают из их разработок собственных «франкенштейнов» и пытаются продавать.

Примеры использования data science в нефтяной отрасли

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

Правда, выясняется, что сеть удаляет не только поверхностные шумы, но и полезный сигнал. Поэтому мы добавляем новое условие: просим чистить только тот участок сигнала, с которым работают сейсмики, — это называется «нейросеть с вниманием».

Описание столба керна по типам литологии. Это задача сегментации. Есть фотографии керна — пород, вытащенных из скважины. Специалисту вручную нужно разобрать, какие пласты там находятся. Человек тратит на это недели и месяцы, а обученная нейросеть — до часа. Чем больше мы ее учим, тем лучше она работает:

«Лучше, чем человек»

У специалистов возникает вопрос, как можно работу нейросети сравнить с человеческим опытом: «Да Иван Петрович с нами с 1964 года, да он этого керна перенюхал!» Конечно, но он делал то же самое, что и сетка: брал керн, брал учебник, смотрел, как другие люди это делают, и пытался вывести из этого закономерность. Только нейросеть работает гораздо быстрее и жизненный опыт Ивана Петровича переживает 500 раз за день. Однако люди все равно еще не верят в технологию, поэтому нам приходится все задачи разбивать на небольшие этапы, чтобы эксперт мог завалидировать каждый из них и поверить в то, что нейросеть работает.

Все заявления о том, что какая-то нейросеть работает «лучше, чем человек», чаще всего ни на чем не основаны, потому что всегда найдется кто-то, кто будет «глупее» нейросети. Вы мне: «Распознай нефть». А я: «Ну, тут где-то». Вывод: «Ага, не получилось, значит, наша система работает лучше тебя». На самом деле для того, чтобы оценить эффективность работы нейросети, должно быть сравнение с целой группой экспертов, главными людьми в отрасли.

Не меньше вопросов вызывают заявления о точности. Если взять десять человек, один из которых болен раком легких, и сказать, что все они здоровы, то мы предскажем ситуацию с точностью в 90%. Мы ошиблись в одном из десяти, все честно, никто никого не обманул. Но полученный результат нас ни к чему не приводит. Любые новости о революционных разработках — неправда, если нет открытого кода или описания того, как они сделаны.

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

Проблемы нейросетей

С датасетом (data set — «набор данных». — Прим. T&P). Однажды китайская система распознавания нарушений выписала штраф за переход в неположенном месте женщине, которая на самом деле была лишь рекламой на автобусе, переезжавшем пешеходный переход. Это значит, что для обучения нейросети использовался неправильный датасет. Нужны были объекты в контексте, чтобы нейросеть научилась отличать настоящих женщин от рекламных изображений.

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

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

С реализацией. Нейросети не знают, что предлагать в отсутствие информации и когда остановиться. Например, если вы завели себе новый почтовый аккаунт и нейросеть еще ничего о вас не знает, то в почте у вас первое время будет реклама, не имеющая лично к вам никакого отношения. А если вы искали в интернете диван и купили его, вам все равно еще долго будут рекламировать диваны, потому что нейросеть не в курсе, что вы уже совершили покупку. Чат-бот, полюбивший Гитлера❓Чат-бот Tay от Microsoft был создан для общения в Twitter. Обучаясь на реальных твитах, он очень быстро «полюбил» Гитлера и «возненавидел» евреев, феминисток и вообще человечество. — Прим. T&P, просто смотрел, что делают люди, и пытался мимикрировать. Имейте в виду: вы каждый день производите контент, и он может быть использован против вас.

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

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

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

Нейронные сети, какие бывают, принципы и алгоритм обучения

Нейронная сеть уже умеет не только упрощать вычислительные процессы, но и сочинять стихи и писать музыку. Заменит ли искусственный интеллект людей и какое будущее нас ждёт?

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

Искусственная нейронная сеть — это подобие мозга. Изначально она программировалась с целью упростить некоторые сложные вычислительные процессы. Сегодня у нейросетей намного больше возможностей. Часть из них находится у вас в смартфоне. Ещё часть уже записала себе в базу, что вы открыли эту статью. Как всё это происходит и для чего, читайте далее.

С чего всё началось

Людям очень хотелось понять, откуда у человека разум и как работает мозг. В середине прошлого века канадский нейропсихолог Дональд Хебб это понял. Хебб изучил взаимодействие нейронов друг с другом, исследовал, по какому принципу они объединяются в группы (по-научному — ансамбли) и предложил первый в науке алгоритм обучения нейронных сетей.

Спустя несколько лет группа американских учёных смоделировала искусственную нейросеть, которая могла отличать фигуры квадратов от остальных фигур.

Как же работает нейросеть?

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

Какими бывают нейронные сети и что они умеют

Учёные развили нейронные сети так, что те научились различать сложные изображения, видео, тексты и речь. Типов нейронных сетей сегодня очень много. Они классифицируются в зависимости от архитектуры — наборов параметров данных и веса этих параметров, некой приоритетности. Ниже некоторые из них.

Свёрточные нейросети

Нейроны делятся на группы, каждая группа вычисляет заданную ей характеристику. В 1993 году французский учёный Ян Лекун показал миру LeNet 1 — первую свёрточную нейронную сеть, которая быстро и точно могла распознавать цифры, написанные на бумаге от руки. Смотрите сами:

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

Рекуррентные нейросети

Нейроны последовательно запоминают информацию и строят дальнейшие действия на основе этих данных. В 1997 году немецкие учёные модифицировали простейшие рекуррентные сети до сетей с долгой краткосрочной памятью. На их основе затем были разработаны сети с управляемыми рекуррентными нейронами.

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

Использование такого рода нейросетей — это возможность анализировать и генерировать данные, составлять базы и даже делать прогнозы.

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

Комбинированные нейросети (свёрточные + рекуррентные)

Такие нейронные сети способны понимать, что находится на изображении, и описывать это. И наоборот: рисовать изображения по описанию. Ярчайший пример продемонстрировал Кайл Макдональд, взяв нейронную сеть на прогулку по Амстердаму. Сеть мгновенно определяла, что находится перед ней. И практически всегда точно:

Нейросети постоянно самообучаются. Благодаря этому процессу:

1. Skype внедрил возможность синхронного перевода уже для 10 языков. Среди которых, на минуточку, есть русский и японский — одни из самых сложных в мире. Конечно, качество перевода требует серьёзной доработки, но сам факт того, что уже сейчас вы можете общаться с коллегами из Японии по-русски и быть уверенными, что вас поймут, вдохновляет.

2. Яндекс на базе нейронных сетей создал два поисковых алгоритма: «Палех» и «Королёв». Первый помогал найти максимально релевантные сайты для низкочастотных запросов. «Палех» изучал заголовки страниц и сопоставлял их смысл со смыслом запросов. На основе «Палеха» появился «Королёв». Этот алгоритм оценивает не только заголовок, но и весь текстовый контент страницы. Поиск становится всё точнее, а владельцы сайтов разумнее начинают подходить к наполнению страниц.

3. Коллеги сеошников из Яндекса создали музыкальную нейросеть: она сочиняет стихи и пишет музыку. Нейрогруппа символично называется Neurona, и у неё уже есть первый альбом: 

4. У Google Inbox с помощью нейросетей осуществляется ответ на сообщение. Развитие технологий идет полный ходом, и сегодня сеть уже изучает переписку и генерирует возможные варианты ответа. Можно не тратить время на печать и не бояться забыть какую-нибудь важную договорённость.

Side-By-Side-v2.png

5. YouTube использует нейронные сети для ранжирования роликов, причём сразу по двум принципам: одна нейронная сеть изучает ролики и реакции аудитории на них, другая проводит исследование пользователей и их предпочтений. Именно поэтому рекомендации YouTube всегда в тему.

6. Facebook активно работает над DeepText AI — программой для коммуникаций, которая понимает жаргон и чистит чатики от обсценной лексики.

7. Приложения вроде Prisma и Fabby, созданные на нейросетях, создают изображения и видео:

Colorize восстанавливает цвета на чёрно-белых фото (удивите бабушку!).

colorized3.jpg


MakeUp Plus подбирает для девушек идеальную помаду из реального ассортимента реальных брендов: Bobbi Brown, Clinique, Lancome и YSL уже в деле.

unnamed.jpg



8.
Apple и Microsoft постоянно апгрейдят свои нейронные Siri и Contana. Пока они только исполняют наши приказы, но уже в ближайшем будущем начнут проявлять инициативу: давать рекомендации и предугадывать наши желания.

А что ещё нас ждет в будущем?

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

Аграрный сектор

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

Медицина

В Microsoft сейчас активно работают над созданием лекарства от рака. Учёные занимаются биопрограммированием — пытаются оцифрить процесс возникновения и развития опухолей. Когда всё получится, программисты смогут найти способ заблокировать такой процесс, по аналогии будет создано лекарство.

Маркетинг

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

Ecommerce

Ecommerce будет внедрён повсеместно. Уже не потребуется переходить в интернет-магазин по ссылке: вы сможете купить всё там, где видите, в один клик. Например, читаете вы эту статью через несколько лет. Очень вам нравится помада на скрине из приложения MakeUp Plus (см. выше). Вы кликаете на неё и попадаете сразу в корзину. Или смотрите видео про последнюю модель Hololens (очки смешанной реальности) и тут же оформляете заказ прямо из YouTube.

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

P. S. Зинаида Фолс — нейронная сеть Яндекса, пишущая стихи. Оцените произведение, которое машина написала, обучившись на Маяковском (орфография и пунктуация сохранены):

«Это»

это


всего навсего


что-то


в будущем


и мощь


у того человека


есть на свете все или нет


это кровьа вокруг


по рукам


жиреет


слава у


земли


с треском в клюве

Впечатляет, правда?

Как работают нейронные сети и почему они превратились в большой бизнес

Аурих Лоусон / Гетти

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

В основе этих достижений лежит технология искусственного интеллекта , глубокое обучение .Глубокое обучение основано на нейронных сетях — типе структуры данных, вдохновленной сетями биологических нейронов. Нейронные сети организованы по слоям, причем входы одного уровня связаны с выходами следующего уровня.

Ученые-информатики экспериментируют с нейронными сетями с 1950-х годов. Но два крупных прорыва — один в 1986 году, другой в 2012 году — заложили основу сегодняшней огромной индустрии глубокого обучения. Прорыв 2012 года — революция глубокого обучения — стал открытием того, что мы можем значительно повысить производительность нейронных сетей не только с несколькими, но и с множеством слоев.Это открытие стало возможным благодаря растущему объему данных и вычислительной мощности, которые стали доступны к 2012 году.

Эта функция предлагает учебник по нейронным сетям. Мы объясним, что такое нейронные сети, как они работают и откуда они взялись. И мы выясним, почему — несмотря на многие десятилетия предыдущих исследований — нейронные сети действительно начали проявлять себя только с 2012 года.

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

Нейронные сети относятся к 1950-м годам

Увеличить / Фрэнк Розенблатт работает над своим перцептроном — ранней моделью нейронных сетей.

Нейронные сети — старая идея — по крайней мере, по стандартам информатики. Еще в 1957 году Фрэнк Розенблатт из Корнельского университета опубликовал отчет, в котором описывалась ранняя концепция нейронных сетей, названная перцептроном . В 1958 году при поддержке ВМС США он построил примитивную систему, которая могла анализировать изображение размером 20 на 20 и распознавать простые геометрические формы.

Основная цель

Rosenblatt заключалась не в создании практической системы классификации изображений. Скорее, он пытался получить представление о человеческом мозге, создавая компьютерные системы, организованные по принципу мозга. Но эта концепция вызвала неимоверный энтузиазм.

«Сегодня флот обнаружил зародыш электронного компьютера, который, как они ожидают, сможет ходить, говорить, видеть, писать, воспроизводить себя и осознавать свое существование», — сообщает New York Times.

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

Сила ранних экспериментов Розенблатта с персептронами — и нейронных сетей в целом — проистекает из их способности «учиться» на примерах. Нейронная сеть обучается путем корректировки входных весов нейронов в зависимости от производительности сети на примерах входных данных.Если сеть правильно классифицирует изображение, веса, способствующие правильному ответу, увеличиваются, а другие веса уменьшаются. Если сеть неправильно классифицирует изображение, веса корректируются в противоположном направлении.

Эта процедура позволила ранним нейронным сетям «обучаться» способом, который внешне напоминал поведение нервной системы человека. В 1960-е годы этот подход пользовался ажиотажем в течение десятилетия. Но затем влиятельная книга 1969 года компьютерных ученых Марвина Мински и Сеймура Паперта продемонстрировала, что эти ранние нейронные сети имели значительные ограничения.

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

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

В результате нейронные сети потеряли популярность в 1970-х и начале 1980-х годов, что было частью «зимы искусственного интеллекта» той эпохи.

.

Как обучаются нейронные сети

日本語

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

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

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

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

Иголка в сверхмерном стоге сена

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

Изменение веса одного соединения в первом слое повлияет только на один нейрон в следующем слое, но из-за полной связанности все нейроны в последующих слоях будут изменены.

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

Давайте начнем с самого простого и наивного подхода к их выбору: случайных догадок. Мы устанавливаем все веса в нашей сети на случайные значения и оцениваем их точность в нашем наборе данных. Повторите это много раз, отслеживая результаты, а затем сохраните набор весов, который дал нам наиболее точные результаты.Сначала это может показаться разумным подходом. В конце концов, компьютеры быстры; возможно мы сможем получить достойное решение с помощью грубой силы. Для сети, состоящей всего из нескольких десятков нейронов, это подойдет. Мы можем быстро испробовать миллионы догадок и должны получить из них достойного кандидата. Но в большинстве реальных приложений у нас намного больше веса. Рассмотрим наш пример почерка из предыдущей главы. В нем около 12 000 гирь. Лучшее сочетание веса среди этого множества теперь — иголка в стоге сена, за исключением того, что стог сена имеет 12 000 размеров!

Вы можете подумать, что 12 000-мерный стог сена «всего в 4 000 раз больше», чем более привычный 3-х мерный стог сена, поэтому должно потребоваться всего в 4 000 раз больше времени, чтобы наткнуться на лучшие веса.Но на самом деле эта пропорция непостижимо больше, и мы увидим почему в следующем разделе.

n-мерное пространство — уединенное место

Если наша стратегия — случайный поиск методом грубой силы, мы можем спросить, сколько предположений нам нужно будет сделать, прежде чем мы получим достаточно хороший набор весов. Интуитивно мы должны ожидать, что нам нужно сделать достаточно предположений, чтобы плотно проанализировать все пространство возможных предположений; без предварительных знаний правильные веса могут скрываться где угодно, поэтому имеет смысл попытаться отобрать пробу как можно больше.

Чтобы проиллюстрировать это, давайте рассмотрим две очень маленькие однослойные нейронные сети, первая с 2 нейронами, а вторая с 3 нейронами. Для простоты мы пока проигнорируем предвзятость.

Две небольшие сети с двумя и тремя весовыми связями соответственно (на мгновение игнорируя условия смещения).

В первой сети нужно найти 2 веса. Сколько предположений нам нужно сделать, чтобы быть уверенными, что одно из них приведет к хорошему совпадению? Один из способов подойти к этому вопросу — представить себе двумерное пространство возможных комбинаций весов и тщательно перебрать каждую комбинацию до некоторого уровня детализации.Возможно, мы можем взять каждую ось и разделить ее на 10 сегментов. Тогда наши предположения будут представлять собой любую комбинацию из двух; Всего 100. Не так плохо; выборка с такой плотностью довольно хорошо покрывает большую часть пространства. Если мы разделим оси на 100 сегментов вместо 10, то мы должны сделать 100 * 100 = 10 000 предположений и очень плотно покрыть пространство. 10 000 догадок все еще довольно мало; любой компьютер справится с этим менее чем за секунду.

Как насчет второй сети? Здесь у нас есть три веса вместо двух, и, следовательно, трехмерное пространство для поиска.Если мы хотим выполнить выборку из этого пространства на том же уровне детализации, что и в нашей 2-мерной сети, мы снова разделим каждую ось на 10 сегментов. Теперь у нас есть 10 * 10 * 10 = 1000 предположений. Оба сценария 2d и 3d изображены на рисунке ниже.

Слева: для 2d квадрата с плотностью 10% требуется 10² = 100 точек. Справа: для трехмерного куба с плотностью 10% требуется 10³ = 1000 точек.

Можно сказать, 1000 догадок — это кусок пирога. При уровне детализации в 100 сегментов у нас будет \ (100 * 100 * 100 = 1000000 \) предположений.{80} \) атомов во всей вселенной. Ни один суперкомпьютер не может рассчитывать на выполнение такого количества вычислений. Фактически, если мы возьмем все компьютеры, существующие в мире сегодня, и оставим их работать до тех пор, пока Земля не упадет на Солнце, мы все равно даже близко не приблизимся! И только учтите, что современные глубокие нейронные сети часто имеют десятки или сотни миллионов весов.

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

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

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

2,4 1.7
2,8 1,85
3,2 1,79
3,6 1,95
4,0 2,1
4,2 2,0
5,0 2,7

Цель линейной регрессии — найти линию, которая лучше всего соответствует этим точкам. Напомним, что общее уравнение для прямой: \ (f (x) = m \ cdot x + b \), где \ (m \) — наклон прямой, а \ (b \) — ее точка пересечения с y.Таким образом, решение линейной регрессии — это определение лучших значений для \ (m \) и \ (b \), таких, что \ (f (x) \) становится как можно ближе к \ (y \). Давайте попробуем несколько случайных кандидатов.

Три случайно выбранных кандидата на линию

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

Функция потерь

Функция потерь — иногда называемая функцией стоимости — это мера количества ошибок, которые наша линейная регрессия допускает для набора данных. Хотя существует множество функций потерь, все они существенно наказывают нас за расстояние между предсказанным значением y от заданного \ (x \) и его фактическим значением в нашем наборе данных. Например, взяв линию из среднего примера выше, \ (f (x) = -0,11 \ cdot x + 2,5 \), мы выделяем границы ошибок между фактическими и прогнозируемыми значениями красными пунктирными линиями.2} \]

Мы можем продолжить и вычислить MSE для каждой из трех функций, которые мы предложили выше. Если мы это сделаем, мы увидим, что первая функция достигает MSE 0,17, вторая — 0,08, а третья снижается до 0,02. Неудивительно, что у третьей функции самая низкая MSE, что подтверждает наше предположение о том, что это линия наилучшего соответствия.

Мы можем получить некоторую интуицию, если вычислим MSE для всех \ (m \) и \ (b \) в некоторой окрестности и сравним их. Рассмотрим рисунок ниже, на котором используются две разные визуализации среднеквадратичной ошибки в диапазоне, где наклон \ (m \) находится между -2 и 4, а точка пересечения \ (b \) находится между -6 и 8.

Слева: график среднеквадратичной ошибки для $ -2 \ le m \ le 4 $ и $ -6 \ le p \ le 8 $
Справа: тот же рисунок, но визуализированный как 2-мерный контурный график, где контурные линии — логарифмически распределенные сечения по высоте.

Глядя на два графика выше, мы видим, что наша MSE имеет форму вытянутой чаши, которая, кажется, сглаживается в овале с очень грубой центровкой в ​​окрестности \ ((m, p) \ приблизительно (0.5, 1.0) \). Фактически, если мы построим график MSE линейной регрессии для любого набора данных, мы получим аналогичную форму.Поскольку мы пытаемся минимизировать MSE, мы видим, что наша цель — выяснить, где находится самая низкая точка чаши.

Добавление дополнительных размеров

Приведенный выше пример довольно минимален, он имеет только одну независимую переменную \ (x \) и, следовательно, два параметра, \ (m \) и \ (b \). Что произойдет, если будет больше переменных? В общем, если есть \ (n \) переменных, их линейная функция может быть записана как:

\ [f (x) = b + w_1 \ cdot x_1 + w_2 \ cdot x_2 + … + w_n \ cdot x_n \]

Или в матричной записи, мы можем резюмировать это как:

\ [е (х) = Ь + W ^ \ наверх X
\;\;\;\;\;\;\;\;где\;\;\;\;\;\;\;\;
W =
\ begin {bmatrix}
w_1 \\ w_2 \\\ vdots \\ w_n \\\ конец {bmatrix}
\;\;\;\;а также\;\;\;\;
X =
\ begin {bmatrix}
x_1 \\ x_2 \\\ vdots \\ x_n \\\ конец {bmatrix} \]

Один прием, который мы можем использовать, чтобы упростить это, — это думать о нашем смещении $ b $ как о другом весе, который всегда умножается на «фиктивное» входное значение 1.\ top X $, и концептуально, поскольку теперь мы можем думать о смещении как о еще одном весе и, следовательно, как о еще одном параметре, который необходимо оптимизировать.

Поначалу может показаться, что добавление большего количества измерений ужасно усложняет нашу проблему, но оказывается, что формулировка задачи остается точно такой же в 2, 3 или любом количестве измерений. Хотя это im

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *