Naver Ai Boostcamp

[DAY 11] 딥러닝 기초

잡담연구소 2021. 2. 2. 02:35

📌 학습목표

  1. 베이즈정리란 무엇인가? 
  2. 사전확률, 사후확률, evidence란 무엇인가
  3. 인과관계 추론의 경우, 조건부 확률을 어떻게 사용해야하는지 
  4. 인과관계를 어떤 방식으로 사용할수 있는지 

 

📌 조건부 확률

- 베이지안 통계는 조건부확률에서부터 시작하게 된다. 

\begin{align}P(A|B) = \frac{P(A\cap B)}{P(B)}\end{align}

사건 B가 일어났을 때, 사건 A도 발생할 확률을 의미한다. 

\begin{align*}
P(A\cap B) &=  P(B)P(A|B)
\end{align*}


위와 같이 식을 수정할 수 있다. 

 

📌 베이즈 정리

- 조건부 확률을 이용하여 정보를 갱신하는 방법을 알려준다.

데이터가 주어지기 전 이미 어느정도의 확률값(사전확률)을 예측하고 있을 때, 새로운 데이터를 수집해 수정된 확률값(사후확률)을 계산할 수 있다. 

 

\begin{align}
P(B|A) = \frac{P(A\cap B)}{P(A)} = P(B)\frac{P(A|B)}{P(A)} 
\end{align}

 

만약 A가 새로운 정보 , B는 원래 주어졌던 정보들이라고 가정해보자.

P(B)는 이미 알고있던 정보 즉, 사건 A가 발생하기 전 , 우리가 가정한 확률분포와 같은 값이므로 사전확률(Prior)이라고한다.

P(B|A)는 이미 알고있던 정보 B에 새로운 정보 A가 더해져 업데이트 된 사건의 확률로 사후확률(posterioir)이라고 한다.

P(A)는 새로운 정보들의 분포를 의미하는 evidence라고 한다.   

P(A|B)는 사건 b가 발생한 경우 사건 a의 확률로 가능도(likelihood)라고 한다. 

 

📌 예제 1 : COVID-99

COVID-99의 발병률이 10%로 알려져있다. COVID-99에 실제로 걸렸을 때, 검진될 확률은 99%  ,실제로 걸리지 않았을 때 오검진 될 확률이 1%라고 할 때, 어떤 사람이 질병에 걸렸다고 검진결과가 나왔을 때 정말로 COVID99에 감염되었을 확률은 ? 

베이즈정리를 통한 풀이 

 

현재 정의된 문제는 이렇다. 검진결과가 양성일 때, 실제로 이 사람이 이 병에 걸렸을 확률을 구하는 문제이다. 

 

$\theta$ : 실제로 질병에 걸렸다. 실제로 "양성" 의미 

D: 검진이 잘 되었다. (오검진이 아니다.)

 

사전확률인 P($\theta$)는 실제로 질병에 걸렸을 확률로, 발병률인 0.1이다.

Evidence인 P(D)는 검진이 제대로 되었을 확률을 의미한다. 

- 검진이 제대로 되었다는 뜻은 2가지 의미로 나눠 생각해볼 수 있다.

  1) 실제로 양성인데, 양성으로 판단된 경우 = 실제로 걸렸을 때 검진될 확률 

  2) 실제로 음성인데, 음성으로 판단된 경우 = 실제로 걸리지 않았을 때, 오검진될 확률이다. 

즉 검진이 제대로 되었을 때를 식으로 표현해보면

\begin{align*}
P(D) = P(D|\theta) + P(D |\theta^{c}) = 0.99\times 0.1 + 0.01\times 0.9
\end{align*}

가능도인 $P(D|\theta)$ 는 실제로 양성일 때, 검진이 잘 되어 양성판정을 받았을 확률을 의미한다.

즉 , 실제로 걸렸을 때 검진될 확률로 문제에서 주어진 0.99이다.

\begin{align*}
P(\theta | D) = P(\theta)\frac{P(D|\theta)}{P(D)} &= 0.1 \times\ \frac{0.99}{0.108}\approx 0.916  
\end{align*}

 

📌 예제 2 : COVID-99의 오검진 확률이 0.1이라면 ?!

COVID99의 발병률이 10%로 알려져있다. COVID-99에 실제로 걸렸을 때, 검진될 확률은 99%  ,실제로 걸리지 않았을 때 오검진 될 확률이 10%라고 할 때, 어떤 사람이 질병에 걸렸다고 검진결과가 나왔을 때 정말로 COVID99에 감염되었을 확률은 ? 

$\theta$ : 실제로 질병에 걸렸다. 실제로 "양성" 의미  

D: 검진이 잘 되었다. (오검진이 아니다.) 

 

1. $P(\theta) = 0.1$

2. $P(D) = P(D|\theta) + P(D |\theta^{c}) = 0.99\times 0.1 + 0.1\times 0.9$
3. $P(D|\theta) = 0.99 $

 

\begin{align*}
P(\theta | D) = P(\theta)\frac{P(D|\theta)}{P(D)} &= 0.1 \times\ \frac{0.99}{0.189}\approx 0.524 
\end{align*}

 

오검진 확률 증가시켜줬더니 질병에 걸렸다고 결과가 나왔을 때, 실제로 양성인 확률이 떨어졌다. 

왜일까? 이유를 알아보기 전에 confusion matrix에 대해 먼저 알아보자.

 

 

📌 confusion matrix 

분류모델에서 Training을 통한 prediction 성능을 측정하기 위해 예측 value와 실제 value를 비교하기 위한 표이다.

2x2 matrix로 실제정답과 분류결과에 대해 4가지 case로 나눠서 생각해준다. 

 

1 ) TP :  실제 True인 정답을 True로 예측한 경우 

2 ) FP :  실제 False인 오답을 True로 에측한 경우 

3 ) FN : 실제 True인 정답을 False로 예측한 경우

4 ) TN : 실제 False 인 오답을 False로 예측한 경우 

 

더보기

1. 제1,2종 오류와 matrix

FP에 대해서 제 1종 오류라고 부르기도 한다.

제 1종 오류는 귀무가설이 참일 때, 귀무가설을 기각하는 경우를 얘기한다. 예를 들어 실제 음성인 경우(귀무가설)를 양성으로 판정하는 경우다.maxtrix 관점에서 바라보면 실제 정답은 False이지만 , True라고 판단하는 경우가 제 1종 오류가 된다. 

 

FN에 대해서는 제 2종 오류라고 부르는데, 제 2종 오류는 귀무가설이 거짓일 때, 귀무가설을 채택하는 경우를 애기한다. 반대로 실제 양성인 경우, 음성으로 판정하는 경우이다. 

 

통계학에서는 보통 제 1종 오류에 대해서만 얘기하기 때문에, FN보다는 FP가 중요한 거니 FP에 맞추면 되나? 라고 생각할 수도 있다. 하지만 틀렸다! 어떤 상황인지 즉 주어진 데이터에 따라 FP와 FN 무엇을 더 중점적으로 볼 지가 달라진다. 예를 들어 암환자를 분류하는 모델이라고 생각했을 때, 실제 암인데 정상으로 오진단한다면 너무 큰 실수다,,,, 그렇기 때문에 이런 의료환경에 대해서는 FN이 굉장히 중요하다고 한다. 

 

2. 정밀도 (Precision)정밀도란 모델이 True라고 예측한 것(TP, FN) 중 , 실제로도 True인(TP) 비율을 얘기한다.

\begin{align*}
precision  &= \frac{TP }{TP + FN}
\end{align*}

 

 3. 재현율 (Recall)민감도라고도 한다. 실제 True인 데이터(TP, FN) 중에서 모델이 True라고 예측(TP)한  비율을 얘기한다.\begin{align*}
Recall  &= \frac{TP }{TP + FN}
\end{align*} 

 

precision은 실제 참인 데이터 중 예측도 참이라고 한 경우recall은 모델이 참이라고 예측한 데이터들 중 실제로도 참인 경우를 각각 얘기한다. 

 

4. F1 score

하하,,,공부하다보니 F1점수까지 와버렸다.

정밀도와 재현율의 조화평균으로 표현되는 분류의 정확도 지수이다.
데이터가 불균형 자료(불량과 정상)일 때의 모델 평가에 주로 사용된다.

\begin{align*}
2* \frac{precision * recall}{precision + recall} & 
\end{align*}

 

왜 특이하게 조화평균일까?

precision , recall 중 작은 값 중심으로 평균을 산출하기 때문에 데이터가 더 많은 (불균형) 값에 대해 일종의 penalty를 적용해주는 거다. 그렇기 때문에 불균형 데이터의 모델평가에 주로 사용된다.

 

5. 정분류율 (accuracy)

: 말 그대로 참은 참, 거짓은 거짓으로 예측했을 때의 확률이다. 

\begin{align*}
\frac{TP + TN}{TP + TN + FP + FN} 
\end{align*}

 

6. 오분류율

: 말 그대로 True를 False 로 예측하거나, False를 True로 예측했을 때의 확률이다.\begin{align*}
\frac{FP + FN}{TP + TN + FP + FN} 
\end{align*}

 

 

 

7. 특이도 

: 실제 False일때의 예측도 False 일 때의 확률

\begin{align*}
 \frac{TN}{TN + FP}
\end{align*}

 

 

어쩌다 보니 좀 멀리 돌아온 느낌이다. 오검진 확률 증가시켜줬더니 질병에 걸렸다고 결과가 나왔을 때, 실제로 양성인 확률이 떨어진 이유로 다시 되돌아가보자.

정밀도는 $\frac{TP}{TP+FP}$이다. FP와 Precision은 반비례관계로 FP가 커지면 Precision은 작아진다. 

FP는 실제 음성 & 진단 양성으로 

오검진율이 0.01일 때는 0.9 X 0.01 = 0.009

오검진율이 0.1일 때는 0.9 X 0.1 = 0.09

로 오검진율이 커지면 FP가 커져 결국 Precision은 작아진다.

 

📌 예제 3 : COVID-99 두번째 검진, 양성이 나왔을 때 진짜 COVID-99에 걸렸을 확률은 ?!

COVID-99의 발병률이 10%로 알려져있다. COVID-99에 실제로 걸렸을 때, 검진될 확률은 99%  ,실제로 걸리지 않았을 때 오검진 될 확률이 10%라고 한다.
COVID 판정을 받았던 사람이 두 번째 검진을 받고 양성이 나왔을 때, 실제로 COVID-99에 걸렸을 확률은? 

베이즈 정리는 새로운 데이터가 들어왔을 때, 기존의 데이터들을 가지고 게산한 사후 확률을 사전확률로 사용해 사후확률을 업데이트할 수 있다. 데이터가 N-1개 쌓여 만든 사후확률은 새로운 N번째 데이터가 들어오면 사전확률이 되고 ,

새로운 데이터에 대해 베이즈 정리를 사용해 사후확률을 다시 업데이트해준다. 

 

이 사람의 경우 데이터가 이미 1개 존재한다. 한 번 걸렸던 전적이 있으니,,,,

그럼 이 사람의 사후확률 P($\theta | D$) 는 위에서 계산한 0.524일 것이다. 

새로운 데이터 즉, 또! 양성판정이라는 새로운 데이터가 들어오면 우리가 계산했던 사후확률 0.524은 새로운 데이터에 대해 사전확률이 된다.

 

사전확률인 P($\theta$)는 실제로 질병에 걸렸을 확률로, 발병률인 0.1이 아니라 우리가 계산한 새로운 사전확률인 0.524 이 된다. 새로운 사전확률을 가지고 계산된 사후확률은 \begin{align*}
P(\theta | D) = P(\theta)\frac{P(D|\theta)}{P(D)} &= 0.524 \times\ \frac{0.99}{0.566}\approx 0.917 
\end{align*}

 

➕➕ MLE와 MAP

오늘 수업을 듣고나니 베이지안이 뭔진 알겠는데,,, 이를 딥러닝에 어떻게 쓰는데? 였다. 이 블로그를 많이 참고했다.

 

📌causal inference

조건부 확률은 유용한 통계적 해석을 제공하지만 인과관계를 추론할 때, 함부로 사용해서는 안된다. 

예를 들어 00시 사람들의 키와 지능지수 사이의 관계를 조사했다고 했을 때, 

키가 클 수록 지능지수가 높은 것을 발견했다. 그러면 둘은 인과관계가 존재하는 걸까? No,,,,

상관관게와 인과관계는 다르다. 키와 지능 지수 사이에는 "나이"라는 교란변수가 존재한다.

당연히 아이보다는 성인이 키가 크고 지능지수가 높을 것이기 때문이다. 

 

이렇게 인과관계를 알아내기 위해서는 confounding factor의 효과를 제거하고 원인에 해당하는 변수만의 인관관계를 계산해야한다. 그렇지 않는다면 새로운 데이터 분포가 주어졌을 때, 예측 모델의 정확도가 급감하게 된다

 

- Simpson paradox 각각의 변수에 신경쓰지 않고 전체 통계 결과를 유추하다 일어나는 오류를 뜻한다. 

위 표를 보면 결석이 작을 떄도, 클 때도 치유법 a가 더 높지만 전체적으로 봤을 떄는 b의 치유법이 더 높은 것을 확인할 수 있다. 신장결석의 크기 z는 confounding variable로, 이런 경우 do(T=a)라는 조정효과를 통해 신장결석의 크기 Z의 개입을 제거해야한다. 

 

피어세션

피어세션 시간에 YOLO v1 논문 발표를 했다. 많이 긴장했어서 피드백이 자세히 기억은 안난다😢

- IOU, mAP, fps같은 평가지표에 대해서는 간략하게라도 설명해서 정확히 하기 

- 이전 related work와 비교를 통해 이게 어떤 문제점을 해결했고, 왜 좋은지 설명하기

- 만약 scale을 했다면 왜 했는지 설명하기 

어떤 문제점을 어떻게 해결해서 얼마나 좋아졌는지 가 모든 피드백을 관통하는 핵심인 거 같다. 

 

오늘 소감 

와 최성준 교수님의 historical review 수업을 듣고 가슴이 다 웅장해졌다,,,,,진짜 너무 재미있게 흥미진진하게 들었던 거 같다. 3주동안 들은 수업 중에 제일 집중력있게 들었다. 

 

'Naver Ai Boostcamp' 카테고리의 다른 글

[DAY 13] Convolutional Neural Networks  (0) 2021.02.04
[DAY 12] 최적화  (1) 2021.02.02
[DAY 10] 시각화 / 통계학  (0) 2021.01.30
[DAY 9] Pandas II / 확률론  (0) 2021.01.29
[DAY 8] Pandas I / 딥러닝 학습방법 이해하기  (0) 2021.01.27