DATOR

Genetic Algorithm 과 Database

Document URL : http://www.dator.co.kr/403674
기술 일반 | Posted on February 15th, 2013 at 09:33 by 밀오 | 조회수 : 9969

대상 독자


DB와 IT 기술에 관심이 있는 분들


이 글의 목적


Genetic Algorithm에 대해 소개하고 DB와 접목 가능성 제시.

기술적인 세부 사항은 배제하고, 개념적으로 접근하려고 합니다.


Genetic Algorithm 이란?


제가, 이 쪽 분야의 전문가는 아니지만, 이것저것 조금씩 아는 관계로 ^^

Genetic Algorithm에 대해 간단하게 설명해보겠습니다.


컴퓨터에게 지능을 부여한다면, 어떻게 해야 할까요?

중요한 키워드는 경험의 축적과 이의 활용입니다.


- 경험 축적은, 곧 데이터의 축적이고, 이의 정점은 DB입니다. ^^

   이 글을 쓴 목적이 바로 여기에 있습니다.


경험을 축적하는 건,

어떤 Action을 취했을 때 나타난 결과를 수치로 저장하면 됩니다.

여기에선, 어떤 것을 저장할 것인가가 중요 포인트가 됩니다.


예를 들면,

컴퓨터에게 특정 키워드를 지정해주고, 관련된 글을 수집하라고 시켰습니다.

이때 수집 결과에, 어떤 건 전혀 관계없는 글이 될 수도 있고, 어떤 건 정말 원하는 글이었을 수 있습니다.

이런 결과에 각각 점수를 매겨서, 수집의 품질을 수치로 저장할 수 있을 것입니다.


이를 활용하는 건 어떻게 할까요?

1. 축적된 데이터를 활용하려면, 비교할 만한 값이 있어야 합니다.

이는 현재 Action에 대한 결과의 품질이 될 수도 있고, 예전의 Action에 대한 결과의 품질이 될 수도 있습니다.

어느 쪽이든, 축적된 데이터가 1차원적이 아닌 다차원으로 저장되어 있어야 합니다.

이렇게 저장된 값을 비교해서, 어느쪽이 더 나은가를 비교할 수 있습니다.


2. 또한, 비교한 결과에 따라, 이후의 Action이 바뀌어야 합니다.

Action이 바뀌어야 한다는 건, 모든걸 통째로 바꾸는 거창한 것만은 아닙니다.

단순히 어떤 것에 중점을 더 둘 것인지 정도를 조절할 수도 있고,

세부 항목을 수행할 것인지 안할 것인지를 선택할 수 있습니다.

이 정도로 생각하면 그렇게 어려운 일만은 아닙니다.


컴퓨터에 지능이 부여되었으나 한계가 있습니다.

사람과 마찬가지로, 너무 많은 겅혐은 컴퓨터를 선입견에 빠지게 합니다.

때문에, 변이의 개념이 추가됩니다.


개념은 간단합니다.

가끔식, 수치상으로 봤을 때 말도 안되는 선택지를 선택해 보는 것입니다.


기존까지의 방식으로는, 컴퓨터의 지능이 매우 느린 수준으로 발전하게 됩니다.

또한 급격한 변화에는 제대로 대응하지 못하는 경우가 발생합니다.


예를 들면,

어떤 사람이 매일 연예인의 개인사만 검색하다가, 어느 순간 맘이 바뀌어서 정치에 관심을 두게 되었다고 하면,

이 컴퓨터는 정치쪽 이슈를 제대로 검색해 주지 못할 것입니다.


방법은,

축적된 수치에 랜덤한 수치를 더하거나 빼는 식으로 해서, 컴퓨터가 전혀 엉뚱한 선택지를 선택할 수 있게 해봅니다.

그리고 그 결과값이 어떻게 나오는지를 관찰한 뒤, 이 진화된 Action을 살릴 것인지 버릴 것인지를 결정합니다.

이걸 주기적으로 조금씩 수행해 줌으로써, 컴퓨터의 지능이 고착화 되지 않도록 해줍니다.


주의할 점은,

최후에 살아남은 하나의 방법이 모든 것에 최선일 수 없다는 것입니다.

즉, 하나만 살릴 게 아니라, 여러 개의 후보군을 살려놓고 계속 경쟁시켜야 합니다.


변이와 더불어서, 장점만 따서 새로운 걸 탄생시키는 개념도 있습니다.

여러가지 결과가 살아남았을 때, 이를 각각 절반씩 사용하거나 하는 식으로 새로운 Action을 만들어 보는 방식입니다.

좋은 결과가 나왔다면 살아남고, 아니라면 역시 버려집니다.


이 변이와 조합이 적용된 기술이 바로, Genetic Algorithm입니다.

즉. 어떤 Action을 수행하는데 있어 변경할 수 있는 항목을 두고,

각각의 선택지에 변화를 둔 여러 후보군을 만들어 둡니다.

이후 수행 결과에 따라서, 이를 변이도 시켜보고, 조합도 시키보면서 점차 나은 결과를 낼 수 있도록, '진화' 시키는 방법입니다.


Genetic Algorithm와 DB


결국, Data의 축적과 활용 측면이기 때문에,

Database와 같이 활용하면 얼마든지 배가 효과를 낼 수 있는 분야입니다.


또한, 이미 많은 곳에서, 이러한 방식을 활용하고 있는 것으로 보입니다.

(내부를 살펴보지는 못하지만, 광고나 실제 동작하는 걸 보면 그렇지 않을까 추측합니다.)


만약 직접 해본다면, 어떤 식으로 DB를 설계하고 활용할 수 있을까요? ^^

여기서 부터는 각자의 과제로 남겨놓겠습니다.


읽어주셔서 감사합니다.~










Tagged :
   

Comments : 0