네이버 부스트캠프/LEVEL-1

[부스트캠프][WK-01 / Day4] AI Math 3

1. 강의 정리

통계학 맛보기 (임성빈 교수님)

1) 통계적 모델링

통계적 모델링은 적절한 가정 위에서 확률분포를 추정하는 것이 목표이며, 기계학습과 통계학이 공통적으로 추구하는 목표입니다. 하지만 모집단의 분포를 정확히 알아내는 것은 불가능하므로 근사적으로 확률분포를 추정하는데 목적은 정확하게 맞추는 것보다 위험을 최소화하는 것입니다.

  • 모수적(parametric) 방법론: 데이터가 특정 확률분포를 따른다고 선험적으로(a priori) 가정한 후 그 분포를 결정하는 모수를 추정하는 방법
  • 비모수(nonparamtric) 방법론: 특정 확률분포를 가정하지 않고 데이터에 따라 모델의 구조 및 모수의 개수가 무한히 많거나 유연하게 바뀌는 방법. 기계학습의 많은 방법론은 비모수 방법론에 속합니다.

확률 분포를 가정하는 방법: 히스토그램을 통해 모양을 관찰

  • 데이터가 2개의 값(0 또는 1)만 가지는 경우: 베르누이분포
  • 데이터가 $n$개의 이산적인 값을 가지는 경우: 카테고리분포나 다항 분포
  • 데이터가 $[0,1]$ 사이에서 값을 가지는 경우: 베타분포
  • 데이터가 0 이상의 값을 가지는 경우: 감마분포, 로그 정규분포 등
  • 데이터가 $R$ 전체에서 값을 가지는 경우: 정규분포, 라플라스 분포 등

-> 기계적으로 확률분포를 가정해서는 안되며, 데이터를 생성하는 원리를 먼저 고려하는 것이 원칙입니다. 분포마다 검정하는 방법이 있으므로 모수 추정 후에는 반드시 검정을 해야합니다.

2) 모수 추정

데이터의 확률분포를 가정했다면 모수를 추정해볼 수 있습니다.

  • 정규분포의 모수 평균 $\mu$과 분산 $\sigma^2$으로 이를 추정하는 통계량(statistic)

표본평균, 표본분산
-> 표본분산을 구할 때 $N$이 아니라 $N-1$로 나누는 이유는 불편 추정량을 구하기 위해서 입니다.

통계량의 확률분포를 표집분포라 부르며, 특히 표본평균의 표집분포는 $N$이 커질수록 정규분포 $N(\mu,\sigma^2/N)$을 따릅니다. 이를 중심극한정리라 부르며, 모집단의 분포가 정규분포를 따르지 않아도 성립합니다. (표본'확률'분포가 정규분포를 따르는 것)

3) 최대가능도 추정법(maximum likelihood estimation, MLE)

표본평균이나 표본 분산은 중요한 통계량이지만 확률분포마다 사용하는 모수가 다르므로 적절한 통계량이 달라지게 됩니다. 표본 평균과 표본 분산만 가지고 확률분포를 추정하는 것은 위험한데, 이론적으로 가장 가능성이 높은 모수를 추정하는 방법 중 하나는 최대 가능도 추정법(maximum likelihood estimation, MLE)입니다.

 

 

-> 가능도 함수(likelihood) $L(\theta;x)$는 모수 $\theta$를 따르는 분포가 x를 관찰할 가능성을 뜻하지만 확률로 해석하면 안됩니다.

데이터 집합 $X$가 독립적으로 추출되었을 경우 확률밀도함수 또는 확률질량함수의 곱으로 표현 가능한데, 로그가능도(log likelihood)를 최적화합니다.

  • 로그가능도를 사용하는 이유
    데이터의 숫자가 적으면 상관없지만 데이터의 숫자가 수억 단위가 된다면 컴퓨터의 정확도로는 가능도를 계산하는 것이 불가능합니다. 이때 데이터가 독립일 경우, 곱셈을 덧셈으로 바꿀 수 있기 때문에 연산 가능해집니다. 또한 경사하강법으로 가능도를 최적화할 때 미분 연산을 사용하게 되는데, 로그가능도를 사용하면 연산량을 $O(n^2)$ 에서 $O(n)$ 으로 줄여줍니다. 대게의 손실함수의 경우 경사하강법을 사용하므로 음의 로그가능도를 최적화하게 됩니다.

4) 딥러닝에서의 최대가능도 추정법

딥러닝 모델의 가중치를 $\theta = (W(1),...,W(L) )$라 표기했을 때 분류 문제에서 소프트맥스 벡터는 카테고리 분포의 모수 $(p_1,...,p_k)$를 모델링합니다. 원핫벡터로 표현한 $y = (y_1,...,y_k)$ 을 관찰데이터로 이용해 확률분포인 소프트맥스 벡터의 로그가능도를 최적화는 방향으로 딥러닝의 모수인 $\theta$ 를 학습시킬 수 있습니다.

기계학습에서 사용되는 손실 함수들은 모델이 학습하는 확률분포와 데이터에서 관찰되는 확률분포의 거리를 통해 유도합니다. 통계학에서 MLE로 모수를 추정하는 방법론과 매우 밀접하게 관련이 있습니다. 데이터 공간에 두 개의 확률분포 $P(x)$, $Q(x)$가 있을 경우 두 확률분포 사이의 거리(distance)를 계산할 때 다음과 같은 함수들을 이용합니다.

  • 총 변동 거리 (Total Variation Distance, TV)
  • 쿨백-라이블러 발산 (Kullback-Leibler Divergence, KL)
  • 바슈 타인 거리 (Wasserstein Distance)

5) 쿨백-라이블러 발산 (Kullback-Leibler Divergence, KL)

쿨백-라이블러 발산(KL Divergence)은 다음과 같이 정의합니다.


-> 이산 확률변수의 경우 좌측식으로, 연속 확률변수의 경우 우측식으로 정의할 수 있습니다.

쿨백 라이블러는 다음과 같이 분해할 수 있습니다.

분류 문제에서 정답 레이블을 $P$, 모델 예측을 $Q$라 두면 최대 가능도 추정법은 쿨백-라이블러 발산을 최소화하는 것과 같습니다.


베이즈 통계학 맛보기 (임성빈 교수님)

1) 조건부 확률이란?

베이즈 통계학을 이해하기 위해선 조건부확률의 개념을 이해해야 합니다.

베이즈 정리는 조건부 확률을 이용하여 정보를 갱신하는 방법을 알려줍니다.


-> $P(A|B)$: 사건 $B$가 일어난 상황에서 사건 $A$가 발생할 확률

2) 베이즈 정리

$D$는 새로 관찰하는 데이터, $\theta$는 구하고자 하는 모수입니다. $P(\theta|D)$를 사후확률(posterior)이라고 부르는데 이렇게 부르는 이유는 데이터를 관찰한 이후에 나타나는 확률이기 때문입니다. $P(\theta)$는 사전확률(prior)이라고 부르며, 데이터가 주어지지 않은 상태에서 사전에 주어진 확률입니다. $P(D|\theta)$는 가능도(likelihood)로 현재 주어진 모수에 대해 $D$라는 데이터가 관찰될 확률을 말합니다. $P(D)$는 Evidence라고 하며 데이터 자체의 분포를 뜻합니다. 위의 식으로 사전확률을 사후확률로 업데이트시켜줄 수 있습니다.

 

예시: COVID-99의 발병률은 10%로 알려져 있습니다. COVID-99에 실제로 걸렸을 때 검진될 확률은 99%, 실제로 걸리지 않았을 때 오검진될 확률이 1%라고 할 때, 어떤 사람이 질병에 걸렸다고 검진결과가 나왔을 때 정말로 COVID-99에 감염되었을 확률은? -> 사전확률, 민감도(Recall), 오탐율(False alarm)을 가지고 정밀도(Precision)를 계산하는 문제입니다.

이 문제에서 $\theta$를 COVID-99 발병 사건으로 정의하고, D를 테스트 결과라고 정의했을 때, 사전확률 $P(θ)=0.1$, 가능도는 $P(D|\theta)=0.99, P(D|¬\theta)=0.01$입니다. 하지만, 가능도와 사전확률만으로는 답을 구할 수가 없기 때문에 가지고 있는 정보를 통해서 Evidence를 구해야 합니다. 이 과정은 아래 식으로 정리 가능합니다.

 

 

만약 오검진될 확률(1종 오류)이 10%가 되면 아래와 같이 정밀도(Precision)가 떨어지는 것을 확인할 수 있습니다.

 

3) 베이즈 정리를 통한 정보의 갱신

베이즈 정리를 통해 새로운 데이터가 들어왔을 때 앞서 계산한 사후확률을 사전확률로 사용하여 갱신된 사후확률을 계산할 수 있습니다. 그렇다면 앞에서 COVID-99 판정을 받은 사람이 두 번째 검진을 받았을 때도 양성이 나왔다면 진짜 COVID-99에 걸렸을 확률은 어떻게 될까요? 그 결과는 아래와 같습니다.

 

 

이런식으로 세번째 검사까지 했을 때도 양성이 나오면 정밀도가 99.1% 까지 생신됩니다.

4) 인과관계

조건부 확률은 유용한 통계적 해석을 제공하지만 인과관계(causuality) 를 추론할 때 함부로 사용해서는 안됩니다. 인과관계는 데이터 분포의 변화에 강건한 예측모형을 만들 때 필요합니다. 단, 인과관계만으로는 높은 예측 정확도를 담보하기는 어렵습니다. 이러한 인과관계를 알아내기 위해서는 중첩요인(confounding factor) 의 효과를 제거하고 원인에 해당하는 변수만의 인과관계를 계산해야 합니다. 만약 $Z$의 효과를 제거하지 않으면 가짜 연관성(spurious correlation) 이 나옵니다.


CNN 첫걸음 (임성빈 교수님)

1) Convolution 연산 이해하기

다층신경망(MLP)은 각 뉴련들이 선형모델과 활성함수로 모두 연결된(fully connected) 구조로 각 성분 $h_i$에 대응하는 가중치 행 $W_i$이 필요하고, 만일 $i$가 바뀌면 사용되는 가중치도 바뀝니다.

Convolution 연산은 이와 달리 커널(kernel)을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조입니다. 모든 $i$에 대해 적용되는 커널은 $V$로 같고 커널의 사이즈만큼 $x$상에서 이동하면서 적용합니다.

Convolution 연산의 수학적인 의미는 신호(signal)를 커널을 이용해 국소적으로 증폭 또는 감소시켜서 정보를 추출 또는 필터링하는 것입니다. CNN에서 사용하는 연산은 엄밀히 말하자면 convolution이 아니고 cross-correlation입니다.

커널은 정의역 내에서 움직여도 변하지 않고 주어진 신호에 국소적(local)으로 적용합니다.

2) 다양한 차원에서의 Convolution

Convolution 연산은 1차원뿐만 아니라 다양한 차원에서 계산 가능합니다. 이때, 데이터의 성격에 따라 사용하는 커널이 달라집니다.

2D-Conv 연산은 이와 달리 커널(kernel)을 입력벡터 상에서 $i, j$가 고정된 상황에서 $p, q$를 움직여가면서 선형모델과 합성함수가 적용되는 구조입니다.

입력 크기를 $(H,W)$, 커널 크기를 $(K_H,K_W)$, 출력 크기를 $(O_H,O_W)$ 라 하면 출력 크기는 다음과 같이 계산합니다.

  • $O_H = H-K_H + 1$
  • $O_H = W-K_W + 1$

가령 28X28 입력을 3X3 커널로 2D-Conv 연산을 하면 26X26이 됩니다.

채널이 여러개인 2차원 입력의 경우 2차원 Convolution을 채널 개수만큼 적용한다고 생각하면 됩니다.(3차원부터는 행렬이 아닌 텐서라 부릅니다.) 이때, 커널의 채널 수와 입력의 채널수가 같아야 합니다.

커널을 하나만 사용하면 출력이 행렬로 나오지만 커널을 $O_C$개 사용하면 출력도 텐서가 됩니다.

3) Convolution 연산의 역전파

Convolution 연산은 커널이 모든 입력데이터에 공통으로 적용되기 때문에 역전파를 계산할 때도 똑같이 Convolution 연산이 나오게 됩니다.(Convolution 연산에 미분을 해도 Convolution 연산이 나온다)

입력차원이 5개, 커널의 차원이 3개이므로 출력의 차원은 $5-3+1 = 3$ 이 됩니다.

  • 역전파 과정

    $\delta_1, \delta_2, \delta_3$ 는 미분값을 의미합니다. 입력에 그레디언트가 전달될 때 첫번째 과정에서 $x_3$는 $W_3$와 곱해져 $O_1$에 더해졌기 때문에 그레디언트도 $\delta_1$에 $W_3$가 곱해져서 $x_3$에 전달되고 다른 것들도 동일한 방식으로 진행됩니다.

각 커널에 그레디언트가 전달될 때는 $O_3$가 $x_3$에 대해 $W_1$을 통해 그레디언트를 전달했기 때문에 $W_1$을 통해 전달되었던 그레디언트 $\delta_3$는 $W_1$에 배당됩니다. 따라서 $\delta_3x_3$가 $W_1$의 그레디언트가 됩니다.

 

각 커널에 들어오는 모든 그레디언트를 더하면 결국 convolution 연산과 같습니다.


RNN 첫걸음 (임성빈 교수님)

시퀀스 데이터

시퀀스 데이터는 순차적으로 들어오는 데이터로 소리, 문자열, 주가 등이 있습니다. 시계열 데이터도 시간 순서에 따라 나열된 데이터로 시퀀스 데이터에 속합니다. 시퀀스 데이터는 독립동등분포(i.i.d) 가정을 잘 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률 분포도 바뀌게 됩니다. 즉, 과거 정보 또는 앞뒤 맥락 없이 미래를 예측하거나 문장을 완성하는 것은 불가능합니다.

이전 시퀀스의 정보를 가지고 앞으로 발생할 데이터의 확률분포를 다루기 위해 조건부 확률을 이용할 수 있습니다.

 

위 조건부확률은 과거의 모든 정보를 사용하지만 시퀀스 데이터를 분석할 때 모든 과거 정보들이 필요한 것은 아닙니다. 즉, 시퀀스 데이터를 다루기위해선 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요합니다.(조건부확률에 들어가는 데이터 길이는 가변적) 모든 시점의 정보를 가지고 예측할 필요가 없는 문제의 경우 고정된 길이 $\tau$ 만큼의 시퀀스만 사용하는 경우를 $AR(\tau)$ (Autoregressive Model) 자기회귀모델이라고 합니다. 또 다른 방법은 바로 이전 정보를 제외한 나머지 정보들을 $H_t$ 라는 잠재변수로 인코딩해서 활용하는 잠재 AR 모델입니다.

2) Recurrent Neural Network 이해하기

가장 기본적인 RNN 모형은 MLP(Multi Layer Perceptron)와 유사한 모양입니다. 아래 그림은 MLP를 활용해 구현한 수식입니다.


이때 $W(1)$과 $W(2)$는 시퀀스와 상관없이 불변인 가중치 행렬입니다. 이 경우 현재 시점의 정보만을 가지고 예측을 해야해 과거의 정보를 잠재변수에 다룰 수 없습니다.

RNN은 이전 순서의 잠재변수와 현재의 입력을 활용하여 모델링합니다. 이때, 잠재변수인 $H_t$를 복제해서 다음 순서의 잠재변수를 인코딩하는데 사용합니다.

위의 과정은 순전파 과정이고 RNN의 역전파는 잠재변수의 연결그래프에 따라 순차적으로 계산합니다. RNN에서 모든 시점에서의 예측이 이루어진 다음, 마지막 시점에서의 그레디언트가 타고 올라와 과거까지 흐르는 것을 Backpropagation Through Time(BPTT)라고 부릅니다.

BPTT를 통해 RNN의 가중치행렬의 미분을 계산해보면 미분의 곱으로 이루어진 항이 계산됩니다. 이 경우 시퀀스의 길이가 길어질수록 미분값이 매우 커지거나 작아질 확률이 높습니다. 결국 일반적인 BPTT를 모든 시점에서 적용하게 되면 RNN의 학습이 불안정해집니다.

시뭔스의 길이가 길어지는 경우 BPTT를 통한 역전파 알고리즘의 계산이 불안정해지므로 길이를 끊는 것이 필요합니다. 이를 truncated BPTT라 부릅니다. 하지만 이러한 방법이 완전한 해결책이 되지 않습니다. 이를 해결하기 위해 LSTM, GRU 등의 네트워크를 사용합니다.


2. 과제 수행 과정 / 결과물 정리

X


3. 피어세션 정리

통계학

정리

  • 모집단을 구하는건 대부분 불가능, 그래서 우리는 표본집단을 통해 모분산을 추정하여 사용함
  • 표본집단을 통해 모집단을 구하는 방법으로 최대가능도가 있음
  • 최대가능도는 표본을 통해 지금 얻은 데이터가 이 분포도에 가까운지를 판단
    • 그 분포도에는 정규분포, 카테고리 분포 등 여러개가 존재함.

부족한점

  • 딥러닝에서 최대가능도를 이용한 경우를 자세히 찾아보기

베이즈 통계학

정리

  • 베이즈 정리를 확률이라 생각하지말고, 주장의 신뢰도로 이해하면 쉽다.
    • 코로나검진에서 양성을 받았을때 코로나가 걸렸다는 주장의 신뢰도는 0.526이다.
  • 계산된 사후확률을 또다시 사전확률에 대입해서 계산할 수록 주장의 신뢰도가 높아진다.

CNN

정리

  • Convolution 연산은 이미지의 특징을 요약하는데서 시작하였다.
  • 위 연산을 수행하면 원본데이터의 특징만을 뽑아내면서 효율성을 높일 수 있다.
  • 그러나 정확성이 떨어지는건 감안해야한다.

4. 학습 회고

AI 수업을 위해 필요한 수학의 기초적인 부분들을 모두 학습하였습니다. 통계를 다시 보며 부족함을 느껴 확률과 통계 부분을 다시 공부할 예정입니다. CNN과 RNN을 맛만 봤기 때문에 이후 과정이 기대됩니다.