2015-08-09 6 views
0

Я ищу творческие способы ускорить время обучения для своих нейронных сетей, а также, возможно, уменьшить исчезающий градиент. Я рассматривал возможность разбить сеть на разные узлы, используя классификаторы на каждом узле в качестве «ускорителей» backprop, а затем укладывая узлы друг на друга с разреженными соединениями между каждым узлом (столько, сколько я могу уйти без сети Ethernet насыщение делает его бессмысленным). Если я это сделаю, я не уверен, что мне нужно поддерживать какое-то состояние между узлами и синхронно поездить на одном и том же примере (возможно, он побеждает цель ускорения процесса), ИЛИ я могу просто тренироваться с одними и теми же данными, но асинхронно. Я думаю, что могу, и весовое пространство все еще может обновляться и распространяться по моим разреженным связям между узлами, даже если они тренируются на разных примерах, но неопределенно. Может кто-то подтвердить это возможно или объяснить, почему нет?Обновление весового пространства SGD с асинхронным обучением

+0

Вам лучше задавать такие теоретические вопросы на https://stats.stackexchange.com или https://datascience.stackexchange.com –

+1

Не изобретайте велосипед. Наиболее вероятным результатом является то, что вы найдете очень субоптимальное решение. Десятки исследователей сделали это перед вами - используйте накопленные знания, вот что такое наука. http://www.cs.swarthmore.edu/~newhall/papers/pdcn08.pdf http://www.dcs.bbk.ac.uk/~gmagoulas/Distributed_computing_neural.pdf – lejlot

+0

Хм мне было бы не согласиться с тем, что это «колесо» существует. Ответ ниже указывает на близкий подход, но существует довольно широкий консенсус в отношении того, что эта проблема остается нерешенной из-за сетевого ограничения сети. – elligottmc

ответ

2

Возможно сделать то, что вы предлагаете, однако это громадное количество работы для одного человека. Самый последний пример, о котором я знаю, - это ракурс «DistBelief», разработанный большой исследовательской/инженерной группой в Google - см. Статью NIPS 2012 года по адресу http://static.googleusercontent.com/media/research.google.com/en//archive/large_deep_networks_nips2012.pdf.

Вкратце, подход DistBelief разделяет единицы в нейронной сети, так что каждый рабочий компьютер в кластере отвечает за некоторое непересекающееся подмножество общей архитектуры. В идеале разделы выбираются так, чтобы минимизировать требуемую межмашинную связь (т. Е. Минимальный разрез по сетевому графику).

Рабочие выполняют вычисления локально для своей части сети, а затем отправляют обновления другим работникам по мере необходимости для ссылок, пересекающих границы машины.

Обновление параметров осуществляется отдельным «сервером параметров». Рабочие отправляют градиентные вычисления на сервер параметров и периодически получают обновленные значения параметров с сервера.

Вся установка работает асинхронно и работает очень хорошо. Из-за асинхронности вычислений значения параметров для данного вычисления могут быть «устаревшими», но они обычно не слишком далеко. И ускорение довольно хорошее.

+0

Спасибо. Я знал об этом, но это отличное напоминание о том, что мне нужно углубиться в детали. Основываясь на обзорах, я прислушался к этому подходу, хотя они до сих пор не совсем решили узкое место в пространстве больших пространственных данных, хотя они, вероятно, близки друг к другу. , Точка взята на степень сложности, как хорошо! Существует много способов укрывать кошку, и трудовые усилия определенно определяют, какие подходы применяются на практике. Во всяком случае, неудача при этом более интересна, чем преуспеть в других вещах, над которыми я сейчас работаю! Еще раз спасибо. – elligottmc

Смежные вопросы