우리나라에서는 일반인들에게 있어 연구자에 대한 인식이 '대체 뭐하는 사람인가' 정도의 인식인 듯 하다. 아마 대다수의 사람들은 가끔 신기한 걸 만들어내는 사람 정도의 인식 아닐까?
이런 사람들에게 '연구자들은 연구를 취미로 하고 있다'는 사실이 밝혀지면 어떻게 될까? 모든 연구자가 그렇다는 건 아니지만, 반 정도는 현재 하고 있는 연구가 즐겁기 때문에 하고 있는 것이 분명하다고 생각한다. 처음에는 해당 연구 주제가 생소한 것이었을 지도 모르지만, 점점 연구 주제에 빠져들면 재미있어지고, 어느 새인가 자신이 그 분야, 그 주제의 탑(top)이 되어있는 것이다.
뭐, 이 글을 보고 '나는 정말 연구가 괴로워~' '처자식 밥벌어먹여 살릴려고 연구하는거야~' 같은 이야기가 돌아온다면 할 말 없지만, 적어도 나는 현재 하고 있는 일이 무척 즐겁다. 다양한 방법을 모색하여 현재 하고 있는 문제를 풀고자 하는 것은 꽤 재미있는 일이다.
이런 '탐색의 재미'를 느끼게 된 건 대략 중학교 때부터일까? 중학교 2학년 때 동네 친구들과 수학경시를 준비한 적이 있었다. 그 때 경시대회 준비를 지도해주시던 선생님은 좀 특이한 분이셨는데, 아무런 힌트를 주지 않고 현재까지 배운 것만으로 문제를 푸는, 소위 '아이디어 찾기'를 가르치시던 분이었다. 그 전부터 교수였던 아버지께서는 새로 사준 MSX2 컴퓨터(초등학교 2학년 때)로 게임만 하는 나를 보고 '컴퓨터를 가지고 연구를 해야지, 게임을 하면 쓰나' 하고 툴툴거리셨다. 여튼 이런 상황에 맞물려, 처음에는 아무런 힌트도 없이 문제를 푸는 것이 괴로웠지만, 나중에는 답을 찾는 것이 재미있어졌던 기억이 있다. 물론 경시대회를 준비하던 멤버들 사이에서는 평균적인 실력을 가지고 있었지만...
재미있는건, 그때 경시대회를 준비하던 친구들은 다 의대에 있다는 것이다. 나보다 실력이 낮은 친구, 실력이 높은 친구, 말할 것도 없이 전부 다. 공학으로 진학한 친구들도 뒤늦게 의학전문대학원 등으로 편입하여 의대에 가려고 애를 쓰기 시작했다. 이런 친구들 중 몇몇을 붙잡아 '그때 왜 의대를 선택했어?' 라고 물어봤더니, 재미를 느끼지 못하겠다는 거다. 그리고 경쟁하는 것도 싫고, 아무래도 의대에 가는 것이 좀더 편안하지 않겠느냐 하는 솔직한 답변.
맞는 이야기이다. 나도 사실 대학 1,2학년 때에는 좀 막막했던 적이 있다. 대학에 오니 수학이나 물리학, 화학 등을 처음부터 다시 가르치기만 하고, 내가 하고 싶은 컴퓨터 관련 이론은 언제쯤 공부할 수 있을까 기다리던 때가 있다. 그래서 대학 2학년 때 4학년 것을 미리 듣고, 3학년 때 3학년 것을, 4학년 떄 2학년 것을 들어서 대학 학점이 무척 좋지 않다. ^^; 그렇지만 어찌어찌 컴퓨터와 수학을 사랑하는 마음으로 대학원에 들어올 수 있게 되었다.
여하튼, 솔직한 심정을 이야기하자면, 경쟁이라든가 안정 이런 것은 아무래도 좋다. 그저 자기가 하고 싶은 연구, 물론 약간은 학계라든가 산업 트렌드랑 맞아야 하겠지만, 뭐든 연구를 하고 있으면 최소한 밥벌어먹을 정도의 돈은 들어온다는 점이 매력적이다. 또, 남들이 찾아보지 못한 미지의 세계를 찾는다는 것은 무척 고무되는 일이고. 그런 뇌내 미지의 세계 속을 '모험'하고 있는 것은 처음 이 블로그(혹은 이 홈페이지)가 생겼을 때의 캐치프레이즈와 여전히 동일하다.
그리고 그 최소한 밥벌어먹기 위한 돈을 받으면서 '취미'로 연구를 하고 있다는 점은 꽤 경악할만한 일이다. 하지만 주변에도 점점 즐겁게 연구를 하면서 살아가는 사람들이 늘어나고 있다. 이렇게 최소한의 돈만 가지고 최고의 성과를 즐겁게 낼 수 있는 사람들이 늘어난다면 나라 전체에도 이득이 되지 않을까 싶다. 가까운 나라 일본을 보라. 아무리 전세계적인 이공계 기피 현상이라고 하지만, 우리나라보다 몇 배는 더 많은 연구자들이 우리 분야에 산재해 있다. 그것이 일본의 저력 아니던가. 한국도 지금보다 약간만 더 상황을 개선하여, 돈 걱정 없이 연구를 취미로 할 수 있는 사람들을 만든다면, 급속 성장하는 중국이나 연구 강국 일본과 '즐겁게' 경쟁하며 살아갈 수 있지 않을까 싶다.
유전 알고리즘(GA; Genetic Algorithm)은 진화 컴퓨팅(evolutionary computation)의 잘 알려진 방법론 중 하나로, 실제 생물들의 유전자 교배 및 돌연변이를 모델로 하고 있다. 즉, 어떤 문제에 대한 최적화된 답을 찾고자 할 때 이 문제에 대한 잠재적 답을 유전자의 형태로 표현하고, 세대를 거듭하여 교배 및 변이되어가는 유전자의 변화 결과를 평가 및 추적하여 답을 찾는 것이다.
진화론에 따르면, 생물들이 계속해서 진화해가는 가정은 교배(crossover)와 돌연변이(mutation)에 의해 가능했었다. 즉, 유전자들이 서로 교배하여 좋은 유전자의 조합이 생성되고, 돌연변이를 통해 우연하게도 좋은 유전자가 생성되기도 한다. 매 한 세대마다 인구(population)의 소멸과 재생산(reproduce)의 과정을 거쳐 다시 다음 세대에서 이와 같은 일이 반복되며, 세대를 거듭할수록 환경에서 보다 잘 살아남는 유전자가 남게 된다.
컴퓨팅 이론에서도 이와 같은 진화론을 적용하면 유전 알고리즘과 같은 모델링을 통해 문제를 해결할 수도 있다. 예를 들어 너무나도 많은 파라메터들로 이루어진 문제가 존재한다고 할 때, 그러한 문제를 풀기 위해 최적의 파라메터를 찾아내는 것은 꽤 어려운 일이다. 단순히 계차 계수(polynomial coefficients)를 이용하여 미적분 혹은 그에 상응하는 그래프를 그려 문제를 해결하기에는 넘아야 할 험준한 산이 많다. 대표적인 문제 중 하나가 바로 국소 최대 수렴(local maxima convergence) 문제일 것이다. 이와 같은 수렴 문제에 빠지게 되면 어떤 용을 쓰더라도 문제를 풀기 어려워지게 된다. 이 때 유전 알고리즘을 활용하면 생각지도 않았던 변이로부터 최적화된 답이 발견되기도 한다.
재미있는 것은 유전 알고리즘에서 교배 방법에서 재미있는 사실을 발견할 수 있다는 점이다. 가령, 두 부모 유전자 P1과 P2가 존재한다고 하자. 이 부모 유전자는 그 유전자가 존재하는 세계에서는 최고의 유전자로 칭송받는 유전자들이다. 간략하게 P1이 1등이고 P2가 2등이라고 치면, 1등과 2등을 교배했을때 그 자식들도 이후 세대에서 좋은 성과를 낼 수 있을 것인가 하는 점이다.
결론부터 말하면 컴퓨터 상의 가상 환경에서 진행되는 유전 알고리즘 방법론에서는 예측 불가능하다. 왜냐하면 인간이 유전자를 모델링하고 있기 때문에, 유전자의 복잡도가 실제의 그것보다 떨어지기 때문이다. 그렇기에, 1등과 2등이 만났다고 하더라도 자식은 1등 군집에 들어갈 수 있다는 보장이 없으며, 오히려 의도하지 않은 나쁜 결과가 나오기도 한다.
사람 세계에서 일어나는 일 또한 비슷하다. 사회적으로 우수하다고 평가받는 두 인자가 만나서 결혼하고 자식을 낳으면 '천재' 아니면 '바보'가 나온다는 속설이 있다. 여기서 '바보'란 저능아라기보다는, 두 부모 인자에 비해서 결정적으로 빛을 발하지 못하는 그런 자식 인자를 평하는 것일지라. 그렇기 때문에 이 말을 역으로 해석해보면 '천재' 아니면 '천재가 아닌 다양한 계층 인자'가 나온다는 말도 된다고 생각한다.
컴퓨터의 세계에서의 유전 알고리즘과 사람 세계에서 일어나는 세대의 진화. 둘의 차이는 무엇일까? 컴퓨터 세계에서의 모델링은 유전자 설계가 꽤 허술하지만 평가 기준이 확실하다. 하지만 사람 세계에서의 유전자 모델링은 꽤 복잡하지만(아직 인간 스스로도 알기 힘들 정도로 견고하다) 평가 기준은 다원화되어 있다. 컴퓨터 세계에서는 유전자가 획일적으로 추구해야 하는 '목적'이 있으며, 그 목적에 부합하지 않는 유전자는 다음 세대에 가기 전에 소멸되고 만다. 하지만 사람 세계에서는 이렇다. 내 자식이 일류대에 가지 않고 그냥 평범한 교육을 받고 평범한 재능을 발휘하며 평범한 삶을 살아간다면, 그것은 '평범도'에 있어서는 1등인 셈이다. 그렇지만 '엘리트도'에서는 영 꽝인 평가를 받을지도 모른다. 그렇기 때문에, 평범한 것을 좋아하는 사람끼리 결혼하면 또 평범한 자식이 생기기도 하고, 결론적으로 다음 세대까지 어떻게든 살아남기만 하면 장땡인 것이다.
여튼 이러한 점을 미루어볼 때 컴퓨터에서 돌아가는 진화 알고리즘은 꽤 허술한 감이 있다. 그렇지만 컴퓨터 상에서 풀고자 하는 문제가 보통 인간사의 문제보다 간단한 문제이며 명확한 문제인 경우가 많을 것을 미루어볼 때, 간단한 알고리즘으로 간단한 문제를 풀 수 있다는 점에는 의의를 두고 싶다. 다만, 슬슬 문제가 복잡해지려는 조짐이 있다고 생각한다. 단순히 수학적으로 높은 점수를 얻는 것보다, 컴퓨터 또한 스스로 논리적인 사고를 하고 발상을 해야 하는 시대가 오고 있기 때문에, 이런 상황에서 컴퓨터는 컴퓨터 스스로 머릿속에서 교배와 돌연변이를 어떻게 해나갈 것인지 무척 흥미롭다.


