쉬엄쉬엄블로그

딥러닝 학습방법 본문

부스트캠프 AI Tech 4기

딥러닝 학습방법

쉬엄쉬엄블로그 2023. 5. 3. 17:19
728x90

이 색깔은 주석이라 무시하셔도 됩니다.

신경망을 수식으로 분해하기

  • 비선형모델인 신경망(neural network)을 배워보자.
  • 각 행벡터 $O_i$는 데이터 $\mathbf x_i$와 가중치 행렬 $W$ 사이의 행렬곱과 절편 $b$ 벡터의 합으로 표현된다고 가정하면 $O = XW +  b$ 로 표현할 수 있다.
    • 데이터를 모아놓은 행렬 $X$를 다른 벡터 공간으로 보내주는 가중치 행렬 $W$

소프트맥스 함수

  • 모델의 출력을 확률로 해석할 수 있게 변환해주는 연산이다.
  • softmax($o$) = $(\frac{exp(o_1)}{\sum^p_{k=1} exp(o_k)},...,\frac{exp(o_p)}{\sum^p_{k=1} exp(o_k)}$
    • 출력 벡터 $o$에 softmax 합수를 합성하면 확률벡터가 되므로 특정 클래스 $k$에 속할 확률로 해석할 수 있다.
  • 분류 문제를 풀 때 선형모델과 소프트맥스 함수를 결합하여 예측한다.
    • 소프트맥스 함수가 지수함수를 사용하다보니 너무 큰 벡터가 들어오게 되면 오버플로우 현상이 발생할 수 있어서 방지하기 위해 np.max(vec, axis=-1, kimdims=True) 를 vec에서 빼준 다음에 적용
    • 이렇게 하면 오버플로우 현상을 방지하면서 원래 소프트맥스와 똑같이 계산할 수 있음
    • 학습하는 경우에는 소프트맥스 함수가 필요하지만 추론하는 경우에는 소프트맥스 함수가 굳이 필요하지 않고 원-핫 벡터로 만드는 함수만 필요하게 됨

신경망을 수식으로 분해하기

  • 신경망은 선형모델과 활성함수(activation function)를 합성한 함수이다.
    • 소프트맥스는 출력물에 모든 값을 고려해서 출력하지만 활성함수는 다른 주소에 있는 출력값들을 모두 고려하지 않고 해당 주소에 있는 출력값만 가지고 계산함
    • 활성함수는 벡터를 입력으로 받지 않고 하나의 실수 값만 입력으로 받음
    • 이 활성함수를 이용해서 딥러닝에서는 선형모델에서 나온 출력물을 비선형모델로 변환시킬 수 있음
    • 이렇게 변형시킨 벡터를 잠재 벡터 또는 히든 벡터라고 부르게 되고 뉴런이라고 부르게 됨
  • 다층(multi-layer) 퍼셉트론(MLP)은 신경망이 여러층 합성된 함수이다.
    • 활성함수를 씌울 때 각 벡터에 개별적으로 적용됨 (실수 값을 입력으로 받음)
    • $\sigma(Z)$ : $Z$에 해당하는 모든 변수들에 $\sigma$를 씌운 행렬
    • 순전파(forward propagation)는 주어진 입력이 들어왔을 때 출력물을 내뱉는 과정

 

활성함수란?

  • $\mathbb R$(실수)위에 정의된 비선형(nonlinear) 함수로서 딥러닝에서 매우 중요한 개념이다.
  • 활성함수를 쓰지 않으면 딥러닝은 선형모형과 차이가 없다.
  • 시그모이드(sigmoid) 함수나 tanh 함수는 전통적으로 많이 쓰이던 활성함수지만 딥러닝에선 ReLU 함수를 많이 쓰고 있다.
    • ReLU 함수 모양이 선형함수로 보이지만 전형적인 비선형함수로써 활성화함수로써 좋은 성질들을 가지고 있기 때문에 딥러닝 연산에서 굉장히 많이 쓰이고 있는 함수

왜 층을 여러개를 쌓는가?

  • 이론적으로는 2층 신경망으로도 임의의 연속함수를 근사할 수 있다.
    • 이를 universal approximation theorem이라고 부름
  • 그러나 층이 깊을수록 목적함수를 근사하는데 필요한 뉴런(노드)의 숫자가 훨씬 빨리 줄어들어 좀 더 효율적으로 학습이 가능하다.
    • 층이 깊어지면 깊어질수록 근사하는데 적은 뉴런 수를 가지고 근사할 수 있음
      (= 층이 깊어지면 깊어질수록 적은 파라미터로 훨씬 더 복잡한 함수를 표현할 수 있음)
    • 층이 깊으면 복잡한 함수를 근사할 수 있지만 최적화가 더 쉬운 것은 아님
    • 복잡한 함수를 표현하려 할 수록 최적화는 훨씬 더 많은 노력이 필요해지고 층이 깊어지면 깊어질수록 딥러닝 모델은 학습하기 어려워질 수 있음

딥러닝 학습원리 : 역전파 알고리즘

  • 딥러닝은 역전파(backpropagation) 알고리즘을 이용하여 각 층에 사용된 파라미터 ${\mathbf W^{(\mathscr l)},\mathbf b^{(\mathscr l)}}^L_{\mathscr l=1}$를 학습한다..
    • 빨간색 화살표 : 각 층에서 계산된 그레디언트들을 아래 층으로 전달되는 과정
      (저층에 있는 그레디언트 벡터를 계산할 때 위층에 있는 그레디언트 벡터가 필요함)

  • 각 층 파라미터의 그레디언트 벡터는 윗층부터 역순으로 계산하게 된다.
    • 연쇄법칙을 통해 그레디언트를 점점 아래 층으로 전달하면서 가중치를 업데이트

역전파 알고리즘 원리 이해하기

  • 역전파 알고리즘은 합성함수 미분법인 연쇄법칙(chain-rule) 기반 자동미분(auto-differentiation)을 사용한다.
    • back-propagation은 각 노드의 텐서 값을 저장해둬야 하기 때문에 forward-propagation보다 메모리 사용이 더 많음

예제 : 2층 신경망

  • 2층 신경망의 역전파 알고리즘

 

 

출처: boostcourse 인공지능(AI) 기초 다지기(https://www.boostcourse.org/ai100/joinLectures/218531)

 

인공지능(AI) 기초 다지기

부스트코스 무료 강의

www.boostcourse.org

'부스트캠프 AI Tech 4기' 카테고리의 다른 글

딥러닝에서의 베이즈 통계학  (0) 2023.05.06
딥러닝에서의 통계학  (0) 2023.05.05
딥러닝에서의 확률론  (0) 2023.05.04
경사하강법  (0) 2023.05.02
벡터와 행렬  (0) 2023.05.01
Comments