Розуміння рангу матриці — прихованого виміру шарів нейронної мережі
Лінійний шар у нейронній мережі є матрицею. Вагова матриця 1024 × 1024 має трохи більше мільйона параметрів і схоже на те, що вона повинна виконувати роботу на мільйон параметрів. Часто не може. Перетворення, яке він виконує, може жити в 50-вимірному підпросторі, незалежно від того, скільки параметрів ви в нього вливаєте. Форма на диску та здатність виразності, яку він насправді забезпечує, — це два різні числа — і друге називається ранг.
Ця стаття про цю прогалину. Ми почнемо з того, що матриця робить із хмарою точок у 2D, попрацюємо до формальних визначень рангу та SVD, а потім подивимось, чому ця одна властивість непомітно визначає, наскільки великими можуть бути нейронні мережі, наскільки малими ми можемо їх стискати, і чому глибокі трансформатори взагалі залишаються виразними.
Математика залишається легкою. Кожному формальному етапу передує числовий чи візуальний приклад, а докази пропускаються на користь геометричної картини. Зрештою, слово «ранг» означатиме конкретне зображення, а не визначення, яке ви запам’ятаєте.
Друга 2 керована карта лінійної алгебри — вона передбачає скалярний добуток косинусної подібності і надсилає PCA, розкладання на множники та статті про приховані вузькі місця.
Приховане вузьке місце
Візьміть лінійний шар 1024 × 1024 десь посередині навченої мережі. Він має 1 048 576 параметрів. Тепер виконайте декомпозицію сингулярних значень і подивіться на сингулярні значення — незабаром ми дійдемо до того, що це таке, а поки розглядайте їх як відсортований список «скільки роботи виконує кожен незалежний напрямок». Звичайна форма на практиці: перші 50 або близько того великі, наступні кілька сотень швидко зменшуються, а хвіст фактично дорівнює нулю.
Іншими словами, відображення шару 1024 → 1024 живе приблизно в 50-вимірному підпросторі результату. Інші ~974 виміру є лінійними комбінаціями перших 50; вони не несуть нової інформації. Матриця 1024 × 50, за якою слідує матриця 50 × 1024 — трохи більше 100 000 параметрів — дасть таке ж відображення. Оригінальний рівень платив у десять разів більше пам’яті та обчислень за те саме перетворення.
Число, яке враховує цю прогалину, є рангом матриці (або, у цій безладній версії реального світу, її ефективним рангом). Решта цієї статті розповідає про те, що таке ранг, як його зчитувати з матриці, і чому нейронні мережі повні шарів, ранг яких набагато менший, ніж передбачає їх форма.
Матриця - це перетворення
Перш ніж ми зможемо говорити про ранг, нам потрібна чіткіша картина того, що насправді робить матриця. Забудьте на мить, що матриці - це сітки чисел. Матриця — це функція — вона приймає вектор і створює вектор:
Для матриці 2 × 2 ця функція приймає двовимірну точку та повертає двовимірну точку. Застосуйте його до кожної точки на колі, і ви отримаєте нову форму — зазвичай еліпс, але іноді лінію, а в вироджених випадках — одну точку.
Ранг вимірює форму цього результату. Матриця 2 × 2, яка перетворює коло на повний еліпс, має ранг 2: обидва вхідні виміри дійшли до виходу. Матриця, яка роздавлює те саме коло на лінію, має ранг 1: один вимір вижив, інший був знищений. Матриця, яка відображає все на початок координат, має ранг 0.
Це зображення – це формалізована решта статті. Перш ніж ми туди потрапимо, варто побачити його рух.
Демо: ранг як геометричний колапс
Перетягніть повзунки. Кожен з них є одним записом матриці 2 × 2 W. Сіре коло зліва є вхідними даними — кожна точка на одиничному колі. Кольорова фігура праворуч — це те, що з нею робить W. Смужки під матрицею є двома сингулярними значеннями W — довжинами двох осей еліпса. Ранг, показаний під ними, — це лише кількість одиничних значень, які (числово) не дорівнюють нулю.
Кілька речей, які варто спробувати:
- Встановіть
Wна матрицю ідентичності. На виході виходить той самий коло. Обидва значення в однині дорівнюють 1. Ранг 2. - Розтягніть в одному напрямку, потягнувши діагональний повзунок. Результат стає еліпсом. Одиничні значення стають нерівними. Все ще 2 ранг.
- Установіть другий стовпець рівним першому. Тепер два стовпці вказують в одному напрямку — вони лінійно залежні. Вихідний еліпс згортається до лінії. Менше сингулярне значення падає до нуля. Ранг тепер 1.
- Встановіть кожен запис на нуль. Вихід згортається до початку координат. Обидва сингулярні значення дорівнюють нулю. Ранг 0.
Демонстрація вчить, що ранг насправді не залежить від чисел у матриці; йдеться про геометричну форму виходу. Ранг підраховує, скільки вимірів вхідних даних пережили подорож через W. Коли два стовпці W вказують в одному напрямку, один із них є зайвим — матриця має менше справді незалежних напрямків, ніж передбачає її форма.
Лінійна незалежність і простір стовпців
Давайте назвемо те, що ми щойно побачили. Стовпці матриці є векторами. Для матриці 2 × 2
стовпці і . Коли ви помножите W на вхідний вектор , ви отримаєте
Результатом є зважена комбінація стовпців. Таким чином, набір усіх можливих виходів — кожен вектор, який може створити W, над кожним можливим входом — це точно набір усіх зважених комбінацій і . Цей набір називається простір стовпців W.
Якщо і вказують у різних напрямках, їхні комбінації змітають усю площину — простір стовпця — це . Якщо вони вказують в одному напрямку (одна скалярно кратна іншій), усі комбінації лежать на одній лінії — простір стовпця одновимірний. Якщо вони обидва дорівнюють нулю, простір стовпця є лише координатою.
Два вектори є лінійно незалежними, якщо жоден не є скалярним кратним іншому. Більш загально, набір векторів є лінійно незалежним, якщо жоден з них не може бути записаний як комбінація інших. Ранг матриці — це кількість лінійно незалежних стовпців, які вона має — еквівалентно розмір її простору стовпців.
Спрацьований приклад. Візьміть
Друга колонка вдвічі більша за першу. Третій стовпчик у три рази більше першого. Тільки одна колонка справді «нова»; інші два не несуть жодної інформації, якої вже не має перший. M має ранг 1, незважаючи на те, що це матриця 3 × 3 з 9 ненульовими записами.
Звання, формально
Кілька фактів про ранг, які випадають із зображення простору колонки, викладені без доказів:
- Ранг рядка дорівнює рангу стовпця. Кількість лінійно незалежних рядків матриці завжди дорівнює кількості лінійно незалежних стовпців. Це неочевидно з визначення; це теорема. Але це означає, що «ранг» однозначний — ви можете порахувати рядки або порахувати стовпці, ви отримаєте ту саму відповідь.
- Максимальний ранг
min(m, n). Матриця з формою(m, n)може мати щонайбільшеmin(m, n)незалежних стовпців, оскільки у вас є лише напрямкиmin(m, n), доступні в меншому з двох проміжків. Матриця1024 × 50має ранг не більше 50, незалежно від того, які числа ви в ній вводите. - Повний ранг проти нерангового. Матриця є повного рангу, якщо її ранг дорівнює
min(m, n). Інакше це ранг-дефіцит. Більшість матриць, які ви генеруєте випадковим чином, мають повний ранг. Більшість матриць, які щось означають — вивчені ваги, дані реального світу — на практиці мають недостатній ранг.
На останньому пункті побудована ця стаття. Геометрія говорить: ефективна розмірність шару є незалежно від його рангу. І на практиці навчені шари, як правило, мають набагато нижчий ранг, ніж їх форма.
Власні вектори: напрямки, які матриця залишає в спокої
Загальна матриця повертає вектор двома напрямками одночасно — вона змінює довжину вектора і його напрямок. Щоб побачити це, візьміть
і подайте йому вектор :
Вихідний сигнал перекинувся в інший бік горизонтальної осі та змінив довжину — він відрізняється від вхідного як орієнтацією, так і величиною. Це типовий випадок: подайте квадратну матрицю майже будь-якого вектора, і вона повертається обертаною та масштабованою одночасно.
Але для кожної квадратної матриці є кілька особливих напрямків, де не відбувається обертання — матриця лише розтягується або стискається. Надішліть вектор, який лежить вздовж одного з цих напрямків через , і ви отримаєте назад вектор, який вказує в тому ж напрямку, тільки довший або коротший. (Це також можна перевернути, щоб вказати протилежну сторону вздовж тієї самої лінії через початок координат, що все ще вважається тим самим напрямком.) Ці напрямки є характерними для матриці — звідки походить назва eigen, що німецькою означає «власний» або «характерний». Самі напрямки є власними векторами матриці, а скаляр, на який розтягується кожен з них, є її власним значенням.
Формально ненульовий вектор є власним вектором квадратної матриці , якщо
для деякого скаляра . Множення на виконує те саме, що й множення на число — вектор залишається на власній прямій через початок координат; змінюється тільки його довжина і, можливо, знак.
Найчистіший випадок, коли ці спеціальні напрямки збігаються з осями координат. Візьміть діагональну матрицю
Вектор надсилається до — той самий напрямок, масштабований на 2. Вектор надсилається до — той же напрямок, масштабований на 3. Отже, і є власними векторами з власними значеннями 2 і 3. Кожен інший вектор , на який діє, є комбінацією цих двох, і розтягується нерівномірно вздовж двох осей — перетворюючи коло на еліпс, саме ту картинку, яку демонструвала раніше демонстрація.
Більшість матриць не вирівнюють свої власні вектори з осями так зручно. Чудовий спосіб побачити, куди вони насправді вказують, завдяки лекціям Ананда Аваті в Стенфорді, це взяти кожен одиничний вектор — ціле коло — і помножити кожен на матрицю. Вихідні вектори розгортаються віялом в еліпс, а власні вектори – це напрямки, які не відхиляються від своєї лінії; вони падають уздовж осей еліпса.
Два корпуси варті контрасту з кнопками. Несиметрична матриця — та сама з наведеного вище прикладу — має власні значення і (від’ємне перевертає свій власний вектор, щоб вказати протилежну сторону), а її два власні вектори не перпендикулярні. Тепер перейдіть до симетричної матриці , дзеркально рівної по головній діагоналі. Його власні вектори прив’язуються точно до один від одного, лежачи вздовж великої та малої осей еліпса. Це не випадковість цього прикладу: дійсна симетрична матриця завжди має дійсні власні значення та ортогональні власні вектори. (Розсуньте і за допомогою повзунків і спостерігайте, як кут віддаляється від ; розкручуйте попередні налаштування обертання, і власні значення стають комплексними — чисте обертання взагалі не залишає вектора на власній лінії.) Ця ортогональність є саме тим, що робить коваріаційну матрицю в PCA та у SVD, тому добре поводяться — обидва симетричні за побудовою, тому їхні власні вектори утворюють чітку перпендикулярну рамку.
Ця симетрія не є випадковістю прикладу; це вбудовано в те, як формується коваріаційна матриця. Складіть свої дані у вигляді матриці m × n (m вибірок, n ознак), розташуйте кожен стовпець по центру, і добуток буде симетричним за побудовою — його запис є коваріацією між ознаками і , той самий номер, що й запис . Для двох ознак — скажімо, зросту та ваги трьох людей — це симетрична матриця 2 × 2, діагональ якої містить дисперсію кожної ознаки, а недіагональ — їхню коваріацію: велика й додатна, коли ознаки зростають разом, і близька до нуля, якщо ні. Таким чином, його два власні вектори є ортогональними, і вони точно є головними компонентами даних — напрямками найбільшої дисперсії, кожен з яких позначено тим, яка дисперсія (його власне значення) лежить уздовж нього. Це весь PCA, і стаття PCA будує його за допомогою інтерактивної демонстрації коваріації.
Ця картина узагальнює. Матриця n × n, яку можна діагоналізувати, має n лінійно незалежні власні вектори, а матричні коефіцієнти як
де стовпці є власними векторами, а є діагоналлю з власними значеннями на її діагоналі. Вся поведінка матриці згортається до рецепту з трьох кроків: виразіть вхідні дані в базисі власного вектора, масштабуйте кожну координату за її власним значенням, перетворіть назад. Ранг безпосередньо зчитує — це кількість ненульових власних значень. Нульові власні значення – це напрямки, які матриця анігілює, те саме згортання описаної картини простору стовпців.
Власне розкладання працює лише для квадратних матриць (і не для всіх — у деяких відсутній повний набір незалежних власних векторів). Більшість матриць у нейронній мережі є прямокутними: проекція 768 × 3072 не має власних значень у звичайному розумінні. SVD, у наступному розділі, є узагальненням, яке працює на будь-якій матриці. Ці два тісно пов’язані між собою: сингулярні значення є квадратними коренями з власних значень , а стовпці і у SVD є власними векторами і відповідно. SVD є власним розкладанням із вхідними даними, які спочатку підвищуються до симетричної квадратної матриці.
Причина, чому це варто окремого розділу, полягає в тому, що одна й та сама жменька власних структур постійно з’являється в машинному навчанні:
- PCA. Головними компонентами набору даних є власні вектори його коваріаційної матриці, відсортовані за власним значенням. Найбільші власні значення вказують уздовж напрямків найбільшої дисперсії — саме тих кількох напрямків, які зберігає PCA. Власні вектори коваріаційної матриці та сингулярні вектори центрованої матриці даних є однаковими векторами, отриманими двома способами.
- Спектральні методи на графах. Виявлення спільноти, кластеризація графів і вбудовування вузлів (власні відображення Лапласа, нормалізовані розрізи) залежать від верхніх власних векторів суміжної або лапласівської матриці. Власні значення говорять про те, наскільки роздільним є кожен кластер; власні вектори говорять, які вузли йому належать.
- Колапс рангу в трансформаторах. «Увага втрачає ранг із глибиною» — це механічно «домінуюче власне значення оператора повторюваної уваги тягне кожен маркер в одному напрямку». Залишковий потік і підрівні прямої подачі – це те, що заважає цьому власному значенню втекти.
- Діагностика оптимізації. Власні значення Гессена втрат — його спектр — описують локальну кривизну. Відношення верхнього до нижнього власного значення є числом умови; методи другого порядку, графіки швидкості навчання та тренування з усвідомленням гостроти – усе це безпосередньо читає цей спектр.
Коли ви можете думати, що «ця матриця має цікавий спектр», той самий об’єктив підходить для PCA, спектральної кластеризації, динаміки глибини трансформатора та оптимізації на основі Гессе. Власні вектори – це те, як матриця повідомляє вам, які напрямки в її області дійсно важливі для неї; власні значення - це те, наскільки голосно це сказано.
SVD: ранговий мікроскоп
Щоб виміряти рейтинг, нам потрібен інструмент, який перетворює матрицю на список того, «скільки вносить кожен незалежний напрямок». Цей інструмент є сингулярним розкладом. Будь-яку дійсну матрицю W форми (m, n) можна записати як
де:
- — це
(m, m), ортогональна матриця — її стовпці є перпендикулярними одиничними векторами. Ортогональні матриці - це саме повороти і відображення простору; вони не розтягуються і не стискаються, вони просто обертаються. - — це
(m, n), діагональ з невід’ємними записами на діагоналі та нулями всюди. Це особисті значення. - є
(n, n), також ортогональний.
Геометрично W послідовно виконує три дії: повертає вхід (), розтягує кожну вісь на відповідне сингулярне значення (), потім повертає знову (). Це розкладання – це те, що демонструє наведена вище демонстрація, хоча вона не малює проміжні повороти — довжини осей кінцевого еліпса є сингулярними значеннями, а напрямки осей є стовпцями .
Ранг читається безпосередньо з : це кількість ненульових одиничних значень. Нульові сингулярні значення означають, що деякі напрямки масштабуються до нуля — анігілюються — і вихідна розмірність відповідно падає.
Спрацьований приклад. Раніше матриця рангу 1:
Одне ненульове сингулярне значення. Ранг 1. СВД погоджується з попереднім оглядом колони — як і має бути.
Ефективний ранг — спектр, а не кількість
Чистий ранг — підрахунок ненульових сингулярних значень — є чистим визначенням, але на практиці він сам по собі майже марний. Справжні матриці, особливо ті, що створені під час навчання, майже ніколи не мають точних нулів у своєму спектрі сингулярних значень. Вони мають розпад: великі значення на вершині, потім плавне падіння та довгий хвіст крихітних, але ненульових значень. Строго кажучи, така матриця є повноранговою. Функціонально це не так.
Кількість, яка насправді цікавить людей, — це ефективний ранг: скільки одиничних значень є достатньо великими, щоб мати значення. Різні способи формалізувати це:
- Пороговий ранг: підрахунок одиничних значень, що перевищують певне обмеження, напр. .
- Енергетичний ранг: найменший
k, такий, що охоплює, скажімо, 99% . Це питання «скільки напрямків нам потрібно дотримуватися, щоб зберегти 99% матриці». - Стабільний рейтинг: . Скаляр, який узагальнює весь спектр в одному числі.
Коли хтось каже, що «цей шар 1024 × 1024 фактично займає 50 місце», вони використовують одне з цих визначень. Точний вибір рідко має значення; важливою є форма графіка одиничного значення. Спектр навченого шару з першого погляду показує, яка частина його бюджету параметрів виконує реальну роботу.
Нейронні шари під ранговою лінзою
Ось і виграш. Лінійний шар y = Wx з W форми (out, in) має параметри out × in і ранг не більше min(out, in). Якщо ефективний ранг W дорівнює r — і r набагато менший за min(out, in) — тоді SVD повідомляє нам, що ми можемо наблизити W як
де B є (out, r) і A є (r, in). Кількість параметрів змінюється від out × in до r × (out + in). Для (1024, 1024) з r = 50 це 10× менше параметрів. Тренований шар завжди був «справді» двома маленькими матрицями в тренчкоті; ми просто не вимірювали це.
Це єдине спостереження — вивчені матриці мають низький ефективний ранг — є зачатком трьох великих напрямків дослідження:
- LoRA та тонке налаштування низького рангу. Замість оновлення повної вагової матриці під час тонкого налаштування, вивчіть оновлення низького рангу з
rв однозначному чи двозначному. Працює, тому що оновлення для точного налаштування мають емпірично дуже низький ранг: ви не вивчаєте всю трансформацію заново, ви підштовхуєте її в кількох напрямках. - Вирізання та стиснення низького рангу. Урізавши SVD до верхніх сингулярних значень
k, ви стиснете шар із обмеженою помилкою наближення. Відсікання величини, структуроване відсікання та методи тензорної декомпозиції – усі вони варіації на цю тему. - Згортання рангу в глибоких трансформаторах. Багато рівнів стека без залишкових зв’язків і представлень маркерів сходяться до одновимірного підпростору — ефективний ранг мережі падає до 1 по глибині, і вона втрачає здатність розрізняти позиції. Залишкові з’єднання, LayerNorm і підрівні прямого зв’язку частково зберігають ранг здоровим по всій глибині. (Див. «Увага — це не все, що вам потрібно: чиста увага втрачає ранг вдвічі експоненціально з глибиною», Dong et al. 2021.)
Кожен із цих додатків заслуговує більш детального розгляду. Суть цього полягає в самій лінзі: як тільки ви починаєте розглядати кожну вагову матрицю як «форму × ефективний ранг», а не просто «форму», багато, здавалося б, непов’язаних результатів у сучасному глибинному навчанні починають виглядати як варіації одного спостереження.
Куди далі
Якщо ця стаття дала вам робоче уявлення про рейтинг, природними продовженнями на цьому сайті є:
- Основи тонкого налаштування LoRA — побудуйте корекцію низького рангу із зовнішніх продуктів, збережіть попередньо підготовлену матрицю та навчіть фактори адаптера в PyTorch.
- Методи оптимізації висновку LLM — квантування та розкладання низького рангу як використання того самого ефекту під час виробництва.
- Всередині трансформаторного блоку — де падіння рейтингу є актуальною проблемою і де залишкова/LayerNorm/машина FFN заробляє своє.
- Стратегії складання контексту — який розташований на один рівень вище, про те, як ефективно використовувати отриману модель.
Матриця є перетворенням. Ранг - це розмірність того, що виживає. Кожна нейронна мережа побудована на основі цих двох ідей; як тільки ви побачите їх, ви не зможете їх не побачити.