Нотатки з MBC Symposium: ще про седловых точках

Наостанок, про другій частині доповіді Surya Ganguli — як теоретичне розуміння процесу оптимізації може допомогти на практиці, а саме, яку роль відіграють сідлової точки (перша частина от тут, і вона абсолютно необов'язкова для читання далі).
image
Disclaimer: пост написаний на основі відредагованих лог чату closedcircles.com, звідси і стиль викладу, і уточнюючі питання.
Трохи нагадаю, що таке сідлової точки. У просторі нелінійних функцій є точки з нульовим градієнтом по всіх координатах — саме до них прагне градієнтний спуск.
Якщо у точки градієнт за всіма координатами 0, то вона може бути:
image
  • Локальним мінімумом, якщо за всіма напрямками друга похідна позитивна.
  • Локальним максимумом, якщо за всіма напрямами друга похідна негативна.
  • Сідлової точки, якщо з певних напрямків друга похідна додатна, а по іншим негативна.
Отже, нам розповідають гарні новини для градієнтного спуску в дуже багатовимірному просторі (яким є оптимізація ваг глибокої нейромережі).
  • По-перше, переважна більшість точок з нульовим градієнтом — це сідлової точки, а не мінімуми.
    Це можна легко зрозуміти інтуїтивно — щоб точка з нульовим градієнтом була локальним мінімумом або максимумом, друга похідна повинна бути одного знаку за всіма напрямами, але чим більше вимірів, тим більше шанс, що хоч по якомусь напрямку знак буде іншим.
    І тому більшість складних точок, які зустрінуться — будуть седловыми.
  • По-друге, із зростанням кількості параметрів виявляється, що всі локальні мінімуми досить близько один до одного і до глобального мінімуму.
Обидва ці твердження були відомі і теоретично доведені для випадкових ландшафтів у великих вимірах.
У співпраці з лабою Yoshua Bengio їх вийшло експериментально продемонструвати і для нейромереж (теоретично поки не подужали).
image
Це гістограма значень cost function в локальних мінімумах, які вийшли багаторазовими спробами тренувань з різних точок — чим менше параметрів, тим менше розкид значень локальних мінімумах. Коли параметрів багато, розкид різко зменшується і стає дуже близьким глобального мінімуму.
Головний висновок — що локальних мінімумів боятися не потрібно, основні проблеми — з седловыми точками. Раніше, коли ми погано вміли тренувати нейромережі, ми думали, що це з-за того, що система скочується в локальний мінімум. Виявляється, ні, ми просто не могли вибратися з сідлової точки.
І ось вони придумали твік градієнтного спуску, який добре уникає седловых точок. На жаль, у них там використовується гессе.
Для неосвічених як я, гессе — це матриця значень попарних других похідних в точці. Якщо думати про градієнті як про першої похідної функції від багатьох змінних, гессе — друга.
Олександр Власов ось написав хороший туторіал про так звані second order optimizations, до яких належить робота з гессианом.
Зрозуміло вважати гессе — страшно непрактично для сучасних нейромереж, тому я не знаю як їх рішення застосовувати на практиці.
Другий момент — це вони придумали якусь теоретично кошерну ініціалізацію, яка в разі просто лінійних систем вирішує проблему vanishing gradients і дає тренувати скільки завгодно глибоку лінійну систему за однакову кількість градієнтних кроків.
І мовляв стверджується, що і для нелінійних систем це теж допомагає. Я, правда, поки не бачив згадок в літературі успішного використання цієї техніки.
Посилання на повні статті: про оптимізацію градієнтного спуску і про покращену ініціалізацію.
У цікавий час живемо.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.