분류에 RBM을 사용하는 방법은 무엇입니까?


12

현재 Restricted Boltzmann Machines를 사용하고 있는데 지금부터 필기 자릿수를 분류하려고합니다.

내가 만든 모델은 이제 꽤 멋진 생성 모델이지만 더 나아가는 방법을 모르겠습니다.

에서 이 문서 저자의 말은, 그건 좋은 생식 모델을 만든 후, 하나는 " 다음 차별적 분류를 기차 (즉, 선형 분류, 서포트 벡터 머신)을 RBM의 상단 라벨이 샘플 사용에 대한 " "와 furtherly 상태를 당신이를 전파하기 때문에 RBM 모델의 숨겨진 단위로 데이터 벡터를 숨겨 숨겨진 단위 벡터를 가져 오거나 데이터의 상위 레벨 표현 " 문제는 내가 올바르게 얻을 수 있는지 확실하지 않다는 것입니다.

즉, 입력을 숨겨진 단위로 전파하고 분류를위한 RBM 기능이 있어야한다는 의미입니까?

누군가 나에게이 과정을 설명 할 수 있습니까?


제한된 Boltzmann 기계는 딥 러닝에 사용되는 가장 초기 구성 요소 중 하나입니다. 사실, DNN의 첫 번째 중요한 작업은 Hinton이 수행 한 것입니다. RBM을 기반으로 한 딥 믿음 네트워크입니다. 자세한 내용은이 백서를 검색하십시오 (Deep Faith Network, 2007, Hinton). 그의 웹 사이트에서 매우 중요한 자료와 데모 실험 cs.toronto.edu/~hinton/digits.html을
Bashar Haddad

@ hbaderts 나는 RBM과 놀기 시작했다. 받아 들여진 대답은 읽기 쉽다. 이진 분포에서 샘플링 한 후 RBM 숨겨진 레이어는 임의적입니다. 분류를 위해 숨겨진 단위 확률이 사용되거나 이진 분포 (1 및 0)에서 샘플링 된 숨겨진 단위가 분류기로 전달됩니까?
M3tho5

답변:


15

제한된 볼츠만 머신 리뷰

v

p(vh)=i=0Vp(vih),
p(vih)=σ(ai+j=0Hwjihj)
σaiiwjihjvip(vh)hv

분류에 RBM 사용

h

이 숨겨진 벡터는 입력 데이터의 변형 된 버전 일 뿐이며 자체적으로 분류 할 수는 없습니다. 분류를 수행하려면 "원시"교육 데이터 대신 입력으로 숨겨진 벡터를 사용하여 분류기 (선형 분류기, SVM, 피드 포워드 신경망 또는 기타)를 학습해야합니다.

감독되지 않은 방식으로 딥 피드 포워드 신경망을 사전 훈련하는 데 사용 된 DBN (Deep Faith Network)을 구축하는 경우이 숨겨진 벡터를 가져 와서 새로운 RBM에 대한 입력으로 사용합니다. 그 위에. 이렇게하면 레이블이 지정된 데이터가 없어도 원하는 크기에 도달 할 때까지 네트워크를 계층별로 학습 할 수 있습니다. 마지막으로, 예를 들어 softmax 레이어를 맨 위에 추가하고 분류 작업에서 역 전파를 통해 전체 네트워크를 훈련시킵니다.


@ Seanny123을 편집 해 주셔서 감사합니다. 읽기가 훨씬 쉽습니다.
hbaderts

5

@hbaderts는 전체 워크 플로우를 완벽하게 설명했습니다. 그러나이 아이디어에 완전히 익숙하지 않은 경우에는 의미가 없습니다. 따라서 나는 평신도의 방식으로 설명 할 것입니다 (따라서 세부 사항은 생략 할 것입니다).

딥 네트워크는 데이터를 변환하는 기능으로 생각하십시오. 변환의 예로는 정규화, 데이터 로그 기록 등이 있습니다. 훈련중인 딥 네트워크에는 여러 계층이 있습니다. 이러한 각 계층은 일종의 학습 알고리즘을 사용하여 학습됩니다. 첫 번째 레이어의 경우 원본 데이터를 입력으로 전달하고 "동일한 원본 데이터"를 출력으로 되돌릴 수있는 함수를 얻으려고합니다. 그러나 완벽한 결과를 얻지는 못합니다. 따라서 첫 번째 레이어의 출력으로 변환 된 버전의 입력을 얻게됩니다.

이제 두 번째 계층에서는 이러한 "변환 된 데이터"를 가져 와서 입력으로 전달하고 전체 학습 프로세스를 반복합니다. 딥 네트워크의 모든 계층에 대해 계속 그렇게합니다.

마지막 계층에서 얻는 것은 원래 입력 데이터의 "변환 된 버전"입니다. 이것은 원래 입력 데이터의 높은 수준의 추상화로 생각할 수 있습니다. 딥 네트워크에서는 아직 레이블 / 출력을 사용하지 않았습니다. 그러므로이 시점까지의 모든 것은 비지도 학습입니다. 이것을 계층 별 사전 훈련이라고합니다.

이제 분류 자 ​​/ 회귀 모델을 학습하려고합니다. 이것은 감독 학습 문제입니다. 이 목표를 달성하는 방법은 딥 네트워크의 마지막 레이어에서 원래 입력의 "최종 변환 버전"을 가져 와서 모든 분류기의 입력으로 사용하는 것입니다 (예 : knn 분류기 / softmax 분류기 / 로지스틱 회귀 등). 이것을 스태킹이라고합니다.

이 마지막 단계 분류기 / 학습자를 교육 할 때는 모든 학습을 전체 네트워크에 전파합니다. 이를 통해 레이블 / 출력에서 ​​학습하고 학습 된 레이어 별 매개 변수를 적절하게 수정할 수 있습니다.

따라서 생성 모델을 학습 한 후에는 생성 모델의 출력을 가져와 분류 자 ​​/ 학습자에 대한 입력으로 사용하십시오. 학습이 계속됨에 따라 오류가 전체 네트워크를 통과하도록하여 이전 단계에서 학습 한 계층 별 매개 변수를 수정할 수 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.