Ограниченные машины Больцмана против многослойных нейронных сетей

22

Я давно хотел поэкспериментировать с нейронной сетью для решения проблемы классификации, с которой я столкнулся. Я столкнулся с бумагами, которые говорят о УКР. Но из того, что я могу понять, они ничем не отличаются от наличия многослойной нейронной сети. Это точно?

Более того, я работаю с R и не вижу никаких готовых пакетов для RBM. Я наткнулся на литературу, в которой говорится о сетях глубокого обучения, которые в основном представляют собой многоступенчатые RBM, но не уверен, стоит ли усилий по их внедрению в R. У кого-нибудь есть указания? Благодарность

брокколи
источник
3
Они являются различными , чем многослойные сети обученных с backprop. Вот некоторые ресурсы для всех видов нейронных сетей: stats.stackexchange.com/a/36257/13669
Stumpy Joe Pete

Ответы:

21

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

Лучший указатель, который я могу придумать, - это курс Coursera, который проводит Джеффри Хинтон, один из людей, ответственных за УОКР:

https://class.coursera.org/neuralnets-2012-001/class/index

видео на RBMs и Denoising Autoencoders являются ценным учебным ресурсом для всех, кто интересуется этой темой.

Что касается реализации в R, я тоже не знаю, но если вы хотите реализовать ее, лучше не использовать чистый R (если ваши данные не слишком большие). Обучение RBM занимает довольно много времени, и если вы используете чистый R вместо R с C, он может значительно возрасти.

sjm.majewski
источник
1
Я могу поговорить о проблемах с производительностью R, так как я написал несколько RBM. Подавляющее большинство времени вычислений тратится на умножение матриц, которое, как правило, медленнее в R, чем в других языках (возможно, в 3 или 5 раз). Перекомпиляция R для вашей собственной системы с настраиваемой BLAS (библиотекой линейной алгебры) может очень помочь, как и перевод медленных частей на C ++ с помощью Rcpp. Написание RBM с одним скрытым слоем на самом деле достаточно быстро, поэтому, вероятно, имеет смысл кодировать его на том языке, на котором вы наиболее удобны, прежде чем пытаться оптимизировать скорость.
Дэвид Дж. Харрис
@ Дэвид Дж. Харрис Вы поделились своими реализациями в R? Я хотел бы взглянуть на них.
Зак
1
@ Зак сейчас я довольно занят, но я посмотрю, что я смогу сделать с открытым исходным кодом в будущем. Вы также можете отправить мне электронное письмо по адресу, указанному в моем профиле, чтобы получить копию того, что у меня есть, если вы не возражаете разобраться с недокументированным / незавершенным проектом.
Дэвид Дж. Харрис
8

В R вы можете использовать нейронную сеть и RSNNS (который предоставляет интерфейс для симулятора нейронной сети Штутгарта ) для соответствия стандартным многослойным нейронным сетям, но есть различия в RBM.

Что касается реализации глубоких нейронных сетей в R, я думаю, что единственной целесообразной стратегией было бы объединение существующих реализаций FOSS, что, как правило, является гораздо лучшим решением, чем просто повторная реализация вещей самостоятельно (я никогда не понимал, почему всем нужно изобретать велосипед). R предлагает множество функциональных возможностей для этого, и вы можете использовать обработку данных R вместе со скоростью и готовыми к использованию аспектами существующих решений. Например, можно связать MDP с возможностями взаимодействия Python / R, см., Например, этот документ .

Редактировать: Эндрю Ландграф из Статистически значимых предоставляет код R для RBM .

Момо
источник