Как устроен один нейрон
Нейрон получает на входе несколько чисел. У каждого входа есть свой вес — число, которое показывает, насколько сильно этот сигнал должен повлиять на итоговое решение. Нейрон умножает каждое входное число на его вес, складывает все произведения и добавляет ещё одно число, сдвиг, который по-английски называют bias. Получившуюся сумму пропускают через простую функцию решения. Она превращает сумму в конкретный ответ: сработал нейрон или нет, число ближе к нулю или к единице. Из миллионов таких простых операций и собрана вся сеть. Магии внутри отдельного нейрона нет, есть только умножение, сложение и один порог.
Аналогия с охранником на входе
Нейрон удобнее всего представлять через охранника у входа в клуб. Он оценивает гостя сразу по нескольким признакам: есть ли имя в списке, подходит ли одежда под дресс-код, какое у самого охранника настроение в этот конкретный вечер. Каждому признаку он мысленно назначает вес — имя в списке значит для решения куда больше, чем цвет кроссовок. Охранник складывает эти взвешенные оценки. Если сумма переваливает через внутренний порог, гостя пропускают. Нейрон делает буквально то же самое, только с числами вместо впечатлений и без личных предпочтений.
Как сеть учится на примерах
Сеть с самого начала ничего не умеет: её веса выставлены случайно, и первые ответы почти всегда ошибочны. Дальше ей показывают пример вместе с правильным ответом — фотографию кота с подписью «кот», предложение с правильным переводом, число с правильной категорией. Сеть считает свой ответ, сравнивает его с правильным и видит разницу, то есть ошибку. Алгоритм обратного распространения ошибки вычисляет, какой вес виноват в этой ошибке сильнее остальных, и подправляет именно его, на маленький шаг. Повторить этот шаг миллионы раз на тысячах примеров — и случайные веса складываются в рабочую систему. У охранника обучение выглядело бы так: после каждой неверной проверки менеджер клуба говорит «зря впустил» или «зря отказал», и охранник постепенно меняет, насколько сильно доверяет каждому признаку.
Где аналогия с охранником ломается
Честная сторона объяснения важнее удобной. Настоящая сеть устроена совсем иначе, чем один охранник. Это десятки слоёв из тысяч и миллионов таких простых решающих единиц, выстроенных в цепочку, и каждый следующий слой видит только результат работы предыдущего, а исходную ситуацию целиком — никогда. Подгонку весов выполняет точная процедура из математического анализа, производные и градиентный спуск, без всякой интуиции и без памяти о прошлой ошибке. Живой охранник переносит опыт на совершенно новые ситуации благодаря общей житейской логике, а сеть надёжно справляется только с тем, что похоже на уже увиденные примеры. Редкое или странное сочетание входных данных способно сбить её с толку совершенно нелепым образом. Охранник ещё и умеет объяснить решение словами. Решение большой сети размазано по миллионам чисел, прочитать которые напрямую никто не может.
Почему сеть всё равно ошибается
Одна из главных причин — перекос в примерах, на которых сеть училась. Видела мало разнообразных случаев — научится узко. Классическая иллюстрация: классификатор из статьи 2016 года исследователей Рибейро, Сингха и Гестрина принял хаски за волка просто потому, что на большинстве фотографий волков в обучающей выборке был снег на заднем плане, а порода собаки к этому решению не имела никакого отношения. Ещё одна причина — переобучение, когда сеть заучивает конкретные примеры вместо общей закономерности и потом спотыкается на чём-то новом. Сеть не понимает причины и следствия в человеческом смысле, она ловит статистические совпадения. Непривычная формулировка вопроса или неожиданный контекст способны сбить её с толку там, где человек не задумался бы ни на секунду.
Из чего фактически состоит сеть
- входной слой, который принимает исходные числа
- один или несколько скрытых слоёв с весами
- функция активации, добавляющая нелинейность
- выходной слой с итоговым ответом
- функция потерь, измеряющая размер ошибки
Частые вопросы
Правда ли, что нейросеть думает как человек
Нет, и это стоит сказать другу прямо. Сеть не рассуждает и не понимает смысла — она находит статистические закономерности в примерах и повторяет их на новых данных. Результат может выглядеть как разумное решение, а внутри работает чистая арифметика с миллионами подобранных чисел.
Зачем нужна функция активации, если можно просто складывать числа
Без неё вся сеть, сколько бы слоёв в ней ни было, математически сворачивается в одно простое сложение и умножение — слои перестают что-либо добавлять друг к другу. Функция активации вносит нелинейность, и именно она позволяет сети находить сложные закономерности: изгибы, границы, исключения, которые прямой линией не описать.
Что такое эпоха обучения
Один полный проход сети через весь набор обучающих примеров называют эпохой. Реальное обучение обычно требует десятков или сотен таких проходов подряд, а не одного: веса меняются на маленькие шаги, и один проход почти никогда не даёт готового результата.
Можно ли обучить сеть вообще без примеров с готовыми правильными ответами
Можно, но это уже другой сценарий. В обучении с подкреплением сеть получает сигнал вознаграждения за удачное действие вместо готового ответа — как очки за победу в игре вместо подписи «правильно». Принцип подгонки весов по ошибке остаётся тем же, меняется только источник сигнала.