2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Практическое применение нейросетевых автокодировщиков
Сообщение30.12.2016, 21:55 


07/10/15

2400
Доброго времени суток,
недавно столкнулся с проблемой сокращения размерности данных,
до сих пор использовал для этого PCA и в принципе получил определённый положительный результат.
Разумеется достигнутое хотелось бы улучшить и одним из перспективных путей такого улучшения, как по моим собственным соображений, так и судя по различным публикациям, является использование нейросетевых автокодировщиков.

Однако при практической реализации автокодировщика возникает ряд серьёзных проблем, решить которые мне пока не удалось.
В литературе я не нашел конкретных указаний относительно структуры нейросети. Единственное, что понятно - первый слой должен состоять из сигмовидных нейронов и их число должно быть не меньше числа входов (если их меньше - то результат будет аналогичен предварительному сокращению размерности с помощью PCA). Второй слой в принципе может быть как сигмовидным, так и линейным, а число нейронов в нём должно быть меньше чем в первом (за счёт этого собственно и осуществляется сокращение размерности данных). Дальше уже не совсем понятно.
Если второй слой линейный - то для восстановления исходных данных потребуется 2 слоя. Первый из них сигмовидный, число нейронов в нём, очевидно, должно быть не меньше чем в первом. И последний слой - линейный.
Если же второй слой сигмовидный, то для восстановления может быть достаточно и 1-го линейного слоя (при этом сеть работает быстрее и нужно намного меньше памяти).

Численные эксперименты в Matlab Neural Network Toolbox не дали ничего хорошего. Дело в том, что ни одна из построенных мной сетей не смогла восстановить свои входы с приемлемой точностью. Даже если число нейронов второго слоя было равно числу входов, качество восстановления (в сравнении с PCA) было очень плохим, не говоря уже об "узком" горле.

В чём здесь может быть дело?
для обучения сети использовался алгоритм сопряженных градиентов (Флетчера - Риваса),
так же использовался gda (адаптивный градиентный алгоритм),
инициализация весов сети - случайная,

многократный запуск алгоритма при фиксированной структуре сети даёт примерно одинаковую точность восстановления, т.е. он всё время сходится к одному и тому же решению.

С нетерпением жду ответов и комментариев

 Профиль  
                  
 
 Re: Практическое применение нейросетевых автокодировщиков
Сообщение01.01.2017, 21:19 


01/01/17
2
Выбор архитектуры зависит от того с какими данными вы работаете, это картинки (2d, 3d), временные ряды (1d), или просто набор каких-то признаков?
Использовать сигмовидную функцию активации внутри сети - не самая хорошая идея. Лучше начать с ReLU
Я не знаю что именно пошло не так, могу только предложить найти сначала самую простую вещь которая работает, потом усложнять. Например, попробуйте обучить автоэнкодер с единственным линейным полносвязным слоем. Единичную матрицу-то этот тулбокс сможет выучить?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group