От нейрона к сети

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

Вот сеть, которая читает рукописные цифры: 784 входа (по одному на пиксель картинки 28 × 28), два скрытых слоя на 128 и 64 нейрона, 10 выходов. В ней 109 386 настраиваемых чисел.

Вынь из неё одну деталь, в которой нет ни одного настраиваемого числа: функцию активации в скрытых слоях. Все нейроны и все связи остались на месте. Но теперь эту сеть можно заменить одной таблицей из 7 850 чисел, и на любой картинке ответы совпадут. Остальные 101 536 параметров ничего не добавляют.

Куда делись сто тысяч параметров? И что такого в детали без единого числа, что на ней держится вся сила сети? К концу урока это доказывается в три строчки.

Нейроны встают в слои

В уроке 8 один нейрон не справился с XOR, а три справились: два провели по прямой, третий объединил их ответы. Ту сеть собрали руками под одну задачу. Теперь нужен общий чертёж, по которому собирается сеть любого размера.

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

Feed Forward Neural Network (FFNN, сеть прямого распространения; на слайдах её же называют Multi Layer Perceptron, а конспект сокращает до FNN) — нейросеть, в которой сигнал идёт в одну сторону: от входного слоя через скрытые к выходному. Циклов и петель нет, поэтому выход нейрона зависит только от предыдущих слоёв.

x h g вход скрытый выход только вперёд

Feed-forward: все стрелки слева направо

x h g вход скрытый выход петля

Не feed-forward: выход вернулся назад

Рис. 1. Слово feed-forward описывает направление стрелок и больше ничего. Стоит одной стрелке пойти назад — это уже другой класс сетей (рекуррентные), в этих главах их нет.

«Feed-forward — значит один скрытый слой». Нет. Слоёв может быть сколько угодно, лишь бы ни одна связь не шла назад. И наоборот: много слоёв не делают сеть рекуррентной.

Три вида слоёв

Input layer (входной слой) — по одному «нейрону» на признак: пиксель, показание датчика, столбец таблицы. Он ничего не считает и только раздаёт значения дальше. Параметров у него нет. На слайдах в нём \(I\) нейронов.

Hidden layers (скрытые слои) — нейроны, которые считают взвешенную сумму и пропускают её через функцию активации. Снаружи их выходы не видны, отсюда название. Каждый скрытый нейрон отвечает на свой промежуточный вопрос, как два нейрона-«прямые» в XOR. В слое \(l\) их \(J_l\).

Output layer (выходной слой) — \(K\) нейронов, которые выдают ответ сети. Какая у них активация, решает задача, а не архитектура: об этом урок 11.

Соседние слои соединены полностью: каждый нейрон слоя \(l\) получает выходы всех нейронов слоя \(l - 1\). Такой слой называют fully connected (полносвязным), или dense. У каждой связи свой вес, у каждого нейрона свой bias. Рисуют такую сеть как граф: узлы — нейроны, рёбра — связи с весами.

Рис. 2. Сеть 3–4–2 с рис. 5 конспекта (стр. 58), перерисованная как на слайде 17 лекции 2: добавлены кружки «1», которых в конспекте нет. От каждой единицы к нейронам следующего слоя идут связи, и их веса — это biases.

Слайд 17 лекции 2 описывает всю конструкцию одной фразой: «Non-linear model characterized by the number of neurons, activation functions, and the values of weights». Первые два пункта выбирает человек до обучения (это гиперпараметры, hyperparameters, — урок 21). Третий подбирает обучение.

Зачем скрытых слоёв несколько? Конспект (стр. 59) отвечает так: первые слои ловят простые узоры, например края на картинке, а следующие собирают из них сложные — формы и целые предметы. Это те самые learned features, выученные признаки из урока 3, только выстроенные лесенкой. Держи это в голове как наблюдение за обученными на картинках сетями, а не как теорему: для произвольной FFNN такой гарантии никто не давал.

У каждого веса есть адрес

В сети на рис. 2 двадцать шесть чисел. Чтобы формулы читались, каждому нужен адрес. На слайдах адрес веса состоит из трёх номеров. Посмотри на один скрытый нейрон крупным планом.

1 x₁ x₂ x₃ Σ h₂ w₂₀ w₂₁ w₂₂ w₂₃ a₂ h(·) всегда 1 в нейрон 2 из входа 3
Рис. 3. Нейрон 2 скрытого слоя сети 3–4–2. Ему принадлежат четыре числа: три веса и bias \(w_{20}\), который приходит по связи от постоянной единицы. Верхний индекс слоя \((1)\) на рисунке опущен.
\[ a_j^{(l)} = \sum_{i=0}^{J_{l-1}} w_{ji}^{(l)}\, h_i^{(l-1)} \] \[ h_j^{(l)} = h_j\big(a_j^{(l)}\big) \]
\(w_{ji}^{(l)}\)
вес связи в нейрон \(j\) слоя \(l\) из нейрона \(i\) слоя \(l - 1\): сначала «куда», потом «откуда»
\(h_i^{(l-1)}\)
выход нейрона \(i\) предыдущего слоя; для первого слоя это входы, \(h^{(0)} = \vb{x}\)
\(w_{j0}^{(l)}\)
bias нейрона \(j\): вес связи от единицы, \(h_0 = 1\)
\(a_j^{(l)}\)
взвешенная сумма; в конспекте net input, или activation potential
\(h_j(\cdot)\)
функция активации скрытого нейрона; у выходного нейрона её пишут \(g(\cdot)\)
\(J_l\)
число нейронов в слое \(l\); входов \(J_0 = I\), выходов \(K\)

В \(w_{ji}^{(l)}\) первый индекс — куда, второй — откуда, верхний — номер слоя, в котором стоит нейрон-получатель.

Все веса одного слоя складывают в матрицу \(W^{(l)} = \{w_{ji}^{(l)}\}\). Строка \(j\) — это всё, что принадлежит нейрону \(j\). Для первого слоя сети 3–4–2:

\[ W^{(1)} = \begin{pmatrix} w_{10} & w_{11} & w_{12} & w_{13} \\ w_{20} & w_{21} & w_{22} & w_{23} \\ w_{30} & w_{31} & w_{32} & w_{33} \\ w_{40} & w_{41} & w_{42} & w_{43} \end{pmatrix} \]

Четыре строки — четыре скрытых нейрона. Четыре столбца — bias и три входа. Вторая строка — это ровно рис. 3. На слайде 17 лекции 2 та же мысль записана для слоя целиком: \(h^{(l)} = \{h_j^{(l)}(h^{(l-1)}, W^{(l)})\}\) — выходы слоя зависят только от предыдущего слоя и своей матрицы весов.

Теперь можно записать сеть с одним скрытым слоем и одним выходом одной формулой. Именно в таком виде она стоит на слайде 25, и с неё начинается вывод градиента в уроке 14:

\[ g(\vb{x}_n | \vb{w}) = g\Big( \sum_{j=0}^{J} w_{1j}^{(2)}\, h_j \Big) \] \[ h_j = h_j\Big( \sum_{i=0}^{I} w_{ji}^{(1)}\, x_{i,n} \Big) \]
\(g(\vb{x}_n | \vb{w})\)
ответ сети на пример \(\vb{x}_n\) при весах \(\vb{w}\); его сравнивают с правильным ответом \(t_n\). На слайде 25 единственный выход пронумерован: \(g_1\)
\(w_{1j}^{(2)}\)
вес второго слоя: в выходной нейрон 1 из скрытого нейрона \(j\); \(w_{10}^{(2)}\) — bias выхода, \(h_0 = 1\)
\(x_{i,n}\)
признак \(i\) примера \(n\); \(x_{0,n} = 1\)
\(g(\cdot)\) справа
активация выходного нейрона: буква та же, что у всей сети, не перепутай
Конспект пишет то же другими буквами. На экзамене пиши как в левом столбце.
Что этоСлайдыКонспект, стр. 57–62
взвешенная сумма\(a\)\(a = \vb{w}\T\vb{x} + b\) на стр. 60; но на стр. 57–58 буквой \(a\) назван уже выход нейрона
bias\(w_{j0}\), вес от \(x_0 = 1\)отдельное число \(b_j\)
функция активации\(h_j(\cdot)\) в скрытом слое, \(g(\cdot)\) на выходе\(f(\cdot)\) для любого слоя; на стр. 60 местами \(g(\cdot)\)
выход скрытого нейрона\(h_j\)\(a_j\) на стр. 57, \(y\) на стр. 60
выход сети\(g(\vb{x}_n | \vb{w})\)\(x^{(l)}\) на стр. 58
правильный ответ\(t_n\)target

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

Параметры — это всё, что подбирает обучение: веса и biases. Считать их просто, если помнить рис. 3: параметры живут на стрелках, которые входят в нейрон. У нейрона с \(n\) входами \(n\) весов и один bias. В слое \(J_l\) нейронов, у каждого \(J_{l-1}\) входов:

\[ \underbrace{(J_{l-1} + 1)}_{\text{входы и bias}} \cdot \underbrace{J_l}_{\text{нейроны слоя}} \]

Это просто размер матрицы \(W^{(l)}\): число строк на число столбцов. Для всей сети такие произведения складывают по слоям. Сеть 3–4–2 с рис. 2:

\[ \underbrace{(3 + 1)\cdot 4}_{16} + \underbrace{(4 + 1)\cdot 2}_{10} = 26 . \]

Из них 20 весов и 6 biases. А вот сеть из задачки для разгона, 784–128–64–10:

\[ \underbrace{785 \cdot 128}_{100\,480} + \underbrace{129 \cdot 64}_{8\,256} + \underbrace{65 \cdot 10}_{650} \] \[ = 109\,386 . \]

Сколько чисел в сети

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

  1. На экране сеть 3–4–2. До того как нажимать: сколько чисел принадлежит одному скрытому нейрону? А одному выходному? Нажми на оба и сверь.
    Что должно получиться

    Скрытому — 4: три веса и bias. Выходному — 5: четыре веса от скрытых нейронов и bias. Четыре нейрона по 4 и два по 5 дают те самые 16 + 10 = 26.

  2. Добавь один вход: \(I = 4\). На сколько вырастет общий счёт? Сначала ответь, потом двигай ползунок.
    Что должно получиться

    На 4, до 30. Новый вход — это по одной новой стрелке в каждый из четырёх скрытых нейронов. Выходной слой про входы ничего не знает: его строка в счёте не изменилась.

  3. Верни 3–4–2 кнопкой и вставь второй скрытый слой из 4 нейронов. Что прибавится?
    Что должно получиться

    Ровно 20: появилась матрица \(W^{(2)}\) размером \(4 \times (4 + 1)\). Всего 16 + 20 + 10 = 46. Первый и последний слои остались прежними, потому что размеры их соседей не изменились.

  4. Снова 3–4–2. Выключи bias. Угадай новый счёт по картинке, без формулы.
    Что должно получиться

    20: счёт уменьшился на 6 — на число вычисляющих нейронов (4 скрытых и 2 выходных). Остались одни произведения соседних размеров: \(3 \cdot 4 + 4 \cdot 2\).

Быстрая самопроверка на экзамене. Весов без biases столько, сколько даёт сумма произведений соседних размеров: \(3 \cdot 4 + 4 \cdot 2 = 20\). Biases столько, сколько нейронов во всех слоях, кроме входного: \(4 + 2 = 6\). Если в условии не сказано обратное, biases считай.

Forward pass: слева направо, слой за слоем

Посчитать ответ сети для данного входа — значит пройти по ней слева направо. Это называется forward pass (прямой проход). Хитрости нет никакой: чтобы посчитать нейрон, нужны выходы предыдущего слоя, и только они. Поэтому порядок один: сначала весь первый слой, потом весь второй, и так до выхода.

Возьмём самую маленькую настоящую сеть, 2–2–1. Скрытые нейроны с активацией \(\tanh\) (её устройство — в уроке 10, сейчас это просто кнопка на калькуляторе), выходной нейрон линейный: \(g(a) = a\). Веса запишем матрицами, bias в первом столбце:

\[ W^{(1)} = \begin{pmatrix} 0.5 & 1 & -0.5 \\ -1 & 0.5 & 1 \end{pmatrix} \] \[ W^{(2)} = \begin{pmatrix} 0.1 & 2 & -1 \end{pmatrix} \]

На вход подан \(\vb{x} = (1, 2)\). Считаем по строкам матриц:

Прямой проход по сети 2–2–1: одна строка — один нейрон.
НейронВзвешенная сумма \(a\)Выход
\(h_1\)\(0.5 + 1 \cdot 1 + (-0.5) \cdot 2 = 0.5\)\(\tanh(0.5) = 0.4621\)
\(h_2\)\(-1 + 0.5 \cdot 1 + 1 \cdot 2 = 1.5\)\(\tanh(1.5) = 0.9051\)
\(g\)\(0.1 + 2 \cdot 0.4621 - 0.9051\)\(0.1191\)

В последней строке вместо \(x_1, x_2\) стоят уже \(h_1, h_2\): выходной нейрон не видит входов сети, он видит только скрытый слой. Проверь себя на других числах.

Калькулятор прямого прохода: сеть 2–2–1

Таблицы под схемой — те же матрицы весов: строка — нейрон-получатель, первый столбец — bias. Любое число можно изменить. Кнопка «Дальше» считает сеть по одному нейрону и показывает арифметику. Главное, что здесь видно: каждый нейрон берёт числа только из предыдущего слоя.

  1. Поставь вход \(\vb{x} = (2, 1)\). До нажатия «Дальше» посчитай на калькуляторе обе суммы, оба выхода скрытого слоя и \(g\). Потом пройди шаги и сверь.
    Что должно получиться

    \(a_1 = 0.5 + 2 - 0.5 = 2\), \(a_2 = -1 + 1 + 1 = 1\). Дальше \(h_1 = \tanh 2 = 0.9640\), \(h_2 = \tanh 1 = 0.7616\) и выход:

    \[ g = 0.1 + 2 \cdot 0.9640 - 0.7616 \approx 1.266 \]

    Калькулятор урока покажет 1.2665: он не округляет \(h\) по дороге.

  2. Верни числа урока и дойди до последнего шага. Теперь увеличь bias выходного нейрона с 0.1 до 1.1. Какие числа на схеме изменятся?
    Что должно получиться

    Только выход: \(g\) вырос ровно на 1, с 0.1191 до 1.1191. Скрытый слой не шелохнулся: в сети без петель ничто не зависит от слоёв, стоящих правее.

  3. Снова числа урока. Переключи активацию скрытого слоя на linear и предскажи \(g\).
    Что должно получиться

    Теперь \(h = a\), то есть \(h_1 = 0.5\), \(h_2 = 1.5\) и \(g = 0.1 + 1 - 1.5 = -0.4\). Обрати внимание на строку «та же сеть одним нейроном»: там появилась формула \(2.1 + 1.5\,x_1 - 2\,x_2\), и она даёт то же число.

  4. Оставь linear и меняй любые веса и входы. Найдётся ли набор чисел, при котором сеть и строка «одним нейроном» разойдутся?
    Что должно получиться

    Нет, ни при каких. Почему — в следующем разделе. А с \(\tanh\) такой строки нет вовсе.

Этот расчёт перекликается с тем, что ты знаешь из Applied Statistics. Нейрон с линейной активацией считает \(w_0 + \sum_i w_i x_i\) — ровно формулу линейной регрессии. Нейрон с сигмоидой — логистическую регрессию. Сеть делает ту же регрессию, только подаёт в неё не исходные признаки, а признаки \(h_j\), которые построил предыдущий слой. PCA тоже строит новые признаки из старых, но только линейно. Чем это ограничение плохо, видно в следующем разделе.

На экзамене калькулятор непрограммируемый, так что оформляй расчёт той же таблицей: нейрон, сумма, выход. Промежуточные числа держи с четырьмя знаками, округляй только ответ. Если на калькуляторе нет \(\tanh\), считай через экспоненту: \(\tanh a = \dfrac{e^{2a} - 1}{e^{2a} + 1}\).

Сто слоёв — одна прямая

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

В сети «убрать педаль» — значит взять linear activation function, линейную функцию активации \(g(a) = a\) (слайд 18 лекции 2; в конспекте формула (12) на стр. 62). Нейрон с ней выдаёт взвешенную сумму как есть. Производная у неё \(g'(a) = 1\), диапазон — вся числовая прямая. Проверим на формулах, что останется от сети.

  1. Возьмём сеть с одним скрытым слоем. Вынесем biases \(w_{j0}\) из матриц в отдельные векторы \(\vb{b}\): так короче, и так же пишет конспект. Скрытый слой считает суммы и применяет активацию:

    \[ \vb{a}^{(1)} = W^{(1)}\vb{x} + \vb{b}^{(1)} \] \[ \vb{h} = h\big(\vb{a}^{(1)}\big) \]
  2. Выходной слой берёт \(\vb{h}\) и считает свои суммы \(\vb{a}^{(2)}\). Ответ сети — это \(g\big(\vb{a}^{(2)}\big)\), но выходная активация \(g\) сейчас ни при чём: смотрим на то, что в неё попадает.

    \[ \vb{a}^{(2)} = W^{(2)}\vb{h} + \vb{b}^{(2)} \]
  3. Теперь условие: активация скрытого слоя линейная, \(h(a) = a\). Тогда \(\vb{h} = \vb{a}^{(1)}\), и первую строку можно подставить во вторую:

    \[ \vb{a}^{(2)} = W^{(2)}\big(W^{(1)}\vb{x} + \vb{b}^{(1)}\big) + \vb{b}^{(2)} \]
  4. Раскроем скобки. Всё, что умножается на \(\vb{x}\), собирается в одно слагаемое, остальное — в другое:

    \[ \begin{aligned} \vb{a}^{(2)} &= \underbrace{W^{(2)}W^{(1)}}_{W}\,\vb{x} \\ &\quad {} + \underbrace{W^{(2)}\vb{b}^{(1)} + \vb{b}^{(2)}}_{\vb{b}} \end{aligned} \]
  5. Произведение двух матриц — снова матрица, размером \(K \times I\). Сумма векторов — снова вектор. Получился один слой:

    \[ \vb{a}^{(2)} = W\vb{x} + \vb{b} \]

    Ответ сети равен \(g(W\vb{x} + \vb{b})\). Скрытый слой исчез: ту же функцию считает сеть вообще без него.

  6. Третий линейный слой добавит ещё один множитель слева, четвёртый — ещё один. Для \(n\) слоёв по индукции:

    \[ W = W^{(n)}\, W^{(n-1)} \cdots W^{(1)} . \]

    Сколько бы слоёв ни стояло, остаются одна матрица и один вектор.

x g W(1), b(1) W(2), b(2) скрытый слой выходной слой два слоя подряд сеть 2–2–1: 9 чисел

До: скрытый слой с linear-активацией

x g W, b W = W(2)W(1) один слой те же ответы: 3 числа

После: тот же ответ без скрытого слоя

Рис. 4. Схлопывание. Два линейных слоя подряд неотличимы от одного: матрицы перемножаются, biases сливаются в один вектор.

Проверим на числах из калькулятора. Там \(W^{(1)}\) без столбца biases — это строки \((1, -0.5)\) и \((0.5, 1)\), вектор \(\vb{b}^{(1)} = (0.5, -1)\); во втором слое веса \((2, -1)\) и \(b^{(2)} = 0.1\). Перемножаем:

\[ w_1 = 2 \cdot 1 - 1 \cdot 0.5 = 1.5 \] \[ w_2 = 2 \cdot (-0.5) - 1 \cdot 1 = -2 \] \[ b = 2 \cdot 0.5 - 1 \cdot (-1) + 0.1 = 2.1 \]

Здесь \(W = (w_1, w_2)\) — матрица из одной строки. Выходной нейрон в калькуляторе линейный, поэтому ответ сети совпадает с суммой \(a^{(2)}\). Значит, вся сеть с linear-активацией — это один нейрон \(g = 2.1 + 1.5\,x_1 - 2\,x_2\). При \(\vb{x} = (1, 2)\) он даёт \(-0.4\), как и калькулятор в задании 3.

Если у всех скрытых нейронов линейная активация, то при любых весах и любом числе слоёв сеть равносильна одному слою: её выход равен \(g(W\vb{x} + \vb{b})\). Граница решений такой сети — гиперплоскость, как у одного нейрона из урока 6.

Схлопывание слоёв

Сеть с одним входом \(x\), скрытыми слоями по три нейрона и линейным выходом; у каждой глубины свой набор случайных весов. Фиолетовая линия — выход сети, посчитанный честно, слой за слоем. Пунктир — одна формула \(W x + b\), полученная перемножением матриц весов. Главное, что здесь видно: без нелинейности между слоями глубина не добавляет ничего.

  1. Активация linear, два скрытых слоя, на графике прямая. Прежде чем двигать ползунок: появится ли излом при трёх, четырёх, пяти слоях?
    Что должно получиться

    Нет. Меняются наклон и сдвиг, а линия остаётся прямой и совпадает с пунктиром: расхождение 0.00. При этом чисел в сети становится 34, 46, 58, а в формуле их по-прежнему два.

  2. Нажимай «Новые веса». Попадётся ли набор весов, при котором линейная сеть изогнётся?
    Что должно получиться

    Не попадётся. Это не везение, а теорема выше: она верна при любых весах.

  3. Теперь переключи активацию на tanh, веса не трогай. Что станет с фиолетовой линией и что с пунктиром?
    Что должно получиться

    Пунктир на месте: он показывает, чем была бы сеть без активации. Фиолетовая линия изогнулась и ушла от него. Расхождение стало заметным числом, и одной формулой \(W x + b\) эту кривую не записать. Подвигай число слоёв: у каждой глубины свой рисунок изгибов.

  4. Выбери step — ступеньку перцептрона. Нелинейность появилась? А какой наклон у графика почти в каждой точке?
    Что должно получиться

    Нелинейность есть: график состоит из полок разной высоты, прямой тут нет. Но наклон на каждой полке равен нулю. Запомни эту картинку: через один раздел она объяснит, почему ступенька не годится для обучения.

Куда делись сто тысяч параметров

Теперь задачка из начала урока решается сама. В сети 784–128–64–10 без активаций три матрицы перемножаются в одну размером \(10 \times 784\), а три вектора biases сливаются в один из 10 чисел. Итого \(785 \cdot 10 = 7\,850\). Остальные 101 536 параметров — это разные способы записать одно и то же произведение. Нового они выразить не могут.

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

«Значит, линейная активация бесполезна». Бесполезна она в скрытых слоях. На выходе она нужна: в регрессии ответ должен уметь принимать любое вещественное значение (слайд 19 лекции 2, урок 11). И линейный выход не делает сеть линейной: скрытые слои остаются нелинейными, как в калькуляторе выше.

Что получится, если всё-таки обучить сеть из одних линейных слоёв?

Знакомые модели. Линейная сеть, обученная минимизировать сумму квадратов ошибок, — это линейная регрессия, записанная длинным способом (пока ни один скрытый слой не уже выходного: узкий слой ограничивает ранг матрицы \(W\)). А линейная сеть-«песочные часы», которая сжимает вход в узкий скрытый слой и восстанавливает его обратно, находит то же подпространство, что и PCA. Такая сеть называется autoencoder; конспект (стр. 62) лишь называет её среди мест, где встречается линейная активация.

Два требования к активации

Итак, между слоями нужна нелинейная функция. Конспект (стр. 60–61) называет три причины ставить активацию:

Но одной нелинейности мало, и здесь конспект ошибается в важном месте.

Вторую половину требования даёт слайд 17 лекции 2: «Activation functions must be differentiable to train it …». Обучение (уроки 13 и 14) двигает каждый вес туда, где ошибка \(E\) меньше, а для этого нужна производная ошибки по весу. По цепному правилу она распадается на три множителя:

\[ \pd{E}{w_i} = \pd{E}{y} \cdot \pd{y}{a} \cdot \pd{a}{w_i} \]
\(\pd{y}{a}\)
производная активации \(g'(a)\): насколько выход нейрона откликается на изменение суммы
\(\pd{a}{w_i}\)
равна входу \(x_i\), потому что \(a = \sum_i w_i x_i\)
\(\pd{E}{y}\)
насколько ошибка зависит от выхода нейрона; в конспекте ошибка обозначена \(L\)

У ступеньки средний множитель равен нулю всюду, кроме точки скачка, а в ней производной нет вовсе. Произведение обнуляется, и вес не получает никакой подсказки, куда ему двигаться. Это те самые плоские полки из задания 4 виджета «Схлопывание слоёв».

Конспект (стр. 61) делает отсюда общий вывод: если производная активации близка к нулю, градиент затухает и обучение останавливается; если множители слишком велики, обучение становится неустойчивым. Поэтому каждую функцию активации изучают вместе с её производной, как на слайде 18. В глубокой сети таких множителей много, по одному на слой, и к этому вернётся урок 24.

Два требования и три кандидата. Формулы и графики sigmoid и tanh — в уроке 10.
АктивацияНелинейная?ПроизводнаяЧто выйдет в скрытом слое
linear, \(g(a) = a\)нет\(g'(a) = 1\)учится, но сеть схлопывается в один слой
stepда0 почти всюдуможет представить XOR, но градиентом не обучается
sigmoid, tanhдаесть в каждой точкеи выразительность, и обучение

Активация скрытых нейронов должна быть нелинейной, чтобы слои не схлопнулись, и дифференцируемой, чтобы сеть можно было обучать градиентом.

«У linear производная равна 1, градиент течёт идеально — ставим её везде». Подпись к рис. 6 конспекта (стр. 63) действительно хвалит «perfect gradient flow». Градиент течёт, но учить нечего: модель остаётся линейной регрессией при любой глубине.

В формате экзамена

Define a Feed Forward Neural Network. Write the output \(g(\vb{x}|\vb{w})\) of a network with \(I\) inputs, one hidden layer of \(J\) neurons and a single output, and say what characterises this model.

Show model answer

A Feed Forward Neural Network is a network of neurons organised in layers (input, one or more hidden, output) in which information flows in one direction only, from the input to the output. There are no cycles: the output of a neuron depends only on the previous layers. Each hidden or output neuron computes a weighted sum of the outputs of the previous layer plus a bias and applies an activation function.

\[ g(\vb{x}|\vb{w}) = g\Big( \sum_{j=0}^{J} w_{1j}^{(2)}\, h_j \Big) \] \[ h_j = h_j\Big( \sum_{i=0}^{I} w_{ji}^{(1)}\, x_i \Big) \]

with \(x_0 = h_0 = 1\), so that \(w_{j0}^{(1)}\) and \(w_{10}^{(2)}\) are the biases. It is a non-linear model characterised by the number of neurons, the activation functions and the values of the weights: the first two are chosen by the designer, the weights are learned from data.

Проверяют три вещи. Слова no cycles или depends only on the previous layers. Формулу с правильным порядком индексов и суммой от нуля, то есть с bias. И фразу со слайда 17 лекции 2 про три характеристики модели. Ответ «a network with one hidden layer» определением не является: число слоёв в определение не входит.

A fully connected feed-forward network has 10 inputs, two hidden layers with 8 and 4 neurons, and 3 output neurons. Every hidden and output neuron has a bias. How many parameters does the network have?

Show model answer
\[ (10 + 1)\cdot 8 + (8 + 1)\cdot 4 + (4 + 1)\cdot 3 \] \[ = 88 + 36 + 15 = 139 \]

Each layer contributes (inputs of the layer + 1 bias) × (neurons of the layer). The input layer has no parameters.

Два типичных неверных ответа: 124 (забыты 15 biases) и 149 (десяти входам приписаны свои biases). Выписывай слагаемые по слоям: так ошибку видно сразу.

A network has one hidden layer whose neurons use the linear activation \(h(a) = a\). Show, including the biases, that it is equivalent to a model with no hidden layer. Which two properties must the activation function of hidden neurons have, and why is the step function of the perceptron not suitable?

Show model answer

With a linear hidden activation \(\vb{h} = W^{(1)}\vb{x} + \vb{b}^{(1)}\), so the input of the output layer is

\[ W^{(2)}\big(W^{(1)}\vb{x} + \vb{b}^{(1)}\big) + \vb{b}^{(2)} \] \[ = \big(W^{(2)}W^{(1)}\big)\vb{x} + \big(W^{(2)}\vb{b}^{(1)} + \vb{b}^{(2)}\big) \] \[ = W\vb{x} + \vb{b} . \]

This is a single affine map of the input, exactly what a network without hidden layers computes. By induction the same holds for any number of linear layers, so depth adds no expressive power and the decision boundary stays a hyperplane (XOR remains impossible).

The hidden activation must be (1) non-linear, otherwise the layers collapse as shown, and (2) differentiable, because the weights are trained with gradient-based methods and, by the chain rule, the gradient contains the derivative of the activation \(h'(a)\) as a factor. The step function is non-linear (a network of step units with one hidden layer can represent XOR), but its derivative is zero everywhere except at the jump, where it does not exist: the gradient carries no information.

В ответе должны быть выкладка с biases и слово affine или linear в выводе. Самая частая ошибка — написать, что ступенька «линейная» или что перцептрон не решал XOR «из-за отсутствия нелинейности». Раздели два требования явно: одно про то, что сеть может представить, второе про то, можно ли её обучить.

Consider a 2–2–1 feed-forward network. The hidden neurons use \(\tanh\), the output neuron is linear. The weight matrices, with the bias in the first column (index 0), are

\[ W^{(1)} = \begin{pmatrix} 0.2 & 0.8 & -0.5 \\ -0.3 & -0.4 & 0.3 \end{pmatrix} \] \[ W^{(2)} = \begin{pmatrix} 0.5 & 1 & 2 \end{pmatrix} \]

Compute the output \(g(\vb{x}|\vb{w})\) for \(\vb{x} = (1, -1)\). Give three decimals.

Show model answer
\[ a_1 = 0.2 + 0.8 \cdot 1 - 0.5 \cdot (-1) = 1.5 \] \[ a_2 = -0.3 - 0.4 \cdot 1 + 0.3 \cdot (-1) = -1.0 \] \[ h_1 = \tanh(1.5) = 0.9051 \] \[ h_2 = \tanh(-1) = -0.7616 \] \[ g = 0.5 + 0.9051 + 2 \cdot (-0.7616) \] \[ = -0.118 \]

Здесь проверяют чтение матрицы: строка — нейрон, нулевой столбец — bias. Типичные потери: минус на минус в \(a_1\), лишний \(\tanh\) на выходе (выход линейный) и раннее округление \(h\) до двух знаков, которое сдвигает ответ.

In the network of the previous question the hidden activation is replaced by the linear activation \(h(a) = a\). The network is then equivalent to a single linear neuron \(g = b + w_1 x_1 + w_2 x_2\). Compute \(w_2\).

Show model answer

Multiply the output weights by the columns of the hidden weights:

\[ w_2 = 1 \cdot (-0.5) + 2 \cdot 0.3 = 0.1 \]

In the same way \(w_1 = 1 \cdot 0.8 + 2 \cdot (-0.4) = 0\) and \(b = 0.5 + 1 \cdot 0.2 + 2 \cdot (-0.3) = 0.1\), so \(g = 0.1 + 0.1\,x_2\).

Это \(W = W^{(2)}W^{(1)}\) на числах. Заметь побочный результат: \(w_1 = 0\), линейная сеть вообще перестала замечать первый вход. Сверка: при \(\vb{x} = (1, -1)\) получается \(g = 0\), и прямой проход с \(h = a\) даёт то же: \(0.5 + 1.5 - 2 = 0\).

Which of the following statements about feed-forward neural networks are true? Select all that apply.

  • The input layer has no trainable parameters. Входной слой только раздаёт значения: ни весов, ни bias, ни активации.
  • A feed-forward network has exactly one hidden layer. Слово описывает направление сигнала, а не число слоёв.
  • In \(w_{ji}^{(l)}\) the index \(j\) refers to the neuron that receives the connection. Сначала «куда», потом «откуда».
  • Stacking hidden layers with linear activations lets the network represent non-linear functions. Произведение матриц — снова матрица: получится \(W\vb{x} + \vb{b}\).
  • A network of step units with one hidden layer can represent XOR, but cannot be trained by gradient descent. Ступенька нелинейна, но её производная равна нулю почти всюду.
  • If the output neuron is linear, the whole network is a linear model. Нелинейность живёт в скрытых слоях; линейный выход её не отменяет.
Show model answer

True: the first, the third and the fifth. "Feed-forward" only means that there are no cycles. Linear hidden layers collapse into one affine map. A linear output neuron is the standard choice for regression and leaves the hidden layers non-linear.

В вопросах «select all» каждое утверждение проверяй отдельно. Ловят на почти верных формулировках: второе и шестое утверждения звучат правдоподобно, пока не вспомнишь определение и доказательство схлопывания.

Проверь себя

Сеть 5–3–1, у каждого вычисляющего нейрона есть bias. Сколько в ней параметров?

  • 18 Это только веса: \(5 \cdot 3 + 3 \cdot 1\). Забыты четыре biases.
  • 22 \((5 + 1) \cdot 3 + (3 + 1) \cdot 1 = 18 + 4\).
  • 27 Здесь к 22 прибавлены пять «biases входов». Но входной слой ничего не считает, параметров у него нет.
  • 9 Это число нейронов. Параметры живут на связях, а не в кружках.

Что означает \(w_{23}^{(1)}\) в обозначениях слайдов?

  • Вес из входа \(x_2\) в скрытый нейрон 3 Индексы перепутаны: первым идёт получатель.
  • Вес из входа \(x_3\) в скрытый нейрон 2 В нейрон 2 из входа 3, слой весов первый: между входом и скрытым слоем.
  • Вес из скрытого нейрона 2 в выходной нейрон 3 Это был бы второй слой весов, с верхним индексом \((2)\).
  • Bias третьего нейрона У bias второй индекс равен нулю: \(w_{j0}\).

Какие утверждения о полносвязной feed-forward сети со слайда 17 лекции 2 верны?

  • Выход нейрона зависит только от предыдущих слоёв Это и есть отсутствие циклов.
  • В ней ровно один скрытый слой На самом слайде 17 лекции 2 их три. Число слоёв определением не ограничено.
  • У входного слоя нет ни весов, ни активации Он раздаёт входы, а первое вычисление происходит в первом скрытом слое.
  • Нейрон второго скрытого слоя получает исходные входы \(\vb{x}\) напрямую Он получает только \(h^{(1)}\), выходы первого скрытого слоя.
  • Число нейронов и функции активации выбирают до обучения, а значения весов подбирает обучение Три характеристики модели со слайда 17 лекции 2: первые две задаёт человек.

Проверка на рис. 2: закрой пальцем всё правее какого-нибудь слоя — левая часть сети по-прежнему считается.

В сети 2–50–50–1 все активации линейные. В ней 2 751 параметр. Сколькими числами можно записать ту же функцию?

  • 2 751, меньше нельзя Матрицы перемножаются, и большая часть чисел оказывается лишней.
  • 150 Это параметры одного только первого слоя, \((2 + 1) \cdot 50\). А схлопываются все слои сразу.
  • 3 \(g = b + w_1 x_1 + w_2 x_2\): матрица \(1 \times 2\) и один bias.
  • Зависит от значений весов Размер итоговой матрицы задают только число входов и число выходов.

В скрытом слое стоит ступенька перцептрона (step). Что верно?

  • Сеть не может представить XOR: ступенька линейна Ступенька нелинейна: её график не прямая. XOR из пороговых нейронов собран в уроке 8.
  • Сеть может представить XOR, но обучить её градиентным спуском нельзя Нелинейность есть, а производная равна нулю почти всюду: градиенту не за что зацепиться.
  • Сеть может и представить XOR, и обучиться градиентом В цепном правиле множитель \(g'(a)\) равен нулю, и вес не получает сигнала.
  • Сеть схлопнется в один слой, как с linear Схлопываются только линейные слои. В виджете график со step уходит от прямой.

В сети 2–2–1 два скрытых нейрона поменяли местами вместе со всеми их входящими и исходящими весами. Что станет с выходом сети?

  • Не изменится ни при каком входе Выход — сумма по скрытым нейронам, а сумма не зависит от порядка слагаемых. Нумерация нейронов в слое условна.
  • Изменится, ведь матрица \(W^{(1)}\) стала другой Матрица другая (строки переставлены), а функция та же. Разные наборы весов могут задавать одну и ту же сеть.
  • Поменяет знак Знаки весов никто не трогал, переставлены только слагаемые.
  • Зависит от функции активации Перестановка слагаемых не меняет сумму при любой активации.

Где нелинейная активация обязательна, чтобы сеть не была линейной моделью?

  • В выходном слое Выход может быть линейным, как в калькуляторе этого урока, и сеть всё равно нелинейна.
  • В скрытых слоях Именно она не даёт матрицам соседних слоёв перемножиться.
  • Во входном слое У входного слоя активации нет вообще.
  • Нигде, достаточно большой глубины Глубина без нелинейности схлопывается в \(W\vb{x} + \vb{b}\).

Унести с собой

Что посмотреть и почитать