Інтуїція за обмеженою машиною Больцмана (МБР)


15

Я пройшов курс Нейронних мереж Джеффа Гінтона на Coursera, а також через ознайомлення з машинами з обмеженим набором болтцмана , все ще не зрозумів інтуїції, що стоїть за RBM.

Навіщо нам потрібно обчислювати енергію в цій машині? І в чому полягає ймовірність використання в цій машині? Я також побачив це відео . У відео він просто написав рівняння ймовірності та енергії перед кроками обчислення і, схоже, ніде його не використовував.

Додавши до сказаного, я не впевнений, в чому полягає функція ймовірності?


Я спробував виправити це питання, але думаю, що над цим потрібно більше працювати. Ви повинні пояснити , що ви дійсно розумієте, і більш конкретно , де ви застрягли, в іншому випадку питання є надто широким.
Ніл Слейтер

Єдине, що потрапило в голову - це три етапи, спочатку позитивна фаза, потім негативна фаза, а потім реконструкція ваг. Але як щодо енергії та функції ймовірності? в чому тут користь? і скільки разів нам доводиться робити цей процес (позитивна фаза -> негативна фаза> реконструкція ваг)?
Born2Code

Відповіді:


5

RBM - цікавий звір. Щоб відповісти на ваше запитання і надітись на них моєю пам’яттю, я вийду RBM і поговорять через виведення. Ви згадали, що ви плутаєте ймовірність, тому моє виведення буде з точки зору спроби максимально збільшити ймовірність. Тож почнемо.

RBM містять два різних набори нейронів, видимих ​​і прихованих, я позначу їх і h відповідно. Враховуючи конкретну конфігурацію v і h , ми відображаємо її простір ймовірностей.vhvh

p(v,h)=eE(v,h)Z

Є ще кілька речей, які слід визначити. Сурогатну функцію, яку ми використовуємо для відображення конкретної конфігурації в просторі ймовірностей, називають енергетичною функцією . Z константа нормирующий множник , щоб гарантувати , що ми на самому ділі карту на імовірнісному просторі. Тепер давайте перейдемо до того, що ми насправді шукаємо; ймовірність набору видимих ​​нейронів, іншими словами, ймовірність наших даних. Z = v V h H e - E ( v , h ) p ( v )E(v,h)Z

Z=vVhHeE(v,h)
p(v)=hHp(v,h)=hHeE(v,h)vVhHeE(v,h)

Хоча в цьому рівнянні багато термінів, воно просто зводиться до написання правильних рівнянь ймовірності. Будемо сподіватися, що до сих пір, це допомогло вам зрозуміти , чому нам потрібна функція енергії , щоб обчислити вірогідність того , чи то , що робиться частіше ненормованого ймовірності . Ненормалізована ймовірність використовується тому, що обчислювати функцію розділення Z дуже дорого.p(v)ZZ

Тепер перейдемо до фактичної фази навчання КЗП. Для максимальної імовірності для кожної точки даних нам потрібно зробити крок градієнта, щоб зробити . Для отримання градієнтних виразів потрібні деякі математичні акробатики. Перше, що ми робимо - це взяти журнал p ( v ) . З цього моменту ми будемо працювати в просторі ймовірностей журналу, щоб зробити математику здійсненною.p(v)=1p(v)

Візьмемо градієнт відносно параметри в p ( v )

log(p(v))=log[hHeE(v,h)]log[vVhHeE(v,h)]
p(v)

log(p(v))θ=1hHeE(v,h)hHeE(v,h)E(v,h)θ+1vVhHeE(v,h)vVhHeE(v,h)E(v,h)θ

Тепер я зробив це на папері і записав півфінальне рівняння, щоб не витрачати багато місця на цьому сайті. Я рекомендую вам вивести ці рівняння самостійно. Зараз я напишу деякі рівняння, які допоможуть продовжити наше виведення. Зауважимо, що: , p ( v ) = h H p ( v , h ) і що p ( h | v ) =Zp(v,h)=eE(v,h)p(v)=hHp(v,h)p(h|v)=p(v,h)p(h)

log(p(v))θ=1p(v)hHp(v,h)E(v,h)θ+vVhHp(v,h)E(v,h)θlog(p(v))θ=hHp(h|v)E(v,h)θ+vVhHp(v,h)E(v,h)θ

І ось ми дістали, ми отримали максимальну оцінку ймовірності для УЗМ, якщо ви хочете, ви можете написати два останні терміни, очікуючи відповідних термінів (умовна та спільна ймовірність).

Примітки про енергетичну функцію та стохастичність нейронів.

Як ви бачите вище в моєму виведенні, я визначив визначення функції енергії досить невиразним. Причиною цього є те, що багато різних версій МПУ реалізують різні енергетичні функції. Той, що Хінтон описує у лекції, зв'язаній вище, і показаний @ Laurens-Meeus, є:

E(v,h)=aTvbThvTWh.

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

log(p(v))θ=Ep(h|v)E(v,h)θ+Ep(v,h)E(v,h)θ

Очікування першого терміну насправді легко підрахувати, і це був геній, що стоїть за УЗМ. Обмежуючи зв'язок, умовне очікування просто перетворюється в прямому напрямку поширення ШПМ із зафіксованими видимими одиницями. Це так звана фаза неспання в машинах Больцмана. Зараз обчислити другий термін набагато складніше, і зазвичай для цього використовують методи Монте-Карло. Запис градієнта через середній пробіг Монте-Карло:

log(p(v))θE(v,h)θp(h|v)+E(v,h)θp(v,h)

Обчислити перший термін не складно, як зазначено вище, тому Монте-Карло робиться над другим терміном. Методи Монте-Карло використовують випадкові послідовні вибірки розподілу, щоб обчислити очікування (суму чи інтеграл). Тепер цей випадковий вибірковий вибір у класичних УЗМ визначається як встановлення одиниці або 0, або 1, виходячи зі своєї ймовірності стохастично, іншими словами, отримують випадкове рівномірне число, якщо воно менше, ніж ймовірність нейронів, встановила його 1, якщо воно більше, ніж встановити його на 0.


Як ми також робимо прихований шар двійковим? Bcoz після операції функції активації ми отримували б значення в діапазоні між 0 і 1.
Born2Code

Зазвичай це робиться шляхом встановлення порогу активації. Все, що перевищує 0,5, стане рівним 1, усе, що нижче, буде нульовим.
Армен Агаджанян

Але в цьому посиланні , в розділі 3.1: Хінтон заявив, що "прихована одиниця включається, якщо ця ймовірність більша за випадкове число, рівномірно розподілене між 0 і 1". Що це насправді означає? А також у цьому посиланні вони говорять: "Тоді j-та одиниця увімкнена, якщо при виборі s рівномірно розподіленого випадкового числа між 0 та 1 ми виявимо, що її значення менше знаку [j]. Інакше воно вимкнено". Я цього не зрозумів.
Born2Code

????? Як сказати, увімкнено чи вимкнено цей конкретний пристрій?
Born2Code

Я додав редагування. Я пропоную прочитати методи Монте-Карло, оскільки стохастичність цього алгоритму походить звідти.
Армен Агаджанян

5

На додаток до існуючих відповідей, я хотів би поговорити про цю енергетичну функцію та інтуїцію, що стоїть за цим. Вибачте, якщо це трохи довго і фізично.

Енергетична функція описує так звану модель Ізінга , яка є моделлю феромагнетизму з точки зору статистичної механіки / квантової механіки. У статистичній механіці ми використовуємо так званий гамільтонівський оператор для опису енергії квантово-механічної системи. І система завжди намагається бути в державі з найнижчою енергією.

Тепер модель Ізінга в основному описує взаємодію електронів зі спіном σк або +1, або -1, за наявності зовнішнього магнітного поля год. Взаємодія між двома електронамиi і j описується коефіцієнтом Jij. Ця гамільтонова (або енергетична функція) є

Н^=i,jJijσiσj-мкjгодjσj
де Н^позначає гамільтоніан. Стандартна процедура переходу від енергетичної функції до ймовірності того, що система перебуває у заданому стані (тобто тут: конфігурація спінів, наприкладσ1=+1,σ2=-1,...) полягає у використанні розподілу Больцмана, який говорить про температуру Т, ймовірність pi системи бути в стані i з енергією Еi дається
pi=досвід(-Еi/кТ)iдосвід(-Еi/кт)
На цьому етапі ви повинні визнати, що ці два рівняння є абсолютно такими ж рівняннями, як у відеофільмах Гінтона та відповіді Армена Агаджаняна . Це призводить нас до питання:

Що стосується ПДЧ до цієї квантово-механічної моделі феромагнетизму?

Нам потрібно використовувати кінцеву фізичну величину: ентропію. Як ми знаємо з термодинаміки, система осідає в стані з мінімальною енергією, що також відповідає стану з максимальною ентропією.

Як ввів Шенон у 1946 році, в теорію інформації, ентропію Н також може розглядатися як міра змісту інформації в Х, задана наступною сумою для всіх можливих станів Х:

Н(Х)=-iП(хi)журналП(хi)
Тепер найефективніший спосіб кодування інформаційного вмісту в Х, полягає у використанні способу, який максимально збільшує ентропію Н.

Нарешті , саме тут ми повертаємося до УЗМ: В основному, ми хочемо, щоб ця МПК кодувала якомога більше інформації. Отже, як ми максимізуємо (інформаційно-теоретичну) ентропію в нашій RBM-системі. Як запропонував Хопфілд у 1982 році, ми можемо максимально збільшити інформаційно-теоретичну ентропію точно так само, як фізичну ентропію: моделюючи МПУ як модель Ізінга вище, і використовувати ті самі методи, щоб мінімізувати енергію. І саме тому нам потрібна ця дивна енергетична функція в УПМ!

Приємне математичне виведення у відповіді Армена Агаджаняна показує все, що нам потрібно зробити, щоб мінімізувати енергію, таким чином максимізуючи ентропію та зберігаючи / економлячи якомога більше інформації в нашій МБР.

PS: Будь ласка, шановні фізики, вибачте будь-які неточності у виведенні цього інженера. Не соромтесь коментувати або виправляти неточності (або навіть помилки).


Я бачив це відео , просто дивіться відео з цього моменту. як ви отримаєте цей вибірковий номер? чи щойно ми запустили rand () в matlab і отримаємо його? і тоді це було б різним для кожного h (i). О, ооо! Я не думаю, що машина навчиться правильно.
Born2Code

@ Born2Code - це ще одне питання. Чи можете ви опублікувати це питання як нове запитання на цьому веб-сайті? Спробуйте додати рівняння, про які ви говорите, до нового питання та поясніть, які частини ви не розумієте.
hbaderts


0

Відповідь @Armen дала собі багато розумінь. Однак на одне питання так і не відповіли.

Мета - максимально збільшити ймовірність (або ймовірність) v. Це пов'язано з мінімізацією енергетичної функції, пов'язаної зv і год:

Е(v,год)=-аТv-бТгод-vТWгод

Наші змінні є а, б і W, які мають пройти навчання. Я впевнений, що ця підготовка стане кінцевою метою МП.


Як ми також робимо прихований шар двійковим? Bcoz після роботи функції активації ми отримаємо значення в діапазоні між 0 і 1.
Born2Code

@ Born2Code: Функція активації дає вам ймовірність того, що нейрон має значення 1. Отже, щоб "зробити його двійковим", ви вибираєте з ймовірностей, обчислених для будь-якогогод або v- інакше кажучи, ви буквально робите щось на кшталт h_bin = (rand() < h_val) ? 1 : 0- це потрібно робити для кожного нейрона, і кожен раз, коли вам потрібен зразок.
Ніл Слейтер

@NeilSlater: але чому випадкове число? Також, чи слід генерувати випадковий вибір для кожної ітерації чи однакове число слід використовувати для всіх ітерацій? ще один серйозний сумнів: скільки ітерацій потрібно зробити? У мене є навчальний набір V, який має лише один вектор, тобто v1. З v1, скільки разів я повинен повторювати?
Born2Code

@NeilSlater: Ще одне сумнів - чи варто однакове випадкове число порівнювати з усіма значеннями прихованого шару? Я знаю, що це таке ідіотське питання, але все ж
Born2Code

1
Це випадкове число, оскільки саме так ви вирішуєте ймовірності до двійкових значень. Це різне число для кожного нейрона всередині hабо v- ви відбираєте вектор бінарних значень для hабо vдля того, щоб генерувати приклад, який мережа "вважає" існує - тобто приклад, який має високі статистичні шанси бути представником навчальний набір. Під час тренувань ви визначаєте, наскільки вона відповідає наявному прикладу тренувань, і відповідно регулюєте ваги.
Ніл Слейтер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.