본문으로 바로가기

여름방학 부터 인공지능 공부를 조금씩 했었습니다. 원래는 sung Kim교수님의 유튜브 강의가 처음이였는데 따로 정리해두질 않아서 포스팅은 다음에.. 현재는 카이스트에서 무료로 제공하는 강의를 듣고 있습니다.


주소 -> ->  http://kooc.kaist.ac.kr/


인공지능에 대해 어느정도 이론을 알고 있어서 챕터1은 건너 뛰었습니다. 처음 들으시는분들은 처음부터 듣는 것을 추천합니다!



가장 처음에 나오는 Rule Based Learning 입니다. 특정 날의 EnjoySport를 할 것인가 말 것인가에 대한 학습입니다. 이 학습에선 No observations error, No inconsistent observations과 같은 조사의 오류나 모순에 대해 생각하지 않고 예외의 상황은 없다 라고 가정해 두었습니다.  결정에 미치는 요소들은 Sky, Temp, Humid, Wind, Water, Forecst로 6가지 정도가 있습니다. 이 요소들의 형태에 따라 YES & NO가 결정됩니다.


Machine Learning은 데이터를 기반으로 해서 결과에 더 근접할 수 있도록 합니다.

위의 EnjoySport를 예시로 용어를 설명하자면 Instance X -> <Sunny, warm, Normal...> 혹은 <Rainy, cold, Normal...>등이 선택 될 수 있습니다. 이전 그림의 표에서 instance X는 4개가 있다 라고 말할 수 있겠죠. Dataset은 이 instance를 조사한 데이터의 모임이라고 말할 수 있습니다.

머신 러닝에서 빠질 수 없는 용어 중 하나는 가설 Hypothesis입니다. 

<sunny, warm, ?,?,?, same>도 하나의 날을 결정하는 가설이 될 수 있고 <?????>도 가설이 될 수 있습니다. ?는 Don't care를 의미합니다.


인스턴스를 기반으로 한 가설을 살펴 볼때, h1의 가설을 따르면 x1의 결정은 YES가 됩니다. h2의 가설에 따라도 x1은 YES가 되고 h3에 따라도 YES가 됩니다. 인스턴스를 벤다이어그램으로 표시하면 관계는 위와 같습니다. 가설에서 Don't care가 많을 수록 가설이 General하다고 합니다. 인스턴스가 확정 될 수록 가설이 specific하다고 합니다.  말 그대로라서 더 이상은 설명은 필요 없을 것 같습니다.



S알고리즘에 대해 정의를 해봅시다. 인스턴스 X에 대한 Dataset이 있다고 합시다. X가 Positive할 때, 특징을 살펴보면 Hypothesis와 feature가 일치하면 아무것도 안해도 되지만 feature와 Hypothesis가 불일치 할 때, 해당 feature을 가설에 포함시킵니다. 


예시를 들어, 각 인스턴스가 X1, X2. X4가 있고 처음 가설이 h0 즉 어느 조건이라도 나가놀지 않는다는 가설이 있다고 할 때, 인스턴스 X1에 기반하여 H1이 정해집니다. 같은 형식으로 X2, X4의 조건에 따라 feature이 가설에 더 추가 될 수 있습니다. 



많은 가설이 가능하지만 그 가설이 확실하다 라는 법은 없습니다.  대신 범위를 찾는 방법으로 볼 수 있습니다. 즉, Version Space로 볼 수 있습니다. 이 영역을 정의 할 때, 경계선(Boundary)를 지정해 주어야 합니다. 경계선은 General Boundary G, Specific Boundary S로 나눌 수 있습니다.  가설은 이 G, S의 사이에 있습니다.


위의 표에 따라 G를 정할 때, 인스턴스에는 Sunny, Warm일 때 YES인 것을 볼 수 있습니다. G보다 세부 조건을 추가하여 S를 지정해 봅시다. Sunny, Warm, ? Strong, ? , ? 이 S, G사이에는 파란상자들과 같은 가설이 해당 될 수 있습니다.


이 사이의 부분들을 Version Space라고 할 수 있습니다.



Candidate Elimination 알고리즘은 가장 Specific한 H와 가장 General한 H로 부터 점점 좁혀 나간다는 알고리즘입니다.


인스턴스 X에 대해 Y가 참이라면, S를 허용되는 범위에서 General하도록 수정합니다. 반대로 X에 대해 Y가 거짓이라면 G를 Specific하게 수정합니다. 예시를 통해 살펴 보도록 합시다.



S0을 어느 상황에도 나가지 않는다 라고 가정하고 G0은 어느상황에서도 놀러나간다 라고 가정해 봅시다. 인스턴스 X1로 인해 S1가설은 Sunny, Warm, Normal, Strong, Warm, Same으로 추론할 수 있습니다. 그런데 X2를 보니 Humid에서 High일 때에도 YES (positive)결과가 나왔습니다. X에 대해 Y가 참이 되므로 S1의 가설을 Genearl하게 수정 할 수 있습니다. S2는 S1보다 general한 Sunny, Warm, ?, Strong, Warm, Same으로 수정 되었습니다. G1, G2는 negative한 상황이 나오지 않았기 때문에 그대로  ? ? ? ? ?가 됩니다.



다음은 negative할 때의 상황입니다.  인스턴스 X3에 의해 Y의 값이 No가 나왔습니다. 어느 요인으로 No가 되었는지는 모르기 때문에 G3을 S1, S2에 따라 공통된 부분을 추론하여 Specific하게 수정합니다.



마지막 인스턴스 X4입니다. X4에서는 YES의 값, 즉 positive한 경우 입니다. S2, S3의 결과에서 Forecst가 Change하여도 YES의 결과가 나왔기 때문에 더 general하게 수정 할 수 있습니다.


다음 강의에서는 decision tree에 대해서 나오네요. 앞 강의에서 한 perfect world에 대한 Tree를 만들어 보면 위와 같습니다. SKY가 Rainy? Sunny? 일때의 결과와 YES의 결과에서 다음에 차례로 조건들을 추가하면서 Tree를 넓혀가는 것을 볼 수 있습니다. 




다른 예시를 들어봅시다. 강의에서는 은행에 대해 얘기를 해주셨습니다. 은행에서 통장을 만들때 A1, A9의 조건을 본다고 가정해 봅시다. A1의 경우는 다시 a, b, ?의 경우로 나누어 집니다. 각각 살펴보면 a 는 98개의 positive, 112개의 negative가 b는 206개의 positive, 262개의 negative...등이 있습니다. 이 트리에 대해 positive or negative의 결과로 말하면 positive의 결과일때는 112개의 오류가, negative 결과일때는 98개의 오류가 있다고 볼 수 있습니다.  결과가 확실하게 갈리지 않는다면 좋지 않은 조건으로 볼 수 있겠죠?


A9에서는 t, f로 나누어지고 t는 284개의 positive, 77개의 negative가 있다고 볼 수 있네요. f도 마찬가지 입니다. 하지만 A1과 다르게 positive 와  negative가 잘 나누어진다고 볼 수 있습니다. 상대적으로 에러가 적게 난다고 볼 수 있습니다. 

결과적으로 A1은 불확실, A9는 확실성이 강하다고 말할 수 있습니다. 




이런 불확실성을 해결해줄 Entropy입니다. 일종의 수식으로 보면 될 것 같습니다. 공식으로 나와있어서 따로 따로 설명은 못하겠습니다