Construir codificador de crença profunda para redução de dimensionalidade

Aug 18 2020

Estou trabalhando com um grande conjunto de dados (cerca de 50 mil observações x 11 mil recursos) e gostaria de reduzir a dimensionalidade. Isso eventualmente será usado para classificação de várias classes, então eu gostaria de extrair recursos que são úteis para separar os dados. Até agora, tentei o PCA (realizado OK com uma precisão geral em Linear SVM de cerca de 70%), LDA (realizado com uma precisão de treinamento muito alta de cerca de 96%, mas a precisão do teste foi de cerca de 61%) e um autoencoder (3 codificador de camada densa com 13000 - 1000 - 136 unidades, respectivamente, com desempenho semelhante ao PCA). Pediram-me para tentar uma Deep Belief Network (pilha de máquinas Boltzmann restritas) neste problema.

Até agora, prevejo dois desafios. Primeiro, tenho acesso a uma GPU que pode ser usada, mas não vejo muitas implementações de DBNs dos principais participantes da comunidade da rede neural (por exemplo, TensorFlow / Keras, PyTorch), o que significa que isso precisa ser implementado em uma CPU, trazendo o desafio número dois. Em segundo lugar, implementar isso exigirá memória significativa e será muito lento. Isso levanta a minha pergunta: há alguma implementação do autencoder DBN em Python (ou R) que seja confiável e, de maneira ideal, utilize GPU? Se não, qual é o método preferido de construção de um DBN em Python? Devo usar o sklearn?

Respostas

1 hH1sG0n3 Aug 18 2020 at 21:16

Ao contrário dos Autoencoders, as Máquinas Botzmann (restritas ou não) não possuem uma camada de saída e, portanto, são classificadas como modelos geradores profundos.

Existe uma variedade de implementações no Pytorch. Este é compatível com GPU (https://github.com/GabrielBianconi/pytorch-rbm) e eu achei isso particularmente útil no passado.

RBMs podem ser muito úteis em uma variedade de tarefas, como

  • Redução de dimensionalidade
  • Filtragem colaborativa para sistemas de recomendação
  • Aprendizagem de recursos e outros.

Esta foi uma leitura interessante caso você queira saber mais sobre RBMs. https://heartbeat.fritz.ai/guide-to-restricted-boltzmann-machines-using-pytorch-ee50d1ed21a8