Продовжую розповідати про цікаві доповіді на MBC Symposium (MBC, до речі, розшифровується як Mind Brain Computation).
Surya Ganguli - людина з теоретичного neuroscience, тобто, займається тим, щоб зрозуміти, як працює мозок, на основі вимірювань імпульсів нейронів на різних рівнях.
І ось тут незалежно від neuroscience в світі трапляється deep learning, і у нас виходить якусь штучну систему чомусь навчити.
На відміну від мозку, в якому у нас обмежена роздільна здатність, складність з повторюваністю, ітд ітп, про deep network-то ми знаємо абсолютно все, про всі ваги, про всі стани. Виникає питання - якщо ми збираємося розібратися, як працює мозок, може спробуємо для початку зрозуміти як і чому працює ось така маленька система?
Без надій, що мозок працює також, швидше з прицілом розробити якісь методи, які можуть бути застосовані потім.
Disclaimer: пост написаний на основі відредагованих логів чату closedcircles.com, звідси і стиль викладу, і уточнюючі питання.
Ось посилання на саму доповідь і на власне опубліковану роботу, про яку піде мова, але, серйозно, краще прочитати пост.
Один з дуже старих результатів з нейромереж до того, як вони стали називатися deep learning - що схоже мережа вчиться ієрархічно, спочатку більш високорівневі поділу, потім більш детальні.
Що конкретно мається на увазі
Ось було дослідження зі старих часів такого роду.
Дамо на вхід мережі якийсь об'єкт і відношення, а на виході попросимо вивчити фічу, типу «» canary can move «».
Зауважу, що на відміну від поточних завдань класифікації це завдання тупо на запам'ятовування інформації мережею, немає тестового датасета, є тільки тренувальний.
На вхід - one-hot encoding об'єкта і відносини, на вихід треба отримати ймовірність набору фіч, у мережі всього один hidden layer.
Вивчається тільки як мережа «» вчить «» тренувальний датасет.
І ось виявляється, що мережа спочатку вчить "високорівневі" "поділу на тварини-рослини, а тільки потім деталі про кожен з видів.
Причому власне класів "" тварина "" і "рослина" "ніде немає. Є тільки конкретні види тварин і рослин, про які спочатку мережа нічого не знає.
а як вони визначили що так виходить?
Подивися на другу картинку, три графіки кластеризації на ній - це на різних стадіях тренування.
Спочатку все випадково і все низеньке. У середині з'являється «» висока «» головна категорія, що відокремлює тварин від рослин, а тільки потім під нею «» виростають «» вторинні.
ок як я розумію активації в hidden layer - відповідають якимось властивостям. тому об'єкти з близькими властивостями виявляються ближче один до одного.
Так. Причому викорівневий поділ "тварина/рослина" "навчається першою, хоча вона безпосередньо ніде прописана не було, вчиться тільки з даних.
цікаво! і це все повторимо природно, з будь-якими початковими даними/вагами.
Так.
Вони намагаються зрозуміти, чому так відбувається
Для цього вони розглядають ще більш просту систему - мережу з одним hidden layer без нелінійності взагалі.
Ось така система - на вхід дається one-hot id об'єкта, на виході потрібно видати його властивості.
Знову ж таки, перевіряємо тільки як воно вчиться, немає ніякого тестового датасета.
Хоча така мережа без нелінійності не має ніякої representational power порівняно з тупо лінійною матрицею, наявність двох рівнів роблять навчання нелінійним, тому що оптимізується вже квадратичне відхилення.
Виявляється, рівняння динаміки навчання такої системи вже можна вирішити аналітично.
В цілому, те що така система «» вивчає «» в результаті, було відомо давно - вона прагне до singular value decomposition матриці фічі-об'єкти.
(мені складно описати, що таке SVD у двох словах, але можна собі уявляти, що це якесь лінійне розкладання, де для кожного об'єкта вводиться вектор «» внутрішнього уявлення «», з якого лінійним перетворенням виходять підсумкові фічі. Хороший туторіал, наприклад, тут)
матриця N-мірна за кількістю фіч?.
NxM, де N - кількість фіч, а M - об'єктів.
Тобто, embedding, що виходить, - це якраз внутрішній вектор SVD.
Більш цікаво те, яким чином система «» прагне «» до цього розкладання.
Виявляється, що спочатку система «» вивчає «» поділ, що відповідає найбільшому singular value, потім вчить наступне, і потім більш маленьке.
Пояснюється така поведінка наявністю сідлових точок.
Сивлові точки - це точки, де градієнт 0, але вони не є ні локальними мінімумами, ні локальними максимумами, і градієнтний спуск любить в них скочуватися і з них складно вибратися:
Ось на картинці нижче червона точка - це та сама сідлова точка:
Спочатку система в неї скочується і довго там плутає, і зрештою виходить з неї по зеленій лінії.
що це на графіку зліва - 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 - третю, і так за ієрархією.
На наступній картинці це показано деревом зверху праворуч:
Виявляється, що якщо так нагенерити об'єктів, найсильніше singular value відповідатиме якраз першій ноді (що в цілому досить очевидно, це якраз напрямок, за яким можна розділити більшість об'єктів)
І це нарешті дає нам пояснення початкового феномену.
Спрощена мережа природним чином послідовно вивчає напрямки найсильніших кореляцій об'єктів, а оскільки об'єкти в реальних даних мають ієрархічні властивості, властивості вище в ієрархії генерують найбільш сильні кореляції.
Тому мережа вчить їх першими, а більш детальні (впливають на меншу кількість об'єктів) - другими.
Цю ідею можна розвивати в різні боки
Наприклад, у психології є такий містичний момент - формування категорій.
Ось є в світі об'єкти, у них є фічі. Яким чином мозок виділяє категорію, наприклад «» тварини «»?
Якщо про це думати послідовно, виникає chicken and egg problem:
- Ми могли б згрупувати об'єкти в категорію, але треба зрозуміти на основі яких фіч.
- Ми могли б придумати категорію на основі набору фіч, але тоді потрібно зрозуміти, які об'єкти туди включити, щоб взяти фічі!
І ось відомо, що те, наскільки категорія «» coherent «» - важливо.
Класичний приклад, що для категорії «» собаки «» у нас є слово «» собака «», а для категорії «» речі синього кольору «» - ні. Саме тому що речі синього кольору один на одного не схожі.
Щоб спробувати продемонструвати цей ефект у навчанні, давайте згенеруємо випадкових даних:
Ось ми згенерували випадкові об'єкти з випадковими фічами, праворуч - візуалізація матриці. Годуємо ці об'єкти на вхід лінійної мережі, що вже полюбилася нам, щоб вона вивчила відповідність фіч об'єктам.
Це вважай така ж ситуація, що і обговорювалася раніше - ось суп об'єктів і фічів, чи є тут категорії?
Категорії насправді в даних є - ми генерували дані не випадково, а кидаючи монетку чи належить об'єкт якоїсь категорії. Якщо стовпчики-рядки переставити, то виглядає це так:
Тобто, в цьому шумі є насправді три категорії. Питається, чи вивчить їх наша мережа?
Виявляється, можна аналітично показати, що це залежить від розміру ось цього прямокутника по відношенню до всього датасету. Якщо категорія досить велика - вивчиться, а якщо ні - потоне в шумі. Крім того, факт можливості ідентифікації категорії залежить не тільки від кількості об'єктів у ній, а саме від співвідношення розміру до всього датасету.
Критичне значення розміру категорії - пропорційно sqrt (N * M).
До речі, а мені поки не дуже зрозуміло, чому ми тоді не маємо слова для «» Все сині речі «». Якраз співвідношення до всіх даних дуже пристойне.
Ні! У синіх об'єктів занадто мало збігаючих фіч.
Квадрат великий, але дуже розріджений. Для появи категорії є обмеження і за розміром області, і за її «щільністю».
Ну так ось, останній пойнт.
Те, що поняття «» категорії «» залежить від усього датасета пояснює, чому так складно про це говорити в традиційній психології.
Виділення об'єктів у категорію залежить від усього досвіду людства, і підступитися до нього «» локально «» дуже складно.
Але навіть така проста модель демонструє, як навчання вирішує цю chicken and egg problem, знаходячи в шумі структуру.
Підсумую
З одного боку, ця робота натякає, за рахунок чого так ефективно навчаються мережі - тому що дані в реальному світі мають певну структуру, і це виражається в ландшафті оптимізації, за яким «» скочується «» навчання градієнтним узвозом.
З іншого, вона знову ж добре показує, наскільки теорія поки далека від практики - обговорювана модель вкрай примітивна навіть за мірками нейромереж минулого, не кажучи вже про сучасні дуже глибокі архітектури.
Висновки, втім, можна екстраполювати.
