본문 바로가기

자기계발/데이터사이언스

[머신러닝] Gradient descent (경사하강법)

반응형

[머신러닝] 인공지능과 머신러닝이란, 머신러닝의 종류

 

[머신러닝] 인공지능과 머신러닝이란, 머신러닝의 종류

우선 글을 시작하기 앞서서, 나는 컴퓨터 공학 전공도 아니고, 통계학을 깊게 공부하지도 않은 비전공자 일반인이다. 대학원 진학을 앞두고 통계학이 도움이 될 것 같아서 저번 학기에 통계학 과목을 수강하게 되..

dragsoseumon.tistory.com

[통계] Simple Linear Regression(단순선형회귀) 개념과 R 실습

 

[통계] Simple Linear Regression(단순선형회귀) 개념과 R 실습

저번 글에서는 머신러닝의 개념을 인공지능과 비교하여 알아보았다. 머신러닝의 종류로 Supervised Learning(지도학습), Unsupervised Learning(비지도학습) 그리고 Reinforcement Learning(강화학습)가 있다고 했..

dragsoseumon.tistory.com

[통계] 다항회귀(polynomial regression)와 다중선형회귀(multiple linear regression) 개념과 R 실습

 

[통계] 다항회귀(polynomial regression)와 다중선형회귀(multiple linear regression) 개념과 R 실습

저번 글에서는 회귀(regression)의 정의와, 그 종류 중 하나인 단순선형회귀(Simple linear regression)에 다뤘다. 2020/01/17 - [관심거리 -> 자기계발/데이터사이언스] - [통계] Simple Linear Regression(단순..

dragsoseumon.tistory.com

이전의 글에서 머신러닝의 개념에 대해 다뤘고, 통계학으로 회귀(Regression)를 간단하게 설명하였다. 이번 글에서는 머신러닝에서, 즉 컴퓨터가 회기 모델을 만들 때에는 어떤 과정으로 이루어지는지 알아보겠다.

 


머신러닝에서의 모델 예측

정답이 있는(x에 대한 y의 값이 대응되어있는) 데이터로부터 우리의 목표는 그 데이터를 가장 잘 설명하는 모델을 만들고, 모델로부터 새로운 x에 대한 답 y를 얻는 것이다.

가장 일반적으로 만들 수 있는 모델은 다음과 같다.

여기서 θ가 모델의 모양을 결정하는 값들이다. 우리의 목표는 '데이터에 가장 적합'한 θ값을 찾는 것이다. 데이터에 가장 적합하다는 것은 구체적으로 어떻게 알 수 있을까. 모델과 데이터들의 오차를 살펴보면 된다.

간단하게 이야기하자면 머신러닝에서의 Regression은 컴퓨터가 모델을 계속 그려보면서 모델과 데이터간의 오차를 줄여가면서 최종적으로 오차가 최소일 때를 찾아내는 것이다. 여기서 말하는 오차는 머신러닝에서는 Cost 혹은 MSE(Mean Square Error)이라고 하고, 우리의 목표는 Gradient Descent(경사하강법)를 이용하여 Cost(MSE)가 최소가 될 때를 찾는 것이다.

 


Gradient Descent 사용하여 실제 데이터와 모델간의 차이를 최소로 만드는 과정

그럼 이제 좀 더 자세하게 'Gradient Descent라는 방법을 사용하여 실제 데이터와 모델간의 차이를 최소로 만드는 과정’을 이제 설명해보겠다. 

먼저 가장 간단한 Simple linear regression의 모델은 다음 식으로 쓸 수 있다.

그리고 ‘실제 데이터와 모델간의 차이’는 Cost function(비용함수)이라는 것을 가지고 값을 매길 수 있는데 그 식은 다음과 같다.

이때 시그마 안에 들어있는 h(x)가 예측 값(모델이 설명하는 값)이고 y가 실제 값(데이터가 갖는 값)을 의미한다.

예측 값에서 실제 값을 뺀 값(오차)을 제곱하고, 다 더해서 데이터 수만큼 나눠(평균)줬기 때문에 이 값을 Mean Square Error(평균제곱오차)라고 하는 것이다. 계속 말하지만 우리의 목표는 이 값을 최소로 만드는 것이다!

θ값을 변화시키면서 그 때의 MSE 값(혹은 Cost function)의 변화를 그래프로 그릴 수 있을 것이다(실제로는 그리기 힘들다..! 가상의 그래프라고 생각하자). 그 그래프는 다음과 같은데, x를 θ, f(x)를 MSE(Cost function)라고 생각하자.

1) 처음 θ값을 정하고, 그 떄의 MSE 값을 구한 것이 "starting point”이다.

2) 그 θ값에서의 접선의 기울기(Cost function 미분)를 구한다.

3) θ값을 기울기 값만큼 반대방향(“starting point”에서 미분값이 -1이었다면 +1만큼 θ값을 변화시킴)으로 보낸다.

4) 1)~3)을 계속 반복하여 더이상 θ값에 변화가 없거나 매우 작거나 할 때(미분값 = 0, 접선의 기울기 = 0)까지 반복한다.

밑의 영상에서 그 과정을 잘 보여주고 있다.

https://sandipanweb.wordpress.com/2017/11/25/some-deep-learning-with-python-tensorflow-and-keras/10/

 

 

결국 이 과정을 식 하나로 표현하면 다음과 같다.

MSE(Cost function)을 θ에 대해 편미분하고, 알파만큼의 값을 곱해주고 (-)을 곱하여 반대방향으로 θ를 보내주는 것이다.

 

 

이 때 곱해주는 알파를 Learning rate(학습률)이라고 하는데, 얼마나 큰 보폭으로 θ값을 변화시킬 지 정하는 상수이다.

왼쪽은 너무 Learning rate가 작아서 원하는 값까지가 오래걸리고, 오른쪽은 너무 커서 원하는 값까지 오히려 가지 못하는 경우이다.

 

 

그렇다면 의문점이 하나 들 것이다. 그냥 MSE(Cost function)의 함수를 구해버려서 미분값 = 0 이 되는 지점을 찾으면 되는 것 아닌가? 이 방법은 과거엔 가능했지만 현재의 미친듯한 행과 열을 자랑하는 데이터 수준에서는 불가능하다. 이 방대한 행렬의 역행렬을 계산하는 것은 정말 기계 입장에서도 귀찮고 짜증나는 연산이므로 그냥 Gradient decent 이용해서 여러번 시도하는 것이 더 낫다고 한다.

 

참고 자료는 다음과 같다.

https://towardsdatascience.com/machine-learning-fundamentals-via-linear-regression-41a5d11f5220

 

Machine learning fundamentals (I): Cost functions and gradient descent

**This is part one of a series on machine learning fundamentals. ML fundamentals (II): Neural Networks can be found at…

towardsdatascience.com

https://sandipanweb.wordpress.com/2017/11/25/some-deep-learning-with-python-tensorflow-and-keras/10/

 

Some Deep Learning with Python, TensorFlow and Keras

  The following problems are taken from a few assignments from the coursera courses Introduction to Deep Learning (by Higher School of Economics) and Neural Networks and Deep Learning (by Prof…

sandipanweb.wordpress.com

역시 요즘은 대 유튜브의 시대이다. 위 글 간단하게 읽어보고 밑의 유튜브가서 보면 바로 이해가 갈 것이다..ㅎㅎ

 

다음 글에서는 모델의 학습 방법과 성능 측정방법, 그 다음 글에서는 과적합(overfitting)에 대해 다루도록 하겠다.

[머신러닝] 모델 학습 방법과 일반화 성능

 

[머신러닝] 모델 학습 방법과 일반화 성능

저번 글에서, 머신러닝은 컴퓨터를 이용한 통계학이라고 설명했다. 그 중 지도학습(supervised learning)은 데이터가 입력 데이터와 출력 데이터가 같이 존재하는 상황에서 학습시키는 것이다. 지도학습 중 기본적..

dragsoseumon.tistory.com

 

반응형