brunch

You can make anything
by writing

C.S.Lewis

by 라인하트 Oct 03. 2020

앤드류 응의 머신러닝 정리 1:비용함수와 경사하강법까지

  온라인 강의 플랫폼 코세라의 창립자인 앤드류 응 (Andrew Ng) 교수는 인공지능 업계의 거장입니다. 그가 스탠퍼드 대학에서 머신 러닝 입문자에게 한 강의를 그대로 코세라 온라인 강의 (Coursera.org)에서 무료로 배울 수 있습니다. 이 강의는 머신러닝 입문자들의 필수코스입니다. 인공지능과 머신러닝을 혼자 공부하면서 자연스럽게 만나게 되는 강의입니다. 



Model adn Cost Function (모델과 비용 함수)

Parameter Learning (파라미터 학습)


   모델과 비용 함수와 파라미터 학습에서 배운 것을 정리합니다. 두 개의 장은 처음으로 인공지능 알고리즘을 배웁니다. 그것은 선형 회귀에 관한 경사 하강 알고리즘입니다. 경사 하강 알고리즘을 수학적으로 어떻게 표현되는 지를 총 정리합니다. 



용어 정리

     학습 알고리즘을 수학적으로 표현하기 위해 몇 가지 기호를 사용합니다.

  

(1) 'm' : 훈련용 데이터 수

        만일 훈련용 데이터 셋에 있는 데이터 수가 47 라면, 'm = 47'입니다. 


(2) 'x' : 특징을 나타내는 입력 변수


(3) 'y': 출력 값 또는 예측하기 위한 목표 변수 


(4) '(x, y)' : 훈련용 데이터 쌍

       훈련용 데이터 셋에서 변수 x와 연관된 변수 y입니다. 예를 들면, 집의 크기 x와 연관된 집값 y가 쌍을 이룹니다.  


(5) '(x^(i), y^(i))' : i 번째 데이터의 입력값과 출력 값의 쌍

      (x^(10), y^(10)의 의미는 10번째 훈련용 데이터의 쌍입니다. 


(6) 'h' : 학습 알고리즘이 하는 일

      'h'는 hypothesis (가설)의 줄임말입니다. 가설의 역할은 주택 크기 'x'와 주택 가격 ' y'를 매핑합니다. 즉, 'h'는 'x'에서부터 'y'까지 매핑하는 함수입니다. 

   

(7) hθ(x) = θ0 +  θ1x 단변수 선형 함수

     학습 알고리즘 h(x)는 직선 함수를 사용한다는 의미입니다. 



비용 함수 J(θ0,θ1) 유도 

    가설 함수 h(x) = θ0 + θ1*x 일 때 오차(e)의 제곱 함수를 구합니다. 모든 훈련 데이터 m개에 대한 오차의 제곱을 한 후 평균을 유도합니다. 


  비용 함수 J(θ0, θ1)는 평균 제곱 오차를 최소화하는 파라미터 θ0와 θ1을 찾습니다. 제곱 오차 함수 J(θ0, θ1)를 유도하는 과정을 정리합니다. 


(1) 가설 함수 

    학습 데이터 셋을 도식화했을 때 데이터에 가장 적합한 함수는 직선의 일차함수라고 가정합니다. 직선에 대한 가설 함수는 다음과 같습니다. 중학교 수학 시간에 배웠던 일차함수 'y(x) = ax + b'를 가설 함수 h(x)에 대해 정리한 것입니다. 상수 a와 b를 θ0와 θ1으로 표현합니다.  

 

(2) 오차 제곱 함수

    x에 값에 따른 가설 함수 h(x)의 예측 값과 학습용 데이터 셋의 x에 따른 실측 값 y와의 오차를 계산합니다.  오차는 데이터에 따라 양수 또는 음수로 나타납니다. 단순하게 오차를 더한다면 음수로 인해 실제 오차를 정확히 측정할 수 없기 때문에 음수를 제거하기 위해 각각의 오차에 제곱을 합니다.  


   

(3) 제곱 오차 함수의 합산

    제곱 오차 함수를 모든 학습 데이터 셋에 적용합니다. 'm'은 모든 데이터 셋의 개수이고, 'i'는 데이터의 순서입니다. i=1이면 첫 번째 데이터입니다. 만일 m= 47이라면 총 47개의 오차 데이터가 있습니다. 모든 데이터 셋에 대한 오차를 합산하는 수학 공식은 다음과 같습니다.  



(4) 평균 제곱 오차 함수

    제곱 오차 함수로 모든 학습 데이터 셋에 대한 오차의 제곱을 더하기만 한다면 학습용 데이터 셋이 증가할수록 오차가 증가할 것입니다. 학습 데이터의 개수가 증가하더라도 오차를 정확히 측정하기 위해 평균을 사용합니다. 평균은 훈련용 데이터의 개수 m 만큼 다시 나누어주면 평균 오차를 구할 수 있습니다. 예를 들어, m = 47이라면, 분자는 47개의 오차를 더한 값이고, 분모는 47입니다. 이를 수식으로 표현하면 다음과 같습니다.    여기서 1/m이 아닌 1/2m로 나누기도 합니다. 이유는 나중에 이식을 미분할 때 수식을 단순화하기 위해서입니다. x^2를 미분하면 2x 이므로 1/2를 곱해서 제거합니다. 


   생각해보면, 비용 함수의 목적은 비용이 최소화되는 값을 구하는 것이므로 1/m 또는 1/2m 중 어느 것으로 나누더라도 결과가 바뀌지는 않습니다. 


(5) 비용 함수

   이 모든 과정을 통해 얻어진 비용 함수 J(θ0, θ1)는 다음과 같습니다. 여기서 hθ(x) = θ0 + θ1x^(i)이기 때문에 J(θ0, θ1)의 값을 최소화하는 파라미터 θ0와 θ1을 구할 수 있습니다. 




비용 함수의 기하학적 모형

   가설 함수 'h(x) = θ1*x'이고 θ0 = 0일 때 θ1의 값이 변할 때마다 변하는 비용 함수 J(θ1)의 기하학적 모형은 다음과 같습니다.



      

   가설 함수 'h(x) = θ0 + θ1*x' 일 때 θ0와 θ1의 값이 변할 때마다 변하는 비용 함수 J(θ0,θ1)의 기하학적 모형은 밥그릇 모양입니다.  


 


   가설 함수 'h(x) = θ0 + θ1*x' 일 때 θ0와 θ1의 값이 변할 때마다 변하는 비용 함수 J(θ0,θ1)를 블록 모양으로 표현하기보다는 J(θ0,θ1)이 같은 값을 가지는 선으로 이어진 등고선 모양으로 표현합니다. 같은 색깔의 선상에 있는 점들은 J(θ0,θ1)의 값이 같고, 타원의 중심으로 갈수록 훈련 데이터에 근사한 최적 값 또는 최소값을 얻습니다. 


경사 하강 알고리즘 

   가설 함수 'h(x) = θ0 + θ1*x' 일 때 θ0와 θ1의 값이 변할 때마다 변하는 비용 함수 J(θ0,θ1)가 있습니다. 경사 하강 알고리즘은 비용 함수 J(θ0,θ1)에서 최소값 또는 최적값을 찾습니다. 임의의 점에서 한 스템씩 움직일 때마다 주위의 최소값을 찾아서 다음 스텝을 이동하는 과정을 반복합니다. 

   경사 하강 알고리즘의 수학적 정의는 다음과 같습니다.



      α (학습 비율) : 최소값을 찾아갈 때 스텝의 크기를 설정 (언덕을 내려갈 때 보폭을 결정) 

      := (지정 연산자) : 지정 연산자 뒤의 값을 앞에 대입 ('a := b'라면 b의 값을 a에 대입)

      ∂(라운드) : 접선의 기울기를 구하기 위한 편미분항을 표시


   경사 하강 알고리즘은 매 스텝마다 θ0과 θ1을 계산한 후에 동시에 값을 업데이트해야 합니다. 


     미분항의 값은 접선의 기울기입니다. 미분항이 양수이면  'θ1 := θ1- α *양수' 이므로 θ1의 값을 업데이트한다는 의미는 최소값이 있는 오른쪽으로 한 스텝 이동한다는 것입니다. 반대로  'θ1 := θ1- α *음수' 이므로 θ1의 값를 업데이트한다는 의미는 최소값이 있는 왼쪽으로 한 스텝 이동한다는 것입니다.


   학습 비율 α 값은 경사 하강 알고리즘이 최소값을 찾기 위해 이동할 때 한 스텝의 간격을 나타냅니다. 학습 비율이 작으면 스텝의 간격이 작아서 최소값에 도달하기 위해 많은 연산과 시간이 필요합니다. 반대로 학습 비율이 너무 크면 경사 하강 알고리즘이 최소값을 지나칠 수 있고 방향을 바꾸는 것에 실패할 수도 있습니다. 또한, 학습 비율 α 값이 일정해도 경사가 급할 때는 큰 값이 변하고 경사가 완만할 때는 값의 변화가 작기 때문에 최소값 또는 최적값을 구하는 것에 문제가 없습니다 


   가설 함수 'h(x) = θ0 + θ1*x' 일 때 θ0와 θ1의 값이 변할 때마다 변하는 비용 함수 J(θ0,θ1)가 있습니다. 비용 함수와 경사 하강 알고리즘을 합쳐서 하나의 수학적 정의로 표현할 수 있습니다. 


   가설 함수 'h(x) = θ1*x' 일 때 θ1의 값이 변할 때마다 변하는 비용 함수 J(θ1)가 있습니다. 비용 함수와 경사 하강 알고리즘을 합쳐서 하나의 수학적 정의로 표현할 수 있습니다. 


   배치 경사 하강 알고리즘은 매 스텝마다 모든 훈련용 데이터 셋에 대하여 계산합니다. 일반적으로 경사 하강 알고리즘은 로컬 최소값 또는 로컬 최적 값을 계산하지만, 배치 경사 하강 알고리즘은 전역 최소값 또는 전역 최적 값을 계산합니다. 선형 회귀 모델은 항상 단 하나의 최저값만 있습니다.

매거진의 이전글 앤드류 응의 머신러닝 (2-7):선형회귀의 경사 하강법
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari