본문 바로가기

유니티 ML Agents/머신러닝과 강화학습 기초

2. 선형 회귀(Linear Regression) 분석

머신 러닝의 개념을 이해하기 위해 가장 간단한 1차원 선형 회귀 분석에 대해 알아보자. 선형 회귀 분석은 지도 학습의 일종으로 예측 모델을 만들어 알려지지 않은 데이터가 들어왔을 때 결과를 예측하는 기술이다.


선형회귀분석


그림에서 학습 데이터는 2차원(x, y) 데이터로 구성되어 있다. 목적은 학습 데이터에 없는 x 값이 들어왔을 때 y 값을 예측하는 모델을 만드는 것이다. 데이터가 완전한 일차원 선형 분포를 가지고 있지는 않지만 1차 방정식을 알아내면 오차는 있지만 대략적인 y 값을 알 수 있다.


비용함수


그림에서 알 수 있듯이 모델은 1차 방정식이 되며 계수 W b값이 무엇인지 만 알면 된다. 머신 러닝에서는 W를 가중치(Weight) b를 편향(bias)라 부른다. 1차원 선형 회귀분석의 목적은 바로 데이터를 가장 잘 설명하고 있는 W b를 찾아내는 것이다.


W b를 찾아내는 방법을 알아보자. 먼저 임의의 값을 W b에 넣어보자. 예를 들어 W=1 그리고 b=3을 입력했을 때 알고 있는 데이터 (x, y) = (10, 6)을 모델에 넣어보면 y=13이 된다. 함수를 계산해서 나온 값 13과 알고있는 값 6-7 정도의 차이가 발생한다. 알고있는 값과 계산 값의 차이를 비용(Cost) 혹은 오차(Loss)라고 한다.


실제 데이터와 계산 값의 차이가 최소가 되는 W b를 구하기 위해 손실 함수(Loss Function 또는 Cost Function)를 정의했다. 값의 차이가 양인지 음이지는 중요하지 않기 때문에 차이에 제곱을 취했다.


이제 문제는 W b를 어떤 방식으로 수정하는지가 문제이다. 여기에서 등장하는 것이 경사 하강법(Gradient Decent)이다.


경사하강법

(출처 : https://iamtrask.github.io/2015/07/27/python-network-part2/)


앞에서 정의한 손실 함수에 대해 편미분(참고: https://ko.wikipedia.org/wiki/편미분)을 하면서 경사가 감소하는 방향으로 W b를 수정해 가면 결국에는 오차가 가장 적은 지점에 도달할 수 있다. 이러한 알고리즘을 경사하강법(Gradient Decent)이라 한다. 이 책에서는 경사 하강법의 자세한 부분을 다루지 않는다. 단지 오차 함수를 최소화하기 위해서 경사 하강법을 사용한다는 정도로 알고 넘어가도록 한다.


경사하강법을 통해 오차가 최소화 되는 지점의 (W, b) (0.15, 5) 이란 값을 가진다고 할 때 모델은 Y = 0.15 *X + 5가 된다.

이제 알려지지 않은 x 값이 오면 모델을 통해 y 값을 계산할 수 있다.



'유니티 ML Agents > 머신러닝과 강화학습 기초' 카테고리의 다른 글

5. 강화학습  (0) 2019.02.26
4. 딥러닝  (0) 2019.02.26
3. 분류(Classification) 분석  (0) 2019.02.26
2. 선형 회귀(Linear Regression) 분석  (0) 2019.02.26
1. 머신러닝  (0) 2019.02.26