02 Linear Model


1. review Machine Learning

저번 강의 overview에서 간단하게 배웠던 개념을 복습하고 시작한다.
AI라는 큰 범주 안에서 다양한 알고리즘이 존재하고, 그 안에 Machine Learning이 존재한다.

Machine Learning 안에서도 다양한 알고리즘들이 있는데,
그 중에서도 Deep learningRepresentation Learning을 기반으로 인공신경망을 깊게 쌓아놓은 구조라 하여 Deep Learning이라고 불린다.


비AI라고도 말할 수 있는 rule based system과 전통적인 ML, Deep learning (Representation Learning)을 비교하며 ML, DL의 정의에 대해서 알아보자.

  • rule based system을 생각해보면, input이 있고 ouput이 있을 때, input을 output으로 바꾸어 주는 system 자체를 모두 사람이 일일이 정의하고, 설계해야 한다.
  • 그와 비교하여 전통적인 ML은 system 자체를 사람이 전부 설계할 필요가 없다. input에서 좋은 feature를 추출하여 ML에게 가져다 주면 학습하고, 스스로 시스템을 만든다.
  • Deep learning (+ Representation Learning) 은 뭐가 다를까? 기존 전통적 ML이 good feature을 사람이 직접 추출하는 부분이 한계점이라 한다면 해당 알고리즘은 그 한계를 벗어났다. 그저 input을 가져다 주면, 시스템이 자동적으로 good feature을 추출하고, 합리적인 ouput을 뽑아낸다.

정리해보자.
AI안에 Machine Learning이 있고, Machine Learning안에 Representation Learning, Deep learning이 있다.

Machine Learning은 사람이 명시적으로 시스템을 전부 정의하지 않아도 데이터를 기반으로 스스로 학습하고, INPUT에 대해 OUTPUT을 뽑아내는 알고리즘을 말한다.

"A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E."

Representation Learning은 인간이 좋은 feature를 일일이 추출하지 않아도, 스스로 모델이 feature을 추출하는 것을 말한다.

Deep learning은 인공 신경망을 깊게 쌓아 놓은 구조로 모델이 학습하는 경우를 말한다.

헷갈림 주의 : Representation Learning과 Supervised Learning(지도학습)을 지금까지 헷갈려 하고 있었다;;
Representation Learning은 모델이 사람의 개입 없이 의미 있는 feature를 자동으로 추출하는 학습 방법이며, 이는 지도학습 또는 비지도학습 방식으로 구현된다.


2. Linear Model

Supervised Learning(지도학습)으로 모델에게 시험 점수를 output을 뽑는 경우를 가정하자.
주어지는 dataset은 공부 시간 : 시험 점수 이다.

공부 시간 input (X) 시험 점수 (Y)
2 20
4 40
6 60
8 80

이런 경우 모델을 어떻게 정의해야 할까?
생각해보면 제일 간단한 일차함수를 생각해 볼 수 있다.

$$
\hat{y} = W \cdot x + b
$$

우리의 목표, 가지고 있는 dataset을 가지고, 해당 일차함수(시스템)이 임의의 input에 대해 reasonable한 output을 뽑도록 하는 것

해당 부분을 위해 loss 그리고 MSE를 정의한다

  • loss 또는 error 는 예측값과 실제 값의 거리 즉, 차의 제곱의 형태

$$
\text{loss} = (\hat{y} - y)^2 = (x \cdot w - y)^2
$$

(해당 수식에서 biased b는 실습과정 편의를 위해 생략)

해당 식 loss 또는 error >>> 한 data point에서 의미.

  • MSE (mean square error) 은 한 개 가중치 W에 대해 dataset의 모든 datapoint의 loss 의 평균

$$
\text{MSE} = \frac{1}{N} \sum_{i=1}^{N} (x_i \cdot W - y_i)^2
$$


해당 개념들을 가지고 Supervised Learning(지도학습) 하는 절차

  1. 처음에는 임의의 W로 시작 (random한 값) → 해당 W의 MSE를 계산
  2. 해당 W를 움직여 가면서 각 W에 대해서 MSE를 계산
  3. 결과적으로 dataset에 대해 MSE가 제일 적은 W를 선택

실습 코드

import numpy as np
import matplotlib.pyplot as plt


w = 0 #random value로 스타트
x_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]
#train data set

# 1. 
def forward(x) :
    return w*x

# 2. 
def loss(x, y) : 
    y_ = forward(x)
    return (y-y_)*(y-y_)

# 3. 
for w in np.arange(0.0 , 4.1 , 0.1) :
    print("w = ", w)
    l_mean = 0
    for i,x_ in enumerate(x_data):
        l_ = loss(x_,y_data[i])
        l_mean += l_
    l_mean = l_mean / len(x_data)
    print("MSE = ", l_mean)

# 4. 
l_list = []
w_list = []

for w in np.arange(0.0 , 4.1 , 0.1) :
    print("w = ", w)
    l_mean = 0
    for i,x_ in enumerate(x_data):
        l_ = loss(x_,y_data[i])
        l_mean += l_
    l_mean = l_mean/ len(x_data)
    print("NSE = ", l_mean)
    w_list.append(w)
    l_list.append(l_mean)


plt.plot(w_list, l_list)
plt.ylabel('loss')
plt.xlabel('W')
plt.show()

+ Recent posts