Які відмінності між розрідженим кодуванням та автокодером?


35

Рідке кодування визначається як вивчення надмірно повного набору базових векторів для представлення вхідних векторів (<- чому ми цього хочемо). Які відмінності між розрідженим кодуванням та автокодером? Коли ми будемо використовувати розріджене кодування та автокодер?


1
Рідке кодування фактично являє собою специфічний тип автокодера, відомий як розріджений автокодер . Тож ви можете розглянути розріджене кодування як підмножину автокодерів, якщо захочете.
HelloGoodbye

Відповіді:


34

Знайти відмінності можна за допомогою перегляду моделей. Давайте спочатку розглянемо розріджене кодування.

Рідке кодування

Рідке кодування мінімізує об'єктивний де - матриця основ, H - матриця кодів і - матриця даних, які ми хочемо представити. реалізує торгівлю між розрідженістю та реконструкцією. Зауважимо, що якщо нам задано , то оцінка є легкою через найменші квадрати. WXλHW

Lsc=||WHX||22reconstruction term+λ||H||1sparsity term
WXλHW

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

Авто кодування

Авто-кодери - це сімейство непідконтрольних нейронних мереж. Їх досить багато, наприклад, глибокі автокодери або такі, що мають різні прийоми регуляризації - наприклад, деноізуючі, контрактивні, рідкісні. Навіть існують імовірнісні такі, як генеративні стохастичні мережі або варіаційний авто кодер. Найбільш абстрактною їх формою є але зараз ми підемо разом із набагато простішою: де - нелінійна функція, така як логістична сигмоїда .L ae = | | W σ ( W T X ) - X | | 2 σ σ ( x ) = 1

D(d(e(x;θr);θd),x)
Lae=||Wσ(WTX)X||2
σσ(x)=11+exp(x)

Схожість

Зверніть увагу, що виглядає майже як коли ми встановимо . Різниця обох полягає в тому, що i) автоматичні кодери не заохочують рідкість у загальному вигляді; ii) автокодер використовує модель для пошуку кодів, тоді як розріджене кодування робить це за допомогою оптимізації.L a e H=σ( W T X)LscLaeH=σ(WTX)

Для даних зображення, природно , введені авто кодеров і рідкісних кодувань , як правило, дають дуже схожий . Однак автоматичні кодери набагато ефективніші та легко узагальнені на значно складніші моделі. Наприклад, декодер може бути сильно нелінійним, наприклад, глибока нейронна мережа. Крім того, одна не прив’язана до квадратних втрат (від яких залежить оцінка для .)W L s cWWLsc

Крім того, різні методи регуляризації дають уявлення з різною характеристикою. Позначені автоматичні кодери також показали, що вони еквівалентні певній формі УЗМ тощо.

Але чому?

Якщо ви хочете вирішити проблему передбачення, вам не знадобляться автоматичні кодери, якщо у вас є лише невеликі мічені дані та безліч мічених даних. Тоді вам, як правило, буде краще тренувати глибокий автокодер і встановлювати лінійний SVM, а не тренувати глибоку нейронну сітку.

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


Дякую за вашу відповідь! Так це означає, що середнє розріджене кодування не повинно використовуватись ні в якому разі, а автокодер? Крім того, у розрідженому кодуванні повинен бути додатковий термін, який регулює W?
RockTheStar

Такого загального правила немає. SC має одну перевагу перед AE: кодування за допомогою оптимізації може бути дуже потужним.
байерж

Вибачте, ви можете детальніше розглянути це?
RockTheStar

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

1
Вибачте, щоб знову поставити це питання. Я думаю, що Autoencoder може також заохочувати рідкість, тобто розріджений автокодер.
RockTheStar

11

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

Рідке кодування визначається як вивчення надмірно повного набору базових векторів для представлення вхідних векторів (<- чому ми цього хочемо)

По-перше, принаймні з тих пір, як (Hubel & Wiesel, 1968) відомо, що в регіоні V1 є специфічні клітини, які максимально реагують на крайовий подразник (окрім того, що мають інші "корисні" властивості). Розріджене кодування - модель, яка добре пояснює багато спостережуваних характеристик цієї системи. Див. (Olshausen & Field, 1996) для більш детальної інформації.

По-друге, показано, що модель, яка описує розріджене кодування, є корисною технікою для вилучення функцій в машинному навчанні та дає хороші результати при передачі навчальних завдань. Райна та ін. (2007) показало, що набір "векторів основи" (функції, такі як ручки та ребра), засвоєні навчальним набором, що складається з написаних від руки символів, покращує класифікацію в рукописній задачі розпізнавання цифр. Пізніше моделі на основі розрідженого кодування використовувались для тренування "глибоких" мереж, складання шарів розріджених детекторів функцій для створення "розрідженої мережі глибоких переконань" (Lee et al., 2007). Зовсім недавно вражаючі результати розпізнавання зображень були досягнуті за допомогою моделей на основі розрідженого кодування для побудови мережі з декількома шарами (відомий «Мозок Google»), яка була здатна розрізнити зображення кота суто без нагляду (Le et al. , 2013) .

По-третє, можливо, можна використовувати вивчену основу для виконання стиснення. А ще не бачив, щоб ніхто насправді робив це.

Чим відрізняються розріджене кодування від автокодера?

Автокодер - модель, яка намагається реконструювати свій вхід, зазвичай, використовуючи якесь обмеження. Відповідно до Вікіпедії, це "штучна нейронна мережа, яка використовується для вивчення ефективного кодування". У визначенні autoencoder немає нічого, що вимагало б малої кількості. Рідкі контрактування на основі кодування є однією з доступних методик, але є й інші, наприклад, Позначення автокодер, Контрактні автокодери та БДМ. Все змушує мережу вивчати хороші уявлення про вхідні дані (які також зазвичай "рідкісні").

Коли ми будемо використовувати розріджене кодування та автокодер?

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


Ця відповідь має багато цікавих моментів та важливих посилань. Однак перший пункт неправильний . Рідке кодування та рідкісні автоматичні кодери - це різні звірі.
байерж

Де зазначено, що вони однакові? Скажіть, будь ласка, і я виправлю відповідь.
Саул Берардо

У першому реченні.
bayerj

"Рідке кодування - це лише одна з доступних методик для навчання автокодерам". Це речення не визначає "Рідке кодування" як те саме "звір", що і автокодер. У ньому йдеться про те, що між усіма доступними методиками для тренування автоінкодерів одна з них - «Розріджене кодування». Я погоджуюся, що речення має певну неоднозначність, яку, на мою думку, з’ясовує решта відповіді.
Саул Берардо

Ви кажете, що розріджене кодування - це метод підготовки автокодерів. Це явно не так, оскільки авто кодери мають явний декодер, який не реалізований за допомогою алгоритму оптимізації. Враховуючи довільний автоматичний кодер, ви не можете навчити його з розрідженим кодуванням.
bayerj

1

Рідкий кодер схожий на половину автокодера. Автокодер працює як:

input  =>  neural net layer  =>  hidden outputs => neural net layer => output

Для зворотного розповсюдження сигналом помилки, втратою є: вхід - вихід

Якщо ми застосуємо обмеження обмеженості на прихованих результатах, то більшість буде нулями, а кілька - 1s. Тоді другий шар по суті є сукупністю лінійних базових функцій, що додаються разом, відповідно до того, який із прихованих виходів є 1s.

У розрідженому кодуванні у нас є лише друга половина цього:

                                codes => neural net layer => output

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

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

Як ми отримуємо коди в розрідженому кодуванні? Ми повинні оптимізувати себе, що ми робимо за допомогою градієнтного спуску або подібного, щоб знайти набір кодів, що найкраще забезпечує вихід, що відповідає вхідному зображенню. Ми повинні робити це для кожного зображення, у тому числі для кожного тестового зображення, кожного разу.


0

Ви можете прочитати цей останній документ https://arxiv.org/abs/1708.03735v2 саме на цю ж тему. У цій роботі автори показують, що дійсно можна встановити автокодер таким чином, що словник основної істини є критичною точкою функції втрат цього автокодера.

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