Мозг из машины

0   8   0

Электротехника
4 апр. 13:57


570248815f1be70588ad7f8a

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

Читать дальше.


Автор: Михаил Петров

Источник: Чердак


0



Для лиц старше 18 лет