Máquinas Boltzmann restritas versus redes neurais multicamadas

22

Eu estava querendo experimentar com uma rede neural um problema de classificação que estou enfrentando. Encontrei artigos que falam de RBMs. Mas pelo que entendi, eles não são diferentes de ter uma rede neural multicamada. Isso é preciso?

Além disso, trabalho com R e não estou vendo nenhum pacote enlatado para RBMs. Eu me deparei com literatura que fala sobre redes de aprendizado profundo, que são basicamente RBMs empilhadas, mas não tenho certeza se vale a pena o esforço para implementá-las em R. Alguém teria alguma dica? obrigado

brócolis
fonte
3
Eles são diferentes das redes multicamadas treinadas com backprop. Aqui estão alguns recursos para todos os tipos de redes neurais: stats.stackexchange.com/a/36257/13669
Stumpy Joe Pete

Respostas:

21

Antes de tudo, os RBMs são certamente diferentes das redes neurais normais e, quando usadas corretamente, elas alcançam um desempenho muito melhor. Além disso, o treinamento de algumas camadas de um RBM e o uso dos pesos encontrados como ponto de partida para um NN Mulitlayer geralmente produz melhores resultados do que simplesmente o uso de um NN multicamada.

O melhor indicador que consigo pensar é este curso sobre o Coursera, ministrado por Geoffrey Hinton, que é uma das pessoas responsáveis ​​pelos RBMs:

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

os vídeos sobre RBMs e Denoising Autoencoders são um recurso valioso de aprendizado para qualquer pessoa interessada no tópico.

Quanto à implementação em R, também não conheço, mas se você quiser implementá-lo, é melhor não usar R puro (a menos que seus dados não sejam muito grandes). O treinamento de um RBM leva muito tempo e, se você usar R puro em vez de R com C, ele poderá crescer significativamente.

sjm.majewski
fonte
1
Posso falar dos problemas de desempenho de R, pois escrevi alguns RBMs nele. A grande maioria do tempo de computação é gasta em multiplicações matriciais, que tendem a ser mais lentas em R do que em outros idiomas (talvez por um fator de 3 ou 5). A recompilação do R para seu próprio sistema com uma BLAS (biblioteca de álgebra linear) personalizada pode ajudar muito, assim como a conversão das partes lentas para C ++ com o Rcpp. Escrever um RBM de uma camada oculta é realmente rápido o suficiente para que provavelmente faça sentido codificá-lo no idioma em que você se sentir mais confortável antes de tentar otimizar a velocidade.
David J. Harris
@ David J. Harris Você compartilhou alguma de suas implementações no R? Eu adoraria dar uma olhada neles.
Zach
1
@ Zach Estou bastante ocupado no momento, mas verei o que posso fazer sobre o código aberto no futuro. Você também pode me enviar um e-mail no endereço do meu perfil para obter uma cópia do que eu tenho, se não se importar em classificar um projeto não documentado / semiacabado.
David J. Harris
8

Em R, você pode usar a neuralnet e o RSNNS (que fornece uma interface para o Simulador de Rede Neural de Stuttgart ) para ajustar redes neurais padrão de multicamadas, mas existem diferenças no RBM.

Em relação à implementação de redes neurais profundas no R, acho que a única estratégia válida seria fazer a interface das implementações existentes do FOSS, que geralmente é uma solução muito melhor do que apenas reimplementar as coisas por conta própria (nunca entendi direito por que todo mundo precisa reinventar a roda). O R oferece muita funcionalidade para fazer isso e você pode aproveitar o tratamento de dados do R com a velocidade e os aspectos prontos para uso das soluções existentes. Por exemplo, pode-se fazer interface do MDP com os recursos de interface do Python / R, consulte, por exemplo, este documento .

Edit: Andrew Landgraf de Statistical Significant fornece algum código R para RBM .

Momo
fonte