기계 학습에서는 수학을 많이 사용한다. 특히, 대용량의 벡터 연산을 사용하고 데이터의 불확실성을 다루며 오류를 최소화하는 매개변수를 찾는 일을 모두 수학으로 처리한다. 따라서, 딥러닝을 공부함에 있어서 수학은 필수적으로 공부해야하는 분야이며 딥러닝 기초 수학 포스트에서는 다음 아래의 3가지 내용을 다룬다.
- 선형대수
- 확률 및 통계
- 최적화
이번 포스트에서는 기계학습에서 학습의 과정에 속하는 최적화 파트를 소개하겠다. 앞서 선형대수를 통해 데이터간의 연산을, 확률 및 통계를 통해 데이터의 최대우도추정과 무질서도를 알아 보았다. 하지만 결국 인공지능 모델이 "어떻게" 학습되어가는지 명확하게 설명을 하지 않았다. 이제 최적화 이론을 통해 간단하게 이를 이해해보자(기초적인 개념만 알아보고 수학적으로 동작하는 부분은 다른 포스트에서 설명할 예정이다).
목적함수(Objective function)
우선 목적함수$J(\Theta)$를 먼저 이해해야할 필요가 있다. 목적함수의 조건은,
- $J(w) \geq$
- $w$가 최적이면(모델의 예측 결과가 실제 값과 동일하면) $J(w)=0$
- 틀리는 샘플이 많은 $w$일수록 $J(w)$는 큰 값을 갖는다
사실 1번과 2번을 만족하지 않는 목적함수도 존재한다. 하지만 모든 목적함수의 공통적인 부분은 3번이다. 쉽게 이야기해서 모델이 안좋을 수록 목적함수의 값은 커진다. 한 예로 많이 사용되는 MSE(mean squared error)를 생각해보자. 수식은 다음 아래와 같이 나타낸다.
$$ MSE = {1\over n}\sum ^n_{i=1} (y-\hat y)^2 $$
수식에서 $n$은 데이터 샘플의 개수, $y$는 실제값, $\hat y$는 모델이 예측한 값이다. 제곱을 하여 평균을 낸 것이므로 1번은 만족한다. 만약, 모델의 예측값인 $\hat y$가 $y$와 같다면 $MSE$는 0이므로 2번 또한 만족한다. $\hat y$가 $y$와 차이가 크면 클 수록 $MSE$가 커지므로 3번도 만족한다. 자 그래서 이 목적함수를 어떻게 사용하면 좋을까?
목적함수가 작은 모델이 좋은 모델이다.
위의 목적함수를 대강 이해했다면 위의 문구가 맞는 말인 것을 알 수 있다. 그러므로 우리는 목적함수 $J(\Theta)$를 줄이는 방향으로 모델을 개선해나가고 싶고 이것을 기계학습에서 최적화라고 부른다. 만약, 아래 그림과 같이 목적함수를 그릴 수 있었다고 하자.
결국 우리가 찾고싶은 것은 목적함수가 가장 낮은 지점인 $\hat x$이다(실제 목적함수의 값은 우리의 목적이 아니다!). 그럼 이 $\hat x$를 어떻게 찾을것인가? 크게 3가지 방법을 생각할 수 있다.
- 찾을 수 있는 해를 모두 찾아본다(낱낱 탐색, exhaustive search)
- 랜덤으로 몇개를 고르고 거기서 좋은것을 고른다(무작위 탐색, random search)
- 랜덤으로 위치를 찍고 미분을 이용하여 기울기가 낮은 방향으로 이동한다(경사하강법, gradient descent)
만약 찾는 해의 범위가 작다면 낱낱 탐색도 괜찮다. 하지만 일반적으로는 불가능한 경우가 많은데 예를 들어 이미지 한장에 나올 수있는 해의 개수가 얼마나 될까? $100\times 100$ 픽셀의 흑백 이미지라고 한다면 가능한 경우의 수는 $100\times 100 \times 255$이다. 만약, 이해가 안간다면 그냥 숫자가 커서 안되는구나 하고 넘어가도 좋다. 두번째는 무작위 탐색이다. 이 방법은 무식해보이지만 꽤 잘 들어맞는다고 한다. 마지막으로는 미분을 이용한 방법이다(사실 이 방법을 가장 많이 사용한다). 위의 왼쪽 그림에서 예를 들어보면 눈을 감고 아무거나 찍었더니 $x_1$이었다. 여기서 출발해서 점점 내려가는 방향으로 $x$값을 변경해나아가는게 경사하강법이다. 여기서는 간단하게 개념만 살펴볼 것이기 때문에 어떻게 미분이 내려가는 방향으로 $x$를 변경하는지에 대한 내용을 다루지는 않겠다(추후 다룰 예정). 지금은 간단하게 구슬을 떨어트리면 높은곳에서 낮은쪽으로 굴러간다와 비슷한 이미지만 연상하면 좋다. 그런데 뭔가 이상하지 않은가? $x_1$에서 출발하면 찾아지는 값은 $x_2$이지 우리가 원하는 $\hat x$이 아니다!!
Local minimum
경사하강법은 Greedy(탐욕)적으로 동작하기 때문에 찾은 값이 최적의 값을 보장하지는 않는다. 이때 찾은 값을 Local minimum이라고 하고 이를 피하기 위해서 차후 다룰 규제 방법과 같은 방법론이 많이 나왔다. 또한 이러한 이유로 처음 시작하는 값도 중요해진다. 만약 $x_3$에서 시작했다면 원하는 값에 도달할 수 있었기 때문이다.
지금까지 정리하자면 우리가 부르는 최적화는 목적함수의 값을 줄이는 것이고 이때 여러 알고리즘들이 있지만 가장 많이 사용되는 것이 경사하강법이었다. 하지만 경사하강법은 Local minimum이라고 하는 문제가 있다. 이제 마지막으로 경사하강법 중 3가지만 알아보고 마무리하겠다.
- Batch Gradient Descent, BGD
- Stochastic Gradient Descent, SGD
- Mini-batch Gradient Descent, Mini-batch GD
첫번째로 배치 경사하강이다. 배치란 한 다발을 의미한다. 즉, 모든 데이터 샘플에 대해 미분을 하고 이 값을 평균내서 이용한다. 이렇게 된다면 계산량은 증가하지만 평균값을 사용하기 때문에 매우 안정적인 학습이 이루어진다. 두번째는 확률적 경사하강인데 데이터 하나에 대해 매번 학습이 이루어진다. 이러한 경우 계산량은 낮지만 학습이 불안정하게 될 확률이 높다. 마지막으로 이 둘을 적절하게 섞은 미니배치 경사하강이다. 모든 데이터 샘플에 대해 미분을 하는 것이 아니라 몇개를 뽑은 뒤 이에 대한 평균을 내서 학습을 진행한다.
예를 들어, 갖고 있는 데이터 개수가 100개라고 해보자. 배치 경사하강은 100개에 데이터에 대해 미분을 구하고 평균값을 이용하여 학습한다. 확률적 경사하강은 모든 데이터에 대해 학습을 진행한다. 미니 배치 경사하강에서 미니 배치 개수가 10개라면 10개씩 데이터를 뽑아 평균을 낸 후에 학습을 진행한다.
지금까지 최적화에 대한 전반적인 개념을 다뤘다. 사실 미분 부분과 관련된 부분을 많이 생략했기 때문에 많은 궁금증이 있을 것 같기도 하다. 최대한 빠른 시일 안으로 미분이 어떻게 이용되는지, 학습률(Learning rate)는 무엇인지 등 조금 더 구체적인 내용을 다뤄보도록 하겠다.
이 포스트는 "기계 학습(오일석 지음)"을 바탕으로 작성되었습니다.
'Data Science > Deep Learning' 카테고리의 다른 글
딥러닝: 다층 퍼셉트론(Multi-layer perceptron) (0) | 2022.10.18 |
---|---|
딥러닝 기초 수학: 경사하강법 (0) | 2022.10.12 |
딥러닝: 퍼셉트론 (1) | 2022.10.07 |
딥러닝 기초 수학: 정보이론 (2) | 2022.10.03 |
딥러닝 기초 수학: 선형대수 (0) | 2022.09.30 |