Как проводить обратное распространение ошибки в отсоединенных нейронных интерфейсах?
Краткое содержание
Я пытаюсь создать полностью размытую (decoupled) feed-forward нейронную сеть, используя размытые нейронные интерфейсы (DNIs), как описано в статье «Размытые нейронные интерфейсы с использованием синтетических градиентов» (2017) Макса Джадерег и др. Как в статье, DNI способен производить синтетический градиент ошибки, отражающий ошибку относительно выходного значения: $$ \frac{\partial L}{\partial h_{i}} $$ Я могу затем использовать это для обновления параметров текущего слоя путем умножения их на параметры, чтобы получить функцию потерь относительно параметров: $$ \frac{\partial L}{\partial \theta}=\frac{\partial L}{\partial h_{i}} * \frac{\partial h_{i}}{\partial \theta} $$ В статье модель слоя затем обновляется на основе того, что следующий слой передает истинную ошибку назад. Мой вопрос заключается в том, учитывая, что я могу вычислить ошибку относительно текущего выходного значения, как мне использовать это для вычисления функции потерь относительно выходного значения предыдущего слоя?
Полный текст
Задано 9 лет, 1 месяц назад Изменено сегодня Просмотрено 243 раза
Задано 9 лет, 1 месяц назад
3 $\begingroup$ Я пытаюсь создать полностью декомпозированную нейронную сеть прямого распространения, используя декомпозированные нейронные интерфейсы (DNIs), как описано в статье Decoupled Neural Interfaces using Synthetic Gradients (2017) Макса Жадерберга и др. Как и в статье, DNI способен генерировать синтетический градиент ошибки, который отражает ошибку относительно выхода: $$ \frac{\partial L}{\partial h_{i}} $$ Затем я могу использовать это для обновления параметров текущего слоя, умножая на параметры, чтобы получить потерю относительно параметров: $$ \frac{\partial L}{\partial \theta}=\frac{\partial L}{\partial h_{i}} * \frac{\partial h_{i}}{\partial \theta} $$ В статье модель слоя затем обновляется на основе того, что следующий слой отправляет истинную ошибку обратно. Мой вопрос заключается в следующем: учитывая, что я могу вычислить ошибку относительно текущего выхода, как я могу использовать это для вычисления потерь относительно выхода предыдущего слоя? neural-networks backpropagation papers loss Поделиться Улучшить этот вопрос Следить отредактировано 29 сентября 2020 г. в 12:00 nbro 43,2 тыс. 14 14 золотых значков 121 121 серебряных значков 222 222 бронзовых значков задано 30 декабря 2016 г. в 01:42 Brian Sharp 41 1 1 бронзовый значок $\endgroup$ 0 Добавить комментарий | 1 Ответ 1 Сортировка: По умолчанию: Наивысший балл Дата изменения (сначала новые) Дата создания (сначала старые) 0 $\begingroup$ Я не шучу, когда говорю, что я только сегодня утром начал работать с декомпозированными сетями. Но суть вопроса сформулирована ужасно большинством компьютерных ученых. Принцип работы декомпозированного нейронного интерфейса заключается не в отправке ошибки обратно, а в ее хранении в форме усвоенной ошибки внутри отдельной сети. Таким образом, у нас есть не только узлы и веса, но и Synths. Synths модифицируют таблицы весов, используя прошлую ошибку. Поэтому, вместо того чтобы передавать ошибку обратно, как предполагает статья, она фактически передается вперед в виде "эй, не делай этого". Что действительно интересно, так это то, что вам никогда не нужно менять свое мышление, чтобы обратить сеть для обратного распространения ошибки, если вы используете декомпозированную сеть. Удивительно, но кодировать эту декомпозированную сеть на самом деле проще, чем писать "простую" ANN, и еще лучше, она функционирует очень похоже на LSTM-сеть без всего этого программистского жаргона. Вы можете увидеть для себя две разные формы одной и той же сети здесь. Код из демонстрации в репозитории взят отсюда: https://towardsdatascience.com/only-numpy-implementing-and-comparing-combination-of-google-brains-decoupled-neural-interfaces-6712e758c1af это был фундаментальный ресурс для меня, и он может быть полезен для вас. Он также помогает вам с потерями или стоимостью. Поделиться Улучшить этот ответ Следить ответил 3 октября 2018 г. в 04:15 Eric Schwarz 41 2 2 бронзовых значка $\endgroup$ 1 $\begingroup$ Извините за грязный код, кстати. $\endgroup$ Eric Schwarz – Eric Schwarz 2018-10-03 04:16:49 +00:00 Прокомментировано 3 октября 2018 г. в 04:16 Добавить комментарий | Вы должны войти, чтобы ответить на этот вопрос. Начать задавать вопросы, чтобы получать ответы Найти ответ на свой вопрос, задавая его. Изучить связанные вопросы neural-networks backpropagation papers loss Посмотреть похожие вопросы с этими тегами.