2014-07-10 3 views
1

저는 GB-RBM을 사전 훈련하기 위해 대부분의 문헌에서 권장하는대로 제로 평균 및 단위 분산으로 데이터를 정규화했습니다. 그러나 내가 선택한 학습 속도와 그 시대의 수는 무엇이든 평균 재구성 오류는 결코 0.6 이하로 떨어지지 않습니다. 스택 된 BB-RBM의 재구성 오류는 몇 에포크 내에서 0.01로 쉽게 떨어집니다. http://www.cs.toronto.edu/~hinton/absps/guideTR.pdf에 언급 된대로 GBRBM을 구현하는 몇 가지 툴킷을 사용했지만 모두 동일한 문제가 있습니다. 나는 뭔가를 놓치고 있습니까? 아니면 재구성 오류가 50 % 이상을 유지하려고합니까?가우시안 - 베르누이 RBM 높은 재구성 오류

I는 평균을 뺀 입력 벡터의 각 차원에 따른 표준 편차로 나눔으로써 내 데이터를 정규화있어 :

크기 (MFCC) -> [mlength 행 X 39 COLS]

mmean=mean(mfcc); 
mstd=std(mfcc); 
mfcc=mfcc-ones(mlength,1)*mmean; 
mfcc=mfcc./(ones(mlength,1)*mstd); 

이것은 각 차원에서 평균 및 단위 var가 0이됩니다. 나는 다른 데이터 세트, 다른 기능 및 다른 툴킷을 시도했지만, 재구성 오류는 GBRBM의 경우 0.6 이하로 떨어지지 않습니다. 고마워

+0

안녕하세요. 스택 오버플로를 환영합니다. 이것은 내 전문성이 아닙니다 ... 일반적으로 S/O에 대한 도움을 받으려면 관련 코드를 포함시키는 것이 좋습니다. 그럼 우리는 오류를 확인하거나 일을 더 나은 방법을 제안 할 수 있습니다 :) –

답변

0

나는 당신이 Sigmoid로 exp()를 사용하고 나서 제 3 자 라이브러리를 사용하여 행렬 함수를 수행한다고 생각하겠습니까?

위의 내용이 사실이라면 제 3 자 라이브러리가 exp() 오버플로 오류를 삼키고 있지만 여전히 계산을 중지하고 숨겨진/다시 생성 된 벡터가 유효하지 않다고 생각합니다. 아래의 의견에 따라

편집 :

theano.tensor.nnet.sigmoid()이 특급을 사용하고 있습니다() 그래서 내가 먼저 hard_sigmoid로 전환하려고 것이다(). 커브처럼 좋지는 않지만 오버플로/언더 플로우가 발생하지 않으므로 오류의 원인인지 확인할 수 있습니다.

다른 데이터 사전 처리를 시도했지만 여전히 높은 재구성 오류가 있다고 가정합니다.

+0

@Muneeb가 응답하지 않을 것 같긴하지만, 첫 번째 문장은 아마 코멘트로 더 좋습니다. – kdgregory

+0

저는 Sigmoid와 행렬 연산을 계산할 때 Theano 라이브러리를 사용하고 있습니다. GBRBM 코드 : (http://sourceforge.net/p/kaldipdnn/code-0/HEAD/tree/pdnn/layers/rbm.py) Bernoulli-Bernoulli RBM에 대한 좋은 결과를 얻었습니다. GBRBM의 경우에도 자유 에너지는 거의 0으로 감소하지만 재구성 오류는 0.5 이상으로 유지됩니다. – Muneeb

+0

저의 대표로 인해 게시물에 댓글을 달 수 없으므로 답변에 질문해야합니다. 물론 그것이 담당자와 정확히 일치하지는 않습니다. 그래서, 그래. –