shurain

Harmless stuff is for the weak.

Evolution

Feb 20, 15

진화 연산을 공부하면서 자연스레 진화에 대해 생각하게 되었다. 직접 진화 연산 프로그램을 작성하면서 우리가 학교에서 진화에 대해 배우는 것이 겉핥기였다는 생각이 들었다. 사실은 엄밀하고 정확하게 배웠지만 내가 이를 소화할 수 없었는지도 모른다.

진화는 매우 느린 과정이다. 전통적인 유전 알고리즘에서는 개체의 선택, 유전 정보의 교차 및 변이, 개체의 교체 연산만 사용해서 최적화를 한다. 이렇게 되면 좋은 해를 찾는 것이 매우 오래 걸리는 것을 볼 수 있다. 특히 강력한 지역 탐색 알고리즘과 비교해보면 엄청난 차이가 난다. 진화 연산에서는 진화 과정에 지역 탐색 엔진을 탑재해서 좋은 해를 찾는 속도를 가속하지만 현실의 진화 과정에는 따로 지역 탐색 알고리즘이 장착되어 있지는 않다.

어린 시절, 왜 몸에 좋은 음식은 맛이 없을까 고민했었다. "진화"라는 마법적인 과정이 있어서 생명체가 더 나은 방향으로 변해간다 하는데 몸에 나쁜 음식이 맛있고 몸에 좋은 음식이 맛없는 현실이 이해되지 않았다. 당시에는 진화가 엄청나게 느린 과정이라는 것을 몰랐다. 그보다 더 큰 문제로 진화의 방향이라는 생각도 잘못되어 있었다.

진화는 방향성이 없다. 조금 더 정확히 말하자면 진화 과정은 사람이 흔히 생각하는 좋은 방향에 대해서 전혀 관심이 없다. 주어진 환경에서 상대적으로 높은 적합도와 상관관계가 높은 유전 정보가 자연 선택에 의해 다음 세대로 이어지는 과정일 뿐이다. 진화 연산의 관점에서 바라보면 이는 당연하다. 진화는 그저 적합도를 최대화하는 유전 정보를 찾는 최적화 알고리즘일 뿐이다.

몸에 나쁜 음식이라고 이야기하는 것들을 맛없다고 느끼려면 변이에 의해 그런 기질을 갖게 된 사람들이 더 자연 선택될 확률이 높거나 교체당할 확률이 낮다거나 해야 한다. 몸에 좋은 음식이니 나쁜 음식이니 하는 것들을 진화는 신경 쓰지 않는다.

한발 더 나아가서 진화의 결과로 개체가 몰살의 위기에 처할 수도 있다. 환경이 변하지 않는 상황에서 모든 개체가 유전 정보를 자유롭게 주고받을 수 있으면 모든 해가 같아지는 현상을 쉽게 볼 수 있다. 이렇게 다양성이 떨어지면 지역 최적점에서 빠져나오기 무척 어렵다. 이를 피하고자 진화 연산에서는 변이 확률을 크게 주거나 서로 자유롭게 유전 정보를 주고받을 수 없게 한다든지 아예 해집단을 재시작하곤 한다. 하지만 자연에서는 잘못된 지역 최적점에 빠지면 결국 멸종의 길을 걸을 수밖에 없을 것이다. 개체의 입장에서는 절대 피하고 싶은 일이지만 진화는 신경 쓰지 않는다.