티스토리 뷰
위 포스트는 정보문화사에서 출판한 책 <파이썬 딥러닝 파이토치>의 내용을 바탕으로 작성되었습니다.
머신러닝이란?
머신러닝의 정의는 인공지능과 똑같지만, 사용하는 분야가 조금 다르다고 보면 된다. 최근의 머신러닝은 행과 열이 존재하는 행렬(정형 데이터)을 이용해 뭔가 예측 또는 분류하고 싶을 때 사용하고, 이미지 또는 텍스트와 같이 정형화돼 있지 않은(비정형 데이터) 데이터를 사용할 때는 인공지능(딥러닝)을 사용한다. (크게 보면 머신러닝은 인공지능 안에 포함되는 개념이라 볼 수 있다)
머신러닝의 종류
머신러닝 모델의 학습 목표는 '데이터(Input)에 대한 모델의 결과(Output)가 정답(Label)에 가깝게 나오도록 학습시키는 것'이다. 그렇다면 어떤 방법으로 모델을 학습시키는 것일까? 전반적인 머신러닝 모델 학습 방식은 다음과 같다.
- 데이터를 모델에 넣고 결과를 낸다.
- 결과를 정답과 비교해 다른 만큼 모델을 변경한다.
- 특정 조건이 만족할 때까지 1,2를 반복한다.
위 2번 단계에서는 모델의 결괏값이 실제 정답과 어떤 차이가 있는지 수치화할 필요가 있다. 이 수치화된 차이를 함수화 한 것을 '손실 함수(Loss Function)' 또는 '비용 함수(Cost Function)'이라고 한다. 손실함수는 모델의 결과에 대해 얼마나 손실이 일어났는지를 정의하는 함수로, 이 의미에 맞게 모델을 손실함수의 값을 줄이는 방향으로 학습한다.
손실함수의 대표적인 함수로는 Mean Squared Error(MSE)를 들 수 있다.
머신러닝의 구분
머신러닝은 크게 지도 학습(Supervised Learning)과 비지도 학습(Unsupervised Learning)으로 구분할 수 있다.
지도학습
지도 학습은 데이터가 주어졌을 때 무엇(x)으로부터 무엇(y)을 예측하고 싶을 때 사용한다. 주로 머신러닝을 통해 y = f(x)를 만족하는 함수 f를 만들고자 하며, 이때 f가 바로 머신러닝 모델이다. 여기서 x를 독립 변수(Independent Variable) 또는 Feature라 하며, y를 종속변수(Dependent Variable), 반응변수(Response Variable), 타깃변수(Target Variable)라 한다.
지도 학습 내에서도 두 가지 종류로 나눌 수 있다. 첫째는 회귀(Regression) 문제, 두 번째는 분류(Classification) 문제이다. y = f(x)에서 y가 실수형 값을 가질 때 풀어야 하는 문제를 회귀 문제, 이때의 함수 f를 '회귀 모델(Regression Model)'이라 한다. 반면 위 수식에서 y가 명목형 변수 즉, 특정 Class를 가질 때 풀어야 하는 문제를 분류 문제라 하며, 이때의 함수 f를 '분류 모델(Classification Model)'이라 한다. 키를 이용해 몸무게를 예측하고 싶을 때나 아파트 가격이나 주식 가격을 예측하고 싶을 때는 '회귀 모델'을 사용하고, 비만 여부 또는 아파트나 주식의 가격 상승 여부를 예측하고 싶을 때는 '분류 모델'을 고려해야 한다.
지도학습 모델의 종류
선형 회귀 모델
선형 회귀모델은 직선의 기울기를 예측 값과 실제 값의 차이를 제곱함이 줄어드는 방향으로 구한다. 독립 변수 하나만으로 종속 변수를 예측하는 모델을 단순 선형 회귀 모델(Simple Linear Regression Model)이라고 한다. 변수가 여러 개일 대 적합시키는 회귀 모델을 '다중 선형 회귀 모델(Multi Linear Regression Model)'이라 한다. 선형 회귀 모델은 기본적으로 직선의 방정식과 같이 모델을 만들 수 있기 때문에 독립 변수가 종속 변수에 대해 어떤 형태로 영향을 끼치는지 알 수 있다.
회귀 계수 축소 모델
일반적으로 변수가 많을수록 회귀 모델의 학습 데이터에 대한 성능은 높아지고 학습하지 않은 데이터에 대한 성능은 낮아진다. 이와 더불어 변수가 많아지면 변수의 해석력도 낮아진다. 따라서 적절한 변수만 선택해 모델에 사용하는 것이 중요하다.
이러한 문제를 해결하기 위해 '회귀 계수 축소 모델'을 사용한다. 이 모델은 MSE를 최소화시키는 것과 더불어 회귀 계수 자체도 축소시키도록 Loss를 구성한다. 회귀 계수 축소 모델은 Lasso, Ridge, ElasticNet으로 나눌 수 있다. Lasso는 회귀계수가 완전히 0이 되도록 축소시킬 수 있다는 특성이 있고 Ridge는 회귀계수가 0으로 가까워지긴 하지만 완전히 0이 되지 않는다는 특성이 있다.
의사 결정 나무
의사 결정 나무(Decision Tree) 또한 선형 회귀 모델과 같이 매우 해석력이 높고 직관적인 모델이다. 높은 설명력을 지니고 있지만 Prediction의 성능은 부족한 부분이 있어서 단일 모델보다는 이를 발전시킨 Ensembel 모델을 많이 사용한다.
k - NN
k-NN은 가장 가까운 k개의 데이터를 이용해 해당 데이터의 출력 값을 예측하는 직관적인 모델이다. k는 사용자가 사전에 지정하는 하이퍼파라미터로, 데이터 간 거리 측정 지표나 k개 데이터의 정보를 종합하는 방법을 선택해 모델의 변화를 줄 수 있다.
신경망
신경망은 딥러닝의 기초가 되는 모델이다. 기본적으로 입력(Input)층, 은닉(Hidden)층, 출력(Output)층으로 구성된 모형으로, 각 층을 연결하는 노드의 가중값을 업데이트하면서 학습한다. Loss를 설정하고 이 Loss가 최소화되는 지점을 찾기 위해 가중값을 점차 업데이트한다.
신경망은 내가 지니고 있는 학습 데이터로 완벽한 모델을 만들 수 있다는 단점이 있는데, 어떤 모델을 만들든 '학습 데이터 내에서' 정확도 100%에 이르는 모델을 구축하기 때문에 실제로 예측해야만 하는 데이터에 대해서는 잘 맞추지 못하는 현상이 발생한다. 이러한 현상을 '과적합(Overfitting)'이라고 한다.
SVM(Support Vector Machine)
SVM은 학습 과정 내에서 과적합을 어느 정도 방지할 수 있는 알고리즘이다. 이 페이지의 그림처럼 SVM은 직선을 그었을 때 Class 간의 거리가 각각 비슷하도록, 즉 직선을 가운데로 잘 긋도록 하는 학습 방법을 지니고 있다. 다시 말해, 학습 성향에서 발생하는 과적합 문제에 대한 해결책을 제시할 수 있다는 것이다. 그러나 데이터의 차원이 커질수록, 즉 변수나 데이터 수가 많아질수록 학습하는 시간이 매우 오래 걸린다는 단점이 있다.
Ensemble Learning
Ensemble Learning은 다양한 모델을 만들어 우리가 예측하고자 하는 모델에 대한 다양한 의견을 수렴해 투표를 바탕으로 최종적인 예측 값을 만들고자 하는 것이다. 예로는 Bagging(데이터를 재구성해 모델을 만듦), RandomForest(데이터와 변수를 랜덤으로 추출해 모델을 만듦), Boosting(잘 맞추지 못하는 데이터를 좀 더 집중적으로 학습시킴) 등이 있다. 일반적으로 학습 성능을 높이는 데 많이 사용하는 모델은 Boosting이며 그중에서도 예측 값과 실제 값의 차이를 점차 줄여나가면서 학습시키는 Gradient Boosting이 많이 활용되고 있다.
비지도 학습
문제의 지문과 정답을 제공하고 학습시키는 과정인 지도학습과 달리, 데이터는 제공하지만 명확한 정답을 제공하지 않는 학습 방법이 비지도 학습이다. 독립 변수만으로 새로운 Feature를 찾아내거나 군집화하는 등 데이터 내에서 새로운 패턴을 찾아내는 것에 초점을 맞춘다. 대표적인 방법이 클러스터링(군집화), 차원 축소법 등을 들 수 있다.
강화학습
강화학습은 수많은 시뮬레이션을 통해 컴퓨터가 현재 상태에서 어떤 행동을 취해야 먼 미래의 보상을 최대로 할 것인지를 학습하는 알고리즘이다. 강화학습을 하려면 현재 상태(State), 행동(Action), 보상(Reward), 다음 상태(Next State)가 있어야 한다. 즉, 기존 머신러닝처럼 데이터의 행이 각각 독립되어 있는 것이 아니라 일련의 에피소드(시뮬레이션된 연속적인 데이터의 값)가 있어야 한다.
'딥러닝' 카테고리의 다른 글
[Deep Learning] Dropout, Activation Function, Batch Normalization (0) | 2021.07.16 |
---|---|
[AI Background] 인공 신경망 & MNIST 실습 (0) | 2021.07.13 |
[AI Background] 과적합 (0) | 2021.07.11 |
[AI Background] 인공지능의 사례 (0) | 2021.07.10 |
[파이토치 기초] 반드시 알아야 하는 파이토치 기본 스킬 - Autograd (0) | 2021.07.09 |