Излом ровно в нуле, и он один. Слева от нуля линия горизонтальна, справа поднимается с тем же наклоном, с каким входит число. Именно этот излом и нарушает пропорциональность: до нуля изменение входа на выход не влияет, после нуля влияет полностью.
Сама по себе ReLU плато не создаёт: у неё всего один излом. Но несколько нейронов с разными весами и смещениями дают несколько изломов в разных местах, и вместе они образуют ломаную, которой уже можно приблизить сложную зависимость — в том числе участок, похожий на плато. Слой из k нейронов даёт до k изломов.
Параметров у ReLU нет: правило фиксированное, порог жёстко равен нулю, настраивать нечего. В подсчёте параметров слои активации не участвуют.
Для интересующихся. Раньше в подобных моделях на этом месте стояла знаковая функция: плюс один для положительных чисел, минус один для отрицательных. Как пороговое правило она удобна, но для подбора весов не годится: её выход почти нигде не меняется плавно, а подбор опирается именно на плавное изменение. Почему это важно, станет понятно в главе 3.
Прямой проход
Прямой проход — прогон данных через все слои по очереди, от входа к предсказанию. Ничего не подбирается, только считается.
Скрытый слой — слой, чей выход наружу не показывают, а передают следующему слою.
Скажу честно: числа скрытого слоя не значат ни «минуты», ни «километры». Промежуточные признаки при обучении складываются сами, и заранее заданного истолкования у них нет. Не «ничего не значат» — для следующего слоя они содержательны и используются, — а именно не имеют человеческой интерпретации. Пытаться подобрать им название не надо.
Посчитаем прямой проход двухслойной сети для первых двух заказов. Веса взяты из настоящей обученной сети и округлены, поэтому красивых чисел в них нет.
Таблица 11. Прямой проход: три состояния данных
| заказ | до ReLU (четыре числа скрытого слоя) | после ReLU | выход |
| 0 | −5, −5, 1.75, 12.75 | 0, 0, 1.75, 12.75 | 20.375 и 6.25 |
| 1 | −5.5, −1.5, 3, 13.75 | 0, 0, 3, 13.75 | 21.875 и 10 |
Читаем слева направо по одной строке. Во втором столбце — выход первого слоя, там у обоих заказов первые два числа отрицательные. В третьем столбце на их месте нули, остальные два числа не изменились: это и сделала ReLU. Форма при этом не поменялась, было четыре числа и осталось четыре. В четвёртом столбце — результат второго слоя: два числа, минуты дороги и минуты до подачи.
Сравните выход с таблицей 10: там для нулевого заказа было 20 и 5.5, здесь 20.375 и 6.25. Сеть приближает то же правило, а не воспроизводит его в точности.
Что происходит без активации
Уберём ReLU и посчитаем те же два заказа. А рядом соберём один слой, у которого таблица весов равна произведению двух таблиц весов, а смещение получено из двух смещений.
Таблица 12. Два слоя без активации и один слой
| заказ | два слоя без ReLU | один слой |
| 0 | 19.125 и 6.25 | 19.125 и 6.25 |
| 1 | 22.5 и 9 | 22.5 и 9 |
Сравниваем два правых столбца построчно: числа совпадают полностью, до последнего знака.
Это не «почти одно и то же» и не «чуть хуже». Два слоя без активации — в точности один слой, только записанный длиннее. Три таблицы весов перемножаются в одну, три смещения складываются в одно, и получается обычная взвешенная сумма.
Без функции активации слои схлопываются. Сеть из ста слоёв без активаций не сильнее сети из одного.
Отсюда правило на весь курс: между любыми двумя слоями стоит функция активации. И ставят её между слоями, а не после последнего: иначе сеть не сможет выдать отрицательный ответ там, где он нужен.
Как называется собранная конструкция
Перцептрон — взвешенная сумма признаков с порогом на выходе. Предложен Фрэнком Розенблаттом в 1958 году.
Многослойный перцептрон — несколько полносвязных слоёв подряд с функцией активации между ними. Сокращают как MLP. Это ровно то, что собрано в этом разделе.
«Полносвязный» означает, что каждый вход соединён с каждым нейроном слоя.
Вторая запись той же сети
Ту же сеть часто изображают не таблицами, а графом.