Neural Networks

Hyunsoo Lee·2022년 12월 29일
0

Basics of ML & DL

목록 보기
4/5
post-custom-banner

이 자료는 인공지능 교육 비영리단체 OUTTA 에서 출판한 《인공지능 교육단체 OUTTA 와 함께 하는! 머신러닝 첫 단추 끼우기》 를 바탕으로 제작되었습니다.

Remnote 자료Lecture PPT는 링크를 통해 확인하실 수 있습니다.

Made by Hyunsoo Lee (SNU Dept. of Electrical and Computer Engineering, Leader of Mentor Team for 2022 Spring Semester)

4.1. 신경망 활용의 이점: Universal Approximation Theorem

  • 신경망 (Neural Networks, NN) : 입력(input) 데이터와 출력(output) 데이터 사이의 관계를 하나의 함수 관계로 연결해 표현해주는 인공지능 모델

  • 신경망을 이용하면, 특정 조건을 만족하는 함수들에 대해 충분한 근사치를 얻을 수 있음이 증명되었음 : Universal Approximation Thm.

  • Universal Approximation Theorem

    φ,Im,C(Im),f\varphi, I_m, C(I_m), f 를 아래 표와 같이 정의하자.

    NotationMeaning
    φ\varphiNonconstant, continuous, bounded, and monotonically increasing non-linear function
    ImI_mRmR^m의 닫힌 유계 부분집합
    C(Im)C(I_m)ImI_m 에서 R\mathbb{R} 로 가는 연속함수의 집합
    ffC(Im)C(I_m) 에 속하면서 φ\varphi 와 독립인 임의의 함수

    위 표의 조건을 만족하는 φ\varphi 에 대해,

    F({vi},{wi},{bi};x)=i=1Nviφ(xwi+bi)F(\left\lbrace v_i \rbrace\right., \left\lbrace \textbf w_i \rbrace\right., \left\lbrace b_i \rbrace\right. ; \textbf x) = \sum\limits_{i=1}^{N} v_i \varphi(\textbf{x} \cdot \textbf{w}_i + b_i)

    와 같이 함수 FF 를 정의하면, 역시 위 표의 조건을 만족하면서 정의된 임의의 함수 ff 에 대해,

    ϵ>0,{vi},{wi},{bi} s.t. F(x)f(x)<ϵ^{\forall} \epsilon > 0, ^{\exists} \left\lbrace v_i \rbrace\right., \left\lbrace \textbf{w}_i \rbrace\right., \left\lbrace b_i \rbrace\right. \text{ s.t. } |F(\textbf{x}) - f(\textbf{x})| < \epsilon

    즉, Universal Approximation Theorem 은 Proper 한 비선형 함수 φ\varphi 를 이용해, F({vi},{wi},{bi};x)F(\left\lbrace v_i \rbrace\right., \left\lbrace \textbf{w}_i \rbrace\right., \left\lbrace b_i \rbrace\right.; \textbf{x})C(Im)C(I_m) 에 속하면서 φ\varphi 와 독립인 임의의 함수 ff 에 매우 가까워지게 하는 파라미터 {vi},{wi},{bi}\left\lbrace v_i \rbrace\right., \left\lbrace \textbf{w}_i \rbrace\right., \left\lbrace b_i \rbrace\right.를 항상 찾을 수 있음을 의미한다.

    다시 말하자면, x\textbf{x} 값에 대해 적절한 선형 및 비선형 연산을 적용한다면, f(x)f(\textbf{x}) 의 값으로 근사시킬 수 있다. '선형 및 비선형 연산' 은 파라미터와 비선형 함수로 표현할 수 있고, 이 파라미터을 신경망 모델로 표현하고 적절한 값을 찾아내는 것이 모델 학습(Training)의 과정이다.

    Universal Approximation Theorem 에 대한 자세한 내용은 <인공지능 교육단체 OUTTA 와 함께 하는! 머신러닝 첫 단추 끼우기> 본문을 참고해 주시기 바랍니다.


4.2. 신경망의 구조

  • In Universal Approximation Thm (위 표에 나타난 모든 가정을 만족하는 상태에서),
F({vi},{wi},{bi};x)=i=1Nviφ(xwi+bi)F(\left\lbrace v_i \rbrace\right., \left\lbrace \textbf w_i \rbrace\right., \left\lbrace b_i \rbrace\right. ; \textbf x) = \sum\limits_{i=1}^{N} v_i \varphi(\textbf x \cdot \textbf w_i +b_i )
(vi,biR,wiRm)(v_i, b_i \in \mathbb{R}, \textbf w_i \in \mathbb{R}^m)

4.2.0. 신경망과 방향 그래프

  • N=5N=5일 때 일변수함수 FF의 모식도를 방향 그래프 (Directed Graph)로 나타내기

    F({vi},{wi},{bi};x)=i=15viφ(xwi+bi)F(\left\lbrace v_i \rbrace\right., \left\lbrace w_i \rbrace\right., \left\lbrace b_i \rbrace\right. ; x) = \sum\limits_{i=1}^{5}v_i \varphi( x \cdot w_i +b_i)
    • 방향 그래프 구성 요소 : 1) 노드, 2) 간선 (노드를 이어주는 선) - 간선은 방향을 가짐

      그래프의 가중치와 편향은?

      • 가중치 : wiw_i (입력값에 곱해주는 값)

      • 편향 : bib_i (함수 φ\varphi에서 더해주는 값)

    • 참고) 무방향 그래프 : 간선의 양방향으로 모두 이동할 수 있는 그래프

    • 편향을 가중치로 취급하는 방법?

      • 모델의 입력값을 xx와 '1' 두 개로 생각

        F({vi},{wi},{bi};x)=i=15viφ(xwi+1bi)F(\left\lbrace v_i \rbrace\right., \left\lbrace w_i \rbrace\right., \left\lbrace b_i \rbrace\right. ; x) = \sum\limits_{i=1}^{5}v_i \varphi( x \cdot w_i + 1\cdot b_i )

  • N=5N=5일 때 이변수함수 FF의 모식도를 방향 그래프 (Directed Graph)로 나타내기

    F({vi},{wi},{bi};x)=i=15viφ(xwi+bi)F(\left\lbrace v_i \rbrace\right., \left\lbrace \textbf w_i \rbrace\right., \left\lbrace b_i \rbrace\right. ; \textbf x) = \sum\limits_{i=1}^{5}v_i \varphi(\textbf x \cdot \textbf w_i +b_i )
    x=(x1,x2)T,  wi=(wi1,wi2)T\textbf{x} = (x_1, x_2)^T, \; \textbf{w}_i = (w_{i_1}, w_{i_2})^T

    • 편향을 가중치처럼 본다면?

      F({vi},{wi},{bi};x)=i=15viφ(xwi+1bi)F(\left\lbrace v_i \rbrace\right., \left\lbrace \textbf w_i \rbrace\right., \left\lbrace b_i \rbrace\right. ; \textbf x) = \sum\limits_{i=1}^{5}v_i \varphi(\textbf x \cdot \textbf w_i + 1 \cdot b_i )
x=(x1,x2)T,wi=(wi1,wi2)T\textbf{x} = (x_1, x_2)^T, \textbf w_i = (w_{i_1}, w_{i_2})^T


4.2.1. 신경망의 기본 구조

  • 노드와 간선으로 이루어진, 방향이 정해져 있는 그래프

  • 신경망 전체에 걸쳐 한 방향으로만 데이터가 전달됨

  • 신경망과 뉴런의 유사성

    • 노드 \rightarrow 뉴런 (수상돌기)

    • 간선 \rightarrow 축삭돌기

  • 계층 (Layer) : 같은 선상에 있는 노드들

    • 입력층(Input Layer) : 신경망에 데이터가 처음 입력되는 부분

    • 출력층(Output Layer) : 신경망을 통과한 결과가 출력되는 부분

    • 은닉층(Hidden Layer) : 입력층으로부터 입력받은 데이터에 대해 처리를 진행해, 처리 결과를 출력층으로 전달하는 부분

  • 심층 신경망 (Deep Neural Network, DNN) : 은닉층의 개수가 2개 이상인 신경망

    • 딥러닝 (Deep Learning, DL) : 심층 신경망에 대한 머신러닝

4.2.2. 각 뉴런의 역할

  • 뉴런(노드)이 가지고 있는 동일한 규칙

    1) 각 뉴런에 입력되는 값은 여러 개 가능, 그러나 출력되는 값은 오직 하나

    2) 각 뉴런에 입력되는 값에는 가중치가 곱해짐

    3) 출력되는 값은 활성화 함수를 통과함


4.2.3. 가중치 곱

  • 용어 정의

    • 밀집층 (Dense Layer) : 모든 입력 데이터에 대해 가중치를 곱하여 더해주는 Layer

    • 완전연결 계층 (Fully-connected Layer) : 각 층의 노드들끼리 완전하게 연결된 신경망의 Layer

  • 입력 데이터 x=[x1,x2,x3]\textbf x = [x_1, x_2, x_3], 각각에 대응되는 가중치 wi=[wi1,wi2,wi3]\textbf w_i = [w_{i_1}, w_{i_2}, w_{i_3}] 일 때 가중치 곱은?

    xwi=x1wi1+x2wi2+x3wi3\textbf x \cdot \textbf w_i = x_1 w_{i_1} + x_2 w_{i_2}+x_3 w_{i_3}
  • 데이터가 2차원 이상일 경우?

    • 벡터화 (Vectorization, flatten) : nn차원 \rightarrow 1차원으로 차원을 변환하는 과정

    • 벡터화 과정의 문제점

      • 여러 행의 데이터를 하나의 행으로 이어서 합쳐주기 때문에, 데이터가 가진 공간적인 정보가 무시

      • 따라서, 단순히 밀집층에서 가중치를 곱하는 방법 외에도 다른 가중치 곱이 존재 (ex. CNN (Convolutional Neural Network))


4.2.4. 활성화 함수

  • 뉴런 (또는 Node)에서 최종적인 값을 내보내기 전에 통과 시켜주는 함수

    • 주로 비선형 함수를 지칭

    • 선형 함수의 예시로는 항등함수가 존재

  • Universal Approximation 에서 활성화 함수 : φ()\varphi(\cdot) 에 대응됨


a. 활성화 함수의 종류

4.2.4.a. 절에 사용된 그림의 출처는 유원준 \cdot 안상준 님의 저서인 Pytorch 로 시작하는 딥 러닝 입문임을 밝힙니다.

1. 항등함수

φ(x)=x\varphi(x) = x
  • 주로 출력층에서 사용됨, 별도의 계산과정이 없음

  • ML 실습 4 역시 활성화 함수로 항등함수를 활용하였음!

  • 회귀 문제에서 많이 사용됨


비록 활성화 함수의 첫 번째 예시로 항등함수를 소개하였지만, 일반적으로 활성화 함수는 비선형 함수 여야 한다. 선형 함수를 활성화 함수로 사용할 경우, 은닉층의 가중치 값이 바뀐 것과 같은 효과를 가져오기 때문이다. 즉, 비선형성을 부여하지 못하고 결과적으로 활성화 함수를 추가하는 의미가 사라지게 된다. 이제부터는 비선형 함수들에 대해 살펴보도록 하자.


2. Sigmoid 함수

φ(x)=11+ex\varphi(x) = \frac{1}{1+e^{-x}}

  • 분류 문제에 많이 사용됨. 이유는?

    • 출력값이 0과 1 사이의 값을 가지므로, Binary Classification 에 활용 가능 (1에 가까울 경우 class A로 분류, 0에 가까울 경우 class B로 분류)
  • 딥러닝에서는 잘 활용되지 않음 : Gradient Vanishing 문제를 가짐

  • Gradient Vanishing

    • xx가 0 근방의 값이 아닌, 매우 큰 값이나 매우 작은 값을 가지는 경우 sigmoid 함수의 기울기가 0에 수렴하게 됨.

    • 이 때 오차 역전파 과정에서 미분이 일어나고, 활성화 함수의 기울기(미분계수)가 곱해지므로 0에 가까운 값들이 계속해서 곱해지게 됨.

    • 결과적으로 맨 처음 층까지 Loss function의 기울기 값이 전달되지 않고, 가중치 업데이트가 일어나지 않음 (또는 느리게 일어남).

  • 또한 함수의 중앙값이 0이 아니라는 문제점 (중앙값은 0.5) 역시 가짐

3. tanh 함수

φ(x)=exexex+ex\varphi(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}

  • Sigmoid 함수의 중앙값이 0이 아닌 문제를 해결

    • Sigmoid 에 비해 함수값의 변화가 더 큼
  • 그러나, 여전히 Gradient Vanishing 문제를 겪음

    • 중앙값이 0이므로, Sigmoid 함수에 비해서는 Gradient Vanishing 이 적은 빈도로 발생

    • 결과적으로 Sigmoid 보다는 더 많이 사용됨

      • 물론, 현대의 인공 신경망에서는 두 활성화 함수 모두 사용 빈도가 낮음.
      • 두 함수 (sigmioid, tanh) 를 사용한 서로 다른 두 신경망은 수학적으로 동일 (즉, 가중치를 잘 설정해 동일한 신경망으로 만들 수 있다.)

4. ReLU 함수

φ(x)=max(x,0)\varphi(x) = \max(x, 0)

  • 현대 딥러닝 모델에서 가장 많이 사용되는 대표적인 활성화 함수

  • Sigmoid 함수의 기울기 소실 해결 가능

  • 그러나 입력값이 음수일 경우 기울기가 0 ⇒ 여전히 문제 발생 : "Dying ReLU"

    • Dying ReLU 해결 방안 : Leaky ReLU

5. Leaky ReLU 함수

φ(x)=max(ax,x)\varphi(x) = \text{max}(ax, x)
(0<a<1)(0 < a < 1)

  • 기울기가 0이 되지 않으므로, Dyning ReLU 문제점을 해결 가능

  • 그러나 새로운 Hyperparameter (음의 기울기 aa) 를 지정해 주어야 한다는 문제점을 가짐.


6. Softmax 함수

  • 입력값이 x1,x2,,xnx_1, x_2, \cdots, x_n, 출력값이 y1,y2,,yny_1, y_2, \cdots , y_n일 때
yk=softmax(xk)=exki=1nexiy_k = \text{softmax}(x_k)= \frac{e^{x_k}}{\sum\limits_{i=1}^{n} e^{x_i}}
  • 0<φ(xk)<10 < \varphi(x_k) < 1, i=1nφ(xk)=1\sum\limits_{i=1}^n \varphi(x_k) = 1분류 문제에서 각 class 에 속할 확률로 해석 가능

  • 다중 클래스 분류 문제 해결에 많이 사용됨


b. 활성화 함수의 필요성

  1. 활성화 함수를 곱해주지 않는다면, 선형 모델밖에 표현하지 못함.

    • 가중치를 곱해주는 과정은 입력 데이터에 대한 선형결합 (Linear Combination) 이므로.

      xwi(xwi)wj((xwi)wj)wk\textbf{x} \cdot \textbf{w}_i \rightarrow (\textbf{x} \cdot \textbf{w}_i) \cdot \textbf{w}_j \rightarrow ((\textbf{x} \cdot \textbf{w}_i) \cdot \textbf{w}_j) \cdot \textbf{w}_k
    • 따라서 비선형 함수인 활성화 함수를 곱해, 보편적인 수학 모델을 표현할 수 있으며 입출력 데이터 간의 규칙성을 모델링 가능.


  1. 활성화 함수가 없다면, 신경망의 층 수를 증가시키는 것이 의미가 없어짐.

    • 선형 결합을 여러 층에 걸쳐 반복해도, 결국 선형결합이므로 같은 결과를 내는 하나의 층으로 나타낼 수 있기 때문.

    • 활성화함수가 존재하면 신경망의 층수를 증가시키는 것이 의미 있어지며, 신경망의 층 수에 따라 비선형성이 추가됨.

    xwif(xwi)wjf(f(xwi)wj)wk\textbf{x} \cdot \textbf{w}_i \rightarrow f(\textbf{x} \cdot \textbf{w}_i) \cdot \textbf{w}_j \rightarrow f(f(\textbf{x} \cdot \textbf{w}_i) \cdot \textbf{w}_j) \cdot \textbf{w}_k

4.3. 신경망의 학습

신경망 학습 과정은 크게 4단계로 구성된다.

1) 데이터 전처리

2) 신경망 모델 구축

3) 손실함수 정의

4) 손실함수 최적화 (역전파)


4.3.1. 데이터 전처리

여러 가지 데이터 전처리 기법 중 특성 스케일링(Feature Scaling) 또는 정규화(Normalization)에 대해서 알아보자. ML 실습 4 에서 이를 직접 구현해 볼 것이다. 아래와 같은 예시를 살펴보자.

  • 키와 몸무게의 스케일(규모, scale)이 다름 (키 값이 몸무게 값의 약 2-3배)

  • 발생할 수 있는 문제점?

    • 머신러닝 모델은 단위를 제외한 값만을 가지고 문제를 해결

    • 따라서 키 값의 중요도가 증가하게 됨

    • 경사하강법에서, 특정 변수 (Scale 이 작은 변수, 여기서는 몸무게)에 대한 가중치의 업데이트가 잘 일어나지 않음

      • ML 실습 4 참고 (직접 확인)

      • 순전파 과정에서, xix_inn배가 되면 wiw_i1n\frac{1}{n}배가 됨 \rightarrow 기울기 값 감소, 가중치 수렴 속도 감소

  • 해결 방안 : 모든 특성 (feature)들의 scale 을 통일 시켜주기

    • 최대-최소 정규화

    • Z-점수 정규화


(1) 최소 - 최대 정규화

xk=xkmin(xi)max(xi)min(xi)x'_k = \frac{x_k-\min(x_i )}{\max(x_i)-\min(x_i)}
0xk1\therefore 0\leq x_k' \leq1
  • 단점 : Outlier가 있는 경우, 나머지 데이터들의 값이 0 또는 1에 가까워짐

    ex)

    [0,0,1,1,1,2,2,2,3,100][0, 0, 1, 1 , 1, 2, 2, 2, 3, 100]
    \downarrow
    [0,0,0.01,0.01,0.01,0.02,0.02,0.02,0.03,1][0, 0, 0.01, 0.01, 0.01, 0.02, 0.02, 0.02, 0.03, 1]

(2) Z-점수 정규화

xk=xkμσx_k' = \frac{x_k - \mu}{\sigma}
  • Outlier의 영향을 Max-min Normalization 보다 적게 받음
  • 0을 중심으로 하는 대칭적인 분포로 변환

4.3.2. 신경망 모델 구성

  • 층 수

  • 층의 종류

  • 활성화함수 등을 정의


4.3.3. 손실함수 정의 및 계산

여러 손실함수 (Loss Function)의 종류에 대해 알아보자.

  1. SSE (Sum of Squares of Error)

    LSSE=i=1n(yi^yi)2\mathscr L_{SSE} = \sum\limits_{i=1}^n (\hat{y_i} - y_i)^2

    Q) 모델의 출력값이 [0.2, 0.5, 0.3]이고, 실제 값이 [0, 1, 0]일 때 SSE는? 0.38

  1. MSE (Mean Squared Error)

    LMSE=1ni=1n(yi^yi)2=LSSEn\mathscr L_{MSE} = \frac{1}{n} \sum\limits_{i=1}^n (\hat{y_i} - y_i)^2 = \frac{\mathscr L_{SSE}}{n}
  1. |Residuals|\text{|Residuals|}

    Labs=i=1nyi^yi\mathscr L_{abs} = \sum\limits_{i=1}^n |\hat{y_i} - y_i|
  1. CEE (Cross-Entropy Error)

    LCEE=i=1nyilogyi^\mathscr L_{CEE} = - \sum\limits_{i=1}^n y_i \log {\hat{y_i}}

4.3.4. 손실함수 최소화 (Training)

  • Training Data 이용

  • Optimizer 활용 (SGD, Adam, RMSProp 등)

    • GD 의 여러 가지 변형 : SGD, Cyclic SGD, Shuffled Cyclic SGD, etc...
  • 오차역전파법 (Error Backpropagation) : 가중치 업데이트

    • 순전파 : 입력값에 가중치를 곱하고, 활성화 함수를 통과시키는 과정

    • 역전파 : 손실함수의 편미분 계수들을 이용해 가중치를 업데이트 하는 과정

      • 수치 미분 없이, 편미분 계수를 효율적으로 구할 수 있음

      • 자동미분 라이브러리 이용 (ML 실습 3 참고)

      • Chain Rule 기반

      • Recap : GD at kk th iteration

        wk+1=wkδL(w)w=wk\textbf w_{k+1}= \textbf w_{k} − \delta \cdot \left.\nabla \mathscr{L} (\textbf{w}) \right|_{\textbf{w}=\textbf w_k}

        즉, 특정 가중치를 Update 하기 위해서는 해당 가중치에 대한 편미분계수를 구해야 한다.

    • Backpropagation Example 1

      위 그림에서, 가중치 wz12w_{z1_2}wz22w_{z2_2} 에 대해 역전파가 어떻게 일어나는지 알아보자. 구해야 하는 값은

      Lwz12,Lwz22\frac{\partial \mathscr{L}}{\partial w_{z1_2}}, \frac{\partial \mathscr{L}}{\partial w_{z2_2}}

      이다. 수식을 통해 하나씩 전개해 보자. 출력층에 가까운 Layer 로부터 손실함수에 대한 편미분 계수를 구해 간다. 출력층에 가까운 Node 에서 구한 편미분계수가, 다음 층의 편미분계수를 구할 때 이용된다.


      [1] Lwz12\frac{\partial \mathscr{L} }{\partial w_{z1_2}}

      Lwz12=Lz1z1wz12\frac{\partial \mathscr{L} }{\partial w_{z1_{2}}} = \frac{\partial \mathscr{L} }{\partial z_1} \frac{\partial z_1}{\partial w_{z1{2}}}

      이 때, z1=φ(y1)wz11+φ(y2)wz12+φ(y3)wz13z_1 = \varphi(y_1) w_{z1_{1}}+ \varphi(y_2) w_{z1_{2}}+ \varphi(y_3) w_{z1_{3}} 이므로

      z1wz12=φ(y2)\frac{\partial z_1}{\partial w_{z1_{2}}} = \varphi(y_2)

      따라서,

      Lwz12=Lz1φ(y2)\frac{\partial \mathscr{L} }{\partial w_{z1_{2}}} = \frac{\partial \mathscr{L} }{\partial z_1} \cdot \varphi(y_2)

      [2] Lwz22\frac{\partial \mathscr{L} }{\partial w_{z2_2}}

      Lwz22=Lz2z2wz22\frac{\partial \mathscr{L} }{\partial w_{z2_{2}}} = \frac{\partial \mathscr{L} }{\partial z_2} \frac{\partial z_2}{\partial w_{z2_{2}}}

      이 때, z2=φ(y1)wz21+φ(y2)wz22+φ(y3)wz23z_2 = \varphi(y_1) w_{z2_{1}}+ \varphi(y_2) w_{z2_{2}}+ \varphi(y_3) w_{z2_{3}} 이므로

      z2wz22=φ(y2)\frac{\partial z_2}{\partial w_{z2_{2}}} = \varphi(y_2)

      따라서,

      Lwz22=Lz2φ(y2)\frac{\partial \mathscr{L} }{\partial w_{z2_2}} = \frac{\partial \mathscr{L} }{\partial z_2} \cdot \varphi(y_2)

      [1], [2] 에서 최종적인 값을 구하기 위해서는

      Lz1,Lz2\frac{\partial \mathscr{L} }{\partial z_1}, \frac{\partial \mathscr{L} }{\partial z_2}

      의 값을 구해야 한다. 역시 Chain Rule 을 이용해 구하면 아래와 같다.


      [3] Lz1,Lz2\frac{\partial \mathscr{L} }{\partial z_1}, \frac{\partial \mathscr{L} }{\partial z_2}

      Lz1=Lφ(z1)φ(z1)z1\frac{\partial \mathscr{L} }{\partial z_1} = \frac{\partial \mathscr{L} }{\partial \varphi(z_1)} \cdot \frac{\partial \varphi(z_1) }{\partial z_1}
      Lz2=Lφ(z2)φ(z2)z2\frac{\partial \mathscr{L} }{\partial z_2} = \frac{\partial \mathscr{L} }{\partial \varphi(z_2)} \cdot \frac{\partial \varphi(z_2) }{\partial z_2}

      이와 같이 가중치 wz12w_{z1_2}wz22w_{z2_2} 에 대한 편미분계수를 구해 보았다. 이제는, 조금 더 복잡하게 가중치 wy22w_{y2_2} 에 대한 편미분계수를 구해 보자.

      [4] Lwy22\frac{\partial \mathscr{L} }{\partial w_{y2_2}}

      우선, Chain Rule 에 의해

      Lwy22=Ly2y2wy22\frac{\partial \mathscr{L} }{\partial w_{y2_{2}}} = \frac{\partial \mathscr{L} }{\partial y_2} \frac{\partial y_2}{\partial w_{y2_{2}}}

      가 성립한다. 이 때

      y2wy22=x2\frac{\partial y_2}{\partial w_{y2_{2}}} = x_2

      임을 이용하자. 이제

      Ly2\frac{\partial \mathscr{L} } {\partial y_2}

      를 구해보자. Chain Rule 에 의해

      Ly2=Lφ(y2)φ(y2)y2\frac{\partial \mathscr{L} }{\partial y_2} = \frac{\partial \mathscr{L} }{\partial \varphi(y_2)} \cdot \frac{\partial \varphi(y_2) }{\partial y_2}

      이 성립한다. 즉,

      Lϕ(y2)\frac{\partial \mathscr{L}} {\partial \phi(y_2)}

      의 값을 구해야 한다.


      [6] Lφ(y2)\frac{\partial \mathscr{L}}{\partial \varphi(y_2)}

      By chain rule,

      Lφ(y2)=Lz1z1φ(y2)+Lz2z2φ(y2)\frac{\partial \mathscr{L}}{\partial \varphi(y_2)} = \frac{\partial \mathscr{L}}{\partial z_1} \frac{\partial z_1}{\partial \varphi(y_2)} + \frac{\partial \mathscr{L}}{\partial z_2}\frac{\partial z_2}{\partial \varphi(y_2)}

      In the same way,

      z1φ(y2)=wz12,  z2φ(y2)=wz22\frac{\partial z_1}{\partial \varphi(y_2)} = w_{z1_{2}}, \; \frac{\partial z_2}{\partial \varphi(y_2)} = w_{z2_{2}}

      Therefore,

      Lφ(y2)=Lz1wz12+Lz2wz22\frac{\partial \mathscr{L}}{\partial \varphi(y_2)} = \frac{\partial \mathscr{L}}{\partial z_1} \cdot w_{z1_{2}} + \frac{\partial \mathscr{L}}{\partial z_2} \cdot w_{z2_{2}}

      이 때

      Lz1,Lz2\frac{\partial \mathscr{L}}{\partial z_1}, \frac{\partial \mathscr{L}}{\partial z_2}

      의 값은 [3] 과정에서 구하였으므로, 해당 값을 이용해 최종적인 편미분계수를 구할 수 있다.


    • Backpropagation Example 2 : pp. 65 - 80


  • Remark 1 : 위 과정을 'Local Gradient' 와 'Downstream Gradient' 를 이용해 더 간결하게 일반화 할 수 있다. 관심이 있다면 구글링을 통해 조사해 보자.

  • Remark 2 : Use Matrices

    z=[z1,z2]=[φ(y1)wz11+φ(y2)wz12+φ(y3)wz13,φ(y1)wz21+φ(y2)wz22+φ(y3)wz23]\textbf{z} = [z_1, z_2]= [\varphi(y_1)w_{z_{11}} + \varphi(y_2) w_{z_{12}} + \varphi(y_3) w_{z_{13}}, \varphi(y_1)w_{z_{21}} + \varphi(y_2) w_{z_{22}} + \varphi(y_3) w_{z_{23}}]

    순전파 결과를 행렬을 이용해 표현하면

    Z=(z1  z2)=YWZ=(z_1 \; z_2) = YW

    where

    (Y=(φ(y1)φ(y2)φ(y3)),W=(wz1wz2)=(wz11wz21 wz12wz22 wz13wz23))(Y = \begin{pmatrix}\varphi(y_1) & \varphi(y_2) & \varphi(y_3) \end{pmatrix}, W =\begin{pmatrix} \textbf{w}_{\textbf{z1}} & \textbf{w}_{\textbf{z2}} \end{pmatrix} = \begin{pmatrix} w_{z_{11}} & w_{z_{21}} \\\ w_{z_{12}} &w_{z_{22}} \\\ w_{z_{13}} & w_{z_{23}}\end{pmatrix})

    이 때, 행렬곱을 이용해 밀집층의 역전파를 계산하면 아래와 같다.

    LY=(Lφ(y1)Lφ(y2)Lφ(y3))=(Lz1Lz2)(wz11wz12wz13 wz21wz22wz23)=LZWT\frac{\partial \mathscr{L}}{\partial Y} = \begin{pmatrix} \frac{\partial \mathscr{L}}{\partial \varphi(y_1)} & \frac{\partial \mathscr{L}}{\partial \varphi(y_2)} & \frac{\partial \mathscr{L}}{\partial \varphi(y_3)} \end{pmatrix} = \begin{pmatrix} \frac{\partial \mathscr{L}}{\partial z_1} & \frac{\partial \mathscr{L}}{\partial z_2} \end{pmatrix} \begin{pmatrix} w_{z1_1} & w_{z1_2} & w_{z1_3} \\\ w_{z2_1} & w_{z2_2} & w_{z2_3} \end{pmatrix} = \frac{\partial \mathscr{L}}{\partial Z}W^T
    LW=(Lwz11Lwz21 Lwz12Lwz22 Lwz13Lwz23)=(φ(y1) φ(y2) φ(y3))(Lz1Lz2)=YTLZ\frac{\partial \mathscr{L}}{\partial W} = \begin{pmatrix} \frac{\partial \mathscr{L}}{\partial w_{z1_1}} & \frac{\partial \mathscr{L}}{\partial w_{z2_1}} \\\ \frac{\partial \mathscr{L}}{\partial w_{z1_2}} & \frac{\partial \mathscr{L}}{\partial w_{z2_2}} \\\ \frac{\partial \mathscr{L}}{\partial w_{z1_3}} & \frac{\partial \mathscr{L}}{\partial w_{z2_3}} \end{pmatrix} = \begin{pmatrix} \varphi(y_1) \\\ \varphi(y_2) \\\ \varphi(y_3) \end{pmatrix} \begin{pmatrix} \frac{\partial \mathscr{L}}{\partial z_1} & \frac{\partial \mathscr{L}}{\partial z_2} \end{pmatrix} = Y^T \frac{\partial \mathscr{L}}{\partial Z}

4.4. 순전파와 역전파의 반복

  • 1 Iteration 의 정의

    • 순전파 + 역전파

    • 손실함수에 대한 역전파, Optimizer 통해 가중치 업데이트

  • batch 의 정의 : 신경망에 한 번에 입력해주는 데이터 묶음

    • batch size : 1개의 batch에 들어 있는 데이터의 개수 (M)(M)

    • batch 구성 방식 : 전체 데이터에서 MM개 랜덤 추출

  • 1 epoch 의 정의

    • 전체 데이터가 DD개, batch size가 MM일 때 D/MD/M 번의 iteration을 통해 가중치 업데이트가 1회 일어나는 과정

    • 1 epoch = D/MD/M iterations

  • Remark : batch 를 사용할 때의 이점

    1. 최적의 가중치를 향해 연속적이고 부드럽게 이동할 수 있음

      손실함수의 그래디언트는 데이터 별로 상당히 큰 차이가 있을 수 있다. 따라서 개별 데이터에 대해 가중치 업데이트를 각각 진행할 경우에는 가중치가 역동적으로 움직이는 문제가 발생할 수 있다. 그러나 batch size가 M인 batch의 평균적인 손실 함수에 대해 생각 하는 경우, 가중치 업데이트의 역동성이 완화되어 좀 더 안정적이게 된다.

    2. 메모리의 효율적 사용, 학습 속도 향상

      데이터 전체를 한 번에 신경망에 입력해주는 경우, 데이터셋을 이루는 모든 데이터에 대한 오차를 메모리에 전부 저장해야 한다. 이로 인해 메모리 공간을 많이 사용하여 학습 속도가 저하된다. 그러나 batch로 분할하여 학습하면 메모리 공간 절약에 의해 학습 속도가 향상된다.


4.5. 하이퍼파라미터 (Hyperparameter)

  • 딥러닝 모델의 성능에 영향을 주는 변수

  • 사용자가 직접 설정, 입력

  • Weight initialization

  • Learning rate

  • Early Stopping

  • Depth of Layer

  • Numbers of nodes in one Layer

  • Activation Function

  • Loss Function

  • Optimizer

  • batch size

  • patch size

  • Dropout ratio

  • etc...

References

별도의 출처가 표기되지 않은 Figure의 경우 《인공지능 교육단체 OUTTA 와 함께 하는! 머신러닝 첫 단추 끼우기》에서 가져왔거나 원본을 기반으로 재구성 된 Figure 입니다.

  • OUTTA, 《인공지능 교육단체 OUTTA 와 함께 하는! 머신러닝 첫 단추 끼우기》
post-custom-banner

0개의 댓글