-
딥러닝 학습 - 역전파, 경사하강법머신러닝 & 딥러닝/딥러닝 기초 2023. 12. 19. 14:34
딥러닝
딥러닝은 머신러닝 방법 중 하나였다. 인공신경망이라는 것이 데이터를 구분할 수 있는 곡선을 만드는 것이었다. 한번으로는 복잡한 데이터 분포를 잘 구분할 수 없었기 때문에 곡선을 만드는 과정을 여러번 수행하자는 아이디어가 딥러닝이었다. 이 방법이 아직까지 성능이 좋아 AI 분야에 대부분 사용되고 있는 기술이다.
딥러닝의 학습 방법에서 알아야하는 개념에는 결정 경계, 목적 함수, 경사하강법, 역전파 등이 있다. 결정 경계란 우리가 데이터를 구분하기 위해 만들었던 곡선이다. 목적 함수란 사칙연산을 통해 우리의 의도를 표현한 함수를 뜻한다. 컴퓨터에게 목적지까지 어느 방향으로 움직여야 하는지 알려주는 것을 경사 하강법이라고 하며 컴퓨터가 움직이는 방법을 역전파라고 한다.
결정 경계 (Decision Boundary)
파랑색과 노랑색 원이 다음과 같이 분포 되어있다. 초록색 곡선으로 데이터를 분포를 구분하여 초록색 선 오른쪽으로는 파랑색 원이 많이 분포 되어있고 왼쪽으로는 노랑색 원이 많이 분포하게 하였다. 즉, 공간상에서 데이터 분포를 구분하는 경계를 결정 경계(Decision Boundary)라고 한다.
선형적인 결정 경계를 사용해서 데이터 분포를 구분하지만 결정 경계가 비선형일 경우는 어떻게 할까? 이 경우는 선형 경계를 사용할 수 있도록 데이터를 새로운 공간으로 변환한다.
딥러닝 모델의 학습
딥러닝 모델은 깊은 층으로 이루어져있다. 각 층은 퍼셉트론과 비선형 활성화함수 등으로 구성 되어있다. 여기서 퍼셉트론을 구성하고 있는 함수들에 의해 각 층의 결정 경계의 모양이 결정된다. 함수의 모양을 결정하는 변수를 우리는 가중치라고 한다.
딥러닝에서는 위 그림과 같은 그래프 형태의 표현을 자주 사용한다. 가중치는 b, w1, w2 즉 그래프의 선에 해당한다. 우리는 데이터 분포를 잘 구분하기 위해 결정 경계를 만들어야 했고 이런 가중치에 의해 결정 경계의 모양을 조정하여 데이터 분포를 더 잘 구분할 수 있도록 한다.
가중치는 딥러닝에서 가중치(weight) 또는 파라미터(parameter)라고 부른다. 그리고 이런한 가중치들을 변경하면서 더 나은 결정 경계를 찾는 과정을 학습(Training)이라고 한다.
딥러닝에서 파라미터(parameter)와 하이퍼 파라미터(hyper-parameter)라는 단어도 볼 수 있다. 파라미터는 모델이 훈련중에 학습하는 변수를 의미하며 하이퍼 파라미터는 학습 과정 이전에 설정되는 외부 구성 설정을 의미한다.
결정 경계 찾기
데이터를 잘 구분하는 결정 경계를 설정해주기 위해 우리는 컴퓨터가 이해할 수 있는 표현인 사칙연산을 사용한다.
위 그림은 한 번의 퍼셉트론과 한 번의 활성화함수를 거친 후 결과이다. 위 그림에서 목표는 A와 B를 구분하는 것이다. 마지막 결과값은 A와 B에 대한 확률값으로 나온다고 가정한다. 현재 연산은 퍼셉트론과 비선형 활성화함수로 구성되어 있는데 퍼셉트론은 입력값에 가중치를 곱해서 더해주는 연산이다. 비선형 활성화함수에는 다양한 종류의 함수들이 있는데 사칙연산을 통해 표현된다.
목적 함수 (Objective Function)
우리의 목표는 입력값에 대해서 입력값과 일치하는 경우 1, 일치하지 않는 경우 0을 출력하는 것이다. a, b, c, d는 가중치를 타내는데 우리는 이 가중치를 변경하면서 (1, 0)의 결과값을 도출해야한다. 즉, 결과값을 목표값을 위해 변경하기 위해서는 가중치를 변경해야한다. 딥러닝에서는 가중치를 함께 곱해준 결과값과 목표값의 차이가 작아야한다.
즉, 사칙연산만으로 구성한 함수를 목적 함수(Objective Function)라고 한다.
- Define the cost function(objective function) as the sum of squared errors between the calculated outcome and the true label
가중치 업데이트
목적 함수는 목표값과 딥러닝 모델에서 도출한 결과값의 오차라고 한다.
즉, 우리는 오차가 작아지는 방향으로 딥러닝 모델을 학습시켜야 하기 때문에 가중치를 변화시켜 오차가 작아지도록 해야한다. 오차는 목표값과 딥러닝 모델의 결과값의 차이라고 할 수 있다. 즉, 1-f(w1*x1 + w2*x2)와 같이 표현될 수 있다. 따라서 오차는 딥러닝 모델을 구성하고 있는 가중치들에 대한 함수라고 할 수 있다.
즉, 가장 작은 오차값을 만드는 가중치를 찾게 된다면 딥러닝 모델은 학습을 성공적으로 마쳤다고 할 수 있다.
경사하강법 (Gradient Descent)
모델 하나를 학습할 때마다 가장 작은 오차값을 만드는 가중치를 일일이 계산하는 것은 불가능하다.
현재 위치가 위 그림과 같다고 가정하자. 가작 작은 오차를 위해서 목적지까지 도달해야하는데 목적지까지 도달하기 위해 어디로 움직여야 하는지 알 수 없다. 목적지가 어느 방향인지 모르지만 우리는 현재 위치보다 아래에 존재할거라는 것을 알 수 있다. 따라서 현재 위치보다 아래로만 가면 목적지에 도달할 수 있다.
즉, 오차값의 내리막갈 방향으로 가중치를 업데이트 하면서 모델을 학습시키는 방법을 경사하강법(Gradient Descent)라고 한다.
오차(Loss) 구하기
우리는 오차가 작아지는 방향으로 가중치를 업데이트 해야한다. 컴퓨터에게는 사칙연산으로 표현을 해줘야하기 때문에 우리는 함수를 미분해서 표현 할 수 있다.
오차함수란 딥러닝 모델 가중치로 표현되는 함수이다. 따라서 오차함수를 각 가중치에 대해 미분할 수 있기 때문에 우리는 기울기를 구할 수 있다. 즉, 각 가중치에 대해 오차함수를 미분한 뒤 내리막 방향으로 가중치를 업데이트할 수 있다. 이 과정을 오르막이 나타날 때까지 반복한다.
따라서 우리는 현재 위치에서 기울기를 구하다가 오르막을 마주치면 멈추어 가장 작은 오차가 되는 부분을 찾을 수 있다.
역전파 (Backpropagation)
그럼 우리는 늘 다음과 같은 의문을 생긴다.
- How to compute the gradient of the loss function from a deep neural network?
앞에서 살펴본 추론 과정은 순전파였다. 추론이란 모델 학습이 완료되면 샘플 데이터가 아닌 실제 데이터를 넣어 결과를 얻어내는 과정이다.
입력값이 딥러닝 모델에 입력되어 내부 함수들에 따라 연산된다. 내부 함수 연산을 거쳐 결과값을 도출하는 과정을 순전파라고한다.
그렇다면 역전파란 무엇일까? 역전파는 출력층에서 입력층 방향으로 계산하면서 가중치를 업데이트 하는 방식이다.
역전파를 다음과 같이 설명할 수 있다.
- Backpropagation is "just the chain rule" of calculus
- Particular implementation of the chain rule
- Avoids recomputing repeated subexpression
- Update weights using gradients
- BP calculates the gradients via chain rule
- Gradient is propagated backward through the network
- Most deep learning software libraries automatically calculate gradients
정리
결정 경계, 목적 함수, 경사하강법, 순전파, 역전파 등에 대해 알아보았다. 결정 경계란 데이터 분포를 구분하는 구분선이고 딥러닝 모델을 학습한다는 것은 더 나은 구분선을 찾아가는 과정이라고 할 수 있다.
딥러닝 모델 학습에서 우리는 목적함수 즉 오차함수가 작아지는 방향으로 가중치를 업데이트 해야한다. 오차함수를 미분하면서 가중치를 변경할 수 있는데 이 방법을 경사하강법이라고 한다.
출력층에서 입력층으로 가중치를 업데이트하는 방법을 역전파라고 한다.
참고자료
'머신러닝 & 딥러닝 > 딥러닝 기초' 카테고리의 다른 글
딥러닝 (3) 2023.12.15 머신러닝 (0) 2023.12.14 컴퓨터의 이미지 인식 (0) 2023.12.13 전문가 시스템 (0) 2023.12.11 딥러닝 배경 (전문가 시스템, 머신러닝, 딥러닝) (0) 2023.12.11