기계학습 그리고 패턴인식.

기계학습에 있어서 패턴인식은 가장핵심적인 부분인 동시에 대체되는 단어로도 사용할 수 있을 것 같에요. 인공지능 프로그램은 상황을 인지할 때, 어떤 패턴을 이용하여 인식한 후에 원하는 행동을 하게 되는 것이겠죠. 즉 학습하기 위해서는 인지한 것을 자기것으로 소화시켜야 하는거죠. 그 부분이 패턴인식이고요.

패턴 인식

Pattern Recognition system은 어떤 객체를 분석해서 올바르게 분류해내는 시스템이에요. 사물을 보고 어떤 물체인지 알아내거나 어떤 행동을 하기 위한 기준을 만드는 것이죠. 이러한 작업에는 공통된 일련의 작업들이 있어요.

1. sensing
2. pre-processing and segment
3. feature extraction
4. classification

5. post-processing

대충 제목들만 봐도 알겠죠? 인공지능과 흡사하기때문에 사람이 인지하고 생각하기까지를 예를 들어볼게요.

1. sensing은 인간으로 치면 오감을 이용해서 상황을 느끼는 거에요. (여자들은 sixsense를 가지고 있다는데 정말인가요?)
2. pre-processing and segment 는 전처리부분으로 눈이 않 좋은 사람들이 안경을 끼는 것과 비슷하죠. sensing을 더 확실히하기 위한 방법이죠. 노이즈가 많은 음성데이터나 영상데이터등을 분석하기전에 좀 더 깔끔하게 하는 것입니다.
3. feature extraction은 여자를 볼때 얼굴, 가슴, 다리, 엉덩이, 목, 어깨, 팔,,, 성격 등을 보며 판단 하는 것과 같습니다. 이렇게 sensing으로 얻은 데이터를 feature로 표현해서 판단의 근거를 만드는 것이죠.
4. classification 으로 위의 feature들을 가지고 판단을 하는 부분입니다. 사전에 데이터를 가지고 이 정도면 Positive이다, Negative이다 선택 하는 것이죠. 이전에 Positive와 비슷한 feature들을 가지고 있으면 Positive라고 분류될 확률이 크겠죠?
5. post-processing은 위에서 잘못판단을 할 수도 있으니깐 최대한 맞추려고 노력하는 것입니다. 한가지 예로는 사진을 인식할 때 바다 한가운데 피아노가 있으면 이상하니깐 이 피아노는 잘못된 분류라고 생각하는 것입니다.

이 단계들은 모두 중요합니다. 그런데 제가 하려는 패턴인식은 3번과 4번이 중점이 되겠어요. sensing은 하드웨어 쪽에서 카메라를 잘만들고 자이로센서, 마이크등 센서를 잘만드는 분들이해 주셨으니 전 열심히 최선을 다해서 특징추출하고 분류해서 답내고 또 답이 잘안나올거같으면 후처리를 합니다.


특징생성
특징생성이란 단어가 특징추출로도 쓰이기도 합니다. 여기선 특징생성은 특징을 추출해서 그러한 특징을 선택하는 것까지 를 특징생성이라고 할게요. 즉, 특징생성 = 특징추출+특징선택

위에서 말한것과 같이 어떤 객체를 분류하기전에 그것을 대표할 특징들이 필요하겠죠. 이것을 특징벡터라고할게요. 이 특징벡터은 첫째, 분별력이 좋아야하고 둘째는 또 차원이 낮아야합니다. 어떤 특징들의 분별력은 좋지만 계산할 때 너무 오래걸릴만큼의 차원이면 실용적이지 못하겠죠. 반대로 계산이 가능할 정도의 차원이지만 분별력이 낮은 특징벡터는 쓸모가 없겠네요. 그러므로 이 두가지를 고려해서 특징벡터를 만들어야해요.


특징 추출

특징생성에서 데이터의 종류가 무엇인가에 따라서 2차원 이미지인가, 음파처럼 파형을 이루는 데이터인가 등등 실세계에 나오는 데이터마다 추출방법이 바뀔 수 있고 데이터의 종류가 같더라도 분류방법에 따라서도 바뀔 수 있어요. 그리고 데이터의 종류가 같고 분류방법이 같아도도 어떤 객체를 구분해낼 것인가, 어떤 상황에서 그객체를 구분해 낼것인가에 따라서 추출방법이 다양해요


특징 선택

특징선택은 특징추출에서 나온 특징벡터에서 필요한 특징만을 뽑아내 차원을 줄이는 단계에요. 이 필요한 특징을 추려냄에 있어서 특징마다 분별력을 측정해야죠. 분별력이란 그 특징이 가지고 있는 성질로, 같은 특징부류이면 동일성을 같고(분산이 작은) 다른 특징부류들과는 구분될수 있는 (분산이 큰) 능력을 말해요. 분별력을 측정할수 있는 방법은 여러가지가 있네요. 예를들면 KL divisions, training sample distance 측정, 특정한 classifier를 위한 selection 등등. 이렇게 분별력을 토대로, 생성된 특징벡터에서 쓸모 없는 특징을 빼내면서 특징 벡터를 최적화하는 거죠. 이 때 부분집합 선택문제를 가지겠죠. 즉, 분별력이 높은 특징들만으로 특징벡터를 만든다고 그 특징벡터가 가장 좋은 특징벡터라고 말할 수 없는거죠. 어떤 특징들로 한 객체를 표현하는데 구분력이 높은것만 가져다 놓을때엔 조합의 문제를 신경쓰지 않은것 이므로 오히려 더 않좋은 특징벡터가 될수 있는것이죠. 예를 들면 이쁘고 안이쁜 여자를 구분할 때 허리사이즈와 몸무게그리고 키가 있는데,개별적으로 봤을때 몸무게로 구분하는게 가장 구분하기 쉽고, 그 다음 허리사이즈 마지막으로 키로 구분할때 가장 쉽다는 결과가 나왔다고 해볼게요. 그러면 몸무게와 허리사이즈를 선택해야할까요? 아니죠. 몸무게와 허리사이즈는 어느정도 연관관계가 있어서 몸무게만봐도 허리사이즈를 어느정도 가늠할수있습니다. 그러므로 몸무게와 키를 선택하는게 가장 좋은 특징벡터일수 있죠. 이렇게 특징 을 선택할땐, 최종조합의 분별력도 고려해야되요.




Share this

Related Posts

Previous
Next Post »