Day_4 01. 딥러닝 학습방법 이해하기

작성일

2 분 소요

딥러닝 학습방법 이해하기

1. 비선형모델인 신경망(neural network)

  • 각 행벡터 $O_i$는 데이터 $x_i$와 가중치 행렬 $W$ 사이의 행렬곱과 절편 $b$ 벡터의 합으로 표현된다고 가정하면

  • 데이터가 바뀌면 결과값도 바뀌게 됨
  • 이 때, 출력 벡터의 차원은 d에서 p로 바뀌게 됨

  • d개의 변수로 p개의 선형모델을 만들어서 p개의 잠재변수를 설명하는 모델
  • $x_1$ ~ $x_d$ 까지의 변수들이 $o_1$ ~ $o_p$ 출력으로 연결되는 수식이라고 이해하면 됨
  • 화살표에 해당하는 것이 가중치 행렬 $W_{ij}$의 역할이라고 보면 됨

2. 소프트맥스 연산

  • 소프트맥스(softmax) 함수는 모델의 출력을 확률로 해석할 수 있게 변환해주는 연산
  • 분류 문제를 풀 때 선형모델과 소프트맥스 함수를 결합하여 예측
  • 특정 벡터가 어떤 클래스에 속할 확률인지 계산해줄 수 있음

def softmax(vec):
    denumerator = np.exp(vec - np.max(vec, axis=-1, keepdims=True))
    numerator = np.sum(denumerator, axis=-1, keepdims=True)
    val = denumerator / numerator
    return val
  • np.max(vec)를 사용하는 이유는 오버플로우 발생을 막아주기 위해 사용
  • 학습이 아닌 추론의 경우에는 굳이 softmax 함수를 사용할 필요 없음

  • 신경망은 선형모델과 활성함수(activation function)를 합성한 함수
  • 소프트맥스는 전체의 값들을 다 고려해서 나오는 반면 활성함수는 개개의 값들을 받아서 출력
    • 활성함수는 실수값을 받아서 계산
    • 소프트맥스는 벡터를 받아서 계산
  • 활성함수를 이용해서 딥러닝에서는 선형모델로 나온 출력물을 비선형의 값으로 변환 가능

3. 활성함수

  • 활성함수(activation function)는 $R$ 위에 정의된 비선형(nonlinear) 함수로서 딥러닝에서 매우 중요한 개념
  • 활성함수를 쓰지 않으면 딥러닝은 선형모형과 차이가 없음
  • 시그모이드(sigmoid) 함수나 tanh 함수는 전통적으로 많이 쓰이던 활성함수지만 딥러닝에선 ReLU 삼수를 많이 사용

  • 다층(multi-layer) 퍼셉트론(MLP)은 신경망이 여러층 합성된 함수

  • $H$와 $Z$는 모양이 같지만 활성함수를 씌웠느냐의 차이
  • 순차적인 신경망 계산을 순전파(forward propagation)라고 함
    • 학습이 아닌 주어진 순서에 따라 출력물을 내놓는 과정

4. 왜 층을 여러개를 쌓을까?

  • 이론적으로는 2층 신경망으로도 임의의 연속함수를 근사할 수 있음
    • 그러나 딥러닝에서는 무리가 있음
  • 층이 깊을수록 목적함수를 근사하는데 필요한 뉴런(노드)의 숫자가 훨씬 빨리 줄어들어 좀 더 효율적으로 학습이 가능
  • 층이 얇으면 필요한 뉴런의 숫자가 기하급수적으로 늘어나서 넓은(wide) 신경망이 되어야 함
  • 많은 층을 쌓은 딥러닝 모델이 좀 더 효율적
  • 층이 깊다고해서 좀 더 복잡한 모델을 근사할 수 있지만 최적화가 더 쉽다는 얘기를 할 수는 없음
  • 좀 더 복잡한 모델은 최적화에 더 많은 노력이 필요
  • 층이 깊어지면 깊어질 수록 학습이 더 어려워 질 수 있음
    • 추후 convolution -> residual 강의 할 때 다시 얘기

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

  • 딥러닝은 역전파(backpropagation) 알고리즘을 이용하여 각 층에 사용된 패러미터를 학습

  • 저층의 gradient를 계산할 때 위층의 gradient가 필요
  • 각 층 패러미터의 그레디언트 벡터는 윗층부터 역순을 계산

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

  • 역전파 알고리즘은 합성함수 미분법인 연쇄법칙(chain-rule) 기반 자동미분(auto-differentiation)을 사용

  • backpropagation은 미분을 계산하고 저장해야 하기 때문에 메모리를 더 많이 사용


Further Question

1. 분류 문제에서 softmax 함수가 사용되는 이유가 뭘까요?

  • 모델을 통한 나온 출력에 softmax 함수를 사용하면 확률로 해석이 가능해져서 분류 카테고리의 하나하나의 확률로 해석가능 그렇기 때문에 softmax 함수를 사용한다.

2. softmax 함수의 결과값을 분류 모델의 학습에 어떤식으로 사용할 수 있을까요?

  • softmax 함수의 결과값은 분류할 카테고리의 확률값으로 나오게 되는데 이 중 가장 큰 확률을 가진 카테고리를 정답으로 채택해서 모델이 분류한 정답과 실제 정답의 차이를 비교해 학습

댓글남기기