이번엔 Adaline learning (Adaptive Linear Model)에 대해 알아본다. 이것 또한 단일 레이어 신경망의 알고리즘 중 하나로써, 비용함수를 정의하여, 계단함수(Heaviside step function) 이전에 weight를 업데이트 하는 것이 특징이다. 선형활성 함수에서 업데이트를 하게된다.
Gradient descent라는 알고리즘을 이용하여 비용함수를 최소화 하는 weight를 찾는다. 여기에는 비용함수(J; cost function)의 개념이 도입 되는데, 이 함수는 미분이 가능한 2차함수의 모형을 띈다. 이는 편차 제곱의 합(Sum of squared Errors, SSE)인 가중치를 학습 할수 있다. 아래 식이 비용함수 J에 대한 식이다. 식 앞에 1/2값은 이후 Gradient descent를 계산하기 쉽게 하기위해 도입된 값이다. 이 비용함수는 아래 처럼 예측값과 실측값의 차이로 나타낼 수있다.
이 비용함수의 가장 큰 특징은 선형적인 계단함수 와 달리, 곡률이 있기 때문에, 미분이 가능하다. 그러므로 이 비용함수가 최소화가 되는 지점으로 weight를 계속 찾아 나간다. 이 cost function이 작을 수록, (function의 최소부분 = 편미분이 가장 커지는 곳) 학습이 잘 된다고 평가 할 수 있다. 여기서 Φ는 cost function의 자유도가 된다.
아래의 그래프처럼 전역비용 최소값을 찾을때, gradient가 작아지며 점점 잘 학습 되어간다. 이 Gradient descent 를 이용하여 비용함수 j의 그래디언트 ∇j가 계산된 weight로 업데이트 할 수 있다. cost function의 기울기 최소값을 이용하여 update를 하게 된다.
여기서 weight는 아래와 같이 표현되며,
Δw, weight 의 변화량은 학습률(learning rate)가 곱해진 값으로 계산된다.
비용함수의 gradient를 구하려면 , 아래와 같이 비용함수를 weight로 편미분 해야한다.
여기서 모든 weight들은 동시에 업데이트가 된다. (맨 위의 식)
Perceptron과의 차이점은 Φ값이 정수가 아닌 실수 분류 레이블이라는 것이다. 또, 결과 값과 예측값의 차이가 함수 (cost function) 으로 사용 된다는 것이다. 하지만, 이 cost function이 곡률을 가진 함수 이기 때문에, η의 값이 너무 커져버리면 아래의 그래프 처럼 cost function이 되려 증가하게 된다. 그래서 적당한 값의 η값을 찾아야 한다.
아래 그래프의 왼쪽은 Adaline의 η를 크게 잡았을 때, cost function의 최소값을 지나쳐, 모든 Epochs에서 오차가 점점 커지는 것을 볼수 있다. 오른쪽은 적당한 η을 부여했을 때의 그래프이다. (2017.12.4 일 데이터)
Adaptive linear model 의 또 다른 문제점은, sample수가 너무 많아지면, 비효율적으로 작동한다는 것이다. 수백만의 데이터를 처리할 때, cost function의 최소지점을 찾기위해 한 단계씩 학습할때마다 일일히 모든 weight를 업데이트 해야하는 번거로움이 있다. 위에서 사용한 Gradient Descent를 사용하면, 엄청난 시간과 비용이 소모될 것이다. 이를 해결하기 위해, 통계적인 방법을 이용할 수 있다. Stochastic Gradient Descent (SGD; 확률적 그래디언트 디센트 방법, iterative 또는 on-line 방법이라 불린다.) 이라고 불리는 이 방법은, 각 sample을 샘플링 할 때마다 weight를 업데이트 해준다.
이제 Adaline 알고리즘을 코드로 작성해 볼 것 이다.
<참고 표 : SSE 다중함수의 편도함수 계산>
Comments