Модуль: Введение в нейронные сети


Итоги главы


К девяти утверждениям сводится всё, что разобрано выше. Каждое из них по ходу главы было получено разбором или проверено вычислением.

  1. Первая ось считает примеры, последняя описывает один пример.
  2. Формы сравниваются справа налево. Растянуть можно только единицу.
  3. Смещение прибавляется один раз, а не к каждому признаку.
  4. Скалярное произведение — свёрнутый цикл. Матричное умножение — все скалярные произведения сразу.
  5. Внутренние размеры обязаны совпасть, внешние дают форму результата.
  6. Веса описывают правило, а не данные: от числа примеров они не зависят.
  7. Без функции активации слои схлопываются в один.
  8. Цикл по примерам почти всегда лишний.
  9. Тест открывают один раз.

Сводка форм и формул

Таблица 15. Формы в слое из n примеров, k входов и m нейронов

объектформасколько чисел
таблица примеров X(n, k)n · k
таблица весов W(k, m)k · m
вектор смещений b(m,)m
результат X @ W + b(n, m)n · m
параметров в слоеk · m + m

Читаем по строкам. Первые четыре строки — формы, последняя отвечает на другой вопрос: сколько чисел подбирает обучение. Обратите внимание, что число параметров не зависит от n: сколько примеров ни подай, подбирать всё равно k · m + m чисел.

Нейрон: y = w₁·x₁ + w₂·x₂ + … + w_k·x_k + b, где x — признаки, w — веса, b — смещение, y — предсказание.

Слой: Y = X @ W + b.

Двухслойная сеть: Y = ReLU(X @ W₁ + b₁) @ W₂ + b₂.

Словарь

Тензор — числа одного типа, разложенные по осям так, что вдоль каждой оси их поровну. Форма — список размеров по всем осям. Срез — часть тензора, полученная указанием, что брать по каждой оси. Broadcasting — правило, по которому тензор меньшей формы мысленно повторяется вдоль недостающих осей. Нормализация — вычитание среднего и деление на разброс по каждому признаку. Вес — множитель при признаке. Смещение — слагаемое, не связанное ни с одним признаком. Скалярное произведение — сумма попарных произведений двух наборов равной длины; результат — одно число. Матричное умножение — все скалярные произведения строк левой таблицы на столбцы правой. Нейрон — взвешенная сумма признаков со смещением. Слой — несколько нейронов над одними и теми же признаками, с разными весами. Параметры — все веса и все смещения; числа, которые подбирает обучение. Функция активации — поэлементное преобразование выхода нейрона; форму не меняет, параметров не имеет. ReLU — линейный выпрямитель: отрицательное в ноль, положительное без изменений. Прямой проход — прогон данных через все слои от входа к предсказанию. Скрытый слой — слой, выход которого передаётся следующему слою, а не наружу. Перцептрон — взвешенная сумма признаков с порогом на выходе. Многослойный перцептрон, MLP — несколько полносвязных слоёв с активацией между ними. Векторизация — запись вычисления над тензорами без цикла по элементам. Обобщение — способность модели работать на данных, которых она не видела. Утечка — попадание в подбор весов информации из тестовой выборки.

Вопросы на подумать

  1. Датасет собран из 40 цветных фотографий 28 × 28 пикселей. Какая у него форма и сколько в нём чисел?
  2. Массив a имеет форму (2, 1, 7), массив b — форму (3, 7). Сложатся ли они, и если да, какой формы будет результат?
  3. Заказ: 9 км, 2 светофора, 14 свободных курьеров. Веса и смещение те же, что в таблице 8. Сколько минут предскажет нейрон?
  4. Какая форма получится у произведения (12, 5) @ (5, 8)? А у (12, 5) @ (8, 5)?
  5. Слой nn.Linear на 6 входов и 2 нейрона. Сколько в нём параметров?
  6. После ReLU второй нейрон скрытого слоя выдал ноль на всех четырёх заказах. Что это значит для предсказания?
  7. Модель ошибается в среднем на минуту на заказах, по которым подбирались веса, и на двенадцать минут на новых. О чём это говорит?
  8. Таблица заказов имеет форму (30, 3). Нужно прибавить к каждому заказу свою поправку — одно число на заказ. Какой формы должен быть вектор поправок и почему форма (30,) не подойдёт?

Ответы

  1. (40, 28, 28, 3); чисел 40 · 28 · 28 · 3 = 94 080.
  2. Сложатся, результат формы (2, 3, 7). Справа семёрки совпали; средняя единица растянулась до трёх; первой оси у b нет, она дописывается как единица и растягивается до двух.
  3. 9 · 3 + 2 · 1.5 + 14 · (−0.5) + 8 = 27 + 3 − 7 + 8 = 31 минута.
  4. Первое даёт (12, 8). Второе невозможно: рядом стоят пятёрка и восьмёрка.
  5. 6 · 2 + 2 = 14.
  6. На этих четырёх заказах он не влияет на предсказание: в следующий слой от него уходит ноль, умноженный на любой вес. Веса у него при этом могут быть нормальными — просто взвешенная сумма на этих заказах вышла отрицательной.
  7. Модель запомнила заказы, по которым подбирались веса, вместо того чтобы найти правило. Учить дольше в такой ситуации сделает хуже.
  8. Нужна форма (30, 1): единица растянется до трёх признаков, а каждому заказу достанется своё число. Форма (30,) при выравнивании справа даст встречу тройки и тридцатки — они не равны и ни одна не единица. Форма (3,) сработает без ошибки, но прибавит поправку к признаку, а не к заказу.

Что дальше

Все веса в этой главе задавались вручную: мы либо брали их из правила, которое сами же придумали, либо из обученной сети. Девять чисел можно подобрать рассуждением, и в конце главы 2 вы это сделаете. А в скромной сети из раздела 5 их сто тысяч, и рассуждением столько не подобрать.

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