Останнім часом я читав про глибоке навчання, і мене бентежить термін (або, скажімо, технології). Яка різниця між
- Конволюційні нейронні мережі (CNN),
- Машини з обмеженим набором Больцмана (RBM) та
- Авто-кодери?
Останнім часом я читав про глибоке навчання, і мене бентежить термін (або, скажімо, технології). Яка різниця між
Відповіді:
Autoencoder - це проста тришарова нейронна мережа, де вихідні блоки безпосередньо підключені назад до одиниць введення . Наприклад, у такій мережі:
output[i]
має край назад input[i]
для кожного i
. Зазвичай кількість прихованих одиниць набагато менша за кількість видимих (вхід / вихід). В результаті, коли ви передаєте дані через таку мережу, вона спочатку стискає (кодує) вхідний вектор, щоб «поміститися» у менші уявлення, а потім намагається відновити (декодувати) його назад. Завдання навчання полягає в тому, щоб мінімізувати помилку або реконструкцію, тобто знайти найбільш ефективне компактне подання (кодування) для вхідних даних.
RBM поділяє подібну ідею, але використовує стохастичний підхід. Замість детермінованих (наприклад, логістичних чи ReLU) він використовує стохастичні одиниці з особливим (як правило, двійковим гауссовим) розподілом. Процедура навчання складається з декількох етапів відбору проб Гіббса (розповсюдження: зразки прихованих обчислень, видимість; реконструкція: вибірка вибірок, заданих прихованими; повтор) та коригування ваг, щоб мінімізувати помилку відновлення.
Інтуїція, що стоїть за RBM, полягає в тому, що є деякі видимі випадкові змінні (наприклад, огляди фільмів від різних користувачів) та деякі приховані змінні (наприклад, фільми жанрів чи інші внутрішні особливості), а завдання тренінгу - з’ясувати, як насправді ці два набори змінних пов'язані між собою (докладніше про цей приклад можна знайти тут ).
Конволюційні нейронні мережі дещо схожі на ці два, але замість вивчення єдиної глобальної вагової матриці між двома шарами вони спрямовані на пошук набору локально пов'язаних нейронів. CNN в основному використовуються для розпізнавання зображень. Їх назва походить від оператора "згортка" або просто "фільтрувати". Коротше кажучи, фільтри - це простий спосіб виконати складну операцію за допомогою простої зміни ядра згортки. Застосуйте ядро розмитості Гаусса, і ви згладите його. Застосуйте ядро Canny, і ви побачите всі краї. Застосуйте ядро Gabor, щоб отримати функції градієнта.
(зображення звідси )
Метою конволюційних нейронних мереж є не використання одного із заздалегідь визначених ядер, а натомість вивчення ядер, орієнтованих на дані . Ідея така ж, як і з автокодерами або RBM - перекладіть багато функцій низького рівня (наприклад, відгуки користувачів або пікселі зображень) на стиснене зображення високого рівня (наприклад, фільми жанрів або ребер) - але тепер ваги вивчаються лише з нейронів, які є просторово близькі один до одного.
Усі три моделі мають свої плюси та мінуси використання, але, мабуть, найважливішими властивостями є:
UPD.
Зменшення розмірності
найважливіші компоненти потім використовуються як нова основа. Кожен з цих компонентів може розглядатися як функція високого рівня, що описує вектори даних краще, ніж оригінальні осі.
Глибокі архітектури
Але ви не просто додаєте нові шари. На кожному шарі ви намагаєтеся дізнатись якнайкраще представлення даних із попереднього:
На зображенні вище є приклад такої глибокої мережі. Починаємо зі звичайних пікселів, продовжуємо з простих фільтрів, потім з елементами обличчя і, нарешті, закінчуємо цілими гранями! У цьому суть глибокого навчання .
Тепер зауважимо, що в цьому прикладі ми працювали з даними зображень і послідовно займали все більші та більші площі просторово близьких пікселів. Це не схоже? Так, тому що це приклад глибокої згорткової мережі. Нехай це базується на автокодерах або УЗМ, він використовує згортку, щоб підкреслити важливість місцевості. Ось чому CNN дещо відрізняються від автокодер і RBM.
Класифікація
Жодна із згаданих тут моделей сама по собі не працює як алгоритми класифікації. Натомість вони використовуються для попередньої перевірки - вивчення перетворень із низькорівневого та важкого для споживання уявлення (як пікселі) у високого рівня. Після того, як глибока (або, можливо, не така глибока) мережа перевірена, вхідні вектори перетворюються для кращого представлення, і отримані вектори, нарешті, переходять до реального класифікатора (наприклад, SVM або логістична регресія). На зображенні вище це означає, що в самому низу є ще один компонент, який насправді робить класифікацію.
Всі ці архітектури можна інтерпретувати як нейронні мережі. Основна відмінність AutoEncoder від Convolutional Network - рівень мережевої проводки. Конволюційні мережі в значній мірі є провідними. Операція згортання в значній мірі локальна в області зображення, що означає набагато більшу кількість одиниць у кількості підключень у нейронній мережі. Операція об'єднання (підсимуляція) в області зображення також є провідним набором нейронних з'єднань в нейронній області. Такі топологічні обмеження в структурі мережі. Враховуючи такі обмеження, навчання CNN вивчає найкращі ваги для цієї операції згортання (на практиці існує кілька фільтрів). CNN зазвичай використовуються для зображень та мовних завдань, де згорткові обмеження є хорошим припущенням.
Навпаки, автокодери майже нічого не вказують про топологію мережі. Вони набагато загальніші. Ідея полягає у тому, щоб знайти хорошу нейронну трансформацію для відновлення введення. Вони складаються з кодера (проектує вхід у прихований шар) та декодера (відновлює прихований шар для виведення). Прихований шар засвоює набір прихованих ознак або прихованих факторів. Лінійні автокодери охоплюють те саме підпростір, що і PCA. Враховуючи набір даних, вони дізнаються кількість баз для пояснення основної структури даних.
ОРМ також є нейронною мережею. Але інтерпретація мережі зовсім інша. МБР інтерпретують мережу як не подачу, а двосторонній графік, де ідея полягає у спільному розподілі ймовірностей прихованих та вхідних змінних. Вони розглядаються як графічна модель. Пам'ятайте, що і AutoEncoder, і CNN вивчають детерміновану функцію. З іншого боку, МПУ - це генеративна модель. Він може генерувати зразки з вивчених прихованих уявлень. Існують різні алгоритми для підготовки КВМ. Однак, наприкінці дня, вивчивши ПЗМ, ви можете використовувати його мережеві ваги, щоб інтерпретувати його як мережу подачі даних.
RBM можна розглядати як якийсь імовірнісний автоматичний кодер. Власне, було показано, що за певних умов вони стають рівнозначними.
Тим не менш, набагато важче показати цю рівноцінність, ніж просто повірити, що вони різні звірі. Дійсно, мені важко знайти багато подібності серед трьох, як тільки я починаю пильно придивлятися.
Наприклад, якщо ви записуєте функції, реалізовані автоматичним кодером, RBM та CNN, ви отримуєте три абсолютно різних математичних вирази.
Я не можу сказати вам багато про RBM, але autoencoder та CNN - це два різні речі. Автоенкодер - це нейронна мережа, яка навчається без нагляду. Мета автокодера - знайти більш компактне подання даних шляхом вивчення кодера, який перетворює дані у відповідне їх компактне подання, та декодера, який реконструює вихідні дані. Частина кодер автоінкодерів (і спочатку RBM) використовувалася для вивчення хороших початкових ваг більш глибокої архітектури, але є й інші програми. По суті, автокодер вивчає кластеризацію даних. На відміну від цього, термін CNN відноситься до типу нейронної мережі, яка використовує оператор згортки (часто 2D згортку, коли він використовується для завдань обробки зображень) для отримання функцій з даних. У процесі обробки зображень фільтри, які переплітаються із зображеннями, навчаються автоматично для вирішення заданої задачі, наприклад, завдання класифікації. Незалежно від того, чи є критерієм навчання регресія / класифікація (контрольована) чи реконструкція (непідконтрольна), це не пов'язане з ідеєю згортків як альтернативи афінним перетворенням. Ви також можете мати CNN-автокодер.