TLDR Как создавать нейросети на основе классических вычислительных алгоритмов. Антон Осокин

Слоями в нейросети могут быть “обычные” алгоритмы, включая регрессию, динамическое программирование, SVM.

pavel trukhanov
some-tldrs-ru
1 min readNov 22, 2017

--

  • Берем сверточную сеть. Почти всегда в ней есть pooling слои. Как например, max pooling, который просто берет максимум значений из своей текущей области видимости.
  • Такой pooling можно рассматривать как тривиальный “классический” (в значении противопоставления нейросетевым) алгоритм. Единственное, что нам от него требуется, чтобы иметь возможность вставлять его как слой в сеть, чтобы мы могли “пройти через него в обратную сторону” на шаге обучения сети: при back-propogat’инге ошибки, нам нужно что-то типа градиента, чтобы понять куда эту ошибку дальше, за этот слой распространять.
  • Мы можем обобщить такой “классически-алгоритмический” слой и вставлять в нейросеть, что угодно (регрессию, динамическое программирование, SVM), только лишь бы мы могли “продифференцировать” это, в смысле технически вычислить куда передавать ошибку.

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

--

--