데이터사이언스/머신러닝

머신러닝 공부 6 - 경사하강법 트릭

_금융덕후_ 2019. 6. 29. 00:14
728x90
반응형

머신러닝

본 포스팅은 Andrew Ng교수의 Machine Learning 코세라 강좌를 정리한 내용입니다.

https://www.coursera.org/learn/machine-learning

 

경사하강법이 좋은 성능을 내기 위해서 취하는 몇가지 트릭이 있다.

 

특성 스케일링

특성 스케일링이란, 여러 특성이 있는 문제에서, 여러 특성들이 비슷한 스케일에 있게 만들어 주는 기술이다. 여러 특성을 비슷한 스케일로 맞춰준다면, 경사하강법이 빠르게 끝날 있다.

예제) 특성 $x_{1}$ $x_{2}$ 있다.

$x_{1}$ = 집의 크기 (0 - 2000 feet^2)

$x_{2}$ = 방의 (1 - 5)

 

이전 강의에서 위와 같은 그래프를 기억할것이다.

만약 특성1 특성2 스케일이 차이가 많이 난다면, 원의 넓이는 좁아지고, 그만큰 경사하강법이 왔다갔다 하는 횟수가 많아져 global minimum까지 도달하는 시간이 늦어지게 된다. 반대로 특성의 스케일이 차이가 많이 없다면, 원으 넓이가 넓어지고, 경사하강법이 빠르게 수렴하게 된다.

 

만약 특성의 스케일 차이가 많이 나는 상황이라면 다음과 같은 방법을 고려할 있다:

$$x_{1} = \frac{집의 크기}{2000}$$

$$x_{2} = \frac{방의 수}{5}$$

위와 같이 max값으로 나눠준다면, 스케일이 비슷해지고 원의 넓이는 비슷해지게 된다.

따라서 경사하강법은 빠르게 수렴하게 된다.

 

간결하게 표현한다면, 특성 스케일링은 모든 특성을 대략 -1에서 1사이의 값으로 표준화 한다는 이야기이다. (-1 1값을 포함한다, 경우에 따라 레인지가 조금 넓어도 상관 없다.)

 

평균 정규화

위의 특성 스케일링 수식의 x $x - \mu$ 바꿔준다.

위의 예제를 다시 표현해보면:

$$x_{1} = \frac{집의 크기 - 1000}{2000}$$

$$x_{2} = \frac{방의 수}{5}$$

그리고, 정규화된 레인지는 -0.5에서 0.5값이 된다.

 

이를 수식으로 표현한다면 다음과 같이 된다.

$$x_{1} = \frac{x_{1} - \mu}{x_{max}}$$

 

대개의 경우, 표준적인 방법은 $x_{max}$대신 표준편차를 이용하는 것이다.

$$x_{1} = \frac{x_{1} - \mu}{S_{1}}$$

 

경사하강법 모니터링

경사하강법이 정확히 동작하는지 알아내는 방법은, 비용함수의 그래프를 그려보는 것이다. X축을 경사하강법을 적용한 횟수로,  y축을  θ 값으로 그래프를 그려보면,  θ 현재 시점에 어디까지 도달했는지를 있다.

 

 

만약 한번의 경사하강법 적용시점에  θ값이 충분히 감소하지 않는다면,  θ값은 충분히 감소하였고, 경사하강법을 멈춰야할 시점이 온것이다. (혹은 이상 감소하는것이 별로 의미가 없어지는 시점이 오는것이다.) 대개의 경우, 값을 한번의 반복에 10 -3승으로 정한다.

 

학습률

만약 경사하강법이 동작하지 않는다면, 학습률  α 조정해 있다. 작은  α값을 적용하면, 작은 스텝으로 경사하강을 진행한다는 의미로, minimum 정확하게 도달할 있다. 하지만  α값을 너무 작게 설정한다면, minimum 너무 늦게 도달할 있으니 적정값을 찾아 설정하는것이 좋다. 보통은  α값은 0.1, 0.01, 0.001 시작해 조금씩 조정한다. (많은 연습을 감을 얻는것이 중요하다.)

728x90
반응형