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, Супермодераторы



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

Сейчас этот форум просматривают: worm2


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

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