Нотатки з MBC Symposium: спроби розібратися, чому працює deep learning

Продовжую розповідати про цікаві доповідях на MBC Symposium (MBC, до речі, розшифровується як Mind Brain Computation).
image
Surya Ganguli — людина з теоретичного neuroscience, тобто, займається тим, щоб зрозуміти, як працює мозок, на основі вимірювань імпульсів нейронів на різних рівнях.
І ось тут незалежно від neuroscience у світі трапляється deep learning, і у нас виходить якусь штучну систему чомусь навчити.
На відміну від мозку, в якому у нас обмежений дозвіл, складність з повторюваністю, ітд ітп, про deep network-то ми знаємо абсолютно все, про всі ваги, про всі стани. Виникає питання — якщо ми збираємося розібратися, як працює мозок, може спробуємо для початку зрозуміти як і чому працює ось така маленька система?
Без надій, що мозок працює швидше з прицілом розробити якісь методи, які можуть бути застосовні потім.
Disclaimer: пост написаний на основі відредагованих лог чату closedcircles.com, звідси і стиль викладу, і уточнюючі питання.
Ось посилання на сам доклад власне, і на опубліковану роботу, про яку піде мова, але, серйозно, краще прочитати пост.
Один з дуже старих результатів з нейромереж до того, як вони стали називатися deep learning — що схоже мережа навчається ієрархічно, спершу більш високого рівня поділу, потім більш детальні.
Що конкретно мається на увазі
От було дослідження з старих часів такого роду.
image
Дамо на вхід мережі якийсь об'єкт і відношення, а на виході попросимо вивчити фічу, типу "canary can move".
Зауважу, що на відміну від поточних задач класифікації це завдання тупо на запам'ятовування інформації мережею, немає тестового датасета, є тільки тренувальний.
На вхід — one-hot encoding об'єкта і відносини, на вихід треба отримати ймовірність набору функцій, в мережі всього один hidden layer.
Вивчається лише як мережа "вчить" тренувальний датасет.
І ось виявляється, що мережа спочатку вчить "високорівневі" поділу на тварини-рослини, а тільки потім деталі про кожен з видів.
image
Причому власне класів "тварина" і "рослина" ніде немає. Є тільки конкретні види тварин і рослин, про які спочатку мережа нічого не знає.
а як вони визначили що так виходить?
Подивися на другу картинку, три графіка кластеризації на ній — це на різних стадіях тренування.
Спочатку все випадково і всі низеньке. В середині з'являється "висока" головна категорія, що відокремлює тварин від рослин, а лише потім під нею "виростають" вторинні.

ок як я розумію активації в hidden layer — відповідають якимось властивостями. тому об'єкти з близькими властивостями виявляються ближче один до одного.
Так. Причому выкоуровневое поділ "тварина/рослину" вчиться першим, хоча воно безпосередньо ніде прописано не було, навчається лише з даних.

цікаво! і це все повторимо природно, з якими початковими даними/вагами.
Так.
Вони намагаються зрозуміти, чому так відбувається
Для цього вони розглядають ще більш просту систему — мережу з одним hidden layer без нелінійності взагалі.
image
Ось така система — на вхід дається one-hot id об'єкта, на виході треба видати його властивості.
Знову ж таки, перевіряємо тільки як воно вчиться, немає ніякого тестового датасета.
Хоча така мережа без нелінійності не має ніякої representational power порівняно з тупо лінійної матрицею, наявність двох рівнів роблять навчання нелінійним, тому що оптимізується вже квадратичне відхилення.
Виявляється, рівняння динаміки навчання такої системи вже можна вирішити аналітично.
В цілому, то що така система "выучивает" у підсумку, було відомо давно — вона прагне до singular value decomposition матриці фічі-об'єкти.
мені складно описати, що таке SVD в двох словах, але можна собі уявляти, що це якесь лінійне розкладання, де для кожного об'єкта вводиться вектор "внутрішнього подання", з якого лінійним перетворенням виходять підсумкові фічі. Хороший туторіал, наприклад, тут)
матриця N-мірна за кількістю фіч?.
NxM, де N — кількість функцій, а M — об'єктів.
тобто, виходить embedding — це якраз внутрішній вектор SVD.
Більш цікаво те, яким чином система "прагне" до цього розкладання.
Виявляється, що спочатку система "выучивает" поділ, відповідний найбільшому singular value, потім вчить наступне, і потім більш маленьке.
Пояснюється така поведінка наявністю седловых точок.
Сідлової точки — це точки, де градієнт 0, але вони не є ні локальними мінімумами, ні локальними максимумами, і градієнтний спуск любить в них скочуватися і з них складно вибратися:
image
Ось на картинці нижче червона точка — це та сама сідлова точка:
image
Спочатку система в неї скочується і довго там плутає, і врешті-решт виходить з неї по зеленій лінії.
що це на графіку зліва — input/output mode strength?
Це власне значення singular value для кожної моди.
І про SVD ми добре знаємо, що визначає параметри системи — їх визначає матриця кореляцій між об'єктами, тобто, SVD знаходить найбільш скореллированное напрямок серед даних об'єктів.
І чим більше "вирівняні" об'єкти по нікому напрямку, тим singular value цього напряму більше.
а поясни ще раз про сідлові точки та градієнтний спуск — і зв'язок з singular value.
Виявляється, що в просторі оптимізації лінійної мережі кожній singular value відповідає сідлова точка, і "навчання" соотвествующей singular value відповідає "вихід" з цієї сідлової точки.

щоб вивчити всі фічі потрібно потрапити у всі сідлової точки?
Так. Зрозуміло, тут маються на увазі фічі "эмбеддинга", а не фінальні.
Причому не тільки попасти, а вийти з них, тобто наприклад рослини і тварини поділяє сідлова точка.

фічі эмбеддинга — це активації нейронів прихованого шару?
Так. Поки ти в ній копошишься — ти не можеш зрозуміти, що є що, а от якщо звалився в одну сторону — опа, там всі дерева!

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

і випадково забрести кудись не туди не вийде? в якийсь інший локальний мінімум
У лінійній системі немає локальних мінімумів.
Загалом, ні, не вийде статистично, тому що основний напрямок з датасета переважує.

і тут дурне питання — у gradient descent хіба не мета звалитися в яму?
Ну так. Але сідлової точки його притягують, хоча мінімумом не є. З них складно вилізти, але коли виліз — градієнтний спуск вивезе далі вниз, вдалину від сідлової точки.

а від датасета це залежить? якщо наприклад більше даних для риба/птиця скажімо, ніж між тварина/рослину
Так, залежить. Singular values — це властивість усього датасета, глобальне, а не локальне.

А що все це говорить нам стосовно початкової задачі?.
Ми розібралися, що в її дещо спрощеною формулюванні (але яка зберігає описане властивість), навчання відбувається згідно SVD розкладання починаючи з самого великого singular value.
Головна рушійна сила — це найбільш сильні кореляції між об'єктами.
Це поки не повністю пояснює ситуацію, але важливий проміжний результат.
А тепер наступний момент, як вийти на ієрархічне представлення.
Думка така: якщо картина світу ієрархічна (тобто спочатку визначається якась високорівнева фіча, а потім вже в залежності від неї деталі), то чим фіча вище по ієрархії, тим на більшу кількість об'єктів вона впливає і тим більше кореляцій пояснює.
Вони надають це ось такий простий моделлю.
Сгененируем об'єкти таким простим чином — спочатку згенеруємо одну фічу випадково, потім для об'єктів де вийшов 0 згенеруємо випадково іншу фічу, а у тих що 1 — третю, і так по ієрархії.
На наступній картинці це показано деревом зверху праворуч:
image
Виявляється, що якщо так нагенерить об'єктів, найсильніше singular value відповідає як раз першої ноде (що в цілому досить очевидно, це як раз напрямок, по якому можна розділити більшість об'єктів)
І це, нарешті, дає нам пояснення споконвічного феномена.
Спрощена мережа природним чином послідовно выучивает напрямки самих сильних кореляцій об'єктів, а так як об'єкти реальних даних володіють ієрархічними властивостями, властивості вище в ієрархії генерують найбільш сильні кореляції.
Тому мережа вчить їх першими, а більш детальні (влияющиее на меншу кількість об'єктів) — другими.
Цю ідею можна розвивати в різні боки
Наприклад, у психології є такий містичний момент — формування категорій.
От є в світі об'єкти, у них є фічі. Яким чином мозок виділяє категорію, наприклад "тварини"?
image
Якщо про це думати послідовно, виникає chicken and egg problem:
  • Ми могли б згрупувати об'єкти в категорію, але треба зрозуміти на основі яких фіч.
  • Ми могли б придумати категорію на основі набору функцій, але тоді потрібно зрозуміти, які об'єкти включити туди, щоб взяти фічі!
І ось відомо, що те, наскільки категорія "coherent" — важливо.
Класичний приклад, що для категорії "собаки" у нас є слово "собака", а для категорії "речі синього кольору" — немає. Саме тому, що речі синього кольору один на одного не схожі.
Щоб спробувати продемонструвати цей ефект у навчанні, давайте згенеруємо випадкових даних:
image
Ось ми згенерували випадкові об'єкти з випадковими фичами, праворуч — візуалізація матриці. Годуємо ці об'єкти на вхід вже полюбилася нам лінійної мережі, щоб вона вивчила відповідність фіч об'єктів.
Це вважай така ж ситуація, що і обговорювалася раніше — ось суп об'єктів і фичей, чи є тут категорії?
Категорії насправді в даних є — ми генерували дані не випадково, а кидаючи монетку приналдлежит об'єкт якоїсь категорії. Якщо стовпці (рядки переставити, то виглядає це так:
image
тобто, в цьому шумі є насправді три категорії. Питається, вивчить їх наша мережа?
Виявляється, можна аналітично показати, що це залежить від розміру от цього прямокутника по відношенню до всього датасету. Якщо категорія досить велика — вивчиться, а якщо ні — потоне в шумі. Крім того, факт можливості ідентифікації категорії залежить не тільки від кількості об'єктів, а саме від співвідношення розміру до всього датасету.
Критичне значення розміру категорії — пропорційно sqrt(N*M).
до Речі, а мені поки не дуже зрозуміло, чому ми тоді не маємо слова для "Всі сині речі". Як раз співвідношення до всіх даних досить пристойна.
Ні! У синіх об'єктів занадто мало збігаються фіч.
Квадрат великий, але дуже розріджене. Для появи категорії є обмеження і за розміром, і за її "щільності".
Ну так от, останній пойнт.
Те, що поняття "категорії" залежить від усього датасета пояснює, чому так складно про це говорити в традиційній психології.
Виділення об'єктів у категорію залежить від усього досвіду людства, і підступитися до нього "локально" дуже складно.
Але навіть така проста модель демонструє, як навчання вирішує цю chicken and egg problem, знаходячи в шумі структуру.
Підсумую
З одного боку, ця робота натякає, за рахунок чого так ефективно навчаються мережі — тому що дані в реальному світі мають певну структуру, і це виражається в ландшафті оптимізації, за яким "скочується" навчання градієнтним спуском.
З іншого, вона знову ж таки добре показує, наскільки теорія поки далека від практики — обговорювана модель вкрай примітивна навіть за мірками нейромереж минулого, не кажучи вже про сучасних дуже глибоких архітектурах.
Висновки, втім, можна екстраполювати.

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

0 коментарів

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