레이블이 Machine learning인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Machine learning인 게시물을 표시합니다. 모든 게시물 표시

2007년 9월 4일 화요일

Issues in Machine Learning : Machine learning1 - 3

이번 장에서는 머신 러닝 분야에 있어서 혹은 머신 러닝을 프로젝트에 적용할 때 중요한 이슈가 되는 점들에 대해서 간단히 정리해 보도록 한다. 이 부분은 Tom M. Mitchell의 책 Machine Learning의15page에 해당하는 부분의 해석이라고 해도 무방하다.


1. 특정한 trainig examples에 대해서 범용적으로 사용될 수 있는 target function으로는 어떠한 것들이 있을 수 있을까? 그리고 충분한 training data가 주어졌다고 가정할 때, 어떤 알고리즘이 target function의 기능을 하기 위해 어떠한 setting들이 필요한가? problems와 representations의 유형들에 대해서 어떤 알고리즘들이 가장 효과적인가?

2. training data는 얼마정도가 적당한가? training data에 대해서 일반적으로 통용될 수 있는 boundary가 있는가?

3. 사전 지식이 언제, 그리고 어떻게 examples를 generalization하는데 이용될 수 있는가? 만약, 사전 지식이 잠정적으로 옳다고 생각되는 경우에도(절대적이 아닌) 도움이 될 수 있는가?

4. 가장 효과적으로 다음 training experiences를 선택하는 방법은 무엇인가? 그리고 이러한 방법이 learning problem의 복잡성을 어떻게 줄이는가?

5. learning task를 하나 이상의 function aproximation problems으로 바꾸는 가장 좋은 방법은 무엇인가?(즉, 학습을 target function을 설계하고 traning하는 실제적인 문제로 변환할 때 가장 좋은 방법은?) 시스템이 학습해야 하는 어떤 특별한 function들이 있는가? 그리고 이러한 과정은 자동적으로 수행되어질 수 있는가?

6. learner가 자동적으로 문제들을 target function으로 표현하고 학습하도록 할려면 어떻게 해야 하는가?

2007년 8월 10일 금요일

SVM의 개념

SVM은 상당히 다룰 내용이 많은 learning algorithm이다.

하지만, 아직은 SVM을 제대로 공부한 적이 없는 필자와 같은 상태의 사람들은 논문을 보거나 SVM을 프로젝트에 이용하려 할때 기본 개념을 알고 있을 필요가 있다.



SVM(Support vector machine)은 2개의 범주를 분류하는 이진 분류기이다.

다음 그림은 SVM의 개념을 설명하는 것이다. feature들은 그림과 같은 vector공간에 vector로 표시된다. 그림에서 보는 것처럼 하얀 색 vector들을 A그룹에 속하는 white point라고 하고, 그 반대로 검은색 vector들을 B그룹에 속하는 black point라고 하자.



이러한 벡터 가운데 같은 범주를 기준으로 바깥으로 위치한 벡터들의 연결선으로 이루어진 닫혀진 다각형을 convex hull이라고 한다. convex hull안의 벡터들은 그룹을 분류하는 데 그다지 큰 영향을 미치지 않는다. 그룹을 분류하는데 가장 큰 영향을 미치는 것들은 바깥에 위치한 벡터들이다. 그룹을 분류하는 선, 면을 hyperplane이라고 한다.
그림에서 보는 것처럼 그룹을 나눌 수 있는 hyperplane은 무수히 많다.
하지만, 직관적으로 그룹들의 convex hull에 속한 벡터들 중 가장 가까운 벡터와 수직거리로 가장 먼 거리를 가진 hyperplane이 2그룹을 효과적으로 분류할 것이다.
이러한 hyperplane을 maximum hyperplane이라고 부르고 이때 가장 가까운 벡터들을 support vector라고 한다. hyperplane이 재조정 될때는 support vector역시 재계산 되어야 한다. hyperplane은 선형 또는 비선형 모든 형태로 표현이 가능하며 일정 수식의 방정식으로 표현이 가능하기 때문에 간단한 수식으로 두 그룹을 분류할 수 있다.

이제 해야 할 일은 이 두 그룹 간의 거리를 최대한으로 하여 categorization할 때 발생할 수 있는 오류를 최소화 해야 한다. 그룹 간 거리를 최대한으로 하기 위해서 공업 수학 시간에 배운 적이 있을(공학도라면) 다변수 함수의 최대, 최소 값 찾는 데 이용되는 라고랑지의 미정계수법을 사용한다. 라고랑지 미정계수법의 원리는 그리 어려운 내용이 아니다.(수학적 내용 Lable의 라고랑지의 미정계수법 참고)

그런데 SVM 역시 두 그룹간의 거리를 최대로 하는 가중치 값들(다변수)을 정하는 것이므로 다른 머신 러닝 방법과 유사한 측면이 있다. 그렇다면, 왜 Decision tree, Concept learning, 그리고 neural network같은 걸 쓰지 않고 SVM을 쓰는 걸까? 그것을 바로 target이 2그룹 중 하나로 분류되는 경우에 특화되어 있기 때문이다. 예를 들면, 2가지 그룹으로 분류하는 방법으로 Decision tree를 쓸 수도 있고, neural network를 쓸수도 있고 Concept learning을 할 수도 있다. 만약 training set이 선형적인 hyperplane으로 나눠질 수 있다면 모든 경우가 거의 비슷한 성능을 할 것이다. 하지만 비 선형적인 경우 neural network가 가장 좋은 성능을 내게 될 것이라고 하자. 하지만, 만약 이 비선형성이 보다 높은 차원에서 볼 때 선형성을 뛴다고 하면 차원을 확대해서 보다 더 빠르고 쉬운 선형적 머신 러닝 알고리즘을 사용할 수 있지 않을까? 우리는 두 개의 그룹으로 분류하기 때문에 차원의 수를 아주 많이 확대하지 않고도 training set을 선형적으로 바꿀 수 있을 것이라고 직관적으로 생각할 수 있다. 그런 의미에서 SVM이 효과적인 측면을 갖는다고 말할 수 있다.

2007년 7월 28일 토요일

Designing A learning system : Machine learning1 - 2

machine learning한 system을 설계하는 basic design isssue에 대해서 알아보기 위해서
word checker champion을 가리는 tournament에서 우승하기 위한 Machine learning program을
디자인 하는 경우를 생각해보자.

이 경우,
Task T: playing checkers
Performance measure P : percent of games won in the world tournament
Traning experience E : games played against itself.
라는 걸 먼저 염두에 두자.

소기의 목적을 달성하기 위해 먼저 무엇을 해야할까? 즉, 어떻게 해야 많이 이길 수 있을까?

그 이면에는 효과적인 머신 러닝 방법에 대한 고민과 직결되어 있다. 이러한 효과적인 머신 러닝 방법을 디자인 하기 위해서 우리가 고려해야할 것들은 다음과 같다.

1. Choosing the Traning Experience

즉, 어떤 경험을 통해 기계 학습을 한다고 할 때 어떠한 training set들이 효과적일 것인가의 대한 고민을 얘기한다. 또한 이 고민에는 training set을 이용해 기계 학습을 할 때 고려해야 할 것들에 대해서도 고민한다. 예를 들면, 몇 단계 앞의 수까지 고려하게 할 것인가.. 혹은 보드의 처음부터 기계 스스로 배우게 할 것인가 아니면 각 보드의 상태를 설정해 놓고 가장 좋은 수를 찾는 것을 trainig set으로 부터 배우게 할 것인가 등등의 것들까지 training에 관한 전반적인 고민들이 이루어 져야 한다.

2. Choosing the target function

그 다음으로는 우리가 이러한 기계학습을 통해 달성하고자 하는 목표를 design하는 것이다. 즉, checker에 있어서 우리는 게임에서 이기길 원하기 때문에 다음과 같은 형태로 target function을 디자인 할 수 있을 것이다.
만약 b가 이겼을 때의 board 상태를 나타낸다면, V(b) = 100
만약 b가 졌을 때의 board 상태를 나타낸다면, V(b) = -100
만약 b가 비겼을 때의 board 상태를 나타낸다면, V(b) = 0

3.Choosing a Representation for the target function

그 다음으로 우리는 고려해야 할 변인들을 생각하고 그것들을 이용해 target function을 수식으로 나타내야 한다.
예를 들어, board의 승리와 연관되어 있는 변수들로는 다음과 같은 것들이 있다고 하자.
검은 색 지역의 개수, x1
붉은 색 지역의 개수, x2
검은 색 왕들의 개수, x3
붉은 색 왕들의 개수, x4
붉은 색에 의해 공격 받고 있는 검은 색 지역들의 수, x5
검은 색에 의해 공격 받고 있는 붉은 색 지역들의 수, x6
이젠 이러한 변인들을 이용해 다음과 같은 target function을 디자인 할 수 있다
V(b) = w0 + w1x1 + w2x2 + w3x3 + w4x4 + w5x5 + w6x6

4.Choosing a Function Approximation Algorithm

그 다음으로 적당한 training set을 이용해 target function의 가중치 값들을 조정하여 target function이 실제 target function과 가깝게 작동할 수 있도록 해야 한다.

5.Estimating training values

그 다음으로 test set을 이용해 target function이 어느정도 정확하게 작동하는지 performance를 체크 할 수 있어야 한다.

6.Adjusting the weights

이후 test set에서의 오류 값들을 고려하여 다시 target function의 weight값들을 보정할 수 있는 단계를 거치게 할 수 있다. 이 경우 보통 LMS 방법을 주로 사용한다.

Machine Learning1

어떤 컴퓨터 프로그램에 있어서.

어떤 종류의 업무 T에 대한,(the class of tasks)
경험들 E를 통하여,(the source of experience)
성능 혹은 성과 P를 향상 시키는 것을(the measure of performance to be improved)

learning이라고 한다.

예를 들면 checker를 하는 컴퓨터 프로그램의 경우,

checker game을 하는 업무에 대해
그 동안의 checker game의 경험을 통해
상대방을 이기는 능력의 정도(횟수)를 향상 시키는 경우를

learning이라 할 수 있다.

일반적으로 well-posed(defined) learning problem하기 위해선,
the class of tasks, the measure of performance to be improved, and the source of experience
이 세 가지를 명확하게 규정해야 한다.

홈