Як використовувати RBM для класифікації?


12

На даний момент я граю з обмеженими машинами Boltzmann, і, оскільки я перебуваю на ній, я хотів би спробувати класифікувати рукописні цифри.

Модель, яку я створив, тепер є досить фантастичною генеративною моделлю, але я не знаю, як іти далі.

У цій статті автор зазначає, що, створивши хорошу генеративну модель, « тоді навчається дискримінаційний класифікатор (тобто лінійний класифікатор, підтримка векторної машини) на вершині МПУ, використовуючи мічені зразки « і далі заявляє », оскільки ви поширюєте вектори даних до прихованих одиниць моделі RBM, щоб отримати приховані одиничні вектори або представлення даних вищого рівня ". Проблема полягає в тому, що я не впевнений, чи правильно мені це станеться.

Чи означає це, що все, що мені потрібно зробити, - це розповсюдження вхідних даних до прихованих одиниць, і там у мене є функція RBM для класифікації?

Хтось може мені пояснити цей процес?


Машина Больцмана з обмеженим доступом є одним з найбільш ранніх компонентів, що використовуються для глибокого навчання. Насправді першою важливою роботою в DNN була здійснена компанія Hinton - це мережа глибоких переконань, заснована на RBM. Будь ласка, шукайте цей документ (глибока мережа переконань, 2007, для Hinton) для отримання додаткової інформації. На його веб-сайті ви можете знайти дуже важливі ресурси, а також демонстраційний експеримент cs.toronto.edu/~hinton/digits.html
Haddad

@hbaderts Я почав грати з RBM. Прийняту відповідь було легко читати. Я хотів попросити роз'яснення, прихований шар RBM є випадковим після вибірки з бінарного розподілу. Для класифікації використовуються приховані одиничні ймовірності чи приховані одиниці, відібрані з двійкового розподілу (1 і 0), передаються в класифікатор?
M3tho5

Відповіді:


15

Огляд обмежених машин Больцмана

Обмежена машина Больцмана (RBM) - це генеративна модель, яка вивчає розподіл ймовірностей над входом. Це означає, що після тренувань, УЗМ може генерувати нові зразки із засвоєного розподілу ймовірностей. Розподіл ймовірностей по видимим одиницям задається де і - сигмоїдна функція, - це зміщення для видимого вузла , а - вага від до p ( vh ) = V i = 0 p ( v ih ) , p ( v ih ) = σ ( a i + H j = 0 w j i h j ) σ a i i w j i h j v i p ( vhv

p(vh)=i=0Vp(vih),
p(vih)=σ(ai+j=0Hwjihj)
σaiiwjihjvi. З цих двох рівнянь випливає, що залежить лише від прихованих станів . Це означає, що інформація про те, як генерується видимий зразок , повинна зберігатися у прихованих одиницях, вагах та ухилах.h vp(vh)hv

Використання УЗМ для класифікації

Використовуючи RBM для завдань класифікації, ви використовуєте таку ідею: оскільки інформація про те, як створені ваші тренувальні або тестові дані зберігається у прихованих одиницях , ви можете витягти ці основні фактори, подавши навчальний зразок у видимі одиниці УЗМ, розповсюджуйте його вперед до прихованих одиниць і використовуйте цей вектор прихованих одиниць як вектор функції. Ви більше не робите назад, щоб переходити до видимих ​​одиниць.h

Цей прихований вектор є лише перетвореною версією вхідних даних - це не може нічого класифікувати самостійно. Щоб зробити класифікацію, ви підготували будь-який класифікатор (лінійний класифікатор, SVM, нейронну мережу, що рухається, або що-небудь інше) із прихованим вектором замість "сировинних" навчальних даних як вхідних даних.

Якщо ви будуєте мережу з глибокими переконаннями (DBN) - яка використовувалася для попереднього тренування глибоких нейронних мереж подачі вперед без нагляду - ви б взяли цей прихований вектор і використали його як вхід до нової УВМ, яку ви стекаєте зверху. Таким чином, ви можете тренувати мережу пошарово, до досягнення потрібного розміру, не потребуючи мічених даних. Нарешті, ви додасте, наприклад, шар softmax у верхній частині, і навчіть всю мережу із зворотним розповсюдженням для вашого завдання класифікації.


Дякую за редагування @ Seanny123, це робить його набагато легшим для читання.
hbaderts

5

@hbaderts чудово описав весь робочий процес. Однак це може не мати сенсу, якщо ви абсолютно новачок у цій ідеї. Тому я збираюся пояснити це по-простому (тому я опускаю деталі):

Подумайте про глибокі мережі як про функцію трансформації ваших даних. Приклад перетворень включає нормалізацію, взяття журналу даних тощо. Глибокі мережі, які ви навчаєте, мають кілька шарів. Кожен з цих шарів навчається за допомогою якогось алгоритму навчання. Для першого шару ви передаєте вихідні дані як вхідні дані і намагаєтеся отримати функцію, яка поверне вам ті самі "оригінальні дані", що і вихідні дані. Однак ви не отримаєте ідеального результату. Тому ви отримуєте трансформовану версію свого введення як вихід першого шару.

Тепер для другого шару ви берете ці "перетворені дані" і передаєте їх як вхідні дані і повторюєте весь процес навчання. Ви продовжуєте робити це для всіх шарів вашої глибокої мережі.

На останньому шарі ви отримуєте "перетворену версію" вихідних вхідних даних. Це можна думати про вилучення початкових вхідних даних більш високого рівня. Зауважте, що ви ще не використовували мітки / виводи у вашій глибокій мережі. Тому все до цього моменту - це без нагляду навчання. Це називається пошарове попереднє тренування.

Тепер ви хочете підготувати модель класифікатора / регресії, і це проблема, що контролюється. Досягнення цієї мети полягає в тому, щоб взяти "остаточну перетворену версію" свого вихідного вводу з останнього шару у вашій глибокій мережі та використовувати їх як вхід до будь-якого класифікатора (наприклад, knn Classifier / softmax Classifier / логістична регресія тощо). Це називається укладанням.

Під час навчання цього класифікатора / учня, що пройшов останній крок, ви розповсюджуєте все своє навчання у повній мережі. Це гарантує, що Ви зможете вчитися з міток / виходів і відповідно змінювати вивчені параметри.

Отже, після того, як ви підготуєте свою генеративну модель, візьміть висновок вашої генеративної моделі та використовуйте її як вхід до класифікатора / учня. Нехай помилка протікає по всій мережі, коли навчання триває, щоб ви могли змінювати рівень шару, вивчений на попередніх кроках.


0

Ви можете тренувати складені RBM на своїх зображеннях, а потім тренувати остаточну RBM на конкатенації виводу зі стека RBM та міток. Тоді ви можете фактично використовувати ОРМ для класифікації. Ця стаття Hinton ++ пояснює такий підхід Алгоритм швидкого навчання для мереж глибокої віри , також ви можете ознайомитись із цією демонстрацією

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.