Часть серии о разных типах слоев в нейронных сетях.

Многие люди воспринимают нейронные сети как черную магию. У всех нас иногда есть склонность думать, что за архитектурой нейронной сети нет никакого объяснения или логики. Мы хотели бы верить, что все, что мы можем сделать, это просто попробовать случайный выбор слоев, добавить к нему некоторую вычислительную мощность (графические процессоры / TPU) и просто лениво ждать.

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

Слой смещения

y = b //(Learn b)

Этот уровень в основном изучает константу. Он может определять смещение, смещение, порог или среднее. Если мы создадим нейронную сеть только из этого слоя и обучим ее на наборе данных, потеря среднеквадратичной ошибки (MSE) заставит этот слой сходиться к среднему или среднему значению выходных данных.

Например, если у нас есть следующий набор данных {2,2,3,3,4,4}, и мы заставляем нейронную сеть сжимать его до уникального значения b , наиболее логичное совпадение будет иметь место вокруг значения b = 3 (которое представляет собой среднее значение набора данных для максимального уменьшения потерь. Мы видим, что изучение константы - это своего рода обучение компонент значения постоянного тока электрической цепи, или смещение, или истинное значение для сравнения. Любое значение выше этого смещения будет положительным, любое значение ниже него будет отрицательным. Это похоже на переопределение того, с чего должно начинаться смещение 0.

Линейный слой

y = w*x //(Learn w)

Линейный слой без смещения способен изучать среднюю скорость корреляции между выходными и входными данными, например, если x и y положительно коррелированы = › w будет положительным, если x и y коррелируют отрицательно = ›w будет отрицательным. Если x и y полностью независимы, = ›w будет около 0.

Другой способ восприятия этого слоя: рассмотрим новую переменную A = y / x. и используйте «слой смещения» из предыдущего раздела, как мы уже говорили ранее, он будет изучать среднее или среднее значение A. (которое является средним выходом / входом, таким образом, среднее значение скорости, с которой выход изменяется относительно ко входу).

Линейный слой прямой связи

y = w*x + b //(Learn w, and b)

Слой прямой связи - это комбинация линейного слоя и смещения. Он может узнать смещение и коэффициент корреляции. С математической точки зрения, он представляет собой уравнение линии. По возможностям:

  • Этот слой может заменять как линейный слой, так и слой смещения.
  • Узнав, что w = 0 = ›, мы можем уменьшить этот уровень до уровня чистого смещения.
  • Узнав, что b = 0 = ›, мы можем уменьшить этот слой до чисто линейного слоя.
  • Линейный слой со смещением может представлять PCA (для уменьшения размерности). Поскольку PCA фактически просто линейно комбинирует входные данные вместе.
  • Слой с линейной прямой связью может обучаться масштабированию автоматически. И MinMaxScaler, и StandardScaler можно моделировать с помощью линейного слоя.

Изучая w = 1 / (max-min) и b = -min / (max-min), линейная прямая связь может имитировать MinMaxScaler.

Точно так же, изучая w = 1 / std и b = -avg / std, линейная прямая связь может имитировать StandardScaler.

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

Ограничения линейных слоев

  • Эти три типа линейного слоя могут изучать только линейные отношения. Они совершенно неспособны научиться какой-либо нелинейности (очевидно).
  • Сложить эти слои сразу один за другим совершенно бессмысленно и бесполезно тратить вычислительные ресурсы, вот почему:

Если мы рассмотрим два последовательных линейных слоя с прямой связью y₁ и y₂:

Мы можем переписать y₂ в следующей форме:

Мы можем сделать аналогичные рассуждения для любого количества последовательных линейных слоев. Один линейный слой может представлять любое количество последовательных линейных слоев. В основном, например, масштабирование и PCA могут быть объединены с одним единственным линейным слоем прямой связи на входе.

Укладка линейных слоев - пустая трата ресурсов! Их объединение не добавит вам никаких преимуществ.

Если вам понравилось читать, подпишитесь на нас: Facebook, Twitter, LinkedIn