기타. 알고리즘과 적용에 대한 작은 생각들(주로 유전프로그래밍)
본 글은 어떤 일반론적인 생각도 아니고 어디까지나 제 자신의 개인적인 생각들 임을 사전에 밝히도록 하겠습니다. 짧은 지식을 통해 나오는 생각들이기에 편협할 수도 있고, 좁은 식견이 확 보일수도 있고 정리가 안된 그냥 머리속 튀어나오는 대로 쓰는거지만... 그냥 한번 써보렵니다. 사족이므로 반말나갑니다.
- 다른 녀석들을 봤을 때 유전프로그래밍이라는 것의 가능성... -
우선 신경회로망 이라는 녀석. 많이 알고 있는 녀석은 아니지만 태어난지 매우 오래되었음에도 불구하고, 과거의 알고리즘에 비해 심대한 변화는 없는 녀석이다. 다층 퍼셉트론 이후에 오류역전파 알고리즘, 그것들을 제외하고는 어째 크게 발전은 없는 모양이다. 사실 내가 크게 관심이 없어서 그럴수도 있지만, 여러 논문을 검색해 보았을때 다 고만고만 하다. 신경회로망을 어디에다가 적용시켰느냐가 초점이 되는 것이지, 신경 회로망 자체를 어떻게 바꾸었느냐는 그다지 관심들이 없는 모양이다. 더이상 바꿀게 없는건지, 저것 자체로도 충분한건지... 많이 발전되었다고 보인다 해도 사실 다층 퍼셉트론의 컨셉에 오류역전파 알고리즘의 약간 변형된 형태를 크게 벗어나지는 않는것 같다. ( 어디까지나 내가 잘 몰라서 그런걸수도... )
그리고 유전 알고리즘... 요샌 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 그냥 알고리즘과 적용분야에 대해 연구하는 학생으로서 끄적여 봤습니다.
Trackback
Trackback Address :: http://www.shhyun.com/tc/trackback/90


Comments
굿!
아잉~~
머쨍님아 ㅋㅋ
부끄럽게 ㅋㅋ
GP 에 대해서 검색하다가 들렸습니다~
뭐, 여러가지로 동의하기도 합니다. 다르게 생각하는 부분으로는....
먼저 영어... 대학원 수준에서는 어차피 한글로만 공부한다는 자체가 잘못됐다고 생각합니다. 저는 GP 가 아닌 분야의 대학원생인데, 다른 분야도 마찬가지입니다. 학부 수준에서는 최신 기술 보다는 기초를 닦는데 주력을 해왔기 때문에 문제가 안될 수도 있지만, 애당초 대학원 분야에서 최신 동향을 살피는데는 어차피 영어가 필수적이라고 생각합니다. 이 얘기는 잠시 접구요.
GP 자체에 대해서 생각해보면, 일단 GP 는 meta-algorithm 이기 때문에 GP 자체만 개발해서 돈을 번다는 것은 GP 자체에 대한 방향이 잘못된건 아닌가 개인적으로 생각해봅니다. GP + a 의 관점에서 실용성을 따질 수는 있겠지만, GP 자체로는 실용성이 아에 없는 것이 정상이라고 생각하거든요. (저는 GP 를 인공 생명 쪽이나 그래픽 쪽에 접목 시키려고 합니다.) 실제로 GP 논문을 보면, GP 자체를 설명하기 위해 다른 알고리즘을 설명하거나 다른 problem 을 제시하죠. 만약 전문적인 GP 프로그래머라면, 어떤 상황에서든 원하는 문제를 GP 화시켜서 GP 로 솔루션을 제공해야 하는데, 이건 워낙 어려운게 아니니까요. 그렇기 때문에 연구 목적이 아니라면, 다른 것과 접목시켜서 생각해야하는 것이 맞지 않나.. 생각합니다.
위와 같은 이유 때문에, 사실상 학부에서 GA/GP 에 대해서 많은 시간 할애하기 힘들다고 생각합니다. 저희도 AI 시간에 GA에 대해서 몇시간 설명한걸로 그쳤습니다. GA/GP 를 가지고 학부 수준에서 써먹을 만한게 적다는 것이죠. 그것을 실용화 시키려면 대학원 수준에서 해결해야 하는데, 대학원 수준이라면 (여러 이유로) 영어로 보는게 자연스러운거라 생각합니다.
에고... 말이 너무 많았나요? ^^;;
자주 들르겠습니다~
저는 알고리즘에 대한 상황과 인식이 참 아쉬워서요 ㅎㅎ
와 같은 물리엔진을 들 수 있는데,
생각해보면 미분,적분과 경제성을 논하는 것과 별 차이 없으니;;
어떤면에서 알고리즘이라는 건 말씀하시는 것과 같이
실용성이 전혀 없는게 정상입니다만...
하지만 다른 한편으로 생각해보면
이것은 하나의 도구인데, 마치 연장같은 건데
그 연장을 잘 쓴다는거 자체로 뭔가를 얻어내기는 힘드니 ㅎㅎ
비유가 좀 이상하지만, 이것은 마치 공사장의 굴삭기랄까요?
단지 그 형상이 형상화되어있지 않고, 실체를 알기 어려운 무엇이기에
분명 어려운 도구이고, 어떤면에선 매우 훌륭한 도구임에도
알고리즘들의 대부분은 그것으로 인정받기는 어려운 것 같아서요.
그냥 조금 많이 아쉽다랄까요... ^^
영어의 문제는 사실 일본이 너무 비교되는것 같아서 그렇습니다.
일례로 ODE(Open Dynamics Engine 약자가 맞나모르겠네요
말그대로 물리엔진이기에 특수한 목적 외엔 쓰일일이 거의 없죠.
이것 자체의 서적을 찾아보면, 일본어로 된 책 외에는 전무합니다.
사실 연구라는 것이 영어를 연구하는 것은 아니기에,
분명 영어를 잘 못하면서도 알고리즘이나 다른 실력이 뛰어난 사람도 있는데도, 바로 옆나라인 일본에는 전문 번역가들이 즐비해서 이런 특수한 목적의 책들조차도 일본어로 바로바로 나오는 반면,
우리나라에서는 영어 배워서 알아서 네가 익혀라. 라는 식이니
그냥 좀 많이 아쉬워서 푸념을 팍팍 해봤습니다.
전공서적의 경우에도 사실 이젠 왠만한 원서 읽는데 지장이 많이 적어졌습니다만, 그래도 한글이 편한건 어쩔수 없죠.
이런면에서 일본이 부러워서 막 푸념을 늘어놓았었네요
하하...
제가 실력이 좀 더 좋고, 글쓰는 재주가 좀 더 있었으면
이때도 그렇고 지금도 그렇고 좀더 정리를 했었겠지만...
이때는 제가 아마 좀 많이 피곤한일이 있었을 때 였던것 같군요.
왠지 님 블로그에 가보니 당장 뭔가 코딩하고 싶어지는 의욕이 불끈불끈 들었습니다 ㅎㅎ
하지만 눈앞에 과제가... 대략 100메가톤급으로 쌓여있어서;;
예전에 개인적으로 쓰려고 GP 소스를 짰었습니다. 완전 추상화 되어 있고 상황에 맞게 상속해다가 쓰는 것이죠. 템플릿 남발에.... 추상 클래스 남발.....
말씀하신대로 필요할때 쓰는 알고리즘으로 생각을 한다면 납득이 가긴 하는데, 그러기에는 너무 배워야 될것들이 많다는 게 문제죠.
그런데 사용이 어려운건 둘째치고, 그걸 일반화해서 쓸만하도록 만드는 구조가 정말 참 어렵더군요. GP 자체에 메소드가 엄청 다양하니까 그걸 다 일일이 직접 구현하거나 선택해서 돌아가도록 해야 되는데.... 훔....
아무래도 GP 가 실질적인 사용화 툴 같은 걸로 사용되기 보다는 역시 학술적인 것밖에 길이 없을 것 같습니다. (결국 GP 하려면 교수가 길인지... -_-;
영어의 문제는..... 하긴 일본 얘기가 나오면 우리나라가 확실히 자료가 부족하긴 부족합니다. 일본에서는 왠만한 책들이 다 번역해서 나온다더군요.
전 그래도 논문은 어차피 누가 번역해주는게 아니니까..... 라고 생각하면서 그냥 영어에 익숙해지는게 나을 것이라는 생각만 하고 있습니다.
아... 저도 눈앞에 과제가 산떠미있네.. 이렇게 인터넷하고 있네요. ㅜ_ㅜ
에휴휴.... 저도 과제를 좀 덜어내면 다시 생각해둔 GP 관련 프로젝트들 좀 다시 해봐야겠습니다.
하지만 과제가 과연 끝날지는..... -_-;;