Pull to refresh

Comments 13

Выглядит как линейная регрессия по странной схеме. Традиционное понимание нейронные сети подразумевает, что сигнал внутри нейронной сети это всегда некий признак, наличие свойства — есть ли в данном месте граница\нос\дерево. Уровень сигнала вторичен, это только выраженность свойства, его точное значение не важно. Трактовать сигналы как какие-то точные величины идея имхо сомнительная, механизм на такое не рассчитан.
Современное инфопространство, кажется, уже перешло в пост-нейронную эпоху, когда любая тренируемая набором данных мат-модель называется нейросетью.
Иногда мне кажется, что здесь работает принцип навроде duck-typing — если есть все видимые признаки нейро-сети, назовём «это» именно нейросетью. Отмечу, что в статье DeepMind речь идёт всё-таки о нейронных сетях, просто NALU — это полезная их часть, но не вся сеть.
Позвольте с вами не согласиться. С одной стороны, если брать элементарный NAC, который поддерживает сложение и вычитание — конечно, это линейная регрессия, да ещё и в обрезанном виде. С другой стороны, если рассматривать NAC (NALU) как слой, который можно применять в требуемом месте (что и происходит в статье DeepMind, раздел 4, Эксперименты), то получится именно изменение классической нейронной сети, ведущее к конкретным результатам. Например, слои до NAC (NALU) могут определять цифру, изображённую на картинке, а наш слой уже будет выполнять требуемые действия с выходными значениями. Скажем, нейронная сеть может распознать символы «3 + 5», но сказать, что результат равен «8» сама по себе она уже не сможет.
Так же не стоит забывать, что регрессия (как мне помнится) уже не работает для подбора выражений вида x_1 ^ (x_2 + x_3), что вполне по силам разобранному в посте слою.
Если так, то здорово, но как бы посмотреть на практические результаты, что на входе NALU (в составе комплекса?), что на выходе, а то остаётся подозрение, что вся вторая часть это теория. Интересно также, как реагирует на шум, как отвечает на варьирование отдельных весов.
Судя по всему, статья от DeepMind ещё в стадии доработки, так что их код вряд ли доступен. Можно попробовать повторить их подход. Если у меня получится, то сделаю tutorial.
Это серьёзный подход! Идея в принципе многообещающая, сейчас у неросетей с распознаванием образов всё куда лучше чем с рассчётами и логикой, «мостик» между этими классами задач был бы очень кстати. Однако, если NALU работает, рискну предположить, что сигналы внутри от слоя к слою эволюционируют от непрерывные величин к дискретным алгебраическим символам.
Если не ошибаюсь, то граф вычислений для архитектуры NAC не совсем соответствует формуле. Если взять граф за основу, то тогда:
Y = exp(W*log(|x| + e))

Конечно, и в коде экспонента применяется к результату. Поправил скобки. Спасибо
Как мне кажется, ответ содержится в статье:

> Такие ограничения не позволяют аккумулятору изменять диапазон значений входных данных, и он остаётся постоянным на всех слоях сети, независимо от их количества и связей.

Из статьи 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.

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

Наверное я чего-то не понимаю, но какую вещь? Что может потребовать ограничения этих весов? Изменение диапазона — простое масштабирование, и я не верю, что эта «проблема» требует таких сложностей в решении.
Ну, если вы не понимаете, какую проблему решает этот слой, можете попробовать задать тот же вопрос авторам оригинальной статьи. Видимо, я неверно подбираю слова, раз вам всё ещё не ясен смысл.
Sign up to leave a comment.

Articles