[K-MOOC] 실습으로 배우는 머신러닝 (4)

BBakHye·2022년 11월 22일
0

🦁 AI SCHOOL 7기

목록 보기
32/52
post-thumbnail

K-MOOC - 실습으로 배우는 머신러닝

4. Model Learning with Optimisation

📌 4-2. 경사하강법 개요

✅ Gradient Descent (경사하강법)

: 알고리즘 학습 시 사용되는 최적화 방법 중 하나. 알고리즘 학습 시 목표는 예측값과 정답값 간의 차이인 손실 함수의 크기를 최소화시키는 파라미터를 찾는 것.

Gradient Descent는 수치적 최적화 기법으로 Analytical하게 최적화할 수 없는 목적식도 최적화할 수 있게 도와주는 방법론이기 때문에 Gradient Descent는 지역적 최소해가 여럿 존재하는 복잡한 함수 최적화에 활용할 수 있다.

위와 같이 극소점이 여러개가 있으면 미분 했을 때 기울기가 0인 지점도 여러개가 될 수 있다.
그 여러 지점 중에서 가장 좋은 값을 Global Optimum (최적해)라고 한다.
하지만 Global optimum을 구할 수 있다는 게런티는 할 수 없다.

📌 4-3. 경사하강법 심화

tlearning rate 또는 step size라고 불리며 사람이 지정할 수 있는 hyperparameter이다.

위 사진에서도 볼 수 있듯 t가 커질 수록 그래프가 넓게 그려져서 t=10인 경우, Wcurrent에서 극소값까지의 거리가 멀어진다. (= 가중치를 부여하는 것)

🤔 learning rate가 너무 작으면 어떻게 될까?

잔발로 극소값을 찾아 내려다가 보니 모델의 학습 속도가 느려진다.

🤔 learning rate가 너무 크면 어떡할까?

극소값으로 너무 발걸음을 크게 내딛다 보니 발산해버리게 된다.

💡 Adam(adaptive moment estimation): learning rate를 알맞게 업데이트 해주는 알고리즘.

✅ Stochastic Gradient Descent

: 머신러닝 모형 Loss 함수 최적화 과정에서 일부 배치만 이용해 해를 업데이트하는 방법

👀

데이터가 너무 크면 계산 과정에 메모리가 너무 많아진다. 그래서 데이터 중 일부를 추출해서 batch마다 gradient descent를 적용한다. 그러면 batch의 수만큼 gradient descent를 구하는 셈이다.
❗️ 전체 데이터에 대한 gradient를 구한게 아니라 일부에 대한 값이기 때문에 정확한 gradient는 아니다.

Deep learning 에서는 Stochastic Gradient Descent를 많이 사용한다.

All은 정확하게 gradient를 찾아가는 반면 SGD는 방향이 어긋하기 시작하나 결국엔 best gradient를 찾아간다.

  • 하나의 관측치만 이용한 SGD는 하나의 grdient만 업데이트하기 때문에 computational cost가 낮지만 오히려 최적의 해를 구하기까지 시간이 오래 소요될 수 있다.
    - Partial SGD를 추천

✅ Momentum

: Gradient Descent를 적용할 때 지역적인 최소해에서 벗어날 수 있게 도와주는 추가 요소

SGD의 경우 local minimum에 빠져서 더 이상 학습을 진행할 수 없는 문제가 있다. 모멘텀을 사용한다면 속도의 개념때문에 깊이가 낮은 local minimum를 위 그림처럼 뛰어넘어 global minimum를 찾는 것을 계속 진행 할 수 있다.

모멘텀은 과거에 업데이트되어 왔던 방향을 계속 기억했다가 현재에 방향에 반영한다.

참고

모멘텀을 설명하는 쉬운 방법은 물리학적 비유를 통한 것입니다. 작은 언덕은 볼이 멈추지 않는 평평한 표면에 도달 할 때까지 롤링을 계속하지 않을 것입니다. 작은 언덕은 local minimum이고, 큰 계곡은 global minimum입니다.
운동량이 없으면 공은 원하는 최종 목적지에 도달하지 못합니다. 속도가 전혀 떨어지지 않고 작은 언덕에서 멈추었을 것입니다. 지금까지 모멘텀을 고려하지 않았습니다. 즉, 작은 언덕에 빠질 가능성이있는 알고리즘을 만들었습니다.
그래서 알고리즘에 운동량을 추가하는 방법에 대해 알아보아야 합니다. 규칙은 운동량을 포함한 w에 손실의 기울기를 활용합니다. 위 식을 참조해주세요. 지금까지 내려간 속도를 고려할 것입니다. 공이 빨리 굴러가는 경우 운동량은 높고 그렇지 않으면 운동량이 낮습니다. 볼이 얼마나 빨리 움직이는 지 알아내는 가장 좋은 방법은 전에 공이 얼마나 빨리 굴렀는지를 확인하는 것입니다. 이는 머신 러닝에 채택 된 방법이기도합니다.

profile
데이터 분석가가 되기 위한 기록 ✏️

0개의 댓글

관련 채용 정보