Статья Автор: Деникина Н.В., Деникин А.В.

Прямой проход и функция активации

Почему одного слоя мало

Вернёмся к минус шестнадцати с половиной минутам из таблицы 10.

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

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


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

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

Значит, нужна конструкция, у которой влияние признака может меняться. Для этого слои ставят друг за другом, а между ними помещают нечто, что нарушает пропорциональность.

Функция активации

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

Самая употребительная называется ReLU.

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


отрицательноестановится нулёмположительноене меняетсявходвыход0ReLU: излом ровно в нуле, и он одинформу не меняет и параметров не имеет

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

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

Параметров у ReLU нет: правило фиксированное, порог жёстко равен нулю, настраивать нечего. В подсчёте параметров слои активации не участвуют.

Для интересующихся. Раньше в подобных моделях на этом месте стояла знаковая функция: плюс один для положительных чисел, минус один для отрицательных. Как пороговое правило она удобна, но для подбора весов не годится: её выход почти нигде не меняется плавно, а подбор опирается именно на плавное изменение. Почему это важно, станет понятно в главе 3.

Прямой проход

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

Скрытый слой — слой, чей выход наружу не показывают, а передают следующему слою.

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

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

Таблица 11. Прямой проход: три состояния данных

заказдо ReLU (четыре числа скрытого слоя)после ReLUвыход
0−5, −5, 1.75, 12.750, 0, 1.75, 12.7520.375 и 6.25
1−5.5, −1.5, 3, 13.750, 0, 3, 13.7521.875 и 10

Читаем слева направо по одной строке. Во втором столбце — выход первого слоя, там у обоих заказов первые два числа отрицательные. В третьем столбце на их месте нули, остальные два числа не изменились: это и сделала ReLU. Форма при этом не поменялась, было четыре числа и осталось четыре. В четвёртом столбце — результат второго слоя: два числа, минуты дороги и минуты до подачи.

Сравните выход с таблицей 10: там для нулевого заказа было 20 и 5.5, здесь 20.375 и 6.25. Сеть приближает то же правило, а не воспроизводит его в точности.

Что происходит без активации

Уберём ReLU и посчитаем те же два заказа. А рядом соберём один слой, у которого таблица весов равна произведению двух таблиц весов, а смещение получено из двух смещений.

Таблица 12. Два слоя без активации и один слой

заказдва слоя без ReLUодин слой
019.125 и 6.2519.125 и 6.25
122.5 и 922.5 и 9

Сравниваем два правых столбца построчно: числа совпадают полностью, до последнего знака.

Это не «почти одно и то же» и не «чуть хуже». Два слоя без активации — в точности один слой, только записанный длиннее. Три таблицы весов перемножаются в одну, три смещения складываются в одно, и получается обычная взвешенная сумма.

Без функции активации слои схлопываются. Сеть из ста слоёв без активаций не сильнее сети из одного.

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

Как называется собранная конструкция

Перцептрон — взвешенная сумма признаков с порогом на выходе. Предложен Фрэнком Розенблаттом в 1958 году.

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

«Полносвязный» означает, что каждый вход соединён с каждым нейроном слоя.

Вторая запись той же сети

Ту же сеть часто изображают не таблицами, а графом.


32−1112x₁x₂z₁+8z₂−6ŷ−2рёбра — веса, подписи над кружками — смещенияz₁ и z₂ проходят через ReLU, прежде чем попасть в ŷ

Кружки — числа, стрелки — веса, подписи над кружками — смещения. Граф читается так: z₁ = 3·x₁ + 1·x₂ + 8, z₂ = −1·x₁ + 2·x₂ − 6, затем к обоим применяется ReLU, затем ŷ = 1·z₁ + 2·z₂ − 2.

Знак ŷ — это предсказание модели, в отличие от y, которым обозначают верный ответ.

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

Сколько параметров в сети из трёх слоёв

Считается по слоям, и слои активации не участвуют. Возьмём сеть: 10 входов, скрытый слой из 32, ещё один из 32, выход из 3.

Первый слой: 10 · 32 + 32 = 352. Второй: 32 · 32 + 32 = 1056. Третий: 32 · 3 + 3 = 99. Всего 1507 параметров.

Если забыть смещения, получится 1440 — расхождение в 67 чисел.


Из сети в три слоя убрали все функции активации. Что с ней стало?


Загрузка...
Чтобы оставить комментарий, необходимо авторизоваться
💬
Пока нет комментариев. Будьте первым!
Печать