AI Fundamentals/11기 - Let's AI 2023

[Let's AI] 3-2. 딥러닝 학습방법 이해하기

Jae. 2023. 6. 26. 20:24
728x90

1. Neural Network (Nonlinear model)

 

  • 신경망은 선형모델과 활성함수(activation function)를 합성한 비선형모델(함수)

 

  • Row Vector(행 벡터) 기준으로 해석 : 하이라이트된 부분끼리 Row Space 행렬 연산
  • Row Space 행렬 연산 :
    • 결과 행렬의 row 개수 = 왼쪽 행렬의 row 개수
    • 왼쪽 행렬의 row를 하나씩 꺼내서 계산 후 다시 삽입
    • vector * matrix 연산 수행 : 각 vector의 element를 오른쪽 Matrix의 Row에 분배해서 합하기
     

 

  • 각 화살표마다 W_dp가 곱해진다 : X_d 에서 O_p로 향하는 화살표를 W_dp에 대응시킨다

 

2. Softmax Function

 

소프트맥스(softmax) 함수는 모델의 출력을 확률로 해석할 수 있게 변환해 주는 연산

  • 분류 문제를 풀 때 선형모델과 소프트맥스 함수를 결합하여 예측
  • 그러나 추론을 할 때는 원-핫(one-hot) 벡터로 최대값을 가진 주소만 1로 출력하는 연산을 사용해서 softmax 를 사용하진 않음
  • 따라서 추론이 아닌 학습시에만 softmax 함수를 이용

 

  • 첫번 째 줄에서 np.max로 처리하는 이유는 overflow를 방지하기 위함 + softmax의 기능은 그대로 유지가능

 

3. Activation Function (활성함수 = 비선형함수, nonlinear function)

 

  • 신경망 : 선형모델과 활성함수를 합성한 함수(비선형모델)
  • softmax 함수의 경우 vector를 input으로 받음 : 출력물의 모든 값을 고려해서 출력
  • activation 함수의 경우 real number를 input으로 받음 : 다른 주소의 출력값을 고려 x, 해당 주소의 출력값만 고려

  •  활성함수(activation function)는 R(실수) 위에 정의된 비선형(nonlinear) 함수 로서 딥러닝에서 매우 중요한 개념
  • 벡터가 아니라 실수값으로 입력을 받음 -> 벡터에 활성함수를 씌우면 모든 요소에 활성함수를 적용
  •  활성함수를 쓰지 않으면 딥러닝은 선형모형과 차이가 없음
  • 시그모이도(sigmoid) 함수나 tanh 함수는 전통적으로 많이 쓰이던 활성함수지만 딥러닝에선 ReLU 함수(비선형함수) 많이 씀

 

  • Z : linear model (선형모델)
  • O : 최종 선형모델 -> 손실함수를 구성
  • H : neural network (신경망) = activation func(Z) : 활성함수에 선형모델을 합성함
  • sigma : activation funcion (활성함수)
  • H를 X대신 선형모델에 연속적으로 합성시킴

  • 활성함수 sigma는 실수값으로 입력을 받기 때문에 벡터에 적용할 때도 각 벡터의 원소에 개별적으로 적용
  •   l = 1,..., L 까지 순차적인 신경망 계산을 순전파(forward propagation)라 부른다
  •  학습이 아니라 주어진 입력이 왔을 출력을 반환하는 과정의 연산

 

4. Multi-layer

 

층을 여러개 쌓는 이유 

 

  •  이론적으로는 2층 신경망으로도 임의의 연속함수를 근사할 수 있음
  • 이를 universal approximation theorem 이라 부름

 

  • 그러나 층이 깊을수록 목적함수를 근사하는데 필요한 뉴런(노드)의 숫자가 훨씬 빨리 줄어들어 좀 더 효율적으로 학습이 가능
  • 층이 얇으면 필요한 뉴런의 숫자가 기하급수적으로 늘어나서 넓은(wide) 신경망이 되어야 한다

 

** 층이 깊다고 해서(복잡하다고 해서) 효율적으로 목적함수를 근사할 있는 것은 맞으나, 최적화가 쉬운 아님

-> 함수가 복잡할수록 최적화에 많은 노력을 기울어야 함

5. Backpropagation (역전파 알고리즘)

 

  • 딥러닝은 역전파(backpropagation) 알고리즘을 이용하여 각 층에 사용된 패러미터 {W(l), b(l)}l=1~L 를 학습
  • 손실함수를 L 이라 했을 때 역전파는 ∂L/∂W(l), ∂L/∂b(l) 정보를 계산할 때 사용
  • 각 층 패러미터의 그레디언트 벡터는 윗층부터 "역순으로 계산"하게 됨
  • 역전파는 l = L...,1 순서로 연쇄법칙을 통해 그레디언트 벡터를 전달
  • 각 노드의 텐서 값을 컴퓨터가 기억해야 미분 계산이 가능 -> 순전파 보다 메모리를 더 사용

728x90