Machine Learning(ML) - 손실 줄이기

본 게시물은 구글 머신러닝 단기집중과정 스터디을 참고하여 작성되었습니다.

손실 줄이기(Reducing Loss)

앞에서 배운 모델의 방정식이 있다.

모델의 방정식

하지만 단순히 직선으로 이뤄져있기 때문에 위의 방정식으로는 각 데이터마다 차이가 크다.
예를 들어, 귀뚜라미가 150번 울때의 온도는 방정식과 거의 동일하지만 130번 울때의 온도는 약 5도로 차이가 크다.

따라서 머신러닝은, 모델의 방정식을 최대한 입력된 데이터(학습데이터)와 가깝게(손실율이 적게) 만드는 것이 목표이다.

반복학습(Iterative learning)

  • 핫 앤 콜드(Hot & Cold)
    • 술래가 눈을 감은 상태에서 임의로 정한 물건과 술래가 가까우면 핫(Hot), 멀어지면 콜드(Cold)를 외치는 게임
    • 머신러닝도 동일하게 w₁의 값을 계속 바꿔가며(Hot & Cold) 가장 손실율이 적은 모델(임의로 정한 물건)을 찾는 것이다.
      Figure 1 : 반복 방식의 모델 학습

머신러닝 알고리즘

머신러닝 알고리즘으로 모델을 학습하는데 사용하는 반복적인 시행착오 과정
하나 이상의 특성을 입력하여 하나의 예측을 출력함

  • 모델(예측 함수)
    하나의 특성으로 하나의 예측을 반환하는 모델

    1
    y' = b + w₁x₁
    • x₁ = 10, b = 0, w₁ = 0 이면 y’ = 0 + 0(10) = 0
    • x₁이 10일때 올바른 라벨(출력값=y)이 10이라면? -> 손실 발생!
      • 그럼 손실 계산은 어떻게 할까?
  • 손실 계산(Compute Loss)

    • Figure 1에서 손실 계산에서 사용되는게 손실 함수
    • 손실 함수는 두개의 입력 값을 가짐
      • y’: 특성 x에 대한 모델의 예측값(학습을 통해서 만든 모델의 결과 값)
      • y : 특성 x에 대한 올바른 라벨(실제 데이터 값)
  • 매개변수 업데이트 계산(compute parameter updates)

    • 모델, 손실 계산을 통해서 매개변수인 b와 w₁의 값을 변경
  • 다시 처음부터 반복

    • 가장 손실 값이 낮은 모델의 매개변수를 찾을때까지 반복함
    • 전체 손실이 변하지 않거나 매우 느리게 변한다면? 모델이 수렴(converged)했다고 한다

매개변수 업데이트 계산?

손실 계산은 y, y’ 두개의 입력값으로 손실 함수를 만들어서 계산한다고 하는데
매개변수 업데이트 계산은 뭘로 한다는 걸까?
w₁와 b 값을 업데이트 한다는건데 뭘까?

  • 대충 이런 것이다.(일단 w₁만으로 설명)
    • w₁값을 업데이트한다.(매개변수 업데이트)
    • w₁을 업데이트할때마다 손실 계산을 함
    • 그럼 아래와 같은 형식의 그래프가 나옴
      Figure 2 : 볼록 함수 모양의 그래프
    • 그렇다면 최소값인 지점은? 기울기가 정확하게 0인 지점(손실 함수가 수렴하는 지점)
    • 문제는 모든 w₁ 값의 손실 계산을 하는건 비효율적인 방법
      • 만약 w₁가 실수 전체 범위라면 0~1 사이에 값만 넣어도 무한대의 시도가 필요함

경사하강법(Gradient Descent)

  • 모든 w₁ 값을 계산하는 것은 비효율적이므로 임의의 값을 시작으로 일정 간격으로 손실 그래프의 기울기를 계산!(=편미분)
    • 미분(Derivatives)
      • 해당하는 점의 기울기를 구한 값
      • ex) x=2일때 기울기
    • 편미분(Partial derivatives)
      Figure 3 : 편미분
      • 특정 구간의 기울기를 구한 값
      • ex) x=2~4 구간의 기울기
  • 모든 값을 계산할 필요없이 적절한 간격을 설정하여 구하면 됨
  • 여기서 말하는 간격이 학습률을 뜻함!
  • 경사하강법에서는 음의 기울기를 사용(↘방향)
    • 즉, 가중치가 증가할때 손실은 줄어들어야함
    • 따라서 기울기도 벡터(방향과 크기를 가짐)
  • 다음 지점을 결정하는법 = 기울기 X 학습률 or 보폭(스칼라)

학습률(Learning Rate)

  • 초매개변수(Hyperparameters) : 프로그래머가 머신러닝 알고리즘에서 조정하는 값
  • 학습률이 너무 작으면 학습 시간이 오래 걸림
    Figure 4 : 학습률이 너무 작아 오래 걸림
  • 반대로 너무 크면 곡선의 최저점을 이탈함
    Figure 5 : 학습률이 너무 커 최저점을 이탈
  • 골디락스 학습률
    • 효율적으로 결과를 얻을 수 있는 학습률
    • 실버 불릿같은 존재(알면 한번에 그렇게 했겠지…)

확률적 경사하강법(Stochastic Gradient Descent)

  • 데이터 세트가 엄청나게 많거나 특성이 많은 경우, 전체 데이터를 경사하강법을 통해서 학습하면 오래걸림
  • 따라서 무작위로 일부 데이터를 뽑아서 학습시킴
  • 데이터는 적어지기 때문에 노이즈(오차)가 발생할 수 있음

Machine Learning(ML) - ML로 전환하기

본 게시물은 구글 머신러닝 단기집중과정 스터디을 참고하여 작성되었습니다.

ML로 전환하기

  • ML로 전환하기?
    • 주어진 데이터를 통해서 선형 모델을 만들라는 것(=선형회귀!)
    • 어떤 문제를 회귀화 기본적인 Flow(흐름)을 파악하자 - Step by Step!

선형 회귀

  • 제일 먼저, 데이터를 그래프로 만들어 검토해야한다
  • 왜냐? 데이터가 잘못되면 우리가 원하는 모델을 얻을 수 없기 때문!
  • 예시) 온도별 1분당 귀뚜라미가 우는 횟수
    • 나는 귀뚜라미가 몇번 우는지를 통해서 온도를 알고 싶다!
    • 데이터를 먼저 좌표로 나타낸다
      Figure 1 : 귀뚜라미가 온도에 따라 1분당 우는 횟수
      데이터간의 관계를 보면 온도와 1분당 우는 횟수는 서로 비례하는 관계를 가짐
      따라서, 이 관계를 근사치로 표현할 수 있는 단 하나의 직선을 만들어 낼 수 있음
    • 두번째 데이터간의 관계를 근사치로 표현한 직선
      Figure 2 : 근사치 그래프(선형 관계)
      근사치로 표현한 직선이 모든 점(데이터)를 통과하지 않지만 대략적인 관계를 보여줌
      이 그래프(관계)는 어떤 공식(모델의 방정식)으로 나타낼 수 있다
    • 직선의 방정식
      Figure 3 : 직선의 방정식
      위에서 만든 직선을 수학적으로 공식화한 것
      • y : 온도, 예측하려는 값(우리가 알고 싶은 값)
      • m : 선의 기울기
      • x : 1분당 우는 횟수, 입력 특성 값(귀뚜라미가 1분에 100번 울었을때 온도를 알고 싶다면? x=100을 입력)
      • b : y절편(직선이 y축과 만나는 점)
    • 모델의 방정식
      Figure 4 : 모델의 방정식
      위에서 구한 직선의 방정식을 머신러닝의 관습에 맞게 작성한 방정식
      • y’ : 예측된 라벨(얻고자 하는 출력)
      • w₁ : 특성1의 가중치. 가중치는 기울기와 같은 개념
      • x₁ : 특성1(알려진 입력)
      • b : 편향(y절편). w_0\이라고도 표현함
    • 정교한 모델(여러 특성에 의존하는 모델)
      Figure 5 : 3가지 특성에 의존하는 모델의 방정식
      만약에 귀뚜라미가 우는 시간/횟수, 나이 3가지 특성에 영향을 받는 경우에는 위와 같은 방정식이 나옴