머신러닝
본 포스팅은 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로 시작해 조금씩 조정한다. (많은 연습을 해 감을 얻는것이 중요하다.)
'데이터사이언스 > 머신러닝' 카테고리의 다른 글
머신러닝 공부 8 - 분류 문제 (0) | 2019.07.01 |
---|---|
머신러닝 공부 7 - 정규방정식 (0) | 2019.06.29 |
머신러닝 공부 5 - 다중 선형 회귀 (0) | 2019.06.27 |
머신러닝 공부 4 - 경사하강법 (0) | 2019.06.26 |
머신러닝 공부 3 - 비용함수 (0) | 2019.06.25 |