2. От картинки к формуле

2. От картинки к формуле#

Добродум хочет понять, насколько сильно будет заполнена кофейня в следующие выходные. Для этого он обучил нейросетку. На вход она принимает три фактора: температуру за окном, \(x_1\), факт наличия на Тверской митинга, \(x_2\) и пол баристы на смене, \(x_3\) (где мужчина - 0, а женщина - 1). В качестве функции активации Добродум использует ReLU.

../_images/img02_dobronet.png

а) В эти выходные за барной стойкой стоит Агнесса. Митинга не предвидится, температура будет в районе \(20\) градусов. Спрогнозируйте, сколько человек придёт в кофейню к Добродуму.

Решение

Будем постепенно идти по сетке и делать вычисления.

dobronet_forward

Подаём все значения в первый нейрон, получаем

\[ h_1 = \max(0, 5 \cdot 20 + (-60) \cdot 0 + 0.5 \cdot 1) = \max(0, 100.5) = 100.5. \]

Ровно то же самое делаем со вторым нейроном

\[ h_2 = \max(0, -2 \cdot 20 + (-80) \cdot 0 + 2 \cdot 1) = \max(0, -38) = 0. \]

Дальше результат скрытых нейронов идёт во второй слой

\[ \hat y = \max(0, 1 \cdot 100.5 + 0.2 \cdot 0 + 4 \cdot 1) = 104.5. \]

Это и есть итоговый прогноз.

б) На самом деле, каждая нейросетка — это просто-напросто какая-то нелинейная функция. Запишите нейросеть Добродума в виде функции.

Решение

Теперь по мотивам наших вычислений запишем нейронку в виде функции. Начинать будем с конца

\[ \hat y = f(1 \cdot h_1 + 0.2 \cdot h_2 + 4 \cdot 1). \]

Подставляем вместо \(h_1\) и \(h_2\) вычисления, которые происходят на первом слое нейронки

\[\begin{multline*} \hat y = f(f(5 x_1 - 60 x_2 + 0.5 x_3) + 0.2 f(-2 x_1 - 80 x_2 + 2 x_3) + 4) = \\ = \max(0, \max(0, 5 x_1 -60 x_2 + 0.5 x_3) + 0.2 \max(0, -2 x_1 -80 x_2 + 2 x_3) + 4). \end{multline*}\]

Обучение нейронной сетки эквивалентно обучению такой нелинейной функции.