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

От нейрона к слою

Приложению нужно два предсказания

Пользователю показывают две цифры: за сколько заказ доедет и сколько ждать, пока курьер его вообще заберёт. Это разные величины.

Признаки при этом те же самые — те же три числа про заказ. А веса разные.

Таблица 9. Веса двух нейронов

вес расстояниявес светофороввес курьеровсмещение
время в дороге31.5−0.58
время до подачи курьера0.50.25−1.512

Сравниваем строки по столбцу курьеров: у первого нейрона там −0.5, у второго −1.5. Свободные курьеры влияют на время подачи втрое сильнее, чем на дорогу, и это разумно: пока курьера нет, заказ вообще не двинется. А по столбцу расстояния наоборот: до подачи ехать почти не надо, поэтому там 0.5 против 3.

Два предсказания — это два набора весов. Считать их по очереди двумя циклами можно, но если предсказаний не два, а сто, а заказов не четыре, а тридцать тысяч, такой счёт становится неподъёмным.

Одна клетка результата

Сложим веса в таблицу: один столбец на нейрон. Тогда веса слоя — это таблица формы (3, 2): три входа, два нейрона.

Посчитаем одно число: предсказание времени в дороге для нулевого заказа. Берём строку таблицы заказов — 4, 2, 6 — и первый столбец таблицы весов — 3, 1.5, −0.5. Перемножаем по парам, складываем, прибавляем смещение первого нейрона: 12 + 3 − 3 + 8 = 20.

Это в точности расчёт из таблицы 8. Ни одной новой операции не появилось: строка против столбца — это скалярное произведение.


строка заказа встречается со столбцом весов4261822220604@30.51.50.25−0.5−1.5=20(4, 3)(3, 2)(4, 2)4 × 3 = 122 × 1.5 = 36 × (−0.5) = −3сумма = 12+ смещение = 20так считается каждая клетка результата

Матричное умножение

Матричное умножение — операция, при которой каждая строка левой таблицы скалярно умножается на каждый столбец правой. Клетка результата на пересечении строки i и столбца j равна скалярному произведению i-й строки на j-й столбец.

Записывается знаком @. Для нашей задачи вся операция выглядит как X @ W + b, где X — таблица заказов, W — таблица весов, b — вектор смещений.

Четыре заказа на два нейрона дают восемь скалярных произведений, и все восемь считаются одной операцией.

Таблица 10. Выход слоя для четырёх заказов

заказкмсветофоровкурьероввремя в дорогевремя до подачи
0426205.5
11822211.5
222207−16.5
3604249

Читаем слева направо: три средних столбца — признаки из таблицы 2, два правых — предсказания. Сравните нулевой и первый заказы по столбцу времени в дороге: 20 и 22, почти одинаково, хотя первый заказ в четыре раза ближе — светофоров у него восемь.


каждая строка против каждого столбца4261822220604@30.51.50.25−0.5−1.5=205.52211.57−16.5249(4, 3)(3, 2)(4, 2)четыре заказа на два нейрона — восемь скалярных произведений сразу

А теперь посмотрите на выделенное число во второй строке снизу. У этого заказа рядом двадцать свободных курьеров, и время до подачи получилось минус шестнадцать с половиной минут. Отрицательного времени не бывает. Разбор этого случая — в разделе 6.

Формы

X имеет форму (примеры, входы). W имеет форму (входы, нейроны). Результат — (примеры, нейроны).


внутренние размеры совпадают — иначе умножения не будетX(4, 3)@W(3, 2)=Y(4, 2)33внешние размеры 4 и 2 дают форму результата

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

Внешние размеры остаются и дают форму результата: строк столько, сколько заказов, столбцов — сколько нейронов.

Внутренние размеры обязаны совпасть, внешние дают форму результата.

Транспонирование

Порядок осей у таблицы весов важен, и иногда её приходится переворачивать. Для этого есть отдельная операция.

Транспонирование — операция, меняющая оси местами: строки становятся столбцами. Форма (4, 3) превращается в (3, 4), записывается как X.T.

Числа при этом не меняются, меняется только то, по какому адресу каждое лежит. Клетка, стоявшая в строке i и столбце j, оказывается в строке j и столбце i.


строки становятся столбцами, числа те же30.51.50.25−0.5−1.5(3, 2).T31.5−0.50.50.25−1.5(2, 3)выделенный столбец слева стал выделенной строкой справа

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

Отсюда и практическое следствие. Таблица весов нашего слоя имеет форму (3, 2): три входа, два нейрона. Записанная наоборот, формой (2, 3), она в X @ W не подойдёт: рядом окажутся тройка из формы заказов и двойка из формы весов. Транспонирование ставит её нужной стороной.

В главе 3 транспонирование понадобится постоянно: при обратном проходе через слой данные идут по тем же связям в другую сторону.

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

Веса не зависят от числа заказов

Подадим в слой не четыре заказа, а сорок тысяч. Таблица весов останется той же, форма (3, 2). Изменится только первая ось результата: вместо (4, 2) станет (40000, 2).

Веса описывают правило, а не данные. Правило одно, и оно применяется ко всем примерам одинаково. Именно поэтому подобранную модель можно применить к заказу, которого она никогда не видела.

Сколько чисел в модели

Параметры — числа, которые подбирает обучение: все веса и все смещения.

В нашем слое три входа и два нейрона: 3 · 2 = 6 весов и 2 смещения, всего 8 чисел.

Возьмём слой побольше: 784 входа и 128 нейронов. Весов 784 · 128 = 100 352, смещений 128, всего 100 480 параметров. И это один слой очень скромной сети.

Когда говорят «модель на семь миллиардов», имеют в виду ровно это: сколько чисел подбирается при обучении.

Частая ошибка при подсчёте — забыть смещения. На большом слое разница почти незаметна, а на нашем маленьком смещения составляют четверть всех параметров: 2 из 8.


X имеет форму (100, 5), W — форму (3, 5). Умножение X @ W не выполнится. Какая форма получится у X @ W.T?


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