국문과 유목민

[일일리포트] Day 04 본문

IT 견문록/2022_부스트캠프 AITech 3기(100일)

[일일리포트] Day 04

논곰 2022. 1. 20. 23:26

해당 일일리포트에서는 네이버 커넥트에서 진행하는 '부스트캠프 AI Tech 3기'에서 배운 내용을 다루고 있습니다. 저작권 이슈 때문에 관련 자료를 올릴 수 없어, 핵심 이론과 코드 위주로 정리하고 있기에 내용이 부족할 수 있습니다. 

▶ Today I Learned (핵심 요약 정리)

BayrsianStatistic (베이즈 통계학 기초)

  • 조건부 확률: 베이즈 통계학을 이해하기 위해서는 조건부 확률의 개념을 우선적으로 이해해야 한다. 조건부 확률은 사건 B가 일어난 상황에서, 사건 A가 일어날 확률이다.
    $$P(A\cap B) = P(B)P(A|B)$$
  • 베이즈 정리: 베이즈 정리는 조건부 확률을 이용하여, $A$라는 새로운 정보가 주어졌을 때 $P(B)$로부터 $P(B|A)$를 계산하는 방법을 제공한다.
    $$P(B|A) = \frac{P(A\cap B)}{P(A)} = P(B)\frac{P(A|B)}{P(A)}$$
  • 베이즈 정리 수식별 용어 정리 (사전확률이 중요!)
    $$P(\theta | D) = P(\theta) \frac{P(D|\theta)}{P(D)}$$
    • $P(\theta | D)$: 사후확률(posterior)
    • $P(\theta)$: 사전확률(prior)
    • $P(D|\theta)$: 가능도(likelihood)
    • $P(D)$: Evidence (데이터 전체의 분포를 의미)
  • 예제) 사전확률: 발병률 / 가능도: 실제로 걸렸을 확률 or 걸리지 않았을 확률
    • Evidence(구하는 방법): 사전확률*가능도 → $P(D) = \sum_{\theta}P(D|\theta)P(\theta)$
  • 베이즈 정리를 통한 정보 갱신: 새로운 데이터가 들어왔을 때, 앞서 계산한 사후확률을 사전확률로  사용해 갱신된 사후확률을 계산할 수 있다. 사후확률을 갱신하려면 evidence를 계산할 때, 사전확률의 값 대신 이전에 구한 사후확률을 이용해 계산하면 된다.
  • 조건부 확률 & 인과관계: 조건부 확률은 유용한 통계적 해석을 제공하지만 데이터가 아무리 많아지더라도 이를 이용해 인과관계를 추론하는 것은 불가능하다.
    • 인과관계를 알아내기 위해서는 중첩요인의 효과를 제거하고 원인에 해당하는 변수만의 인과관계 계산 필요
  • 조건부 확률의 시각화

출처: 네이버 부스트캠프

  • 1종오류: FalsePositive
  • 2종오류: FalseNegative
  • Precision (정밀도) $P(\theta |D)$= $\frac{TP}{TP+FP}$
  • Recall (민감도): $P(D|\theta)$
  • FalseAlarm (오탐률) $P(D|\neg \theta)$

CNN (Convolution Neural Network)

 지금까지 배운 다층신경망(MLP)은 뉴런들이 선형모델과 활성함수로 모두 연결된 구조였다. 그렇기에 각 성분 $h_i$에 대응하는 가중치 행 $W_i$이 필요하다. 만일 i가 바뀌면 사용하는 가중치도 바뀌어야 하기 때문에 값이 커지게 됐다.
 Convolution연산은 위와 달리 커널을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조이다. 모든 $i$에 대해 적용되는 커널 $V$는 계속 같고, 커널의 사이즈만큼 $X$상에서 이동하면서 적용한다. 차이점은 커널의 사이즈가 다층 신경망보다 작다.

  • CNN: Convolition 연산의 수학적인 의미는 신호를 커널을 이용해 국소적으로 증폭 또는 감소시켜서 정보를 추출 또는 필터링하는 것이다.
  • 2-D Conv: 2D-conv연산은 커널을 입력벡터 상에서 움직여 가면서 선형모델과 함성함수가 적용되는 구조이다. 입력데이터에 해당하는 행렬에서 커널을 x와 y방향을 움직이면서 연산을 한다. i와 j가 고정된 상태에서 p와 q를 이동하면서 계산을 한다.

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

  • 입력크기($H, W$), 커널크기($K_H, K_W$), 출력크기($O_H, O_W$)를 다음과 같이 계산할 수 있다.

$$
\begin{matrix}
O_H &=& H - K_H + 1 \\
O_W &=& H - K_W + 1
\end{matrix}$$

  • 2D-conv 연산: 28x28입력을 3x3커널로 2D-Conv연산을 하면 26x26이 된다.
    • 채널이 여러개인 2차원 입력의 경우 2차원 Convolution을 채널 개수만큼 적용한다고 생각하면 된다. 텐서는 직육면체 블록으로 이해하면 좀 더 이해하기 쉽습니다. 이때 출력은 ($O_H, O_w, 1$)을 가지게 된다.
    • 만약 출력의 output개수를 여러 개 만들어 주고 싶다면 커널을 여러 개 만들어주면 되는데, ($O_H, O_w, O_c$)로 출력의 채널을 조절하고 싶다면 커널을 $O_c$개로 조절하면 된다.
    • Convolution 연산은 해당 커널이 모든 입력데이터에 공통으로 적용되기 때문에 역전파를 계산할 때도 Convolution 연산이 나오게 된다. 이는 다시 말해 Convolution연산을 미분해도 Convolution이 나온다는 뜻이다. 

RNN (Recurrent Neural Network)

RNN 모델이 등장하게 된 배경과 연관된 개념들을 간단하게 설명

  • 시퀀스 데이터: 소리, 문자열, 주가 등의 데이터를 말하며, 시퀀스 데이터는 독립동등분포 가정을 잘 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률분포도 바뀌게 된다.
    • 시퀀스 데이터 다루기: 베이즈 법칙을 사용해서 이전 시퀀스의 정보를 가지고 앞으로 발생할 데이터의 확률분포를 다룰 수 있다. 
      $$P(X_1, ..., X_t) = \prod_{s=1}^{t}P(X_s|X_{s-1},..., X_1)$$
      • 위 조건부확률은 과거의 모든 정보를 사용하지만 시퀀스 데이터를 분석할 때 꼭 모든 과거 정보들이 필요한 것은 아니다.
  • AR 모델(AutoRegressiveModel, 자기회귀모델): 시퀀스 데이터를 다루기 위해서는 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요한데, 고정된 길이 $\tau$만큼의 시퀀스만 사용하는 모델을 말한다.
  • 잠재 AR모델: 바로 이전 정보를 제외한 나머지 정보들을 $H_t$라는 잠재변수로 인코딩해서 활용하는 모델. 해당 모델의 장점은 과거 모든 데이터를 활용할 수 있고, 가변적인 데이터를 고정적인 데이터로 생각할 수 있다.
여기서 등장하는 문제는 과거 정보의 잠재변수를 어떻게 인코딩할지에 대한 문제인데, 이를 해결하기 위해 등장한 방법이 순환 신경망(RNN, Recurrent Neural Network)이다.

 

  • RNN: 가장 기본적인 RNN 모형은 MLP와 유사한 모양이다. 아래 식, $W^{(1)},W^{(2)}$은 시퀀스 데이터와 상관없이 불변인 행렬이다.

$$
\begin{matrix}
O_t &=& H_tW^{(2)} +b^{(2)} \\
H_t &=& \sigma(X_tW^{(1)} + b^{(1)})
\end{matrix}
$$
 위 모델은 과거의 정보를 담은 잠재변수를 만들 수 없기에, 잠재변수인 $H_t$를 복제해서 다음 순서의 잠재변수를 인코딩하는데 사용한다.
$$
\begin{matrix}
O_t &=& H_tW^{(2)} +b^{(2)} \\
H_t &=& \sigma(X_tW^{(1)}_{X} +H_{t-1}W^{(1)}_{H} + b^{(1)})
\end{matrix}
$$

  • 여기서 $W$ 가중치 행렬은 모두 $t$에 따라서 변하지 않는 행렬이라는 점을 기억해야 한다.
  • 이 식을 Backpropagation Through Time(BPTT)라 하며, 이는 RNN의 역전파 방법이다.
    •  BPTT: BPTT를 통해 RNN의 가중치 행렬의 미분을 계산해서 미분의 곱으로 이루어진 항을 계산할 수 있다. 하지만 시퀀스 길이가 길어질수록 그레디언트가 0이 되는 Gradient Vanishing(기울기 소실)이 발생할 수 있다. 따라서 길이를 끊어주는 truncatedBPTT를 해서 특정 시점의 그레디언트만 받아오도록 하는 방법을 활용하기도 한다.
  • 하지만 기본적인 RNN 모형보다는 LSTM이나 GRU와 같은 더 발전된 RNN기법을 사용한다.

▶ Review (생각)

 수학 진도를 끝냈는데, 다시 듣는 강의임에도 불구하고 확실히 이해하기는 힘든 것 같다. 심화과제를 풀려고 시도해봤는데 강의를 들었음에도 숨이 턱턱막혔다. 꽤 오랜 시간을 생각하고 시도해봤는데도 답과는 꽤 멀다는 느낌을 많이 받았다. 내일 파이썬 강의를 마저 듣고 다시 심화과제를 시도해봐야겠다.

 오늘은 멘토님과 Git세미나를 통해서 Git도 다시 한 번 복습하고(추후 Git관련 포스팅으로 정리 예정), 마스터 클래스를 통해서 임성빈 마스터님의 얘기를 듣는 시간이었는데 꽤나 많은 생각을 할 수 있었던 것 같다. 이번 부스트코스에서도 수학강의를 맡아주셔서 수학적인 부분에 대한 마인드셋에 대해서 말씀을 해주셨는데 내가 생각했던 마인드셋이었던 것 같다. (물론 난 아직 부족한 거 같긴 하지만..) 또한 인공지능 대학원에 관한 부분에 대해서도 견해를 말씀해주셨는데, 현재 내가 가고자 하는 도매인의 AI기술은 어느정도 대중화되어 있기에 실무적인 경험을 쌓는 것이 더 좋지 않을까라는 생각을 했다. 

 부스트캠프를 시작한 지 얼마되지 않았음에도 마스터님의 강의뿐만 아니라  멘토링, 동료들과의 토론, 과제, 마스터클래스와 같은 시간을 통해서 새로운 도전을 많이 받는 것 같다. 혼자서 대충 넘어갔던 부분도 한 번 더 짚고넘어갈 수 있는 시간이나 내가 부족한 부분을 알려줄 수 있는 사람이 옆에 있다는 것도 꽤나 든든하다는 느낌이 들었다. 내가 모른다는 것을 부끄러워하지 않고, 내가 무엇을 모르는지 정확히 정의하고 이를 해결하기 위한 공부를 해야겠다. 

Comments