Специалист по Computer Science Виктор Лемпицкий об обучении нейронных сетей, распознавании образов и принципах работы приложения Prisma.
Сверточные нейросети — это определенный тип нейросетей, который произвел революцию в компьютерном зрении и распознавании образов. Также его используют для распознавания речи, обработки аудиосигналов, обработки временных рядов, для анализа смысла текстов и в последнее время даже для игры в Го, для обыгрывания мастеров этой игры. Можно сказать, что на данный момент это самая успешная модель, самая успешная инновация в рамках того, что называют глубоким или глубинным обучением.
Сверточная нейросеть — это такой особый вид нейросетей прямого распространения, и под прямым распространением понимается то, что переменные нейроны в этой сети разбиты на группы, называемые слоями. И когда такая слоистая нейронная сеть применяется к данным, то активация слоев — значение этих переменных — подсчитывается последовательно: сначала значение активации первого слоя, потом значение активации второго слоя, и так до последнего слоя. Активация последнего слоя и служит выходами нейронной сети, и в этой нейросети есть много параметров, в каждом слое есть какие-то свои параметры, которые определяют, как активация следующего слоя зависит от активации предыдущего слоя. И что еще важно, активации внутри одного слоя могут подсчитываться параллельно, одновременно, они друг от друга не зависят, и это приводит к тому, что такие нейросети можно очень удобно и эффективно обсчитывать на современных процессорах, в том числе на графических сопроцессорах.
Обучение нейросети, то есть настройка ее параметров, происходит на большом количестве обучающих данных следующим образом: для каждого обучающего примера мы знаем, что мы хотели бы получить на выходе. Мы берем текущее состояние нейросети, применяем такую нейросеть к конкретному обучающему примеру, смотрим, что получилось на выходе и как отличается от того, что мы хотели бы увидеть. Дальше путем концептуально несложных математических манипуляций, называющихся методом обратного распространения ошибки, мы можем понять, как именно нам нужно модифицировать параметры каждого слоя, чтобы на выходе стало получаться что-то более похожее на то, что мы хотим увидеть. И вот нейросеть поочередно смотрит на отдельные примеры или чаще на наборы примеров одновременно, чтобы увеличить правильность вычислений, и, глядя на эти отдельные примеры или пакеты примеров, она постепенно подстраивает свои параметры и добивается того, что на обучающих примерах она начинает предсказывать то, что нам нужно.
Особенность сверточной нейросети заключается в том, что в ней нейроны первых уровней упорядочены в особую структуру, а именно: на первых слоях нейроны разбиты на изображения определенного размера (их еще иногда называют картами), и разные карты внутри одного слоя соответствуют нейронам разного типа, которые реагируют на разные особенности изображений. И вычисления активации следующего слоя в сверточных нейросетях бывают двух основных типов. В первом типе вычислений активация нейронов следующего уровня вычисляется как линейная комбинация активаций нейронов предыдущего уровня, причем веса этих линейных активаций зависят только от взаимного положений нейронов, типов нейронов, но не зависят от положения данного нейрона внутри карты.
Во втором типе вычислений активация нейронов на следующем уровне просто повторяет активацию нейронов на предыдущем уровне, но изображение становится меньшего размера за счет того, что активация рядом расположенных нейронов заменяется на их максимум или их среднее — так называемая процедура пулинга. Подобная дополнительная структура делает сверточные нейросети очень подходящими для работы с изображениями. Она, например, гарантирует, что если два изображения различаются маленьким сдвигом, то нейросеть на выходе получит очень похожий результат. Для обычных, несверточных нейросетей это, вообще говоря, неверно. Кроме того, в сверточных нейросетях количество параметров невелико относительно количества нейронов. Вообще говоря, в абсолютных числах это может быть очень большое число, миллионы и десятки миллионов в современных сверточных нейросетях. Но обычные нейросети для того же количества нейронов имели бы сотни миллиардов параметров, и набрать обучающих множеств для обучения такого количества параметров мы бы никогда не смогли, а сверточные нейросети с таким количеством нейронов могут обучаться по существующим выборкам, именно это делает их такими успешными.
Сверточные нейросети имеют интересную историю. Они были разработаны в конце 1980-х — начале 1990-х годов франко-американским ученым Яном Лекуном и его коллегами из Bell Labs. И уже тогда их сверточные нейросети работали очень-очень хорошо, лучше, чем все другие методы, но для очень маленьких изображений, скажем 28*28 пикселей. Для таких изображений они, например, могли разобрать, какой рукописный символ такие изображения содержат. Но в компьютерном зрении обычно есть интерес к тому, чтобы понимать и распознавать изображения, которые имеют гораздо больший размер. И следующие 20 лет, до конца 2000-х, сверточные нейросети не могли сравниться с более стандартными ненейросетевыми методами.
Все изменилось в начале 2010-х годов, когда, во-первых, появились очень большие обучающие выборки, а во-вторых, появилось хорошее подходящее вычислительное оборудование, прежде всего графические сопроцессоры, которые фирма Nvidia создавала не для искусственного интеллекта, а чтобы геймеры могли играть в максимально красивые компьютерные игры. И в-третьих, сюда добавился еще инженерный талант группы из Университета Торонто. И когда все это объединилось, исследователи из Торонто смогли натренировать первую большую сверточную нейросеть, которая на порядки превосходила сети Лекуна. И совершенно внезапно для большинства исследователей (я хорошо помню этот день на конференции в 2012 году) выяснилось, что в самой стандартной задаче компьютерного зрения — задаче классификации, когда надо просто взять и по фотографии сказать, к какому классу принадлежит объект на этой фотографии, — такая сверточная нейросеть работает гораздо лучше, чем все другие методы, которые наше сообщество очень упорно разрабатывало в течение нескольких лет.
А дальше произошел взрыв интереса к сверточным нейросетям, и за несколько лет в задачах классификации изображений сверточные нейросети добились точности, сравнимой с точностью, достигаемой человеческим мозгом, и я бы даже сказал, что на данный момент они существенно превосходят человеческий мозг. Когда вам надо распознавать изображение, принадлежащее нескольким тысячам классов, человеческий мозг обычно не может удержать названия этих тысяч классов в памяти, а сверточная нейросеть может помнить все эти классы. Из года в год прогресс достигается во многом за счет того, что нейросеть становится все глубже и глубже, то есть содержит все больше и больше слоев, о которых я говорил. И если первая большая нейросеть из группы Торонто содержала чуть более десятка слоев, то в 2016 году самая глубокая нейросеть, которая выигрывала в нескольких соревнованиях, содержит больше 150 слоев.
По ходу дела выяснилось, что любую задачу, связанную с распознаванием образов в компьютерном зрении, сверточные нейросети могут решать более успешно, чем предшествующие методы. Это касается не только задачи классификации, но и задачи обнаружения небольших объектов на фото или видео, задачи распознавания лиц, задачи определения положения, позы человека на фотографии — во всех таких задачах сверточные нейросети стали добиваться результатов, которые раньше были невозможны. Более того, выяснилось, что сверточные нейросети могут очень успешно применяться в обратной задаче, когда вам нужно не обработать, а синтезировать изображение или обработать его каким-то специальным образом, например стилизовать его, как в нашумевших приложениях вроде Prisma.
Скажем, сейчас в нашей группе мы разрабатываем систему, которая берет произвольное сообщение, произвольный набор бит и кодирует видеоизображение так, что дальше эту информацию, эти биты можно из этого изображения считать, то есть получается такой qr-код, но, в отличие от qr-кода, мы можем сделать его стилизованным и более красивым. Или, скажем, другая разработка нашей группы заключается в том, что сверточная нейросеть берет фотографию или видео человека и изменяет направление взгляда человека на этом фото или видео. Это нужно, например, в системах видеоконференции, чтобы люди во время разговора по Skype могли бы смотреть друг другу в глаза.
Когда исследователи стали изучать свойства сверточных нейросетей, выяснилось много всего интересного. Самое главное, наверное, заключается в том, что самые большие сверточные нейросети, обученные для одних задач распознавания образов, можно модифицировать, приспособить для родственных задач распознавания образов, слегка или совсем слегка их доучив. Причем под «совсем слегка» понимается и то, что такое обучение не требует много времени и что такое дообучение не требует большого количества новых обучающих данных (это, может быть, еще более важно). За счет этого в интернете стали появляться так называемые зоопарки сверточных нейронных сетей, откуда исследователи могут скачать предобученную в течение многих дней или недель и очень хорошо работающую сверточную нейронную сеть определенного типа и доучить такую сеть для частных задач, которые их интересуют.
Еще выяснилось, что большие сверточные нейронные сети могут подсчитывать компактные дескрипторы изображений, то есть векторы не очень большой размерности, которые описывают, что именно изображение содержит. Сравнивая такие векторы, можно находить изображения, которые содержат похожие предметы или один и тот же предмет, и такое свойство очень полезно в системах поиска по очень большим архивам изображений. Еще исследователи стали смотреть, чему соответствуют индивидуальные нейроны сверточной нейросети, от чего они активируются, возбуждаются, и выяснилась очень интересная вещь. Оказалось, что абстрактность, высокоуровневость нейронов нарастает от слоя к слою, то есть, скажем, нейроны второго слоя могут активироваться, например, от темных полос определенной толщины, идущих под определенным углом на светлом плане. На четвертом слое определенный тип нейронов может активироваться от округлых блестящих предметов, а, скажем, на седьмом слое определенный тип нейронов может активироваться в тех местах, где на изображении есть человеческое лицо или вид автомобиля спереди.
При этом лица и марки автомобиля могут варьироваться, а нейроны все равно будут активироваться, и ничто в процедуре обучения в явном виде не предполагает, что возникнет такая иерархия, возникнет такое постепенное нарастание абстрактности и высокоуровневости нейронов, и до конца не понятно, почему это возникает. То есть такое объяснение, что если такое возникнет, то нейросеть будет работать очень хорошо, и она действительно работает очень хорошо, а математического объяснения этого эффекта у нас нет. И математическое объяснение такого ошеломляющего успеха сверточных нейросетей находится в зачаточном состоянии, и здесь в ближайшие годы намечается большой прогресс.
Виктор Лемпицкий, кандидат физико-математических наук, доцент Сколковского института науки и технологий.
Недавно на сайте Geektimes вышла статья «Искусственные нейронные сети простыми словами». Мы побеседовали с ее автором о развитии искусственного интеллекта и нейронных сетей. Юрий работает сейчас в небольшой фирме РСПК, изучает чат-ботов.
Когда я заводил разговор о нейронных сетях — люди обычно начинали боязливо на меня смотреть, грустнели, иногда у них начинал дёргаться глаз, а в крайних случаях они залезали под стол. Но, на самом деле, эти сети просты и интуитивны. Да-да, именно так! И, позвольте, я вам это докажу!
В наш век информационных технологий нейросети и автоматизация процессов занимает все больше и больше места. О принципах работы нейросети, как с ее помощью автоматизировать экономические процессы и о многом другом расскажет кандидат технических наук, доцент кафедры проектирования и производства электронно-вычислительных средств ПГТУ, Танрывердиев Илья Оруджевич.
«Кибернетика» — известная книга выдающегося американского математика Норберта Винера (1894—1964), сыгравшая большую роль в развитии современной науки и давшая имя одному из важнейших ее направлений. Настоящее русское издание является полным переводом второго американского издания, вышедшего в 1961 г. и содержащего важные дополнения к первому изданию 1948 г. Читатель также найдет в приложениях переводы некоторых статей и интервью Винера, включая последнее, данное им незадолго до смерти для журнала «Юнайтед Стэйтс Ньюс энд Уорлд Рипорт». Книга, написанная своеобразным свободным стилем, затрагивает широкий круг проблем современной науки, от сферы наук технических до сферы наук социальных и гуманитарных. В центре — проблематика поведения и воспроизведения (естественного и искусственного) сложных управляющих и информационных систем в технике, живой природе и обществе. Автор глубоко озабочен судьбой науки и ученых в современном мире и резко осуждает использование научного могущества для эксплуатации и войны.
Системы искусственного интеллекта, которые могут играть в абстрактные, стратегические и настольные игры, прошли огромный путь, однако как на самом деле устроены их «мозги»?
Очень часто люди не задумываются, почему они придерживаются той или иной точки зрения. Так сегодня значительная часть исследователей и инженеров, занимающихся адаптивными системами, a priori придерживаются принципа "бытие определяет сознание", а, следовательно, и действия. Этот наивный взгляд на вещи, предполагает, что обучение состоит в нахождении закономерностей в том потоке информации, который доступен из наблюдения, поступает на вход системы. Естественно, что при таком подходе модель системы, обладающей адаптивным поведением, будет представлять собой некоторое отображение множества входных данных на множество выходов, управляющих поведением системы. При этом обучение, адаптивность поведения обычно обеспечивается детерминированными алгоритмами, изменяющими функцию отображения. Использование таких принципов, позволяет быстро создавать приемлемые модели адаптивных систем, которые обеспечивают достаточно гибкое поведение в среде, на которую рассчитывал конструктор. Однако, при соприкосновении с неожиданными изменениями среды, с необходимостью использования нестандартных ходов, такая "отражательная" детерминированная схема пасует. Как же создать действительно адаптивную систему?
Какие подходы к изучению мозга существуют в современной нейробиологии? Как можно увидеть работу отдельной клетки мозга? Когда стали появляться нейрогибридные системы? О механизме обучения мозга, экспериментах с нейрогибридными системами и рисующем роботе рассказывает кандидат физико-математических наук Михаил Бурцев.
Март 2016 года ознаменовался сенсацией в области информатики и искусственного разума: программа AlphaGo, разработанная компанией Google DeepMind, выиграла со счётом 4:1 матч в го у одного из сильнейших гоистов мира Ли Седоля. До этого игра го считалась недоступной для компьютера, ввиду того что большую роль в ней играют не только расчёт, но и такие сложно формализуемые понятия, как интуиция, чувство гармонии и т.п. Как же удалось научить машину «чувствовать гармонию», преодолеть ограничения классических методов машинного анализа игр? В докладе будут рассмотрены как классические методы (минимакс, альфа-бета-отсечение), которые показали свою эффективность в шахматах и шашках, так и методы, воплощённые в программе AlphaGo: поиск на дереве методом Монте-Карло, свёрточные нейронные сети для распознавания изображений, обучение с подкреплением.
Все слышали слово «синергетика», гораздо меньше народу знает, что это относится к закономерностям развития сложных неравновесных систем, и уж совсем немногие точно представляют себе, что это такое. Из первых рук нам об этом расскажет один из адептов синергетики в России, автор физической концепции «белок — машина», биолог и физик Дмитрий Чернавский.
Объявлено об успешном завершении работы компьютерной программы, просчитывавшей одну из версий покера — хедз-ап в лимитном техасском холдеме. Программа научилась принимать правильное решение в каждом из примерно 3,19×10^14 возможных состояний игры. Найденная таким образом стратегия на длинной дистанции должна обыгрывать остальные стратегии.