[Day5] Boostcamp AI-Tech

donggunseo·2021년 8월 6일
0

Boostcamp AI-Tech

목록 보기
5/34

2021년 8월 6일
1주차 Python & AI Math
강의수강 : AI Math 8강 ~ 10강

1. 학습내용 정리

(1) 베이즈 통계학

조건부 확률(conditional probability)P(AB)=P(B)P(AB)P (A\cap B) = P(B)P(A|B) 로 표현하며 사건 BB가 일어났을 때 사건 AA가 발생할 확률을 의미한다. 베이즈 정리(Bayes' theorem) 는 조건부 확률을 이용하여 두 확률 변수의 사전확률과 사후확률 사이의 관계를 나타내는 정리이다. 사전확률로부터 사후확률을 구할 수 있도록 하는 정리이다. 식은 다음과 같다.

P(θD)=P(θ)P(Dθ)P(D)P(\theta|\mathscr{D}) = P(\theta)\frac{P(\mathscr{D}|\theta)}{P(\mathscr{D})}

사후확률(posterior) : P(θD)P(\theta|\mathscr{D})
사전확률(prior) : P(θ)P(\theta)
가능도(likelihood) : P(Dθ)P(\mathscr{D}|\theta)
Evidence : P(D)P(\mathscr{D})

θ\theta는 발병률 같은 관찰이 불가한 사건이고, D\mathscr{D}는 테스트 검사결과 같은 관찰이 가능한 사건이다.

Precision(정밀도) : P(θD)P(\theta|\mathscr{D}) = \frac{TP}{TP+FP}
Recall(민감도) : P(Dθ)P(\mathscr{D}|\theta)
False alarm(오탐) : P(D¬θ)P(\mathscr{D}|\lnot\theta)
Specificity(특이도) : P(¬D¬θ)P(\lnot\mathscr{D}|\lnot\theta)
True Positive : P(Dθ)P(θ)P(\mathscr{D}|\theta)P(\theta)
False Positive(1종 오류) : P(D¬θ)P(¬θ)P(\mathscr{D}|\lnot\theta)P(\lnot\theta)
False Negative(2종 오류) : P(¬Dθ)P(θ)P(\lnot\mathscr{D}|\theta)P(\theta)
True Negative : P(¬D¬θ)P(¬θ)P(\lnot\mathscr{D}|\lnot\theta)P(\lnot\theta)

베이즈 정리를 통해 새로운 데이터가 들어왔을 때, 앞서 계산한 사후확률을 사전확률로 사용하여 갱신된 사후확률을 계산할 수 있다.

조건부 확률은 인과관계를 추론할 때 함부로 사용해서는 안된다. 중첩요인(confounding factor) 이 존재하기 때문에 이를 제거하고 원인에 해당하는 변수만의 인과관계를 계산해야 한다.

(2) CNN(Convolutional Neural Network)

Convolution 연산은 커널(kernel)을 Input Vector 상에서 움직여가면서 선형모델과 합성함수가 적용되는 Network다.

수학적 의미에서 Convolution 연산은 커널을 정의역 내에서 움직여도 변하지 않게(translation invariant) 신호를 국소적(local)으로 증폭 또는 감소시켜서 정보를 추출 또는 필터링 하는 것이다.

부호에 따라 증폭 또는 감소가 결정되지만 딥러닝 CNN에서는 +를 사용한다.

대표적으로 예를 들어 딥러닝에서 2차원 Convolution 연산은 다음과 같은 식으로 진행된다.

[fg](i,j)=p,qf(p,q)g(i+p,j+q)[f * g](i,j) = \displaystyle\sum_{p,q}f(p,q)g(i+p,j+q)

입력 크기를 (H,W)(H,W), 커널 크기를 (KH,KW)(K_H, K_W), 출력 크기를 (OH,OW)(O_H, O_W) 라 할 때, 다음과 같이 출력 크기를 계산할 수 있다. 단, padding이나 stride는 고려하지 않는다고 가정한다.

OH=HKH+1OW=WKW+1O_H = H - K_H +1 \\ O_W =W - K_W +1

만약 채널이 여러개인 2차원 입력이 주어진다면, 2차원 convolution을 채널 개수만큼 적용한다고 생각하면 된다. 만약 커널이 한개가 아닌 여러개를 사용한다면 출력도 그만큼 개수가 늘어나 텐서가 된다.

Convolution 연산의 역전파는 똑같이 convolution 연산이 나오게 되는데 식은 다음과 같다.

x[fg](x)=xRdf(y)g(xy)dy=Rdf(y)gx(xy)dy=[fg](x)\frac{\partial}{\partial x}[f* g](x) = \frac{\partial}{\partial x}\displaystyle\int_{\reals^d}f(y)g(x-y)dy = \displaystyle\int_{\reals^d}f(y)\frac{\partial g}{\partial x}(x-y)dy = [f* g'](x)

실전에서는 discrete 한 경우가 대부분인데, 예시를 통해 자세히 확인해보자. X=(x1,x2,x3,x4,x5)X=(x_1, x_2, x_3, x_4, x_5) 가 입력으로 주어지고 커널은 W=(w1,w2,w3)W = (w_1, w_2, w_3) 이면, 출력 O=(w1x1+w2x2+w3x3,w1x2+w2x3+w3x4,w1x3+w2x4+w3x5)=(o1,o2,o3)O = (w_1x_1+w_2x_2+w_3x_3, w_1x_2+w_2x_3+w_3x_4, w_1x_3+w_2x_4+w_3x_5) = (o_1, o_2, o_3) 가 나오게 된다. 역전파 계산을 하게 되면 OO에 넘어온 그레디언트 δ=(δ1,δ2,δ3)\delta = (\delta_1, \delta_2, \delta_3) 를 통해 다음과 같은 식들을 계산할 수 있다.

Lwi=j=13δjxi+j1\frac{\partial\mathscr{L}}{\partial{w_i}} = \displaystyle\sum_{j=1}^3\delta_jx_{i+j-1}

(3) RNN

RNN(Recurrent Neural Network) 은 시퀀스 데이터같은 i.i.d 를 잘 위배하고 순서가 중요한 데이터에 대해 처리할 수 있는 Network이다. 순서가 중요하기 때문에 확률분포 모델을 다음과 같이 정의한다.

P(X1,...Xt)=s=1tP(XsXs1,...,X1)P(X_1,...X_t) = \displaystyle\prod_{s=1}^t P(X_s|X_{s-1},...,X_1)

위 식은 과거의 모든 정보를 활용하지만 사실 모델에 따라 모든 과거 정보가 필요하지는 않을 수 있다. 대표적으로 Word2Vec을 보면 window size를 정해 주변 몇개의 단어만 활용한다던지 등이 가능하다. 이렇게 활용하는 시퀀스 사이즈를 고정해놓고 하는 경우를 Autoregressive Model이라고 한다. 아니면 바로 이전정보를 제외한 나머지를 HtH_t 라는 잠재변수로 인코딩하여 활용하는 걸 잠재 AR 모델이라고 한다. 우리가 알아볼 RNN이 바로 이 경우라고 할 수 있다.

RNN의 식은 다음과 같이 구현할 수 있다.

Ht=σ(XtWX(1)+Ht1WH(1)+b(1))Ot=HtW(2)+b(2)H_t = \sigma(X_tW_X^{(1)} + H_{t-1}W_H^{(1)} + b^{(1)}) \\ O_t = H_tW^{(2)} + b^{(2)}

RNN의 역전파를 구현할 때는 한 번에 하는 것이 아니라 연결그래프에 따라 순차적으로 계산해야 한다. 이를 BPTT(Backpropagation Through Time)라고 하는데 다음 식들을 통해 좀 더 자세하게 살펴보자.

L(x,y,wh,wo)=t=1Tl(yt,ot)ht=f(xt,ht1,wh)ot=g(ht,wo)L(x,y,w_h,w_o) = \displaystyle\sum_{t=1}^T\mathscr{l}(y_t, o_t) \\h_t = f(x_t, h_{t-1}, w_h) \\ o_t = g(h_t, w_o)

다음과 같이 정의하였을 때, whw_h에 대한 그레디언트를 구하자면,

whL(x,y,wh,wo)=t=1Twhl(yt,ot)=t=1Totl(yt,ot)htg(ht,wh)[whht]\partial_{w_h}L(x,y,w_h,w_o) = \displaystyle\sum_{t=1}^T\partial_{w_h}\mathscr{l}(y_t, o_t) = \displaystyle\sum_{t=1}^T\partial_{o_t}\mathscr{l}(y_t, o_t)\partial_{h_t}g(h_t, w_h)[\partial_{w_h}h_t]

이때, whht\partial_{w_h}h_t를 구하는 과정에서 ht=f(xt,ht1,wh)h_t = f(x_t, h_{t-1}, w_h) 의 변수인 whw_h 뿐만 아니라 ht1h_{t-1} 역시 whw_h에 dependent하게 된다. 따라서 at=bt+ctat1a_t = b_t + c_ta_{t-1} 꼴이 나오게 되는데, 점화식 개념을 이용하여 다음과 같이 표현이 가능하다.

at=bt+i=1t1(j=i+1tcj)biwhht=whf(xt,ht1,wh)+i=1t1(j=i+1thj1f(xj,hj1,wh))whf(xi,hi1,wh)a_t = b_t + \displaystyle\sum_{i=1}^{t-1}(\displaystyle\prod_{j=i+1}^{t} c_j)b_i\\ \partial_{w_h}h_t = \partial_{w_h}f(x_t, h_{t-1}, w_h) + \displaystyle\sum_{i=1}^{t-1}(\displaystyle\prod_{j=i+1}^{t}\partial_{h_{j-1}}f(x_j, h_{j-1, w_h}))\partial_{w_h}f(x_i, h_{i-1}, w_h)

만약 시퀀스의 길이가 길어진다면 기울기 소실이 일어날 수도 있다. 그도 그럴것이 경사하강법을 매 time step 마다 진행할 텐데, 넘어오면 올수록 기울기 자체가 사라져버린다는 것이다. 이를 방지하기 위해 역전파 계산과정에서만 일정 부분에서 길이를 끊는 것이 필요하다. 이를 truncated BPTT라고 한다.

2. 과제 정리

특이사항 없음

3. 피어 세션

이유진 님께서 베이즈 정리의 식 전개에서 Evidence를 가능도와 사전확률의 곱의 binary sum으로 구하는 과정을 물어봤고 잘 답해드렸다. 또 새로 합류하신 박황준 님께서 CNN 슬라이드 속 특정 그레디언트 벡터가 어떻게 나오는지 물어보셨고, 그 답은 위에서 설명하였다.

4. 마무리

한 주가 끝났다. 다음주부터는 본격 딥러닝이다.

0개의 댓글