컨텍스트 : 두 개의 연관된 확률 값을 가진 각각의 문서 집합이 있습니다. 클래스 A에 속하는 확률 및 클래스 B에 속할 확률입니다. 클래스는 상호 배타적이며 확률은 하나가됩니다. 예를 들어, 문서 D는 확률 (0.6, 0.4)이 근거 진실과 관련이 있습니다.신경망 회귀 예측에서 컷오프
각 문서는 포함 된 용어의 tfidf로 표현되며 0에서 1로 정규화됩니다. 또한 doc2vec (정규화 된 형식 -1) 및 다른 몇 가지 방법을 시도했습니다.
이 확률 분포를 예측하기위한 매우 간단한 신경망을 만들었습니다. 많은 노드
- 입력 층이 softmax와
- 싱글 숨겨진 레이어
- 노드 하나 출력 층과 두 개의 노드를 특징으로
- 크로스 엔트로피 손실 함수 나 또한 다른 업데이트 기능을 시도 학습 속도
이 내가 nolearn를 사용하여 작성한 코드는 다음과 같습니다
net = nolearn.lasagne.NeuralNet(
layers=[('input', layers.InputLayer),
('hidden1', layers.DenseLayer),
('output', layers.DenseLayer)],
input_shape=(None, X_train.shape[1]),
hidden1_num_units=1,
output_num_units=2,
output_nonlinearity=lasagne.nonlinearities.softmax,
objective_loss_function=lasagne.objectives.binary_crossentropy,
max_epochs=50,
on_epoch_finished=[es.EarlyStopping(patience=5, gamma=0.0001)],
regression=True,
update=lasagne.updates.adam,
update_learning_rate=0.001,
verbose=2)
net.fit(X_train, y_train)
y_true, y_pred = y_test, net.predict(X_test)
내 문제는 다음과 같습니다. 내 예측에 컷오프 포인트가 있으며 예상치 이하로 예측할 수 없습니다 (의미를 이해하려면 그림을 확인하십시오). This plot shows the difference between the true probability and my predictions. 점이 빨간색 선에 가까울수록 예측이 좋습니다. 이상적으로 모든 포인트는 라인에 놓여 있습니다. 어떻게 해결할 수 있습니까? 왜 이런 일이 발생합니까?
편집 : 실제로 단순히 숨겨진 층을 제거하여 문제 해결 :
net = nolearn.lasagne.NeuralNet(
layers=[('input', layers.InputLayer),
('output', layers.DenseLayer)],
input_shape=(None, X_train.shape[1]),
output_num_units=2,
output_nonlinearity=lasagne.nonlinearities.softmax,
objective_loss_function=lasagne.objectives.binary_crossentropy,
max_epochs=50,
on_epoch_finished=[es.EarlyStopping(patience=5, gamma=0.0001)],
regression=True,
update=lasagne.updates.adam,
update_learning_rate=0.001,
verbose=2)
net.fit(X_train, y_train)
y_true, y_pred = y_test, net.predict(X_test)
을하지만 나는이 문제가 있었 및 제거 이유는 숨겨진 층을 해결 이유를 나는 아직도 이해하지 못한다. 어떤 아이디어? 여기
새로운 줄거리 : 나는 당신의 훈련 설정된 출력 값이 [0,1] 또는 [1,0]해야한다고 생각
왜 그런지는 알 수 없습니다. 제가 아는 한, softmax 출력은 최대 1을 더하고 교차 엔트로피는 두 확률 분포의 차이를 측정합니다. –