кочан Какво е Autoencoder? - Обединете.AI
Свържете се с нас
AI майсторски клас:

AI 101 г

Какво е Autoencoder?

mm
Обновено on

Ако преди сте чели за техники за учене без надзор, може да сте срещали термина „автоенкодер”. Автокодерите са един от основните начини за разработване на модели за обучение без надзор. И все пак какво точно е автоенкодер?

Накратко, автокодерите работят, като приемат данни, компресират и кодират данните и след това реконструират данните от кодираното представяне. Моделът се обучава, докато загубата се сведе до минимум и данните се възпроизведат възможно най-точно. Чрез този процес един автокодер може да научи важните характеристики на данните. Въпреки че това е кратко определение на автоенкодер, би било полезно да разгледаме по-отблизо автоенкодерите и да разберем по-добре как функционират. Тази статия ще се опита да демистифицира автоенкодерите, обяснявайки архитектурата на автоенкодерите и техните приложения.

Какво е Autoencoder?

Автокодери са невронни мрежи. Невронните мрежи са съставени от множество слоеве и определящият аспект на автокодера е, че входните слоеве съдържат точно толкова информация, колкото изходния слой. Причината, поради която входният слой и изходният слой имат абсолютно същия брой единици, е, че автокодерът цели да възпроизведе входните данни. Той извежда копие на данните, след като ги анализира и реконструира по неконтролиран начин.

Данните, които се движат през автокодера, не се картографират направо от вход към изход, което означава, че мрежата не просто копира входните данни. Има три компонента на автокодера: кодираща (входяща) част, която компресира данните, компонент, който обработва компресираните данни (или пречка) и декодерна (изходна) част. Когато данните се подават в автоенкодер, те се кодират и след това се компресират до по-малък размер. След това мрежата се обучава на кодираните/компресирани данни и извежда повторно създаване на тези данни.

Така че защо бихте искали да обучите мрежа просто да реконструира данните, които са й дадени? Причината е, че мрежата научава „същността“ или най-важните характеристики на входните данни. След като сте обучили мрежата, може да се създаде модел, който може да синтезира подобни данни, с добавяне или изваждане на определени целеви характеристики. Например, можете да обучите автоматичен енкодер на зърнести изображения и след това да използвате обучения модел, за да премахнете зърнистостта/шума от изображението.

Архитектура на автокодера

Нека да разгледаме архитектурата на автокодера. Тук ще обсъдим основната архитектура на автокодера. Има вариации на тази обща архитектура, които ще обсъдим в раздела по-долу.

Снимка: Michela Massi чрез Wikimedia Commons, (https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

Както бе споменато по-горе, автокодерът може по същество да бъде разделен на три различни компонента: енкодер, пречка и декодер.

Енкодерната част на автоматичния енкодер обикновено е пряка, гъсто свързана мрежа. Целта на кодиращите слоеве е да вземат входните данни и да ги компресират в латентно пространствено представяне, генерирайки ново представяне на данните с намалена размерност.

Кодовите слоеве или тесното място се занимават с компресираното представяне на данните. Кодът на тесните места е внимателно проектиран, за да определи най-подходящите части от наблюдаваните данни или казано по друг начин характеристиките на данните, които са най-важни за реконструкцията на данни. Целта тук е да се определи кои аспекти от данните трябва да бъдат запазени и кои могат да бъдат изхвърлени. Кодът на тесните места трябва да балансира две различни съображения: размер на представянето (колко компактно е представянето) и уместност на променливата/функцията. Тесното място извършва поелементно активиране на теглата и отклоненията на мрежата. Слоят с тесни места също понякога се нарича латентно представяне или латентни променливи.

Декодерният слой е това, което отговаря за вземането на компресираните данни и обратното им преобразуване в представяне със същите размери като оригиналните, непроменени данни. Преобразуването се извършва с латентното пространствено представяне, което е създадено от енкодера.

Най-основната архитектура на автокодера е архитектура с подаване напред, със структура, подобна на еднослоен перцептрон, използван в многослойни персептрони. Подобно на обикновените невронни мрежи с подаване напред, автоматичният енкодер се обучава чрез използване на обратно разпространение.

Атрибути на автокодера

Има различни видове автоенкодери, но всички те имат определени свойства, които ги обединяват.

Автоенкодерите се учат автоматично. Те не изискват етикети и ако са дадени достатъчно данни, е лесно да накарате автоматичен енкодер да достигне висока производителност при конкретен вид входни данни.

Автоенкодерите са специфични за данните. Това означава, че те могат да компресират само данни, които са много подобни на данните, на които автокодерът вече е бил обучен. Автоенкодерите също са със загуби, което означава, че изходите на модела ще бъдат влошени в сравнение с входните данни.

Когато проектират автоенкодер, инженерите по машинно обучение трябва да обърнат внимание на четири различни хиперпараметъра на модела: размер на кода, номер на слой, възли на слой и функция на загуба.

Размерът на кода определя колко възли започват средната част на мрежата и по-малкото възли компресират данните повече. В дълбокия автоматичен енкодер, докато броят на слоевете може да бъде произволен брой, който инженерът сметне за подходящ, броят на възлите в слоя трябва да намалява с напредването на енкодера. Междувременно обратното важи в декодера, което означава, че броят на възлите на слой трябва да се увеличава, когато слоевете на декодера се приближават до крайния слой. И накрая, функцията на загубите на автокодера обикновено е или двоична кръстосана ентропия, или средноквадратична грешка. Двоичната кръстосана ентропия е подходяща за случаи, когато входните стойности на данните са в диапазона 0 – 1.

Видове автокодери

Както бе споменато по-горе, съществуват вариации на класическата архитектура на автокодера. Нека разгледаме различните архитектури на автокодера.

Оскъден

Снимка: Michela Massi чрез Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)

Докато автоенкодерите обикновено имат тясно място, което компресира данните чрез намаляване на възлите, разреден автоенкодерса алтернатива на този типичен оперативен формат. В разредена мрежа скритите слоеве поддържат същия размер като слоевете на енкодера и декодера. Вместо това, активациите в рамките на даден слой се наказват, като го настройват така, че функцията за загуба улавя по-добре статистическите характеристики на входните данни. Казано по друг начин, докато скритите слоеве на редкия автоенкодер имат повече единици от традиционния автоенкодер, само определен процент от тях са активни във всеки даден момент. Най-въздействащите функции за активиране се запазват, а други се игнорират и това ограничение помага на мрежата да определи само най-важните характеристики на входните данни.

Контрактивен

Контрактивни автоенкодери са проектирани да бъдат устойчиви на малки вариации в данните, като поддържат последователно представяне на данните. Това се постига чрез прилагане на наказание към функцията за загуба. Тази техника за регулиране се основава на нормата на Фробениус на якобиевата матрица за активациите на входния енкодер. Ефектът от тази техника за регулиране е, че моделът е принуден да конструира кодиране, където подобни входове ще имат подобни кодировки.

Convolutional

Конволюционни автоенкодери кодират входни данни, като разделят данните на подсекции и след това преобразуват тези подсекции в прости сигнали, които се сумират, за да се създаде ново представяне на данните. Подобно на конволюционните невронни мрежи, конволюционният автоенкодер е специализиран в изучаването на данни за изображения и използва филтър, който се премества в цялото изображение секция по секция. Кодировките, генерирани от кодиращия слой, могат да се използват за реконструиране на изображението, отразяване на изображението или промяна на геометрията на изображението. След като филтрите бъдат научени от мрежата, те могат да се използват за всеки достатъчно подобен вход за извличане на характеристиките на изображението.

Обезшумяване

Снимка: MAL чрез Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

Демонтаж на автоенкодери въвеждат шум в кодирането, което води до кодиране, което е повредена версия на оригиналните входни данни. Тази повредена версия на данните се използва за обучение на модела, но функцията за загуба сравнява изходните стойности с оригиналния вход, а не с повредения вход. Целта е мрежата да може да възпроизведе оригиналната, неповредена версия на изображението. Чрез сравняване на повредените данни с оригиналните данни, мрежата научава кои характеристики на данните са най-важни и кои характеристики са маловажни/повредени. С други думи, за да може един модел да обезшуми повредените изображения, той трябва да е извлякъл важните характеристики на данните за изображението.

Вариационен

Вариационни автоенкодери действат, като правят предположения за това как са разпределени латентните променливи на данните. Вариационен автокодер произвежда вероятностно разпределение за различните характеристики на образите за обучение/латентните атрибути. При обучение енкодерът създава латентни разпределения за различните характеристики на входните изображения.

 

Тъй като моделът научава характеристиките или изображенията като гаусови разпределения вместо дискретни стойности, той може да се използва за генериране на нови изображения. Разпределението на Гаус се взема за извадка, за да се създаде вектор, който се подава в декодиращата мрежа, която изобразява изображение въз основа на този вектор от проби. По същество моделът научава общи характеристики на образите за обучение и им приписва известна вероятност те да се появят. Вероятностното разпределение може след това да се използва за обратно проектиране на изображение, генерирайки нови изображения, които приличат на оригиналните, тренировъчни изображения.

При обучение на мрежата, кодираните данни се анализират и моделът за разпознаване извежда два вектора, извличайки средната стойност и стандартното отклонение на изображенията. Въз основа на тези стойности се създава разпределение. Това се прави за различните латентни състояния. След това декодерът взема произволни проби от съответното разпределение и ги използва, за да реконструира първоначалните входове към мрежата.

Приложения за автоматично кодиране

Автоенкодерите могат да се използват за широк разнообразие от приложения, но те обикновено се използват за задачи като намаляване на размерността, премахване на шум на данни, извличане на характеристики, генериране на изображения, предсказване на последователност към последователност и системи за препоръки.

Обезшумяването на данни е използването на автоматични енкодери за отстраняване на зърнистостта/шума от изображенията. По същия начин, автоматичните енкодери могат да се използват за поправяне на други видове повреди на изображения, като замъглени изображения или изображения с липсващи секции. Намаляването на размерността може да помогне на мрежите с голям капацитет да научат полезни характеристики на изображенията, което означава, че автоенкодерите могат да се използват за увеличаване на обучението на други видове невронни мрежи. Това важи и за използването на автоенкодери за извличане на функции, тъй като автоенкодерите могат да се използват за идентифициране на характеристики на други набори от данни за обучение за обучение на други модели.

По отношение на генерирането на изображения, автокодерите могат да се използват за генериране на фалшиви човешки изображения или анимирани герои, което има приложения при проектирането на системи за разпознаване на лица или автоматизиране на определени аспекти на анимацията.

Моделите за предсказване от последователност към последователност могат да се използват за определяне на времевата структура на данните, което означава, че може да се използва автокодиращо устройство за генериране на следващата дори в последователност. Поради тази причина може да се използва автоматичен енкодер за генериране на видеоклипове. И накрая, дълбоките автоматични енкодери могат да се използват за създаване на системи за препоръки чрез подбиране на модели, свързани с потребителския интерес, като енкодерът анализира данните за ангажираността на потребителите, а декодерът създава препоръки, които отговарят на установените модели.

Блогър и програмист със специалности в Machine Learning намлява Дълбоко обучение теми. Даниел се надява да помогне на другите да използват силата на ИИ за социално благо.