Pull to refresh

Comments 8

Немного глупый вопрос, если HF оптимизация такая хорошая, почему до сих пор используем градиентный спуск, я так понимаю вы все-таки сравнивали с SGD а не «чистым» GD?
Отвечу сначала на второй вопрос: для задачи с XOR это и есть как вы выразились «чистый» GD так как подавался весь датасет сразу (все 4 примера), для задачи с MNIST использовался mini batch GD, а не SGD, потому-что подавалась некоторая часть (mini batch) примеров, а не каждый по отдельности как это делается в случае SGD.
Да HF довольно хороший метод оптимизации, но есть некоторые особенности. Он довольно сложный в реализации и это его основная проблема. Из-за своей сложности требуется очень аккуратно за всем следить, иначе может возникнуть численная нестабильность. Плюс на данный момент особенность TensorFlow не позволяет реализовать его, так сказать, на нативном уровне для всех типов сетей. До не давнего времени на GitHub висел issue на его имплементацию, сейчас она закрыта, но люди просят возобновить.
Помимо этого существуют варианты HF, сделанные с помощью Theano или просто numpy + pycuda и они довольно хорошо работают. В общем вопрос стабильной и аккуратной реализации данного метода на TensorFlow для работы «из коробки» с нативной поддержкой различных типов сетей остается открытым.
То есть в общем случае он не такой стабильный, я правильно понимаю? В Theano он включен или тоже на уровне доработок пользователей (я не очень хорошо знаком с Theano)?
В Theano и GD не включен как это сделано в TF. Особенность Theano в том, что там весь граф вычислений надо прописывать самому, что делает ее более гибкой для исследовательских целей, но и вероятность ошибки конечно намного больше. Там нет таких классов как AdamOptimizer, GradientDescentOptimizer и тд. TF же больше подходит для использования в проде (много методов работают из коробки и не надо заморачиваться над вопросом их реализации).

Ну вот вам универсальный HF для theano…
Блэкбоксед обернутый, т.е. "просто" добавь воды определить и пробросить cost-функцию.
В работе видел, не то что бы в восторге (но я предвзят ибо и theano не люблю), но достаточно интересно.
Ну а на уровне просто "включить" оно работать никогда не будет, имхо...

Ну если уж на то пошло в TensorFlow все встроенные методы оптимизации тоже блэкбоксы, для обучения сети с использованием RMSProp или adaptive moment estimation (Adam) даже не требуется понимания принципа их работы. В Theano на уровне просто включить, в принципе, ни один метод оптимизации работать не будет, просто потому, что их там нет. Надо или писать самому или искать чужую реализацию и разбираться с ней.
Вообще-то HFO это, в теории, способ избежать vanishing-проблемы градиента, возникающие как раз при обратном распространении (backpropagation). Насколько я вижу, в статье речь идет про прямое распространение.

Для глубокого обучения с SGD удается избежать этой проблемы изменяя настройки обучения и/или «глубоким» тюнингом архитектуры, так что…
В конце концов всё сводится тупо к сравнению между сложностью построения конкретных моделей сети (и выбора стратегий), как-то предварительный тюнинг и т.д. и собственно HFO.
Пока не (или не совсем) в пользу последней, и хотя HFO еще не достаточно хорошо изучена, уже есть куча исследований на эту тему, где в некоторых редких случаях она лучше, в остальных же — сильно нет.
Вроде бы HFO пока наиболее хорошо себя показала на рекуррентных, типа elman-based без LSTM и подобным им.
Хотя я где-то (вроде даже на github) видел нормально работающую DQN с LSTM слоями использующую HFO, но…

SGD по-прежнему впереди планеты всей, хотя и не без недостатков. До тех пор, пока кто-то не найдет лучший, не градиентный, способ. HFO это в общем-то просто еще одно предложение из многих, и пока что еще далеко не панацея, и возможно ошибаюсь, еще долго не будет считаеться ею.
Vanishing gradients это все таки немного другая проблема. HFO это скорее другой взгляд на поверхность ошибки, собственно как и все методы второго порядка.
А в целом, да, HFO это экспериментальный метод, который позволяет использовать плюсы метода Ньютона и до сих пор требует тщательного исследования.
Естественно, так как GD довольно хорошо изученный и простой метод, в промышленных масштабах он и его модификации остаются в приоритете.
Sign up to leave a comment.

Articles

Change theme settings