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

Как работает нейросеть: объяснение простыми словами
Фото: hikari_no_yume, Wikimedia Commons, CC BY 4.0.

Обычная программа и нейросеть: в чем разница

Классическую программу пишет человек: он заранее продумывает каждое правило. Калькулятор знает, что 2 + 2 = 4, потому что программист так прописал. Программа расчета зарплаты умножает часы на ставку по формуле, которую ей дали. Если правило неизвестно, программа бессильна.

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

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

Обычная программаНейросеть
Откуда правилаПишет человекНаходит сама в примерах
Что нужно для работыТочный алгоритмМного данных с ответами
Можно ли объяснить решениеДа, по шагамОбычно с трудом
Где сильнаРасчеты, учет, логикаОбразы, речь, тексты

Искусственный нейрон — маленький взвешивающий судья

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

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

Ровно так работает искусственный нейрон:

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

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

Слои: от черточек к лицам

Нейроны в сети выстроены рядами. Первый слой получает сырые данные: например, фотография 100 на 100 точек — это 10 000 чисел яркости. Последний слой выдает ответ: «кошка — 92%, собака — 8%». Все, что между ними, называют скрытыми слоями.

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

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

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

Как нейросеть учится на примерах

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

Шаг первый — попытка

Сети показывают пример, скажем фото собаки. Сигнал проходит через все слои, и на выходе появляется ответ: «кошка — 70%». Это называется прямым проходом.

Шаг второй — оценка промаха

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

Шаг третий — подкрутка весов

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

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

Обратное распространение ошибки на примере кухни

Самый хитрый вопрос: как понять, какой именно из миллионов весов виноват в ошибке и в какую сторону его двигать? Для этого придуман метод обратного распространения ошибки. Математические основы появились в 1960-1970-х, а широкую известность метод получил после статьи Дэвида Румельхарта, Джеффри Хинтона и Рональда Уильямса 1986 года.

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

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

Почему нейросети нужны горы данных и мощные компьютеры

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

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

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

Чего нейросеть не умеет и почему она ошибается

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

  • Ловит не те признаки. Известен учебный пример: если на всех фото волков в обучающем наборе есть снег, сеть может научиться распознавать снег, а не волка, и назовет волком хаски на снегу.
  • Теряется в незнакомом. Сеть, обученная на фото при дневном свете, может путаться на ночных снимках.
  • Наследует перекосы данных. Если в примерах одних людей больше, чем других, точность для разных групп будет разной.
  • Не объясняет своих решений. Знание размазано по миллионам весов, и ответить на вопрос «почему» трудно даже разработчикам. Этим занимается отдельное направление — интерпретируемость.

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

Что еще спрашивают об устройстве нейросетей

Нейросеть и мозг — это одно и то же?

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

Нейросеть продолжает учиться, пока ей пользуются?

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

Сколько весов бывает у нейросети?

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

Можно ли сделать нейросеть дома?

Да, небольшую. Сеть, которая распознает рукописные цифры, пишется на языке Python за вечер и обучается на обычном ноутбуке за минуты. Огромные модели требуют дата-центров, а маленькие доступны любому любопытному.