Ну, если вы не понимаете, какую проблему решает этот слой, можете попробовать задать тот же вопрос авторам оригинальной статьи. Видимо, я неверно подбираю слова, раз вам всё ещё не ясен смысл.
> Такие ограничения не позволяют аккумулятору изменять диапазон значений входных данных, и он остаётся постоянным на всех слоях сети, независимо от их количества и связей.
Из статьи DeepMind:
> This prevents the layer from changing the scale of the representations of the numbers when mapping the input to the output, meaning that they are consistent throughout the model, no matter how many operations are chained together.
Суть данного ограничения в том, чтобы сосредоточиться на операциях между данными, а не подбирать коэффициенты. Грубо говоря, делать одну вещь, но делать её хорошо.
Судя по всему, статья от DeepMind ещё в стадии доработки, так что их код вряд ли доступен. Можно попробовать повторить их подход. Если у меня получится, то сделаю tutorial.
Иногда мне кажется, что здесь работает принцип навроде duck-typing — если есть все видимые признаки нейро-сети, назовём «это» именно нейросетью. Отмечу, что в статье DeepMind речь идёт всё-таки о нейронных сетях, просто NALU — это полезная их часть, но не вся сеть.
Позвольте с вами не согласиться. С одной стороны, если брать элементарный NAC, который поддерживает сложение и вычитание — конечно, это линейная регрессия, да ещё и в обрезанном виде. С другой стороны, если рассматривать NAC (NALU) как слой, который можно применять в требуемом месте (что и происходит в статье DeepMind, раздел 4, Эксперименты), то получится именно изменение классической нейронной сети, ведущее к конкретным результатам. Например, слои до NAC (NALU) могут определять цифру, изображённую на картинке, а наш слой уже будет выполнять требуемые действия с выходными значениями. Скажем, нейронная сеть может распознать символы «3 + 5», но сказать, что результат равен «8» сама по себе она уже не сможет.
Так же не стоит забывать, что регрессия (как мне помнится) уже не работает для подбора выражений вида x_1 ^ (x_2 + x_3), что вполне по силам разобранному в посте слою.
Однако, я в этом году совсем в маразме старческом. Сначала просто забыл. Потом отметился в комментариях и снова забыл. Но когда такая красота приходит, забыть уже невозможно. Спасибо, Дедушка!
PS: всем, чей адрес получил, всем отправил, трекер скину.
> Такие ограничения не позволяют аккумулятору изменять диапазон значений входных данных, и он остаётся постоянным на всех слоях сети, независимо от их количества и связей.
Из статьи DeepMind:
> This prevents the layer from changing the scale of the representations of the numbers when mapping the input to the output, meaning that they are consistent throughout the model, no matter how many operations are chained together.
Суть данного ограничения в том, чтобы сосредоточиться на операциях между данными, а не подбирать коэффициенты. Грубо говоря, делать одну вещь, но делать её хорошо.
Так же не стоит забывать, что регрессия (как мне помнится) уже не работает для подбора выражений вида
x_1 ^ (x_2 + x_3)
, что вполне по силам разобранному в посте слою.Как-то у вас получилось введение в введение. Маловато для статьи, прямо как на известной картинке:
Тут фантазия нужна. :)
PS: всем, чей адрес получил, всем отправил, трекер скину.
А ещё можно попробовать .Net Native или пре-компиляцию библиотек в C#.