[Day4] Boostcamp AI-Tech

donggunseo·2021년 8월 5일
0

Boostcamp AI-Tech

목록 보기
4/34

2021년 8월 5일
1주차 Python & AI Math
강의수강 AI-Math 5강 ~ 7강

1. 학습내용 정리

5강은 딥러닝 학습방법, 6강은 확률론, 7강은 통계론에 대해 다뤘는데 특히 6강과 7강은 잘 모르던 내용이 많아 자세하게 정리해보고자 한다.

(1) 딥러닝 학습방법

신경망(neural network) 은 대표적인 비선형모델이며 딥러닝에서 다룰 가장 중요한 틀이다. Single layer에 대해 다음과 같이 수식을 나타낼 수 있다.

Z=WX+bZ = WX+b
H=σ(Z)H = \sigma(Z)
XRd×n , WRp×d , bRp×n , ZRp×n , HRp×nX \in \reals^{d \times n} \space, \space W \in \reals^{p \times d} \space, \space b \in \reals^{p \times n} \space, \space Z \in \reals^{p \times n} \space, \space H \in \reals^{p \times n}

XX는 데이터들을 의미하고 WW는 가중치 파라미터 행렬, bb는 편향 파라미터 행렬을 의미한다. σ()\sigma()함수는 신경망이 비선형 모델로 존재하도록 하는 활성 함수(activation function) 이다. 이 함수는 비선형 함수이며 활성함수가 없다면 이 신경망은 선형모델과 다를 바가 없는 것이다. 활성함수에는 주로 sigmoid, 하이퍼볼릭탄젠트, ReLU가 있으며 요즘은 ReLU가 주로 사용되고 있다.

소프트맥스(Softmax)는 모델의 출력을 확률로 해석할 수 있도록 하는 함수이다. 식은 다음과 같다.

softmax(xi)=exp(xi)k=1pexp(xk)softmax(x_i) = \frac{\exp(x_i)}{\textstyle\sum_{k=1}^p\exp(x_k)}

소프트맥스를 거치면 출력 벡터 각 요소의 합이 1이 된다. 확률의 성질과 같은 것이다. 주로 분류 문제를 풀때 활용한다.

신경망에서 여러 층을 쌓는 이유는 임의의 연속함수를 근사할 수 있기 때문이다. Universal approximation theorem 에서는 2층 신경망으로는 어떤 임의의 연속함수를 근사할 수 있음을 입증하였는데 다음과 같이 서술하고 있다.

A feed-forward network with a single hidden layer contating a finite number of neurons can approximate arbitrary well real-valued continuous function on compact subset on Rn\reals^n , under mild assumption on the activation function.

2층만으로도 가능하지만 층이 얇으면 써야할 뉴런의 숫자가 너무 늘어나서 학습의 속도와 성능이 저하될 수 있다. 따라서 층을 깊게 만드는 것이 좋지만 너무 깊은 것도 좋은 것은 아니다. 데이터와 모델의 목적에 맞게 조절하여 설계해야 할 것이다.

역전파(back propagation) 알고리즘은 신경망의 각 층의 파라미터들을 조정하여 원하는 값을 얻는 딥러닝의 학습원리이다. 신경망은 쉽게 말해 여러 개의 함수가 합성된 하나의 거대한 합성함수라고 볼 수 있는데, 이 합성함수의 미분법인 chain-rule based auto-differentiation 을 이용하면 된다. 예를 들어 다음과 같다.

z=w2 , w=x+yz = w^2 \space,\space w=x+y
zw=2w , zx=zwwx=2w×1\frac{\partial z}{\partial w} = 2w \space,\space \frac{\partial z}{\partial x} = \frac{\partial z}{\partial w} \frac{\partial w}{\partial x} = 2w \times1

2층 신경망을 예제로 더 자세히 알아보자 다음과 같이 식을 정의하고,

o=W(2)h+b(2)o = W^{(2)}h+b^{(2)}
h=σ(z)h = \sigma(z)
z=W(1)X+b(1)z = W^{(1)}X+b^{(1)}
L=(θ,o),L = (\theta, o),
XRd×n  W(1)Rq×d  b(1)Rq×n  zRq×n  hRq×n  W(2)Rp×q  b(2)Rp×n  oRp×n  X \in \reals^{d \times n} \space\space W^{(1)} \in \reals^{q \times d} \space\space b^{(1)} \in \reals^{q \times n} \space\space z \in \reals^{q \times n} \space\space h \in \reals^{q \times n} \space\space W^{(2)} \in \reals^{p \times q} \space\space b^{(2)} \in \reals^{p \times n} \space\space o \in \reals^{p \times n} \space\space

LW(1)\frac{\partial L}{\partial W^{(1)}} 을 구하기 위해 역전파 방식을 사용해 뒤로 돌아가 보자. 참고로 알아두면 좋은 것은, 덧셈 노드에서 역전파는 넘어온 값을 그대로 흘려보내고, 곱셈 노드에서 역전파는 곱해지는 상대방의 미분값을 넘어온 값에 곱하여 흘려보낸다.

LW(2)=LooW(2)=LohT\frac{\partial L}{\partial W^{(2)}} = \frac{\partial L}{\partial o} \frac{\partial o}{\partial W^{(2)}} = \frac{\partial L}{\partial o} h^T
Lh=Looh=W(2)TLo\frac{\partial L}{\partial h} = \frac{\partial L}{\partial o} \frac{\partial o}{\partial h} = W^{(2)T} \frac{\partial L}{\partial o}
Lz=Lhhz=W(2)TLoσ(z)\frac{\partial L}{\partial z} = \frac{\partial L}{\partial h} \frac{\partial h}{\partial z} = W^{(2)T}\frac{\partial L}{\partial o} \sigma'(z)
LW(1)=LzzW(1)=W(2)TLoσ(z)XT\frac{\partial L}{\partial W^{(1)}} = \frac{\partial L}{\partial z} \frac{\partial z}{\partial W^{(1)}} = W^{(2)T}\frac{\partial L}{\partial o} \sigma'(z)X^T

역전파를 다룰 때 가장 중요한 것은 행렬의 미분에서 그 형상을 맞추는 것이 굉장히 중요하다. 실전에서는 프레임워크를 사용하기 때문에 알아서 다 해주지만 만약 손으로 일일히 구현한다면 이 형상을 맞춰서 연결시키는게 매우 중요하다.

(2) 확률론

우리가 손실함수로 사용하는 여러 함수들의 공통적인 목적은 분산 및 불확실성을 최소화하는 것이다. 이 목적을 위해 확률론과 통계학이 필요하다.

데이터 공간을 X×YX\times Y라고 표기하고 DD는 이 데이터 공간에서 데이터를 추출하는 분포를 말한다. 이 데이터를 우리는 확률변수로 (X,Y) D(X,Y)~D라고 표기한다.

이 확률변수는 확률분포 DD에 따라 이산형(discrete)과 연속형(continuous)로 나뉘는데, 다음과 같이 각각 정의한다.

P(XA)=xAP(X=x)P(X \in A) = \displaystyle\sum_{x \in A}P(X=x)
P(XA)=AP(x)dxP(X \in A) = \displaystyle\int_{A}P(x)dx

참고로 연속형 확률변수에서는 그 밀도함수 위에서의 적분을 통해 모델링하며 밀도를 확률로 해석해서는 안된다.

확률분포 DD에 대해 여러 분포를 정의할 수 있는데, 결합분포(Joint Distribution) 는 여러 확률 변수에 대해 한꺼번에 고려하는 분포이다. P(X,y)P(X,y)로 모델링한다. 주변확률분포(Marginal Distribution) 는 하나의 확률변수만 고려하는 것으로 P(X)=yP(X,y)P(X) = \textstyle\sum_{y}P(X,y) 의 표현으로 나타낸다(연속형일 때는 적분으로 표현하면 된다). 조건부확률분포(Conditional Distribution)P(Xy)P(X|y)로 모델링하며 특정 클래스가 주어진 조건에서의 데이터의 확률분포를 보여주는 것이다.

기댓값(Expectation value) 은 데이터를 대표하는 통계량이며 다른 statistical function을 계산하는 데 사용합니다. discrete와 continuous에 따라 각각 식이 다음과 같다.

ExP(x)[f(x)]=xXf(x)P(x)E_{x \sim P(x)}[f(x)] = \displaystyle\sum_{x \in X}f(x)P(x)
ExP(x)[f(x)]=Xf(x)P(x)dxE_{x \sim P(x)}[f(x)] = \displaystyle\int_{X}f(x)P(x)dx

기댓값을 통해 분산, 첨도, 공분산 등의 여러 통계량을 계산할 수 있다.

대부분의 문제들은 확률분포 DD를 정확하게 모를 때가 대부분이다. 그래서 주어진 데이터만으로 기댓값을 근사하는 몬테 카를로(Monte Carlo) 샘플링 방법이 있다. 식은 다음과 같다.

ExP(x)[f(x)]1Ni=1Nf(x(i)), x(i)i.i.dP(x)E_{x \sim P(x)}[f(x)] \approx \frac{1}{N}\displaystyle\sum_{i=1}^Nf(x^{(i)}), \space x^{(i)} i.i.d \sim P(x)

independent and identically distributed(i.i.d)가 보장된다면 대수의 법칙(law of large number)에 의해 그 수렴성이 보장된다.

(3) 통계학

통계적 모델링은 잘 정한 hypothesis 위에서 확률분포를 inference하는 것이 목적이다. 하지만 데이터의 양이 유한하기 때문에 근사적으로 확률분포를 inference 할 수 밖에 없다. 데이터가 특정 확률분포를 따른다고 선험적(a priori)으로 가정한 후 그 분포를 결정하는 모수(parameter)를 추정하는 방법을 모수적(parametric) 방법론이라고 하고, 가정 없이 데이터에 따라 모델의 구조와 모수의 개수가 flexible하게 바뀌는 것을 비모수(nonparametric) 방법론이라고 한다. 우리는 모수적 방법론에 대해 좀 살펴볼 예정인데 데이터에 따라 가정할 수 있는 분포 종류는 다음과 같다.

데이터가 2개의 값(0 or 1)만 가지는 경우 -> 베르누이 분포
데이터가 n개의 discrete한 값을 가지는 경우 -> 카테고리 분포
데이터가 [0,1] 사이에서 값을 가지는 경우 -> 베타 분포
데이터가 0 이상의 값을 가지는 경우 -> 감마분포, 로그정규분포 등
데이터가 R\reals 전체에서 값을 가지는 경우 -> 정규분포, 라플라스분포 등

중요한 건 데이터를 생성하는 원리를 먼저 고려한 후 가정해야 하며, 모수 추정 후 반드시 검정을 해야한다

예를 들어 데이터의 확률분포를 정규분포라고 가정했다고 하자. 정규분포의 모수는 평균 μ\mu 과 분산 σ2\sigma^2 으로 표본평균 Xˉ\bar{X} 와 표본분산 S2S^2 으로 이를 추정하는 식은 다음과 같다.

Xˉ=1Ni=1NXi, E[Xˉ]=μ\bar{X} = \frac{1}{N}\displaystyle\sum_{i=1}^N X_i, \space E[\bar{X}] = \mu
S2=1N1i=1N(XiXˉ)2, E[S2]=σ2S^2 = \frac{1}{N-1}\displaystyle\sum_{i=1}^N(X_i-\bar{X})^2, \space E[S^2] = \sigma^2

이 표본평균과 표본분산 같은 통계량의 확률분포를 표집분포(Sampling distribution)이라고 부른다. NN이 커질수록 이 표집 분포는 정규분포를 따르게 된다.

각 확률분포마다 사용하는 모수가 다르고 이에 따라 적절한 통계량이 달라진다. 따라서 가장 좋은, 가능성이 높은 모수를 추정하는 방법 중 하나를 최대 가능도 추정법(Maximum Likelihood Estimation, MLE)이라고 한다. 그 식은 다음과 같다.

θ^MLE=arg maxθL(θ;x)=arg maxθP(xθ)\hat{\theta}_ {MLE} = \argmax_{\theta} L(\theta ; x) = \argmax_{\theta} P(x|\theta)

가능도 함수 LL은 데이터 xx가 주어져있는 상황에서 모수 θ\theta 를 변형시킴에 따라 값이 바뀌는 함수이다. 값이 크면 xx를 관찰할 가능성이 높겠지만 확률을 의미하는 것은 아니다.

데이터 집합 XX가 i.i.d 인경우 가능도 함수 대신 로그가능도 함수를 사용합니다.

L(θ;x)=i=1nP(xiθ)logL(θ;x)=i=1nlogP(xiθ)L(\theta ; x) = \displaystyle\prod_{i=1}^n P(x_i|\theta) \rArr \log L(\theta ; x) = \displaystyle\sum_{i=1}^n \log P(x_i|\theta)

로그가능도를 사용하는 가장 주된 이유는 곱셈을 덧셈으로 바꾸기 때문에 컴퓨터로의 연산이 가능하게 하고 그 연산량을 줄이기 때문입니다. 우리는 경사하강법을 사용하므로 결론적으로 음의 로그가능도(negative log-likelihood) 를 최적화하게 됩니다.

딥러닝에서는, 모델의 가중치들을 θ=(W(1),...,W(L))\theta = (W^{(1)},...,W^{(L)}) 라 표기했을 때, classification 문제에서 소프트맥스 벡터는 카테고리분포의 모수 (p1,...,pK)(p_1,...,p_K)를 모델링하고 그 식은 다음과 같다.

θ^MLE=arg maxθ1ni=1nk=1Kyi,klog(MLPθ(xi)k)\hat{\theta}_ {MLE} = \argmax_{\theta}\frac{1}{n}\displaystyle\sum_{i=1}^n\displaystyle\sum_{k=1}^K y_{i,k}\log(MLP_{\theta}(x_i)_ k)

우리가 머신러닝이나 딥러닝에서 사용하는 손실함수들은 모델이 학습하는 확률분와 데이터에서 관찰되는 확률분포의 거리를 통해 유도한다. 이 두 확률분포사이의 거리를 계산하는 함수들은 대표적으로 총변동 거리(Total Variation Distance), 쿨백-라이블러 발산(Kullback-Leibler Divergence), 바슈타인 거리(Wasserstein Distance)가 있다. 이중 쿨백-라이블러 발산은 다음과 같이 정의한다.

KL(PQ)=xXP(x)log(P(x)Q(x))KL(P||Q) = \displaystyle\sum_{x \in X} P(x)\log(\frac{P(x)}{Q(x)})
KL(PQ)=XP(x)log(P(x)Q(x))dxKL(P||Q) = \displaystyle\int_{X}P(x)\log(\frac{P(x)}{Q(x)})dx

이를 분해하면 우리가 자주 쓰던 cross-entropy 공식이 나온다.

KL(PQ)=ExP(x)[logQ(x)]+ExP(x)[logP(x)]KL(P||Q) = -E_{x \sim P(x)}[\log Q(x)]+E_{x \sim P(x)}[\log P(x)]

식의 첫번째 항은 크로스 엔트로피이고 두번째 항은 엔트로피이다. 이에 대한 자세한 내용은 추후 통계학을 공부하면서 더 보충하겠다. Classification 문제에서 정답레이블을 PP, 모델 예측을 QQ라 두면 최대가능도 추정법은 쿨백-라이블러 발산을 최소화 하는 것과 같다.

2. 과제 수행

새벽 5시까지 안자고 모스부호 과제를 끝냈다. 공백처리가 매우 힘들었다. 선택과제로 인공지능 딥러닝과 관련된 함수 구현이 주어졌는데 경사하강법, RNN 역전파, MLE 이고, 현재 경사하강법까지 완료하였다. 역전파는 RNN 구조가 일반적인 구조가 아니어서 (activation 함수가 없음) 조금 애를 먹고 있다.

3. 피어 세션

다들 공부하면 알 거 같아서인지 질문이 없었다. 2중 신경망 역전파 전개식이 좀 복잡하게 나와있어서 내 블로그 정리를 통해 참고자료를 제공하였다. 같이 선택과제에 대해 얘기하며 해결법을 모색하였다.

4. 마무리

수학이라 블로그 정리 내용이 많다...

0개의 댓글