Blog | Tag | Local | Guest | Login | Write |  RSS
Machine Learning에 해당되는 글 3건
2008.11.29 :: Perceptron 3
2008.10.31 :: Linear Regression
Perceptron

Perceptron은 1957년 Cornell Aeronautical Laboratory에서 Frank Rosenblatt에 의해서 개발된 Artificial Neural Network의 한 종류이다.

그리고 Perceptron은 가장 간단한 feedforward netral network라고 할 수 있고, 이것을 이용해 linear classifier를 만들 수 있다.

Definition

Perceptron은 matrix eigenvalue를 이용해서 feedforward netral network를 만들고 input value x를 output value f(x)로 mapping시키는 classifier이다. f(x)는 다음과 같이 정의할 수 있다.

f(x) = \begin{cases}1 & \text{if }w \cdot x + b > 0\\0 & \text{else}\end{cases}

w는 실수 값을 갖는 vector이고 wx는 dot product를 이용해 값을 구할 수 있다. 그리고 b값은 bias term으로서 input vector들이 어느 방향으로 값들이 치우져 있는지 알려주는 값이다.

Learning

x(j)는 input vector의 j-th term
w(j)는 weight vector의 j-th term
y는 neuron으로부터의 output
δ는 expected output
α는 learning rate

weight의 update rule
        w(j)' = w(j) + \alpha(\delta-y)x(j)\,

위의 방법으로 wegith vector를 update해서 특정값 이하의 error가 발생하지 않을 때 까지 반복해
linear하네 classify할 수 있는 classifier를 찾는다.


Linear Regression
Logistic Regression은 training set으로부터 주어진 vector data를 이용하여 data들의 방향을 찾고 실제 제공하지 않은 

data들을 예측할 수 있는 algorithm이다. 이 algorithm을 구현하는 방법은 다음과 같은 방법이 있다.

1. LMS(Least Mean Square) algorithm
2. The normal equations

예를들어 주식 시장을 예측할 수 있는 algorithm을 구현하려고 하면, 주식 가격을 결정할 수 있는 factor는 여러가지가

있다. 그 factor중에서 기업 영업 실적(x1), 업종의 경기(x2), 우리나라의 경기(x3) 만을 놓고 주식 시장을 예측한다고 하자.

그럼 이 3개의 요인은 다음과 같은 수식으로 표현할 수 있다.


이 수식에서 training set x1, x2, x3가 주어지고 θ0, θ1, θ2, θ3값을 찾는다면 새로운 data값 x1, x2, x3에 대해 h(x)를 찾을

수 있다. 결국 이 값을 이용해 h(x)를 구할 수 있게 되고, 우리가 값을 예측할 수 있게 되는 것이다. (물론 더 많은 factor들과

다른 다양한 이론들이 필요하겠지만...)

결국 여기에 맞는 θ0, θ1, θ2, θ3를 찾는 것이 regression의 목표이다.

위 수식은 간단히 다음과 같이 표현할 수 있다.

( theta, x는 vector, T 는 transpose )
위 식의 vector θ를 찾기 위한 cost function은 다음과 같이 정의한다.


cost function을 가지고 우리가 원하는 값 θ를 찾기 위해서는 J(θ)값을 minimize시키면 된다.

이 알고리즘을 구현하는 방법 3가지중 LMS algorithm에 대해 소개한다.


LMS(Least Mean Square) algorithm

이 방법은 θ를 초기에 예상하는 값으로 설정한 후 이 값이 cost function의 minize값에 따라서 어떻게 변하는지 구하면 된다.

이 θ값을 update하기 위한 rule은 다음과 같다.

eq=\theta_j := \theta_j - \alpha\frac{\delta}{\delta\theta_j}J(\theta)

eq=\frac{\delta}{\delta\theta_j}J(\theta)  이 값은 위의 cost function을 differentiation한 값이다. 이 값을 이용해서 eq=\theta_j 를 update시켜 값을 구한다.

eq=\frac{\delta}{\delta\theta_j}J(\theta)  이 값은 다음과 같다.

eq=\frac{\delta}{\delta\theta_j}J(\theta) = \frac{\delta}{\delta\theta_j}\frac{1}{2}(h_\theta(x) - y)^2 
= (h_\theta(x) - y)x_j

이 값의 유도는 생략한다. 이 값을 위의 update rule에 적용하면 다음과 같다.

eq=\theta_j := \theta_j + \alpha (y^i - h_\theta(x^i) )x^i_j
이 방법을 LMS update rule이라 한다.

이 update rule을 이용해 eq=\theta 값을 찾을 수 있다.

matlab을 이용해 test해 보았다. random하게 200개의 sample을 만들었다. 우선 원래 선은 y=x이고 x는 0부터 20까지 200개의

random data에 gaussian distribution을 이용하여 noise를 추가하였다. gaussian distribution의 mean = 0, variance = 20을

이용하였다.

이를 이용해 regression한 결과는 다음과 같다.

( 그림 1 - test 1 )

( 그림 2 - test 2 )


data를 random하게 생성하였지만 구한 line은 동일하다는 것을 알 수 있다.

나머지 The normal equations 방법은 직접 찾아보길....

다음은 classifier의 고전인 perceptron에 대해서 알아보자.

Machine Learning Introduction

Machine Learning

우리나라말로 기계학습을 의미한다.

Machine Learning의 분류는 supervised learning과 unsupervised learning이 있다.

즉, training data를 가지고 learning algorithm을 적용할 수 있는 supervised learning과 training data의 존재 없이 learning을 하게 되면 unsupervised learning이 있다.

supervised learning의 예.
  search by humming - 사람의 humming 만으로도 음악 검색. http://www.midomi.com/

unsupervised learning의 예.
  BSS(blind source separation) - 두개의 섞인 음을 분리. http://cnl.salk.edu/~tewon/Blind/blind_audio.html

이상 machine learning에 대한 소개를 마친다.

다음 블로깅에는 supervised learning algorithm중의 하나인 linear regression에 대한 소개를 하겠다.~