학습률(Learning Rate)

앞의 경사하강법에서 시작점에서 다음점으로 이동할 때 보폭(학습률) 만큼 이동한 점을 다음점으로 정한다고 하였습니다. 학습률인란, 현재점에서 다음점으로 얼만큼 이동할지, 다르게 말하면 모델이 얼마나 세세하게 학습을 할지를 말합니다.


학습률이 작다면 손실이 최적인 가중치를 찾는데 오랜 시간이 걸릴 것이며, 학습률이 너무 크다면 최적점을 무질서하게 이탈할 수도 있습니다.

초매개변수(Hyperparameter)

학습률과 같이 우리가 직접 조정하는 값을 초매개변수라 합니다. 우리는 직접 학습률을 여러 개 대입하여 가장 효율적이게 학습을 하는 학습률을 찾아야 합니다.

경사하강법(Gradient Descent)

앞의 포스트에서 매개변수를 업데이트를 하는 과정에서 손실을 줄이기 위해 가중치와 편향 값을 수정한다고 하였습니다. 하지만 그냥 아무 값이나 넣는다면 최적화된 값을 찾는데 매우 오랜 시간이 걸릴 것입니다.

경사하강법이란, 손실이 최소가 되는 최적의 가중치를 찾는 방법입니다. 먼저 함수의 기울기(경사)를 구하여 기울기가 낮은 쪽으로 계속 이동시켜서 극값에 이를 때 까지 반봅하는 작업을 반복하면 최적의 가중치를 을 수 있습니다.


경사하강법: 함수의 기울기(경사)를 구하여 기울기의 절댓값이 낮은 쪽으로 이동시켜 극값(최적값)을 찾는 방법


여기서 쓰이는 함수란, 손실이 최소가 되는 최적의 가중치를 구하기 위한 모든 w값의 손실을 나타내는 함수입니다. 이를 그래프로 그리면 아래의 그림과 같은 모양이 그려집니다.

가중치의 크기에 따른 손실 그래프를 그려보면 위의 그림과 같이 아래로 볼록한 모양이 됩니다. 왜 아래로 볼록한 모양이 나오는 것일까요?

손실이 최소가 되는 가중치의 최적점(점 A)이 있다고 가정하겠습니다.  이 점은 이미 손실이 최소인 점 A는 그보다 더 작은 가중치와 더 큰 가중치에서는 더 높은 손실을 나타낼 것입니다. 그리고 이 최적점에서 멀어질 수록 그 손실은 더 커지게 되어 위와 같은 아래로 볼록한 모양의 손실-가중치 그래프가 그려지게 됩니다.



경사하강법으로 최적의 가중치를 찾는 과정

1. 가중치(w)의 시작점 정하기

시작점을 정하는 것은 별로 중요하지 않습니다. w를 0으로 설정해도 좋고, 임의의 값을 설정해도 괜찮습니다. 이번 예에서는 0보다 조금 더 큰 값으로 시작점을 설정하겠습니다.


2. 시작점의 기울기를 구해 다음 점의 이동 방향 결정

시작점의 기울기를 편미분을 하여 구해줍니다. 그 다음 기울기의 크기의 반대 방향으로 점을 이동시켜줍니다.

우리가 설정한 시작점의 기울기는 음수(-)이니 점을 양수(+) 방향으로 이동시켜줍니다.



3. 기울기의 크기의 일부를 시작점에 더한 만큼 다음 점으로 이동

기울기의 크기의 일부를 시작점에 더해 다음 점으로 이동을 시켜줍니다. 이렇게 더해진 값을 보폭(Step)이라 합니다. 이 보폭을 어떻게 결정하는 지는 다음 포스트(06_학습률)에서 다루도록 하겠습니다.

이번 포스트에서는 머신러닝 모델이 어떤 방식으로 손실을 줄이는지 다뤄보도록 하겠습니다. 머신러닝은 기본적으로 주어진 데이터를 여러번 학습하는 반복 학습 방식을 통해 예측의 정확성을 높입니다.



반복 방식

머신러닝의 기본적인 학습 방법인 반복 방식은 입력된 특징(Feature)들을 임의의 가중치(Weight)와 편향(Bias)로 예측 값을 산출하여 실제 값(Label)과 비교하여 그 차이(Loss)를 0 또는 최소화가 되게 하는 가중치와 편향 값을 찾는 방식 입니다.


위의 그림은 머신러닝에서 반복 방식이 동작하는 과정을 나타낸 그림입니다. 그 과정을 풀이하면 다음과 같습니다.

  1. 임의의 가중치과 편향이 설정된 모델(Model)에 특징(Feature)를 넣습니다.
  2. 모델의 예측 함수(y' = b + wx)를 통해 산출된 예측 값(Prediction)을 실제 결과(Label)과 차이를 계산하여 손실을 알아냅니다.
  3. 가중치(Weight)와 편향(Bias)를 재설정하여 모델을 새롭게 만듭니다.
  4. 손실이 0 또는 최소가 될 때까지 위의 과정을 반복합니다.
이런 반복 과정을 통해 전체 손실이 변하지 않거나 느리게 변하게 되면 이때 모델이 수렴했다고 말합니다.

반복 방식: 초기에 임의로 가중치와 편향을 설정하고 예상 손실 값이 가장 적은 가중치와 편향을 학습할 때까지 매개변수를 조정하는 방식



학습과 손실

  • 학습(Training):
    Label이 있는 데이터로부터 모델을 학습시켜 적절한 가중치(Weight)와 편향(Bias)를 찾는 것
  • 손실(Loss):
    예측한 값과 실제 값간의 차이를 의미하며, 잘못된 예측에 대한 벌점과 같음. 모델의 예측이 실제 데이터보다 차이가 많이 날 수록 손실은 커지게 됨.

모델 학습의 목표: 모든 예(Example)에 대해서 가장 작은 손실(Loss)을 갖는 가중치(Weight)와 편향(Bias)의 집합을 찾는 것


위의 그래프에서 파란선은 예측(Prediction)을, 빨간선은 손실(Loss)를 의미합니다. 빨간색 선의 길이가 비교적 짧은 왼쪽 그래프가 오른쪽 그래프보다 더 좋은 예측을 하는 모델입니다.



제곱 손실(Squared Loss)

손실을 표현하는 함수 중 가장 잘 알려진 제곱 손실 함수는 손실 값을 양수로 표현하기 위해 각 손실에 제곱을 취해 모든 손실을 더한 것을 말합니다.


제곱 손실을 이용할 경우에는 손실의 차이를 양수로 다 더해 손실의 총 크기를 알기 쉽다는 장점이 있지만, 입력된 x의 개수가 다른 두 모델의 대해 손실 정도를 비교하기 어렵다는 단점이 있습니다. 이러한 단점을 보안하기 위해 실제로는 평균 제곱 오차(Mean Square Error)를 주로 사용합니다.



평균 제곱 오차(Mean Square Error)

예시의 수가 다른 두 모델을 비교할 수 없는 제곱 손실의 단점을 보완하는 방법이며, 아래의 식으로 표현할 수 있습니다.

  • (x, y): 모델 학습에 사용되는 예(Example)
    - x: 모델이 예측하는데 사용되는 특징(Feature)
    - y: 라벨(Label)
  • prediction(x): 특징(x)와 가중치의 곱과 편향값의 합으로 된 함수 => y' = b + w*x
  • D: 라벨이 있는 예가 포함된 데이터 세트
  • N: D에 포함된 예의 수


선형회귀(Linear Regression)이란?

선형회귀란, 분포된 데이터를 특정 선으로 회귀시켜 대표하는 하나의 선으로 표현하는 방법을 말합니다. 이때의 선은 분포된 데이터를 잘 표현할 수 있도록 정하는 것이 중요합니다. 


위의 차트에서 빨간 점은 입력된 데이터(Feature)을 나타내며, 파란색 선은 점들의 분포를 대표해서 나타낸 선형회귀된 선 입니다.



선형회귀 표현식

선형회귀는 종속 변수 y와 한 개 이상의 독립 변수 x를 갖습니다. 이를 식으로 표현하면 다음과 같습니다.


  • y': 예측하고자 하는 라벨(Label)을 의미하며, 위의 차트에서 '섭씨 온도'가 y'이 됩니다.
  • b: 초기 값의 편향(Bias)를 의미하며, 위의 차트에서 x=0일 때의 y 값(y 절편)입니다.
  • w1: Feature1의 가중치를 의미하며, 위의 차트에서 파란선의 기울기 입니다.
  • x1: 입력된 특성인 Feture1을 의미하며, 위의 차트에서 x축 입니다.


특성이 여러개인 선형회귀

만약 입력된 특성이 여러 개일 경우, 선형회귀 식은 아래와 같이 표현합니다.



머신러닝(Machine Learning) 이란?

머신러닝 시스템은 입력된 다양한 정보를 조합하여 새로운 정보를 적절히 예측하는 방법을 학습하는 것을 말합니다.



머신러닝에서의 주요 용어

Labels

라벨(Label)은 예측을 하고자 하는 대상 항목을 의미합니다. (단순 선형 회귀에서 y 변수)

담배의 향후 가격, 사진에 표시되는 사물의 종류 등 무엇이든지 Label이 될 수 있습니다.

Features

특징(Feature)은 입력되는 정보를 의미합니다. (단순 선형 회귀에서 x 변수)

과거의 담배 가격, 이메일 안의 텍스트 단어 등 현재 알고 있어 예측에 사용되는 정보는 모두 Feature가 될 수 있습니다.

Examples

예(Example)는 입력된 데이터들(x)의 특정 객체입니다. x는 벡터라는 것을 나타내기 위해 굵게 표시합니다. Example은 두 개의 카테고리로 구분됩니다.

  • Label이 있는 예: Labeled Examples: {features, label}: (x, y)
    Model을 학습시키기 위해 Label이 있는 Examples를 사용합니다.

  • Label이 없는 예: Unlabeled Examples: {features, label}: (x, ?)
    Label이 있는 예를 통해 Label이 없는 예의 라벨을 예측합니다.

위의 표는 집의 평균 가격을 예측하기 위해 방의 개수와 침실의 개수 등의 정보가 주어진 Data Set 입니다. 주어진 Data Set에서는 medianHouseValue가 우리가 예측하고자 하는 Label입니다. 이미 입력 정보로 Label 주어져있는 medianHouseValue 행의 Features를 통해 주어지지 않은 medianHouseValue를 예측합니다.

Model

모델(Model)은 Feature과 Label의 관계를 정의합니다. 예를 들어 위의 Data Set에서 방의 개수(totalRooms)와 집의 평균 가격(medianHouseValue)는 긴밀한 연관이 있다고 생각할 수 있습니다.

Model's Life에서 Training(학습)과 추론(Inference)라는 두 단계를 알아보도록 하겠습니다.

  • Training(학습): 모델을 만들거나 배우는 것을 의미합니다. 즉, Label이 있는 예를 모델에게 보여 주고, 모델이 Feature과 Label의 관계를 점차적으로 학습하도록 합니다.
  • Inference(추론): 학습된 모델을 Label이 없는 예에 적용하는 것을 의미합니다. 즉, 학습된 모델을 통해 적절한 예측(y')를 해냅니다. 예를 들어, 추론하는 동안 라벨이 없는 새로운 예로 medianHouseValue를 예측 할 수 있습니다.

Regression(회귀) vs. Classification(분류)

  • Regression Model(회귀 모델): 연속적인 값을 예측하는데 사용됩니다. 예를 들어 다음과 같은 질문에 대한 답을 얻는데 회귀 모델이 사용될 수 있습니다.
    (=> 수치로 표현할 수 있는 것을 예측)
    - 서울의 아파트 가격이 얼마인가요?
    - 유저가 유투브 광고를 클릭할 확률이 얼마인가요?
  • Classification Model(분류 모델): 불연속적인 값을 예측하는데 사용됩니다. 예를 들어 다음과 같은 질문에 대한 답을 분류 모델은 예측할 수 있습니다.
    (=> 수치로 표현할 수 없는 것을 예측)
    - 주어진 이메일이 스팸 메일입니까?
    - 이 사진이 강아지 사진이 맞습니까?


+ Recent posts