신경망 예측의 신뢰도를 결정하는 방법은 무엇입니까?


22

내 질문을 설명하기 위해 입력에 잡음이 있지만 출력이없는 훈련 세트가 있다고 가정하십시오.

# Training data
[1.02, 1.95, 2.01, 3.06] : [1.0]
[2.03, 4.11, 5.92, 8.00] : [2.0]
[10.01, 11.02, 11.96, 12.04] : [1.0]
[2.99, 6.06, 9.01, 12.10] : [3.0]

여기서 출력은 노이즈가없는 경우 (실제 그래디언트가 아닌) 입력 어레이의 그래디언트입니다.

네트워크를 학습 한 후 출력은 주어진 입력에 대해 다음과 같아야합니다.

# Expected Output
[1.01, 1.96, 2.00, 3.06] : 95% confidence interval of [0.97, 1.03]
[2.03, 4.11, 3.89, 3.51] : 95% confidence interval of [2.30, 4.12]

내 질문은 어떻게 신경망이 분산 또는 신뢰 구간과 같은 예측 값과 신뢰도를 반환하도록 어떻게 만들 수 있습니까?


3
미래의 실현 을 포함 할 구간을 찾는 경우 관찰 할 수없는 매개 변수 와 관련된 신뢰 구간 이 아닌 예측 구간을 찾고 있습니다. 이것은 종종 혼란 스럽다.
S. Kolassa-복원 모니카

답변:


20

, 즉 미리 지정된 백분율의 미래 실현을 포함하는 간격을 찾고있는 것처럼 들립니다 . ( 차이에 대한 에 대해서는 태그 위키를보십시오 .)

가장 좋은 방법은 싱글 포인트 예측을 출력하지 않고 전체 예측 분포를 출력하는 NN 아키텍처와 직접 작동하는 것 입니다. 그런 다음 이러한 분포에서 원하는 예측 간격 (또는 평균 또는 중간 점 예측)을 직접 추출 할 수 있습니다. 저와 다른 사람들 은 예측 분포가 점 예측보다 훨씬 유용하다고 주장 했지만 솔직히 말해서 신경망을 이용한 예측 분포에 대해서는 아직 많은 눈을 뜨고 있지만 아직 눈을 뜨고 있지는 않습니다. 이 문서 는 유용 할 것 같습니다. "예측 분포"또는 "예측 밀도"와 같은 다른 키워드를 사용하여 약간 검색 할 수도 있습니다.

즉, 베이지안 접근 방식을 사용하여 예측 밀도를 예측하는 Michael Feindt의 NeuroBayes 알고리즘 을 살펴볼 수 있습니다 .


1
이 글은 또 다른 유용한 논문 일 수 있습니다-분포를 배우는 신경망 : google.com/…
Pro Q

@Stephan : 링크가 사라졌습니다 : (
Matthew Drury

@MatthewDrury : 어떤 링크를 의미합니까? 세 사람 모두 나를 위해 잘 작동합니다.
S. Kolassa-복원 모니카

NN Predictive Distributions를 사용하여 간단한 Ternsorflow 데모 / 예로 안내 할 수 있습니까?
마틴 토 게르 센

@ MartinThøgersen : 죄송합니다, 아니요, Tensorflow를 사용하지 않습니다 ...
S. Kolassa-Monica Monica

5

단일 예측에 대한 신뢰 구간을 계산할 수 있는지 확실하지 않지만 실제로는 전체 데이터 세트의 오류율에 대한 신뢰 구간을 계산할 수 있습니다 (정확도와 기타 평가중인 다른 측정 값을 일반화 할 수 있음).

크기 n 의 일부 데이터 S 를 분류하는 동안 가 오류율 인 경우 오류율 에 대한 95 % 신뢰 구간은 다음과 같이 계산됩니다. e ± 1.96 eSn .

e±1.96e(1e)n

(톰 미첼의 "기계 학습"책 5 장 참조)

편집하다

더 일반적인 경우를 말해야한다고 생각합니다. 여기서zN에대한 공통 선택은 다음 표에 나열되어 있습니다.

e±zNe(1e)n,
z
confidence level    80%    90%    95%    98%    99%
values of zN       1.28   1.64   1.96   2.33   2.58

1
이것은 점근 분포가 정상
이어야 함을

4
큰 샘플 크기 (ML에서 매우 흔함)의 경우 일반적으로 안전합니다. 공감할 필요는 없었습니다. 설명을 요청하십시오.
mp85

4

신경망, SVM, 랜덤 포레스트 등과 같은 비모수 적 회귀 및 분류 문제에서 예측 구간 (PI)은 구성하기가 어렵습니다. 이것에 대한 다른 의견을 듣고 싶습니다.

그러나 내가 아는 한, CP (Conformal Prediction)는 비모수 적 회귀 및 분류 문제의 예측을 위해 교정 된 PI를 구축하는 유일한 원칙적 방법입니다. CP에 대한 자습서는 Shfer & Vovk (2008), J. Machine Learning Research 9 , 371-421을 참조하십시오. [pdf]


3

나는 그것을 정확히 수행하는 방법을 모른다.

μσ(xi,yi)logN(yiμ(xi),σ(xi))μ(xi)yiσ(xi)

검증 데이터에 대한 가정이 얼마나 좋은지 확인하려면 를보고 싶을 수도 있습니다.yiμ(xi)σ(xi)N(0,1)


1
σ+

로그 우도에 대해 훈련 된 분포의 매개 변수를 출력하기 위해 NN을 사용하는 것으로 본 사람이 있습니까?
Miss Palmer

3

신경망 예측에 대한 신뢰 구간을 제공하는 방법에 대해서는 들어 본 적이 없습니다. 공식적인 방법론의 부재에도 불구하고, 그것을 구성하는 것이 가능할 것 같다. 필자는 필요한 컴퓨팅 성능으로 인해 이것을 시도한 적이 없으며 특정 작업에 대해 주장하지는 않지만 작은 신경망에서 작동 할 수있는 한 가지 방법 (또는 빠른 GPU 전력으로 적당한 크기의 그물에서 작동 할 수있는 방법) )는 훈련 세트를 다시 샘플링하고 동일한 매개 변수와 초기 설정으로 많은 유사한 네트워크 (예 : 10,000 회)를 구축하고 각 부트 스트랩 넷에 대한 예측을 기반으로 신뢰 구간을 구축하는 것입니다.

예를 들어 위에서 설명한대로 훈련 된 10,000 개의 네트워크에서 9,000 회 (신경망 회귀 예측을 반올림 한 후) 9,000 회를 얻을 수 있으므로 CI가 90 % 인 2.0을 예측하게됩니다. 그런 다음 각 예측에 대해 CI 배열을 구축하고 기본 CI로보고 할 모드를 선택할 수 있습니다.


2
이 제안이 본질적으로 약간 틀에 얽매이지 않는 방식으로 부트 스트래핑되고 있기 때문에이 제안이 투표에 실패한 이유가 궁금합니다. 다운 투표를 한 사람이 이것이 제안 된 질문에 대한 올바른 해결책이 아닌 이유를 설명 할 수 있다면 실제로 다운 투표는 중요하지 않습니다. 나는 나 자신을 배우고 의견을 보내 주셔서 감사합니다!
Tony S

1
나는 투표하지 않았지만 제안 된 방법이 모델의 예측 값을 캡처하는 간격을 출력한다는 것을 이해 한 것에서 이것은 실제 값을 캡처하는 간격과 동일하지 않습니다.
Miss Palmer

3

예측 간격을 직접 출력하는 관점에서 2011 년 논문 ' 신경망 기반 예측 간격에 대한 포괄적 인 검토 '가 있습니다

그들은 네 가지 접근법을 비교합니다.

1 : 델타 방법 2 : 베이지안 방법 3 : 평균 분산 추정 4 : 부트 스트랩

같은 저자들은 NN으로부터 하한과 상한을 직접 출력하는 신경망 기반 예측 구간의 구성 을위한 하한 상한 추정 방법 을 개발했습니다 . 불행히도 그것은 backprop와 함께 작동하지 않지만 최근의 연구는 딥 러닝을위한 고품질 예측 간격을 가능하게했습니다 .

예측 간격을 직접 출력하는 대신, 베이지안 신경망 (BNN)은 NN의 매개 변수에서 불확실성을 모델링하여 출력에서 ​​불확실성을 포착합니다. 이 작업은 어렵지만 일반적인 방법으로는 예측 시간에 MC 드롭 아웃 을 실행 하거나을 포함하는 방법이 있습니다 .


1
Bayesian Deep Learning을 사용하면 실제로 매우 쉽습니다. 예를 들어 edwardlib.org/tutorials/bayesian-neural-network
DeltaIV

2

드롭 아웃을 사용하여 실제로이를 수행하는 방법이 있습니다. 드롭 아웃이 활성화 된 상태에서 평가를 실행하고 (일반적으로 평가를 위해 사용하지 않지만 교육시 설정) 평가를 여러 번 실행합니다.

여러 다른 런의 결과 분포를 신뢰 구간으로 사용할 수 있습니다.

" 베이지 근사로의 탈락 : 딥 러닝의 모델 불확실성 표현 "논문을 참조하십시오. YouTube 프레젠테이션 Andrew Rowan-Edward와의 베이지안 딥 러닝 (및 Dropout을 사용한 트릭)


1

모든 ML 모델은 현상을 이해하는 것이 아니며, 그것이 "작동한다는 희망"을 가진 보간법입니다. 그러한 질문에 자신감을 가지고 시작하여 소음에 대한 견고 함이 없습니다.

따라서 무언가를 이끌어 내려면 다양한 응용 및 기초 과학을 사용하십시오.

  • 제어 사용 (역학에 대한 가정)

  • 볼록 최적화 사용 (기능에 대한 추가 조건이있는)

  • 수학 통계 사용 (분포에 대한 예비 가정)

  • 신호 처리 사용 (신호가 대역 제한적이라는 가정)

과학자는 무언가를 도출하기 위해 예비 가정 (공리라고 함)을 사용합니다.

예비 가정 없이는 확신을 가질 수있는 방법이 없기 때문에 DL mehtod에서는 문제가되지 않지만 예비 가정없이 보간하려고 시도하는 방법에는 문제가 있습니다.

NN 및 다양한 ML 방법은 교차 검증을 통해 "어쨌든"작동하는 것처럼 보이는 "무언가"를 생성하기위한 빠른 프로토 타이핑을위한 것입니다.

회귀 피팅 E [Y | X]가 더 깊거나 추정치가 해결하기에는 절대적으로 잘못된 문제 일 수 있습니다 (Y = E [Y | X]의 pdf는 최대 값이 아니라 최소값 일 수 있음). 소지품.

또한 AI / ML에서 해결할 수없는 두 가지 문제를 상기시켜 드리겠습니다.이 문제는 미용 슬로건 뒤에 잊어 버릴 수 있습니다.

(1) 외삽 법이 아닌 보간법입니다. 새로운 문제를 처리 할 능력이 없습니다.

(2) 아무도 같은 분포가 아닌 데이터에서 모델이 어떻게 작동하는지 아무도 모릅니다 (보행자 현지화를위한 바나나 의상을 입은 남자)


훈련 데이터 세트의 오류를 추론에 대한 "예측"오류로 모델링하는 방법은 무엇입니까?
Jacko

추가 "predict_for_mean"+ "predict_for_error"라고 가정하십시오. 신호와 오류를 개별적으로 예측하는 스키마를 상상할 수 있습니다. 그러나 한 번 더 – 만약 우리가 "만 보간"한다면 우리는 자신있게 무언가를 말할 수 없습니다. 표면의 온도를 예측합니다. 예, 내 예측 "20"이라고 말할 수 있고 오류 예측은 "5"입니다. 따라서 실제 반응은 [20-5, 20 + 5]에 있다고 생각하지만 그 의미를 실제로 이해하려면 실제 표현형과 수학적 모델을 이해해야합니다. ML은 두 가지에 관한 것이 아닙니다. 다른 영역은 예비 가정을합니다.
bruziuz

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