비숍 PRML 정리 Chapter 1.01 Introduction

August 08, 2019

Basic Terminology

hand written digit code example. 손글씨로 쓴 숫자를 정확하게 인식하는 테스크를 룰베이스로 풀려는 것보다 모델이 스스로 패턴을 찾게하여 머신러닝으로 푸는 것이 나음.

각각의 인풋 x에는 타겟벡터 t는 하나씩만 있다.(손글씨 사진 하나는 하나의 숫자 레이블만을 가짐)

머신러닝 알고리즘은 함수 y(x)로 나타낼 수 있다. 인풋 x가 들어오면 y벡터를 생성하는 함수로, y벡터는 타겟벡터와 같은 방식으로 인코딩된다. 이 함수의 구체적인 형태는 트레이닝 과정에서 결정된다.


Polynomial Curve Fitting

실수인 input variable x를 통해 실수인 target variable t를 예측하고자 한다.

Figure 1.2 예제 데이터 그래프 그리기

앞으로 책에서 여러번 예시에 사용할 인위적인 데이터셋을 만든다. 교재에서는 데이터포인트를 10개만 사용했지만 15개를 사용해 그려보았다.

input values {x} = uniformly generated numbers in range (0,1)

인풋 데이터 값 x로 0과 1 범위 사이의 임의의 실수를 15개 만든다.

corresponding target values {t} = corresponding values of sin(2pix) with random noise with Gaussian distribution having 0.3 std variation

타겟 값 t는 기본적으로 $2\pi x$로 설정한다. 그러나 약간의 가우시안 분포(표준편차 0.3)에 따른 랜덤 노이즈를 더해줄 것이다.

교재에 나오는 그래프를 파이썬을 이용해 직접 그려보자.

import random
import numpy as np
import matplotlib.pyplot as plt

## Generate data x and t
x = [random.random() for x in range(0,15)]
t = [math.sin(item*2*np.pi) for item in x]

## Generate and add noise to the data
noise = np.random.normal(0,0.3,15)
type(noise)
t = t+noise

## Plot a sine graph and datapoints scatter
x_sin=np.arange(0,1,0.01)
y_sin=np.sin(x_sin*2*np.pi)
plt.scatter(x,t, color='b')
plt.plot(x_sin,y_sin,color='black')
plt.plot()

위 코드를 통해 다음과 같은 그래프를 그릴 수 있다.

prml_101_1

많은 현실데이터가 우리가 알고자 하는 underlying regularity를 가지지만 개별 관측 데이터는 랜덤 노이즈로 오염된 이런 형태를 띈다.

이런 노이즈는 랜덤 프로세스와 같은 stochastic한 특성으로부터 기인할 수도 있고 대부분은 관측되지 않은 값이나 다양한 소스에 의해 생긴다.

우리의 목표는 이 트레이닝셋을 최대한 활용하여