베이즈 통계학
조건부 확률
P(A∩B)=P(B)P(A∣B)= B가 일어난 상황에서 A가 발생할 확률
베이즈 정리는 조건부 확률을 이용한다.
P(B∣A)(1)=P(A)P(A∩B)=P(B)(2)P(A)...(4)P(A∣B)...(3)
(1) 사후확률 : 데이터를 관찰한 이후에 확인하는 확률
(2) 사전확률 : 데이터를 관찰하기 이전에 사진에 주어진 확률
(3) 가능도 : 현재 주어진 파라미터 모수 또는 가정에서 데이터가 관찰될 확률
(4) Evidence : 데이터 전체의 분포 P(D)=∑θP(D∣θ)P(θ) 로 표현 가능
혼동행렬 (confusion matrix)
-
True Positive (P(D∣θ)P(θ))
- 사전 확률 P(θ)
- 민감도(Recall) P(D∣θ)
-
False Positive (1종오류) (P(D∣(¬θ)P(¬θ))
- 오탐(False alarm) P(D∣(¬θ)
- 사전확률 P(¬θ)
-
True Negative
- 특이도 P(¬D∣(¬θ)
-
False Negative(2종 오류)
-
False Negative(2종 오류)를 줄이는 것이 중요하다.
-
정밀도 P(θ∣D) = TP/ TP + FP
베이즈 정리를 통해 새로운 데이터가 들어왔을 때, 사후 확률을 사전 확률로 사용해 갱신한 사후확률을 계산을 할 수 있다.
인과관계
- 인과관계는 데이터 분포의 변화에 강건한 예측 모형을 만들 때 필요하다.
- 조건부확률은 유용하지만, 데이터가 많아져도 조건부확률만 가지고 인과 관계를 추론하는 것은 불가능하다. 시나리오에 따라 예측정확도가 크게 변하기 때문이다.
- 인과관계를 알아내기 위해서는 중첩요인의 효과를 제거하고 원인에 해당하는 변수만의 인과관계를 계산해야 한다. 이 때 중첩요인의 효과를 제거하지 않으면 가짜 연관성(spurious correlation)이 나온다.
- 중첩 효과를 제거하는 방식
PCa(R=1)=z∈{0,1}∑PC(R=1∣T=a,Z=z)PC(Z=z) = a라는 조건을 따를 때 R(결과)의 값을 중첩효과를 제거해 구하는 방식이다.
CNN(Convolutional Neural Network, CNN)
Convolution 연산: 커널을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조이다
-
Convolution - continuous
[f∗g](x)=∫Rdf(z)g(x−z)dz=∫Rdf(x−z)g(z)dz=[g∗f](x)
-
Convolution - discrete
[f∗g](i)=a∈Zd∑f(a)g(i−a)=a∈Zd∑f(i−a)g(a)=[g∗f](i)
Convolution연산은 1차원 뿐만 아니라 다양한 차원에서 계산이 가능하다.
2D-conv : [f∗g](i,j)=∑p,qf(p,q)g(i+p,j+q)
- 행렬 모양의 커널을 사용
- 입력의 크기 (H,W) 커널 크기(KH,KW), 출력 크기(OH,OW)일때 (OH,OW)는 다음과 같다.
OH=H−KH+1 OW=W−KW+1
3D-conv : [f∗g](i,j,k)=∑p,q,rf(p,q,r)g(i+p,j+q,k+r)
- 채널이 여러개인 2차원 입력인 경우 2D-conv를 채널 개수만큼 적용한다.
- 커널을 3차원 형태로 만든다.
- 출력의 크기는 (OH,OW,1)이 된다.
- 채널을 OC개만큼 만들게 하려면, 커널을 여러개 만들면 된다. 커널을 OC개 사용하면 출력도 텐서가 된다.
차원이 높아진다고 하더라도 커널은 바뀌지 않는다. 즉, i, j, k의 위치가 바뀌어도 커널이 바뀌지 않는다.
Convalution 연산의 역전파 이해하기
- Convolution 연산은 커널이 모든 입력데이터에 공통으로 적용되기 떄문에 역전파를 계산할 때도 convolution 연산이 나오게 된다.
∂x∂[f∗g](x)=∂x∂∫Rdf(y)g(x−y)dy=∫Rdf(y)∂x∂g(x−y)dy=[f∗g′](x) 역전파를 계산할 때 입력 벡터에서 곱해졌던 커널을 통해서 그레디언트가 전달된다.∂wi∂L=j∑δjxi+j−1 각 커널에 들어오는 모든 그레디언트를 더하면 결국 convolution 연산과 같다.
RNN (Recurrent Neural Network)
소리,문자열,주가등의 데이터는 주로 시퀀스(sequence)데이터로 분류한다.
시퀀스 데이터(sequence data)
- 시퀀스 데이터는 독립동등분포 가정을 잘 위배한다. 따라서, 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률 분포도 바뀌게 된다.
- 이전 시퀀스 정보를 가지고 앞으로 발생할 데이터의 확률 분포를 다루기 위해 조건부확률을 사용한다.
P(X1,…,Xt)=s=1∏tP(Xs∣Xs−1,…,X1)
기본적인 RNN 모형은 MLP와 유사한 모양이다. 신경망
Ht=σ(XtW(1)+b(1))
t는 잠재 변수를 뜻한다.
RNN은 이전 순서의 잠재변수와 현재의 입력을 활용하여 모델링한다.
Ot=HtW(2)+b(2)
Ht=σ(XtWX(1)+Ht−1WH(1)+b(1))
잠재 변수인 Ht를 복제해서 다음 순서의 잠재변수를 인코딩하는데 사용한다.
가중치 행렬은 총 3개를 사용한다.
- WX(1) : 입력 데이터에서부터 선형 모델을 통해서 잠재변수로 인코딩하는 가중치 행렬
- WH(1) : 이전 시점의 잠재변수로부터 정보를 받아 현재 시점의 잠재변수로 인코딩하는 가중치 행렬
- W(2) : 만든 잠재변수를 다시 출력으로 만들어주는 가중치 행렬
이 가중치 행렬들은 t에 따라서 변하지 않음. t에 따라 변화하는 것은 입력 데이터와 잠재변수뿐이다.
RNN의 역전파는 잠재 변수의 연결 그래프에 따라 순차적으로 계산한다. X1 부터 Xt로 모든 시점에 순전파를 수행한 후 마지막 시점에서 역방향으로 그레디언트 벡터를 구한다. 이를 BPTT라고 한다.
잠재변수에 들어오는 그레디언트 벡터는 다음과 같다.
- 다음 시점에서의 그 다음 잠재변수에 들어오게되는 그레디언트 벡터
- 출력에서 들어오는 그레디언트 벡터
L(x,y,wh,wo)=t=1∑Tℓ(yt,ot)
BPTT를 통해 각 가중치 행렬의 미분을 계산하면 최종적으로 i + 1 ~ t 시점까지의 잠재변수에 대한 미분값이 곱해지는데, 이 시점이 길면 길수록 불안해진다.미분값이 매우 커지거나 매우 작아질 수 있기 때문에 RNN의 학습이 불안정해질 수 있다.
특히 기울기가 0으로 줄어드는 것은, 즉, 과거 시점으로 갈수록 그레디언트 벡터가 매우 작아지게 된다면 이전 시점에 데이터를 반영하기가 어렵기 때문에 과거의 정보를 유실하는 것을 해결하기 위해 truncated BPTT를 사용한다.
truncated BPTT
- 미래 정보의 일부 그레디언트 벡터를 끊고, 연산을 과거의 블럭을 몇개로 나누어 역전파 알고리즘을 연산하는 과정이다.
- truncated BPTT 또한 완전한 해결책은 아니기에, 오늘날에는 기본적인 RNN모형을 사용하지않고, 길이가 굉장히 큰 시퀀스를 처리하는데 LSTM이나 GRU라는 다른 모형을 사용한다.