- PVSM.RU - https://www.pvsm.ru -
Напоследок, о второй части доклада Surya Ganguli — как теоретическое понимание процесса оптимизации может помочь на практике, а именно, какую роль играют седловые точки (первая часть вот тут [1], и она совершенно необязательна для чтения дальше).
Disclaimer: пост написан на основе отредактированных логов чата closedcircles.com [2], отсюда и стиль изложения, и уточняющие вопросы.
Чуть-чуть напомню, что такое седловые точки. В пространстве нелинейных функций есть точки с нулевым градиентом по всем координатам — именно к ним стремится градиентный спуск.
Если у точки градиент по всем координатам 0, то она может быть:
Итак, нам рассказывают хорошие новости для градиентного спуска в очень многомерном пространстве (каким является оптимизация весов глубокой нейросети).
Оба этих утверждения были известны и теоретически доказаны для случайных ландшафтов в больших измерениях.
В сотрудничестве с лабой Yoshua Bengio их получилось экспериментально продемонстрировать и для нейросетей (теоретически пока не осилили).
Это гистограмма значений cost function в локальных минимумах, которые получились многократными попытками тренировок из разных точек — чем меньше параметров, тем меньше разброс значений в локальных минимумах. Когда параметров много, разброс резко уменьшается и становится очень близким глобальному минимуму.
Главный вывод — что локальных минимумов бояться не нужно, основные проблемы — с седловыми точками. Раньше, когда мы плохо умели тренировать нейросети, мы думали, что это из-за того, что система скатывается в локальный минимум. Оказывается, нет, мы просто не могли выбраться из седловой точки.
И вот они придумали твик градиентного спуска, который хорошо избегает седловых точек. К сожалению, у них там используется гессиан.
Для необразованных как я, гессиан — это матрица значений попарных вторых производных в точке. Если думать о градиенте как о первой производной для функции от многих переменных, гессиан — вторая.
Александр Власов [3] вот написал [4] хороший [5] туториал [6] про так называемые second order optimizations, к которым относится работа с гессианом.
Разумеется считать гессиан — страшно непрактично для современных нейросетей, поэтому я не знаю как их решение на практике применять.
Второй момент — это они придумали некую теоретически кошерную инициализацию, которая в случае просто линейных систем решает проблему vanishing gradients и дает тренировать сколь угодно глубокую линейную систему за одинаковое количество градиентных шагов.
И мол утверждается, что и для нелинейных систем это тоже помогает. Я, правда, пока не видел упоминаний в литературе успешного использования этой техники.
Полная статья — здесь [7].
В интересное время живем.
Автор: sim0nsays
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/mashinnoe-obuchenie/119870
Ссылки в тексте:
[1] тут: https://habrahabr.ru/post/282826/
[2] closedcircles.com: http://closedcircles.com/?invite=c2db8785a30164b0a2fb385490c89a8d64eec974
[3] Александр Власов: http://avlasov.livejournal.com/
[4] написал: http://avlasov.livejournal.com/156775.html
[5] хороший: http://avlasov.livejournal.com/157407.html
[6] туториал: http://avlasov.livejournal.com/157543.html
[7] здесь: http://papers.nips.cc/paper/5486-identifying-and-attacking-the-saddle-point-problem-in-high-dimensional-non-convex-optimization.pdf
[8] Источник: https://habrahabr.ru/post/282900/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.