본문 바로가기
TIL(Daily)/머신러닝

Tue/11/Oct/22 러신머닝-2

by Hawie 2022. 10. 11.

오늘도 러신머닝에 대해 공부해보았다.

솔직히 아직 무슨 소리인지 잘 모르겠다.

처음 알고리즘 배웠을 때랑 같은 느낌이다...

그래도 부분적으로 이해되는 부분은 있다.

 

오늘 배운 내용을 리뷰 해보겠다.

 

경사 하강법 (Gradient descent method)

 

경사 하강법이란?

우리는 위에서 정의한 손실 함수를 대충 상상해 볼겁니다. 손실 함수가 아래와 같은 모양을 가지고 있다고 가정해보죠.

 

우리의 목표는 손실 함수를 최소화(Optimize)하는 것이다. 손실 함수를 최소화하는 방법은 이 그래프를 따라 점점 아래로 내려가야한다.

컴퓨터는 사람처럼 수식을 풀 수 없기때문에 경사 하강법이라는 방법을 써서 점진적으로 문제를 풀어간다. 처음에 랜덤으로 한 점으로부터 시작한다. 좌우로 조금씩 그리고 한번씩 움직이면서 이전 값보다 작아지는지를 관찰한다. 한칸씩 전진하는 단위를 Learning rate라고 부른다. 그리고 그래프의 최소점에 도달하게 되면 학습을 종료하면 된다

 

Learning rate

우리가 만든 머신러닝 모델이 학습을 잘하기 위해서는 적당한 Learning rate를 찾는 노가다가 필수적이다!

 

출처: https://towardsdatascience.com/using-machine-learning-to-predict-fitbit-sleep-scores-496a7d9ec48

 

Using Machine Learning to Predict Fitbit Sleep Scores

Random Forest, Extreme Gradient Boosting and how they perform when predicting Fitbit’s Sleep Score

towardsdatascience.com

.

 

위의 그래프에서 만약 Learning rate가 작다면 어떻게 될까? 초기 위치로부터 최소점을 찾는데까지 많은 시간이 걸릴 것이다. 그리고 이 것은 학습하는데, 즉 최소값에 수렴하기까지 많은 시간이 걸린다는 것을 뜻한다.

반대로 만약 Learning rate가 지나치게 크다면? 우리가 찾으려는 최소값을 지나치고 검은 점은 계속 진동하다가 최악의 경우에는 발산하게 될 수도 있다. 이런 상황을 Overshooting이라고 부른다.

 

출처: https://medium.com/hackernoon/life-is-gradient-descent-880c60ac1be8

 

Life is gradient descent

How machine learning and optimization theory can change your perspective

medium.com

 

실제로 손실 함수를 그릴 수 있을까?

 

 

간단한 선형 회귀 문제의 경우는 그래프를 그릴 수는 있지만 복잡한 가설을 세울 경우에는 사람이 그릴 수도 없고 상상할 수 없는 형태가

된다. 예를 들어 간단하게 아래와 같은 그래프를 상상할 수 있다

 

출처: https://regenerativetoday.com/logistic-regression-with-python-and-scikit-learn/

 

Logistic Regression With Python and Scikit-Learn – Regenerative

It creates another problem. Because sigmoid function is not linear, so the cost function representation will be non-convex like this picture. It will not just come to a global convergence, instead we will get several local minima like this. 

regenerativetoday.com

.

 

우리의 목표는 이 손실 함수의 최소점인 Global cost minimum을 찾는 것이다. 그런데 우리가 한 칸씩 움직이는 스텝(Learning rate)를 잘못 설정할 경우 Local cost minimum에 빠질 가능성이 높다. Cost가 높다는 얘기는 우리가 만든 모델의 정확도가 낮다는 말과 같다.

따라서 우리는 최대한 Global minimum을 찾기 위해 좋은 가설과 좋은 손실 함수를 만들어서 기계가 잘 학습할 수 있도록 만들어야하고

그것이 바로 머신러닝 엔지니어의 핵심 역할이다!

 

.데이터셋 분할

 

  • 학습/검증/테스트 데이터</aside>출처: https://3months.tistory.com/118
    1. Training set (학습 데이터셋, 트레이닝셋) = 교과서
    2. 머신러닝 모델을 학습시키는 용도로 사용합니다. 전체 데이터셋의 약 80% 정도를 차지한다.
    3. Validation set (검증 데이터셋, 밸리데이션셋) = 모의고사손실 함수, Optimizer 등을 바꾸면서 모델을 검증하는 용도로 사용한다. 
    4. 전체 데이터셋의 약 20% 정도를 차지한다.
    5. 머신러닝 모델의 성능을 검증하고 튜닝하는 지표의 용도로 사용합니다. 이 데이터는 정답 라벨이 있고, 학습 단계에서 사용하기는 하지만, 모델에게 데이터를 직접 보여주지는 않으므로 모델의 성능에 영향을 미치지는 않는다.
    6. Test set (평가 데이터셋, 테스트셋) = 수능
    7. 정답 라벨이 없는 실제 환경에서의 평가 데이터셋이다. 검증 데이터셋으로 평가된 모델이 아무리 정확도가 높더라도 사용자가 사용하는 제품에서 제대로 동작하지 않는다면 소용이 없다는 뜻이다?

 

 

위와 같은 것을 배웠지만 초심자가 바로 이해 할 수 있는 내용은 아닌거같다.

 

그래서 오늘은 머신러닝은 가볍게 공부하고,

장고 에서 아직 못한 부분을 중점 적으로 공부 하고 

깃 사용법 에 대해 다시 한번 복습 하면서 시간을 사용 하였다.

댓글