개발 공부/Machine Learning, Deep Learning

분류와 회귀 (Classification & Regression) 그리고 최적화 알고리즘 Optimizer

뚜덩ㅇ 2022. 7. 3. 23:15
반응형

이곳은 제가 개인적으로 공부한 내용을 올리는 공간입니다. 글의 정보가 정확하지 않을 수 있습니다. 틀린 점을 알려주신다면 정말 감사하겠습니다.

 

 

머신러닝을 활용하는 문제는 크게 두가지다.

분류문제와 회귀문제.

 

예측하려는 값이 어떤 카테고리 안에 들어가는 값이면 분류(Classification)이고, 연속되는 값이면 회귀문제이다. 쉽게 말해 티셔츠를 보여주고 흰색인지 검정색인지 파란색인지를 맞추는 거라면 분류, 내년 1분기 코스피 지수를 예측하라고 하면 회귀문제이다. 

내년 1분기 코스피 지수를 예측하라는 문제를 가정해보자면,(정말 예측한 것이 아니고 바램을 담았다.) 4312.76 과 같은 값, 즉 연속값이 나오게 되는 게 회귀문제라 할 수 있다.

분류 Classification

티셔츠 색을 맞추는 문제를 가정해보자. 흰색이면 0, 검정색이면 1, 파란색이면 2라고 분류하도록 했다. 그러면 대답할 수 있는 것은 오직 0,1,2 세가지다. 0.5라거나 2.7 혹은 2800과 같은 값은 나올 수 없다. 

 

 

분류문제는 또 여기서 이진분류(Binary classification)와 다중분류(Multi-class classification)로 나뉜다. 대표적으로 대상이 타겟과 일치하는지 맞다/틀리다 두가지로 구분하는 것을 이진분류라 할 수 있다. 그리고 아까와 같이 티셔츠를 흰색, 검은색,파란색 등 3가지 이상으로 구분하는 것을 다중분류라고 한다. 

 

회귀 Regression

회귀의 유형도 종류가 다양하다. 먼저 선형회귀, 비선형회귀인지로 구분할 수 있다. 회귀(Regression)란 용어는 유전학자인 Francis Galton 프랜시스 골턴이 처음 사용했는데 그는 부모와 자식간의 키 상관관계를 분석했었다. 키가 큰 부모의 자식은 부모보다 작고, 키가 작은 부모의 자식은 부모의 키보다 크다는 것을 알아냈는데 그는 이것을 보고 결국 전체적으로 보면 평균으로 돌아간다고 하여 평균으로의 회귀 라고 표현 했다. 

시대가 변하면서 당시의 의미가 현대의 회귀와 완전히 같다고 보진 않지만 선형 회귀를 보면 의미가 어느정도 이해가 간다. 

x와 y값이 제멋대로인 것 같아도 전체적으로 보면 그래프에 그려진 선형에 따르고 있기 때문이다.

 

손실 Loss

 하지만 하나하나의 값을 보면 완벽히 선을 따르는 것은 거의 없다. 실제 데이터와 선과의 차이를 손실, Loss 라고 표현한다. 그리고 데이터마다 어떤것은 예상치를 밑돌거나 윗돌기 때문에 저마다 양수, 음수의 차이가 난다. 그래서 +,- 관계없이 손실을 표현하기 위해 절대값 처리를 하거나 제곱을해준다. 절대값 처리를 한 것은 평균 절대 오차(mean absolute error, MAE) 제곱을 한 것은 평균 제곱 오차(mean squared error, MSE)로 표현한다.

 

손실 최적화 알고리즘 종류

결국 머신러닝, 딥러닝은 손실을 최대한 적게 하는 선, 선이 y = wx + b 인 경우 최적의 w와 b를 찾는것이 궁극적인 목표라 하겠다. 이러한 최적화알고리즘 Optimizer 에 다양한 종류가 있는데 그 중 몇가지는 이렇다.

1. 경사 하강법 Gradient Descent

경사하강법 자체도 종류가 여러가지다. 하지만 내용 자체는 단순하다. 기울어진 방향으로만 쭉쭉 가겠다는 것이다. 등산을 마치고 내려올때 길을따라 아래로만 내려가는 것 처럼, 경사가 아래로 향하는 방향으로 계속 내려가면 비용함수의 최저점에 도달하게된다. 

https://towardsdatascience.com/gradient-descent-algorithm-a-deep-dive-cf04e8115f21

2. 모멘텀 Momentum

경사하강법이 갖는 문제(느린속도, 지역 최소값에 빠지는 문제 등)를 보완한 방법으로 벡터를 이용하여 단순히 경사 아래로 가기만 하는 것이 아니라 momentum, 즉 운동량을 붙여(관성) 기울기에 따라 가속되는 방식이다. 

3. AdaGrad (Adaptive Gradient)

학습률을 조정하는 방식이다. 경사를 내려가는데 학습률이 너무 작으면 학습 시간이 매우 길어지고 반대로 너무 크면 학습이 제대로 이루어지지 않는다. AdaGrad는 학습을 진행하면서 과거의 기울기를 제곱하여 더해나가는 방식으로 점점 학습률을 줄여나간다. 하지만  AdaGrad도 단점이 있다. 학습 횟수가 무한으로 갈수록 학습율이 0에 수렴하여 진행되지 않는다. 이를 보완한 RMSProp 방법이 있다.

4. RMSProp (Root Mean Square Prop)

 위에서 말한 AdaGrad에서 학습이 안되는 문제를 보완한 방법이다. 계속해서 이전값을 제곱하여 더한 것과 달리 가중치를 이용해 예전의 값은 적게 반영하고 최근의 값은 많이 반영하는 식이다. 

5. Adam (Adaptive Moment Estimation)

모멘텀과 RMSProp를 합친 방법으로, 모멘텀 처럼 속도에 관성을 주고 또 RMSProp처럼 변화에 따라 학습률을 조정하는 방식이다. 이 알고리즘은 범용적으로 적용했을 때 성능이 좋아 일반적인 곳에서 매우 널리 사용되는 알고리즘이다.

 

 

 

위의 각 Optimizer는 하나씩 천천히 포스팅을 할 예정이다.

반응형