Improving the Neural GPU Architecture for Algorithm Learning
Neural GPU (2016) был ответом пейперу Neural Turing Machine (NTM). Проблема NTM в сложной архитектуре которая медленно сходится или вообще не сходится из за высокой нестабильности.
Авторы пытались научить сетку простым алгоритмам типо умножения и сложения бинарных чисел. Сеть училась только на числах длинной 20 бит и смогла в тесте правильно считать числа длинной 2000 бит. Поэтому долгое время NeuralGPU был state of the art. Сама архитектура это небольшая модификация GRU только с convolutional gated recurrent unit и парой хаков.
В новой статье Improving the Neural GPU Architecture for Algorithm Learning авторы смогли улучшить текущий алгоритм поменяв функции активации и предложив еще больше хаков в архитектуре. Результаты получились на удивление хорошие. Поэтому это один из не многих архитектурных пейперов этого года который стоит прочитать.
Towards Neural Theorem Proving at Scale
В прошлом году пейпер End-to-End Differentiable Proving нашумел в комьюнити кто занимается Knowledge Base (KB) reasoning. KB - это большие графы знаний, например там есть такие связи - [John grandFatherOf Bart]. Классические алгоритмы основанные на дискретной логике могут справляться с небольшими KB графами. Если же граф огромный (например граф знаний всей википедии) то нейроные сети дают профит в том что мы можем эмбедить ребра и ноды графов обучая link prediction модель. Понятно сеть обученная таким образом сможет улавливать только локальную информацию. Например если ноды Lisa и Magie похожи то значит у них много общего (один город проживания, общие родители итд). Так же связи типо grandFatherOf и grandPaOf будут иметь почти одинаковые embeddings. Но нейронные модели плохо справляются с более глубокими паттернами. Например если John fatherOf Bart и Bart fatherOf Adam то простые нейронные модели не смогут уловить связь John grandFatherOf Adam. Понятно классические symbolic алгоритмы основанные на proof trees легко находят такие связи. Например алгоритм реализованный в языке Пролог - backward
chaining algorithm. В статье End-to-End Differentiable Proving авторы решили сделать дифференцируемую версию этого алгоритма c помощью continuous relaxation дискретных операторов. Проблема этого подхода была в том что и во время трейна и во время inference приходилось строить все возможные proof trees которые росли экспоненциально в больших KB. И вот авторы Towards Neural Theorem Proving at Scale решили эту проблему. При построении proof tree можно сузить поиск нужны фактов в KB используя дифференцируемый k-nearest neighbour подход. Это позволило использовать neural prooving для реальных KB как WordNet. Я очень люблю алгоритмы использующие дифференцируемые kNN поэтому сразу сел за имплементацию этого пейпера. Но пока там еще много проблем, так как обучается ооооочень нестабильно.
Neural GPU (2016) был ответом пейперу Neural Turing Machine (NTM). Проблема NTM в сложной архитектуре которая медленно сходится или вообще не сходится из за высокой нестабильности.
Авторы пытались научить сетку простым алгоритмам типо умножения и сложения бинарных чисел. Сеть училась только на числах длинной 20 бит и смогла в тесте правильно считать числа длинной 2000 бит. Поэтому долгое время NeuralGPU был state of the art. Сама архитектура это небольшая модификация GRU только с convolutional gated recurrent unit и парой хаков.
В новой статье Improving the Neural GPU Architecture for Algorithm Learning авторы смогли улучшить текущий алгоритм поменяв функции активации и предложив еще больше хаков в архитектуре. Результаты получились на удивление хорошие. Поэтому это один из не многих архитектурных пейперов этого года который стоит прочитать.
Towards Neural Theorem Proving at Scale
В прошлом году пейпер End-to-End Differentiable Proving нашумел в комьюнити кто занимается Knowledge Base (KB) reasoning. KB - это большие графы знаний, например там есть такие связи - [John grandFatherOf Bart]. Классические алгоритмы основанные на дискретной логике могут справляться с небольшими KB графами. Если же граф огромный (например граф знаний всей википедии) то нейроные сети дают профит в том что мы можем эмбедить ребра и ноды графов обучая link prediction модель. Понятно сеть обученная таким образом сможет улавливать только локальную информацию. Например если ноды Lisa и Magie похожи то значит у них много общего (один город проживания, общие родители итд). Так же связи типо grandFatherOf и grandPaOf будут иметь почти одинаковые embeddings. Но нейронные модели плохо справляются с более глубокими паттернами. Например если John fatherOf Bart и Bart fatherOf Adam то простые нейронные модели не смогут уловить связь John grandFatherOf Adam. Понятно классические symbolic алгоритмы основанные на proof trees легко находят такие связи. Например алгоритм реализованный в языке Пролог - backward
chaining algorithm. В статье End-to-End Differentiable Proving авторы решили сделать дифференцируемую версию этого алгоритма c помощью continuous relaxation дискретных операторов. Проблема этого подхода была в том что и во время трейна и во время inference приходилось строить все возможные proof trees которые росли экспоненциально в больших KB. И вот авторы Towards Neural Theorem Proving at Scale решили эту проблему. При построении proof tree можно сузить поиск нужны фактов в KB используя дифференцируемый k-nearest neighbour подход. Это позволило использовать neural prooving для реальных KB как WordNet. Я очень люблю алгоритмы использующие дифференцируемые kNN поэтому сразу сел за имплементацию этого пейпера. Но пока там еще много проблем, так как обучается ооооочень нестабильно.