Автокодувальник

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Схематична структура автоасоціатора з трьома повноз'єднаними прихованими шарами.

Автокодува́льник, автоасоціа́тор або мере́жа діа́боло[en] (англ. autoencoder, autoassociator, Diabolo network)[1]:19 — це штучна нейронна мережа, що використовується для навчання ефективних кодувань.[2][3] Метою автокодувальника є навчитися представленню (кодуванню) набору даних, зазвичай задля зниження розмірності[en]. Нещодавно концепція автокодувальника стала застосовуватися ширше для навчання породжувальних моделей даних.[4][5]

Структура[ред.ред. код]

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

Автокодувальник завжди складається з двох частин, кодувальника та декодувальника, які може бути визначено як переходи та , так, що:

В найпростішому випадку, коли є лише один прихований шар, автокодувальник бере вхід і відображує його на :

Його зазвичай називають кодом або латентними змінними (латентним представленням). Тут є поелементною активаційною функцією, такою як сигмоїдна функція або зрізаний лінійний вузол[en]. Після цього відображується на відбудову такої ж форми, як і :

Автокодувальники також тренують мінімізувати похибки відбудови (такі як середньоквадратичні похибки[en]):

Якщо простір ознак має меншу розмірність, ніж вхідний простір , то вектор ознак може розглядатися як стиснене представлення входу . Якщо приховані шари є більшими за вхідний шар, автокодувальник потенційно може навчитися тотожної функції, і стати марним. Тим не менш, експериментальні результати показали, що автокодувальники все одно можуть вчитися корисних ознак і в таких випадках.[1]:19

Різновиди[ред.ред. код]

Існують різні методики запобігання навчанню автокодувальниками тотожної функції та покращення їхньої здатності схоплювати важливу інформацію та навчатися цінніших представлень:

Знешумлювальний автокодувальник[ред.ред. код]

Знешумлювальні автокодувальники (англ. denoising autoencoder) беруть частково спотворений вхід, тренуючись відновлювати первинний неспотворений вхід. Цю методику було представлено з особливим підходом до доброго представлення.[6] Добре представлення є таким, що може бути надійно отримано зі спотвореного входу, і буде корисним для відновлення відповідного чистого входу. Це визначення містить наступні неявні припущення:

  • Представлення вищого рівня є відносно стабільними й стійкими до спотворення входу;
  • Потрібно виділяти ознаки, що є корисними для представлення розподілу входу.

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

Розріджений автокодувальник[ред.ред. код]

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

Розрідженість може досягатися за рахунок додаткових членів у функції втрат під час тренування (шляхом порівняння розподілу ймовірності активацій прихованого вузла з якимось низьким бажаним значенням),[7] або шляхом занулення вручну всіх крім декількох найсильніших активацій прихованого вузла (що називається k-розрідженим автокодувальником, англ. k-sparse autoencoder).[8]

Варіаційний автокодувальник[ред.ред. код]

Моделі варіаційних автокодувальників (ВАК, англ. variational autoencoder, VAE) успадковують архітектуру автокодування, але роблять сильні припущення щодо розподілу латентних змінних. Для навчання латентного представлення вони використовують варіаційний підхід[en], що призводить в результаті до додаткової складової втрат, і особливого алгоритму тренування, що називається стохастично-градієнтним варіаційним баєсовим методом (СГВБ, англ. Stochastic Gradient Variational Bayes, SGVB).[4] Він виходить із припущення, що дані було породжено орієнтованою графічною моделлю , і що кодувальник навчається наближення апостеріорного розподілу , де та позначають параметри кодувальника (розпізнавальної моделі) та декодувальника (породжувальної моделі). Мета варіаційного автокодувальника в цьому випадку має наступний вигляд:

Тут позначає відхилення Кульбака — Лейблера приблизного апостеріорного від апріорного, а другий член є очікуваною від'ємною помилкою відбудови. Апріорним над латентними змінними встановлюється відцентрована ізотропна ґаусіана .

Відношення з присіченим сингулярним розкладом матриці (ПСРМ)[ред.ред. код]

Якщо застосовуються лінійні активації, або лише єдиний сигмоїдний прихований шар, то оптимальний розв'язок для автокодувальника є тісно пов'язаним із методом головних компонент (МГК),[9] як було пояснено П'єром Бальді[en] в кількох працях.[10]

Тренування[ред.ред. код]

Алгоритм тренування автокодувальника може бути узагальнено як

Для кожного входу x,
Виконати прохід прямого поширення для обчислення активацій на всіх прихованих шарах, а потім і на вихідному шарі, щоби отримати вихід
Виміряти відхилення від входу (зазвичай застосовуючи квадратичну похибку[en]),
Зворотно поширити цю похибку мережею та виконати уточнення вагових коефіцієнтів.

Автокодувальники часто тренують із застосуванням одного з багатьох варіантів зворотного поширення (таких як метод спряжених градієнтів[en], найшвидший спуск тощо). І хоча вони часто є досить дієвими, існують фундаментальні проблеми із застосуванням зворотного поширення до тренування мереж із багатьма прихованими шарами. Щойно похибки зворотно поширюються до перших кількох шарів, вони стають дуже маленькими та незначними. Це означає, що мережа майже завжди навчатиметься відбудови усереднення всіх тренувальних даних.[джерело?] І хоча більш передові методи зворотного поширення (такі, як метод спряжених градієнтів) до певної міри можуть розв'язувати цю проблему, вони все одно призводять до дуже повільного процесу навчання, та слабких розв'язків. Цій проблемі можна зарадити застосуванням початкових вагових коефіцієнтів, що є наближенням кінцевого розв'язку. Процес пошуку цих початкових вагових коефіцієнтів часто називають попереднім тренуванням (англ. pretraining).

Джефрі Хінтон[en] розробив методику попереднього тренування для тренування багатошарових «глибинних» автокодувальників. Цей метод полягає в розгляді кожної сусідньої пари з двох шарів як обмеженої машини Больцмана, так, що попереднє тренування наближує добрий розв'язок, а потім у застосуванні методики зворотного поширення для тонкого налаштування результатів.[11] Ця модель має назву глибинна мережа переконань.

Примітки[ред.ред. код]

  1. а б Bengio, Y. (2009). Learning Deep Architectures for AI. Foundations and Trends in Machine Learning 2. doi:10.1561/2200000006.  (англ.)
  2. Modeling word perception using the Elman network, Liou, C.-Y., Huang, J.-C. and Yang, W.-C., Neurocomputing, Volume 71, 3150–3157 (2008), DOI:10.1016/j.neucom.2008.04.030 (англ.)
  3. Autoencoder for Words, Liou, C.-Y., Cheng, C.-W., Liou, J.-W., and Liou, D.-R., Neurocomputing, Volume 139, 84–96 (2014), DOI:10.1016/j.neucom.2013.09.055 (англ.)
  4. а б Auto-Encoding Variational Bayes, Kingma, D.P. and Welling, M., ArXiv e-prints, 2013 arxiv.org/abs/1312.6114 (англ.)
  5. Generating Faces with Torch, Boesen A., Larsen L. and Sonderby S.K., 2015 torch.ch/blog/2015/11/13/gan.html (англ.)
  6. Vincent, Pascal; Larochelle, Hugo; Lajoie, Isabelle; Bengio, Yoshua; Manzagol, Pierre-Antoine (2010). Stacked Denoising Autoencoders: Learning Useful Representations in a Deep Network with a Local Denoising Criterion. The Journal of Machine Learning Research 11. с. 3371–3408.  (англ.)
  7. sparse autoencoders.  (англ.)
  8. k-sparse autoencoder. arXiv:1312.5663.  (англ.)
  9. Bourlard, H.; Kamp, Y. (1988). Auto-association by multilayer perceptrons and singular value decomposition. Biological Cybernetics 59 (4–5). с. 291–294. PMID 3196773. doi:10.1007/BF00332918.  (англ.)
  10. Baldi et al., "Deep autoencoder neural networks for gene ontology annotation predictions". Proceedings of the 5th ACM Conference on Bioinformatics, Computational Biology, and Health Informatics. ACM, 2014. (англ.)
  11. Reducing the Dimensionality of Data with Neural Networks (Science, 28 July 2006, Hinton & Salakhutdinov) (англ.)

Див. також[ред.ред. код]