차원 감소를위한 Deep Belief Autoencoder 구축

Aug 18 2020

저는 대규모 데이터 세트 (약 50K 관측 x 11K 기능)로 작업 중이며 차원을 줄이고 싶습니다. 이것은 결국 다중 클래스 분류에 사용되므로 데이터 분리에 유용한 기능을 추출하고 싶습니다. 지금까지 PCA (Linear SVM에서 전체 정확도 약 70 %로 정상 수행), LDA (약 96 %의 매우 높은 훈련 정확도로 수행했지만 테스트 정확도는 약 61 %) 및 자동 인코더 (3 각각 13000-1000-136 단위의 레이어 밀도 인코더로 PCA와 거의 동일하게 수행됨). 이 문제에 대해 Deep Belief Network (제한된 Boltzmann Machines 스택)를 시도해 달라는 요청을 받았습니다.

지금까지 두 가지 도전을 예견했습니다. 첫째, 사용할 수있는 GPU에 액세스 할 수 있지만 신경망 커뮤니티 (예 : TensorFlow / Keras, PyTorch)의 주요 플레이어로부터 DBN 구현이 많지 않습니다. CPU에 구현되어 두 번째 과제가 있습니다. 둘째,이를 구현하려면 상당한 메모리가 필요하며 매우 느립니다. 이것은 내 질문을 불러옵니다. Python (또는 R)에서 신뢰할 수 있고 최적으로 GPU를 활용하는 DBN 자동 인코더 구현이 있습니까? 그렇지 않은 경우 Python에서 DBN을 구성하는 데 선호되는 방법은 무엇입니까? sklearn을 사용해야합니까?

답변

1 hH1sG0n3 Aug 18 2020 at 21:16

Autoencoder와 달리 Botzmann Machines (제한 여부에 관계없이)에는 출력 레이어가 없으므로 심층 생성 모델로 분류됩니다.

Pytorch에는 다양한 구현이 있습니다. 이것은 GPU와 호환됩니다 (https://github.com/GabrielBianconi/pytorch-rbm) 그리고 나는 그것이 과거에 특히 도움이된다는 것을 발견했습니다.

RBM은 다음과 같은 다양한 작업에 매우 유용 할 수 있습니다.

  • 차원 감소
  • 추천 시스템을위한 협업 필터링
  • 기능 학습 및 기타.

이것은 RBM에 대해 더 알고 싶은 경우에 흥미로운 읽기였습니다. https://heartbeat.fritz.ai/guide-to-restricted-boltzmann-machines-using-pytorch-ee50d1ed21a8