1주차 학습정리_6

Simbean·2021년 8월 6일
0

베이즈 통계학

조건부 확률
P(AB)=P(B)P(AB)=P(A\cap B) = P(B)P(A|B) = B가 일어난 상황에서 A가 발생할 확률

베이즈 정리는 조건부 확률을 이용한다.

P(BA)(1)=P(AB)P(A)=P(B)(2)P(AB)...(3)P(A)...(4)\stackrel{_{(1)}}{P(B | A)} = \frac{P(A\cap B)}{P(A)} =\stackrel{_{(2)}}{P(B)}\frac{P(A | B)_{...{(3)}}}{P(A)_{...{(4)}}}

(1) 사후확률 : 데이터를 관찰한 이후에 확인하는 확률
(2) 사전확률 : 데이터를 관찰하기 이전에 사진에 주어진 확률
(3) 가능도 : 현재 주어진 파라미터 모수 또는 가정에서 데이터가 관찰될 확률
(4) Evidence : 데이터 전체의 분포 P(D)=θP(Dθ)P(θ)P(\mathcal{D}) = \sum_\theta P(\mathcal{D}|\theta)P(\theta) 로 표현 가능

혼동행렬 (confusion matrix)

  • True Positive (P(Dθ)P(θ)P(\mathcal{D}|\theta)P(\theta))

    • 사전 확률 P(θ)P(\theta)
    • 민감도(Recall) P(Dθ)P(\mathcal{D}|\theta)
  • False Positive (1종오류) (P(D(¬θ)P(¬θ)P(\mathcal{D}|(\lnot\theta)P(\lnot\theta))

    • 오탐(False alarm) P(D(¬θ)P(\mathcal{D}|(\lnot\theta)
    • 사전확률 P(¬θ)P(\lnot\theta)
  • True Negative

    • 특이도 P(¬D(¬θ)P(\lnot\mathcal{D}|(\lnot\theta)
  • False Negative(2종 오류)

  • False Negative(2종 오류)를 줄이는 것이 중요하다.

  • 정밀도 P(θD)P(\theta|\mathcal{D}) = TP/ TP + FP

    • 사후확률

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

인과관계

  • 인과관계는 데이터 분포의 변화에 강건한 예측 모형을 만들 때 필요하다.
  • 조건부확률은 유용하지만, 데이터가 많아져도 조건부확률만 가지고 인과 관계를 추론하는 것은 불가능하다. 시나리오에 따라 예측정확도가 크게 변하기 때문이다.
  • 인과관계를 알아내기 위해서는 중첩요인의 효과를 제거하고 원인에 해당하는 변수만의 인과관계를 계산해야 한다. 이 때 중첩요인의 효과를 제거하지 않으면 가짜 연관성(spurious correlation)이 나온다.
  • 중첩 효과를 제거하는 방식
    PCa(R=1)=z{0,1}PC(R=1T=a,Z=z)PC(Z=z)P^{\mathfrak{C}_{a}}(R=1)=\sum_{z \in\{0,1\}} P^{\mathfrak{C}}(R=1 \mid T=a, Z=z) P^{\mathfrak{C}}(Z=z)
    = a라는 조건을 따를 때 R(결과)의 값을 중첩효과를 제거해 구하는 방식이다.

CNN(Convolutional Neural Network, CNN)

Convolution 연산: 커널을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조이다

  • Convolution - continuous

    [fg](x)=Rdf(z)g(xz)dz=Rdf(xz)g(z)dz=[gf](x)[f * g](x)=\int_{\mathbb{R}^{d}} f(z) g(x-z) \mathrm{d} z=\int_{\mathbb{R}^{d}} f(x-z) g(z) \mathrm{d} z=[g * f](x)
  • Convolution - discrete

    [fg](i)=aZdf(a)g(ia)=aZdf(ia)g(a)=[gf](i)[f * g](i)=\sum_{a \in Z^{d}} f(a) g(i-a)=\sum_{a \in Z^{d}} f(i-a) g(a)=[g * f](i)

Convolution연산은 1차원 뿐만 아니라 다양한 차원에서 계산이 가능하다.

2D-conv : [fg](i,j)=p,qf(p,q)g(i+p,j+q)[f * g](i, j)=\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)일때 (OH,OW)(O_H, O_W)는 다음과 같다.
    OH=HKH+1O_{H}=H-K_{H}+1
    OW=WKW+1O_{W}=W-K_{W}+1

3D-conv : [fg](i,j,k)=p,q,rf(p,q,r)g(i+p,j+q,k+r)[f * g](i, j, k)=\sum_{p, q, r} f(p, q, r) g(i+p, j+q, k+r)

  • 채널이 여러개인 2차원 입력인 경우 2D-conv를 채널 개수만큼 적용한다.
    • 커널을 3차원 형태로 만든다.
    • 출력의 크기는 (OH,OW,1)(O_H, O_W, 1)이 된다.
  • 채널을 OCO_C개만큼 만들게 하려면, 커널을 여러개 만들면 된다. 커널을 OCO_C개 사용하면 출력도 텐서가 된다.
    차원이 높아진다고 하더라도 커널은 바뀌지 않는다. 즉, i, j, k의 위치가 바뀌어도 커널이 바뀌지 않는다.

Convalution 연산의 역전파 이해하기

  • Convolution 연산은 커널이 모든 입력데이터에 공통으로 적용되기 떄문에 역전파를 계산할 때도 convolution 연산이 나오게 된다.
    x[fg](x)=xRdf(y)g(xy)dy=Rdf(y)gx(xy)dy=[fg](x)\begin{aligned} \frac{\partial}{\partial x}[f * g](x) &=\frac{\partial}{\partial x} \int_{\mathbb{R}^{d}} f(y) g(x-y) \mathrm{d} y \\ &=\int_{\mathbb{R}^{d}} f(y) \frac{\partial g}{\partial x}(x-y) \mathrm{d} y \\ &=\left[f * g^{\prime}\right](x) \end{aligned}
    역전파를 계산할 때 입력 벡터에서 곱해졌던 커널을 통해서 그레디언트가 전달된다.
    Lwi=jδjxi+j1\frac{\partial \mathcal{L}}{\partial w_{i}}=\sum_{j} \delta_{j} x_{i+j-1}
    각 커널에 들어오는 모든 그레디언트를 더하면 결국 convolution 연산과 같다.

RNN (Recurrent Neural Network)

소리,문자열,주가등의 데이터는 주로 시퀀스(sequence)데이터로 분류한다.

시퀀스 데이터(sequence data)

  • 시퀀스 데이터는 독립동등분포 가정을 잘 위배한다. 따라서, 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률 분포도 바뀌게 된다.
  • 이전 시퀀스 정보를 가지고 앞으로 발생할 데이터의 확률 분포를 다루기 위해 조건부확률을 사용한다.
    P(X1,,Xt)=s=1tP(XsXs1,,X1)\begin{aligned} P\left(X_{1}, \ldots, X_{t}\right) &=\prod_{s=1}^{t} P\left(X_{s} \mid X_{s-1}, \ldots, X_{1}\right) \end{aligned}

기본적인 RNN 모형은 MLP와 유사한 모양이다. 신경망
Ht=σ(XtW(1)+b(1))\mathbf{H}_{t}=\sigma\left(\mathbf{X}_{t} \mathbf{W}^{(1)}+\mathbf{b}^{(1)}\right)
t는 잠재 변수를 뜻한다.

RNN은 이전 순서의 잠재변수와 현재의 입력을 활용하여 모델링한다.
Ot=HtW(2)+b(2)\mathbf{O}_{t}=\mathbf{H}_{t} \mathbf{W}^{(2)}+\mathbf{b}^{(2)}
Ht=σ(XtWX(1)+Ht1WH(1)+b(1))\mathbf{H}_{t}=\sigma\left(\mathbf{X}_{t} \mathbf{W}_{X}^{(1)}+\mathbf{H}_{t-1} \mathbf{W}_{H}^{(1)}+\mathbf{b}^{(1)}\right)
잠재 변수인 HtH_t를 복제해서 다음 순서의 잠재변수를 인코딩하는데 사용한다.

가중치 행렬은 총 3개를 사용한다.

  • WX(1)\mathbf{W}_{X}^{(1)} : 입력 데이터에서부터 선형 모델을 통해서 잠재변수로 인코딩하는 가중치 행렬
  • WH(1)\mathbf{W}_{H}^{(1)} : 이전 시점의 잠재변수로부터 정보를 받아 현재 시점의 잠재변수로 인코딩하는 가중치 행렬
  • W(2)\mathbf{W}^{(2)} : 만든 잠재변수를 다시 출력으로 만들어주는 가중치 행렬

이 가중치 행렬들은 t에 따라서 변하지 않음. t에 따라 변화하는 것은 입력 데이터와 잠재변수뿐이다.

RNN의 역전파는 잠재 변수의 연결 그래프에 따라 순차적으로 계산한다. X1X_1 부터 XtX_t로 모든 시점에 순전파를 수행한 후 마지막 시점에서 역방향으로 그레디언트 벡터를 구한다. 이를 BPTT라고 한다.
잠재변수에 들어오는 그레디언트 벡터는 다음과 같다.

  • 다음 시점에서의 그 다음 잠재변수에 들어오게되는 그레디언트 벡터
  • 출력에서 들어오는 그레디언트 벡터
    L(x,y,wh,wo)=t=1T(yt,ot)L\left(x, y, w_{h}, w_{o}\right)=\sum_{t=1}^{T} \ell\left(y_{t}, o_{t}\right)

BPTT를 통해 각 가중치 행렬의 미분을 계산하면 최종적으로 i + 1 ~ t 시점까지의 잠재변수에 대한 미분값이 곱해지는데, 이 시점이 길면 길수록 불안해진다.미분값이 매우 커지거나 매우 작아질 수 있기 때문에 RNN의 학습이 불안정해질 수 있다.
특히 기울기가 0으로 줄어드는 것은, 즉, 과거 시점으로 갈수록 그레디언트 벡터가 매우 작아지게 된다면 이전 시점에 데이터를 반영하기가 어렵기 때문에 과거의 정보를 유실하는 것을 해결하기 위해 truncated BPTT를 사용한다.

truncated BPTT

  • 미래 정보의 일부 그레디언트 벡터를 끊고, 연산을 과거의 블럭을 몇개로 나누어 역전파 알고리즘을 연산하는 과정이다.
  • truncated BPTT 또한 완전한 해결책은 아니기에, 오늘날에는 기본적인 RNN모형을 사용하지않고, 길이가 굉장히 큰 시퀀스를 처리하는데 LSTM이나 GRU라는 다른 모형을 사용한다.

0개의 댓글

관련 채용 정보