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

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Победа искусственного интеллекта AlphaGo над мастером игры го Ли Седолем подстегнула затухшие было дискуссии о восстании машин и компьютерных алгоритмах, лишающих людей работы. «Чердак» расспросил специалиста «Яндекса» по компьютерному зрению Александра Крайнова, что он думает о такой перспективе и как работают нейронные сети.

- Вы большой любитель го и профессионально занимаетесь нейронными сетями. За кого вы болели в игре машины и человека?

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

- Если уж мы коснулись времени, сколько, по вашим оценкам, потребовалось человеко-часов, чтобы написать AlphaGo?

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

- С чего начинается работа над новой нейронной сетью для новой задачи?

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

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

Дальше есть следующий слой, нейроны которого смотрят уже не на изображение, а на нейроны первого слоя и думают примерно так: «Если для пикселя N на изображении сработали нейроны 18 и 20 первого слоя, то, значит, должен загореться и я». Так мы переходим все выше и выше и добираемся до последнего слоя. Он опять «смотрит», какие нейроны предыдущего слоя среагировали на изображение, и принимает окончательное решение - скажем, на фотографии запечатлена зима или лето. То, сколько слоев используется, сколько нейронов в каждом слое, что из себя представляет каждый нейрон каждого слоя, как образуются связи между слоями - это и есть архитектура сети.

- А как нейроны понимают, что искать? Их заранее программируют отыскивать на изображении фрагменты, на которых много белого или много зеленого цвета?

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

- Как происходит это обучение?

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

- И такую нейронную сеть уже можно использовать для решения конкретных задач?

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

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

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

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

- Кто-нибудь пытался понять, что происходит внутри нейронной сети во время обучения?

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

Профессии Красной книги

- Что уже умеют делать нейронные сети?

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

- Художники, поэты, музыканты в опасности. Журналистам стоит переживать?

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

Участник немецкой рок-группы Compressorhead, состоящей из роботов, на Ночи музеев в Москве. Фото: Sergei Ilnitsky/EPA

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

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

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

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

Компьютер в нашей голове

- Ход 37 во второй партии между AlphaGo и Ли Седолем. Говорят, он решил исход игры и был абсолютно инопланетный

- Да, он не очень очевидный, не очень стандартный - красивый.

- Вероятность этого хода AlphaGo оценивала в 1/10000. Почему она вообще не выкинула его из рассмотрения?

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

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

- Можно так сделать, но эти комментарии будут слишком конкретными. Что-то вроде: «Проверяем этот ход, потому что его вероятность такая-то, соперник на него ответит вот сюда, и тогда нужно будет ходить уже сюда и вероятность выигрыша в такой позиции 51%». Не очень увлекательно. Просто чем интересны комментарии человека? Во время обучения го учитель объясняет ученику разные типовые комбинации камней на доске, и, поскольку игра пришла с Востока, для них есть очень восточные и красивые названия. «Прыжок обезьяны», «Гнездо журавля», «Пасть тигра», «Бамбук»... Первую линию от края доски называют линией смерти, вторую - поражения, третью - линией территории, четвертую - влияния, и пятую, и дальше - линиями приключений. Просто, когда люди начинают учиться го, они еще не могут опираться на свой опыт в игре и исходят из аналогий - так легче понимать азы.

- Компьютер такого поэтического понимания игры, получается, начисто лишен.

- Я думаю, что на верхнем уровне сознание компьютера и сознание мастеров го в чем-то похожи.

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

Александр Крайнов. Фотография: Яндекс

- Значит, лучшие игроки го действуют как компьютеры?

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

Извлечение смысла

- Мы говорили про нейронные сети и го, про нейронные сети и тексты, про банки, но ничего не сказали про поисковики. Нейронные сети помогут улучшить их алгоритмы?

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

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

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

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

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

- Но будут ли такие системы по-настоящему понимать смысл?

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

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

Или, например, мы строим робота с голосовым управлением. Нужно ему понимать команды? Опять нет. Ему нужно просто научиться действовать в соответствии со словами человека. Блок извлечения смысла просто будет связывать сущности разной природы: запрос и результат поиска, команду и действие.

- Если бы вам нужно было выбирать, кому довериться: роботу-врачу или врачу-человеку, которые принимают решения по лечению одинаково эффективно и с одинаковой вероятностью ошибки, кого бы вы выбрали?

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

Я бы хотел, чтобы решение принимал человек - у него по определению больше наблюдений, больше органов чувств и каналов информации.

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

- Нет ли у вас сомнений насчет безопасности искусственного интеллекта? Терминатор, роботы, захватывающие мир, и все в этом духе?

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

- То есть целеполагание машин всегда будет за человеком?

- Безусловно.


Источник: chrdk.ru

Комментарии: