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

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

Аналогия с охранником на входе

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

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

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

Где аналогия с охранником ломается

Честная сторона объяснения важнее удобной. Настоящая сеть устроена совсем иначе, чем один охранник. Это десятки слоёв из тысяч и миллионов таких простых решающих единиц, выстроенных в цепочку, и каждый следующий слой видит только результат работы предыдущего, а исходную ситуацию целиком — никогда. Подгонку весов выполняет точная процедура из математического анализа, производные и градиентный спуск, без всякой интуиции и без памяти о прошлой ошибке. Живой охранник переносит опыт на совершенно новые ситуации благодаря общей житейской логике, а сеть надёжно справляется только с тем, что похоже на уже увиденные примеры. Редкое или странное сочетание входных данных способно сбить её с толку совершенно нелепым образом. Охранник ещё и умеет объяснить решение словами. Решение большой сети размазано по миллионам чисел, прочитать которые напрямую никто не может.

Почему сеть всё равно ошибается

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

Из чего фактически состоит сеть

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

Частые вопросы

Правда ли, что нейросеть думает как человек

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

Зачем нужна функция активации, если можно просто складывать числа

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

Что такое эпоха обучения

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

Можно ли обучить сеть вообще без примеров с готовыми правильными ответами

Можно, но это уже другой сценарий. В обучении с подкреплением сеть получает сигнал вознаграждения за удачное действие вместо готового ответа — как очки за победу в игре вместо подписи «правильно». Принцип подгонки весов по ошибке остаётся тем же, меняется только источник сигнала.