avlasov (avlasov) wrote,
avlasov
avlasov

Category:

Небольшой туториал по секонд-ордер методам оптимизации - вводная

Решил написать что-то типа туториала по секонд-ордер методам.
Сразу хочу сказать, что в контексте нейросеток секонд-ордер методы ниочень перспективны, но все же перспективны.
Тому есть несколько причин:
1 секонд-ордер методы требуют гладких функций, которые не применимы (по крайней мере, напрямую) к популярным нонче ReLU и maxout, и которые и так вобщем-то хорошо тренятся
2 секонд-ордер как правило full batch методы, что вычислительно очень накладно и медленно в случае большого кол-ва тренировочных данных (сотни тысяч и больше)
3 секонд-ордер сложны для понимания, а простой рабоче-крестьянский SGD по видимому можно научить работать не хуже во многих случаях
Тем не менее, они все равно интересны, например, у меня не получается тренить sparse autoencoder's с помощью SGD, а вот L-BFGS работает, посему интересно их отмасштабировать на размеры данных типа мильена и проч. Собственно, поэтому я и решил наконец-то асилить Hessian-Free (разновидность секонд-ордер методов, не требующих вычисления Гессиана напрямую), ну и по этому поводу решил сваять небольшой туториал (в частности, чтобы самому разобраться, но и другим тоже интересно).

Мне лично интересно применить стохастические/онлайн HF методы (HF варианты CG и L-BFGS ) для трени автоэнкодеров. Например денойзинг автоэнкордеры - для них можно нагенерить кучу примеров, но как их тренить с помощью L-BFGS - не так очевидно. Тем не менее, (однослойные) автоэнкодеры - простые сетки, и их потренить с помощью секонд-ордер крайне интересно. Тем более что они часто работают в режиме близком к насыщению.

Но просто так сходу эти методы не изложить, нужна некоторая вводная. По-этому сперва полезно рассмотреть случае попроще, а именно случай одной переменной, выпуклые (гладкие) функции и, в детерминистическом контексте. Ну а потом уже оборзеть практические сложности и рассмотреть как их можно решать.
Случай одной переменной мне думаеццо вообще знать обязательно для всех кто занимается лёрнингом, тем более что там ничего сложного. Да и Ньютон-метод для выпуклых многомерных функции тоже.

Методически, я лично нашел крайне полезным и совсем несложным, наваять вручную код для одно- и дву-мерных примеров, ну может для трех- или 10-мерных. Точнее даже просто вручную проделать итерации, например, в Октаве/Матлабе.

Также буду давать сцылы на материалы других аффтаров (которые можно читать вместо моих записей :) - я их во многом пишу, чтобы самому разобраться).
Subscribe

  • StatMod и ML

    Рассмотрим, чем полезен StatMod в плане инженерии ML и почему "преподаваемый" ML тут проигрывает. Под "преподаваемым" ML я имею в…

  • Инженерность в DataScience

    Когда я пишу что инженерность в ML слабо развита, это не значит что ее нет вообще. Точнее будет сказать, что в DataScience (некая объемлющая…

  • Основные вопросы в инженерии МЛ

    По своему опыту я выделяю следующие основные вопросы/проблемы, которые возникают при решении практических МЛ задач. Какую задачу мы решаем? Ту ли…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 13 comments

  • StatMod и ML

    Рассмотрим, чем полезен StatMod в плане инженерии ML и почему "преподаваемый" ML тут проигрывает. Под "преподаваемым" ML я имею в…

  • Инженерность в DataScience

    Когда я пишу что инженерность в ML слабо развита, это не значит что ее нет вообще. Точнее будет сказать, что в DataScience (некая объемлющая…

  • Основные вопросы в инженерии МЛ

    По своему опыту я выделяю следующие основные вопросы/проблемы, которые возникают при решении практических МЛ задач. Какую задачу мы решаем? Ту ли…