Previous Contents/Evolutionary Computation

기타. 알고리즘과 적용에 대한 작은 생각들(주로 유전프로그래밍)

shhyun 2007. 11. 11. 12:54

본 글은 어떤 일반론적인 생각도 아니고 어디까지나 제 자신의 개인적인 생각들 임을 사전에 밝히도록 하겠습니다. 짧은 지식을 통해 나오는 생각들이기에 편협할 수도 있고, 좁은 식견이 확 보일수도 있고 정리가 안된 그냥 머리속 튀어나오는 대로 쓰는거지만... 그냥 한번 써보렵니다. 사족이므로 반말나갑니다.

- 다른 녀석들을 봤을 때 유전프로그래밍이라는 것의 가능성... -

우선 신경회로망 이라는 녀석. 많이 알고 있는 녀석은 아니지만 태어난지 매우 오래되었음에도 불구하고, 과거의 알고리즘에 비해 심대한 변화는 없는 녀석이다. 다층 퍼셉트론 이후에 오류역전파 알고리즘, 그것들을 제외하고는 어째 크게 발전은 없는 모양이다. 사실 내가 크게 관심이 없어서 그럴수도 있지만, 여러 논문을 검색해 보았을때 다 고만고만 하다. 신경회로망을 어디에다가 적용시켰느냐가 초점이 되는 것이지, 신경 회로망 자체를 어떻게 바꾸었느냐는 그다지 관심들이 없는 모양이다. 더이상 바꿀게 없는건지, 저것 자체로도 충분한건지... 많이 발전되었다고 보인다 해도 사실 다층 퍼셉트론의 컨셉에 오류역전파 알고리즘의 약간 변형된 형태를 크게 벗어나지는 않는것 같다. ( 어디까지나 내가 잘 몰라서 그런걸수도... )

그리고 유전 알고리즘... 요샌 ES 나 DE 이런 애들한테 입지를 참 많이 뺏기는 느낌? 아니 그것보다도 더이상 전통적 유전알고리즘 이라고 불리는 녀석을 많이 쓰지 않는듯 싶다. 오히려 각각의 알고리즘들의 장점들만 빼와서 조합한 새로운 형태의 알고리즘이 많이 쓰이는거 같고, SGA 자체가 처음 등장때보다도 획기적 성능향상에 기여하고 있는 것 같지도 않다. 개발개발개발 또 개발 되어온 녀석이고, 여러가지 연산자, 표현방식, 알고리즘의 흐름 등등이 새롭게 바뀌었지만... 이젠슬슬 더 바꿀게 없을듯한 그런 한계에 도달 하는 거 같기도 하고, 이녀석은 탄생하고 그것이 전성기를 맞이한 후에 쇠퇴해가는 알고리즘의 한 형태가 아닐까...

이제 내가 언급하고 싶은 유전 프로그래밍... 이건 한마디로 말해서 너무 어렵다. 다른 ES, EA, GA, PSO, DE,뭐 기타등등 수많은 진화연산 알고리즘 중에서 가장 어렵다고 단언할 수 있다. 여기서 어렵다는 말의 의미는 일단 접근 자체도 너무 힘들고, 한글로 된 GP관련 자료를 찾는건 더 머리아프고, 프로그래밍을 해야하는데 이게 완전 사람 잡는다. 특히 C 언어로 GP를 짜겠다고 덤벼드는 자들... 100에 99는 자빠져서 쓰러질꺼라고 생각한다. 100에 90도 아니다. 99다 99. 자료구조의 기본지식에 응용까지 확실하지 못한자가 여기에 달라든다는건 애초에 자살행위. 위의 녀석들과 비교했을때 난이도가 가장 높다고 생각한다. 문제는 그거다. 이녀석은 정말 난이도가 높다. 하지만 적용시키는 것 자체로 확실한 성능을 보장할 수 있느냐?... 이게 좀 불확실하기에 많은 학자들이 섣불리 뛰어들지는 않는것 같다. 이녀석의 가능성... 글쎄... 어지간한 능력으로 건드릴수 없기에 확실히 대단한 녀석이지만 현재로서는 거의 불확실한 미래에 대한 도전 정도가 되는것 같다.

- 유전프로그래밍이 대체 뭐가 어떻다고... -

혹시라도 국내에서 유전프로그래밍 관련 책을 본 사람이 있는지.... 없다. 한마디로 없다. 딱잘라말해 없다. 2007년 11월 11일 현재 책에 섞여있는 몇장에 걸친 언급 외에... 있는걸 본 사람이 있는가? 없다. 없어. 어딜 뒤져도 안나온다. 즉, 이녀석에 대해 알고싶다면 일단 머리아픈 영어에 익숙해야 한다는거... 아니 익숙하지 않아도 좋다. 어쨌든 외국 논문, 외국 서적, 외국 자료들을 봐야 한다. 그 뜻과 의미도 모호한 부분에 대해 정확히 이해할 수 없는 외국인들의 자료들...

국내에서는 접근 자체도 폐쇄적인데다가 대학원 아니고서는 유전 프로그래밍에 대해 접근하는건 정말 힘들다. 접근성이 너무 나쁘다. 누가 만약에 지나가다 날 붙잡고 유전프로그래밍에 대해 설명좀 해주세요라고 묻는다면... 이론을 요래요래 요런거예요. 그럼 실제 예를 한번 보여 주시겠어요? 가장 깔끔한편인 lil-gp 를 예로 보여주면, 소스에 대해서 좀 언급을 해주시면... 멍... 멍... 왈왈 -_-... 내가 언급을 해줘도 상대가 이해할 수 있을 까도 궁금하지만, 사실 소스를 열었을 때 상대가 과연 저 소스를 이해하고 싶을까... 이게 더 궁금하다. 그정도다 한마디로... 다른것도 그다지 다르지 않다. 내가 그래도 이제까지 봐온 GP 소스 중에서는 lil-gp 가 가장 깔끔한 편에 속한다.

그래 이렇게 어렵다. 하지만 더 문제는 국내에서 GP 에 대해 같이 연구할 자들도 거의 없다는거다. GA는 참 많다. ES 는 슬슬 많아질 형편이다. 얘가 CMA 라는 획기적인 녀석이 등장한 이후부터는 GA 보다도 더 초점이 맞춰지고 있는 분위기이기 때문에... 하지만 GP는 여전히 크게 뭐 없다. 아무리 외국논문을 보고 연구하고 생각한다고 해도, 내 생각에 절대 혼자하는 연구는 연구가 될 수가 없다. 연구는 고독 한거? 무슨 연구가 원맨쇼도 아니고 어떻게 연구를 고독하게해. 많은 부분에서 연구가 되고 있는것은 분명하지만 그 결과자체를 공개하기도 꺼려지고(왜냐고? 논문 써야지...) 서로간의 연구에 대해서 서로 공유하려는 움직임이 적은것 자체도 있다. 난 내 실력이 부족하지만, 좀 여러 분들과 연구해보고 싶다.

- 알고리즘에 대한 연구들...(유전프로그래밍 자체에 대한...) -

국내에서는 사실 알고리즘 자체에 대해 연구하는 분들 몇분 안계신다. 논문 나오는걸 보면 안다. 알고리즘 자체를 어떤 개선을 이루어내서 그것에 대해 외국애들하고 결과비교를 해서 역전했다 라는 결과보다는 그냥 어떤 분야에 이 알고리즘을 어떻게 적용 시켰더니 결과가 좋더라... 뭐 이런 식이다. (다 그렇다는건 아니고... 어디까지나 대부분이... ) 아예 새로운 뭔가를 만들어 냈다는건 더더욱 가뭄에 콩나듯이 찾기 힘들다. 사실 내 생각에도 우리나라 같이 수학적으로 풀어내는데 주력이되고 수학적 이론을 뭔가 발전시키고 이런 공부가 전혀 안되있는 환경에서는 뭘 더 발전시킬래야 발전 시킬 껀덕지가 있어야지... 수식을 보면 그걸 이해하기보다는 풀어내는데 급급한데...

공학자라는게 사실 그런입장이라는 걸 모르는건 아니지만 늘 아쉽다. 외국애들 알고리즘이라고 만든거 보고 움찔움찔 한다. 생각도 못한 거다 사실. 기본적인 고등학교 정석에나 나오는 그런 공식들도 곧잘 이용해서 새로운걸 만들어낸다. 참 이런거 볼때마다 난 이제까지 무슨 공부를 해온것인가... 회의적인 생각도 든다.

- 마지막 사족 -

그렇다. 유전 프로그래밍이건... 유전 알고리즘 이건 문제는 이녀석들 자체로는 돈이 안된다. 그래 돈이 문제지. 이녀석 자체로 돈버는건 미국에서나 가능한 거고... 우리나라에서 "유전프로그래밍 전문가 입니다." 그래서 넌 뭘할줄 아는데?... 글쎄
유전프로그래밍 전문가래잖아. 그래서 그걸로 뭘 할수 있는데... 이것저것... 근데 어쩌라고. 뭐 이런식? 그렇다. 알고리즘에 대한 중요도는 어디서 굴러먹다온 개뼉다귀만도 못한거다. 알고리즘 자체만 갖고는 아무것도 못하는게 문제... 이걸 어디다가 적용시켜야 그게 비로소 가치를 발한다. 알고리즘 자체가 엄청 발전되어 있다면 물론 적용 시켰을때 좋은 결과를 기대해 볼 수 있다. 하지만 그것만 가지고 있다고 해서 인정해줄 사람은 적어도 난 우리나라 에서는 없다고 본다. 학계에서 논문이 응용분야 적용에 대다수를 차지하는 것도 그런 이유라고 생각한다. 공학이니까. 돈의 논리가 적용되야하는 공학이니까. 하지만 한편으로는 아쉽다. 어디에다가 적용시킬 수 있느냐와 적용시켰을 때의 다른것에 비해 엄청난 향상을 이룰수 있다. 이 둘의 균형이 이루어 질 때에 비로소 가치를 발하는 것이라고 생각하지만, 지금 현 상황에서는 누가봐도 어디에다가 적용시킬 수 있느냐에 초점이 맞춰져 있기에... 그냥 개인적으로 아쉬울 따름이다.

P.S 그냥 알고리즘과 적용분야에 대해 연구하는 학생으로서 끄적여 봤습니다.