Изучение архитектуры DNC действительно показывает много общего с LSTM . Рассмотрите диаграмму в статье DeepMind, с которой вы связались:
Сравните это с архитектурой LSTM (спасибо Ananth на SlideShare):
Здесь есть несколько близких аналогов:
- Как и в случае с LSTM, DNC выполнит некоторое преобразование из входных данных в векторы состояний фиксированного размера ( h и c в LSTM).
- Аналогично, DNC выполнит некоторое преобразование из этих векторов состояния фиксированного размера в потенциально произвольно растянутый выходной сигнал (в LSTM мы неоднократно выбираем из нашей модели, пока мы не будем удовлетворены / модель покажет, что мы сделали)
- Забывают и входные ворота LSTM представляют записи операции в DNC ( «забывание», по существу , только обнуление или частично обнуления памяти)
- Выход ворот LSTM представляет чтения операции в DNC
Тем не менее, DNC определенно больше, чем LSTM. Наиболее очевидно, что он использует большее состояние, которое дискретизируется (адресуется) на куски; это позволяет ему сделать ворота забытия LSTM более двоичными. Под этим я подразумеваю, что состояние не обязательно разрушается некоторой долей на каждом временном шаге, тогда как в LSTM (с функцией активации сигмоида) оно обязательно есть. Это может уменьшить проблему катастрофического забывания, о котором вы упомянули, и, следовательно, лучше масштабироваться.
DNC также является новым в связях, которые он использует между памятью. Тем не менее, это может быть более незначительным улучшением LSTM, чем кажется, если мы заново представим LSTM с полными нейронными сетями для каждого шлюза, а не просто с одним уровнем с функцией активации (назовите это супер-LSTM); в этом случае мы можем фактически изучить любые отношения между двумя слотами в памяти с достаточно мощной сетью. Хотя я не знаю специфику ссылок, которые предлагает DeepMind, в статье они подразумевают, что они изучают все только путем обратного распространения градиентов, как обычная нейронная сеть. Поэтому любые отношения, которые они кодируют в своих ссылках, теоретически должны быть доступны для нейронной сети, и поэтому достаточно мощный «супер-LSTM» должен уметь их захватывать.
Несмотря на все сказанное , в глубоком обучении часто бывает так, что две модели с одинаковой теоретической способностью к выразительности на практике сильно отличаются друг от друга. Например, предположим, что рекуррентная сеть может быть представлена как огромная сеть прямой связи, если мы просто развернем ее. Точно так же сверточная сеть не лучше, чем ванильная нейронная сеть, потому что у нее есть некоторая дополнительная способность к выразительности; на самом деле, именно ограничения, налагаемые на его вес, делают его более эффективным. Таким образом, сравнение выразительности двух моделей не обязательно является справедливым сравнением их эффективности на практике или точным прогнозом того, насколько хорошо они будут масштабироваться.
Один вопрос, который у меня есть о DNC, - что происходит, когда ему не хватает памяти. Когда на классическом компьютере заканчивается память и запрашивается другой блок памяти, программы начинают зависать (в лучшем случае). Мне любопытно посмотреть, как DeepMind планирует решить эту проблему. Я предполагаю, что это будет зависеть от некоторой интеллектуальной каннибализации памяти, используемой в настоящее время. В некотором смысле компьютеры в настоящее время делают это, когда ОС запрашивает, чтобы приложения освободили некритическую память, если давление памяти достигает определенного порога.