『알고리즘, 인생을 계산하다』 브라이언 크리스천, 톰 그리피스

세상을 살아가다 보면 선택의 기로에 서게될 경우가 참 많다. 어쩌면 하나하나 선택의 연속이다. 대부분 늘 하던대로 선택을 하기도 하지만, 때때로 결정장애를 일으키며 큰 고민에 빠지기도 한다. 『알고리즘, 인생을 계산하다』는 결정장애를 겪고 있는 사람들에게 가장 합리적인 결정이 무엇인가에 대한 길을 제시해 주는 책이다. 물론, 그렇지 않은 사람들에게는 이때까지 해왔던 선택은 합리적이었는가에 대해서 다시금 생각해보게 되는 기회를 제공해 주기도 한다.

하지만, 『알고리즘, 인생을 계산하다』를 가장 흥미롭게 읽게 될 사람은 역시나 컴퓨터 프로그래머일 것이다. 삶을 살아가면서 직면한 선택의 상황마다 특정 알고리즘을 적용하면 가장 합리적인 선택을 할 수 있다는 내용은 역시나 개발자들의 구미를 댕기기에 충분하기 때문이다. 특히나, 정렬과 검색에 대한 이야기는 개발자로서의 길에 진입한 이에게는 이제 막 습득한 내용과 비교하며 희열을 느끼게 해주고, 이미 많은 경험을 가진 개발자들에겐 일에 치여 평소엔 생각치 못하던 알고리즘의 기본들을 되새김질 해볼 수 있는 기회가 될 것이다.

책을 읽다 보면 나이와 탐색/이용에 대한 딜레마를 다룬 내용이 등장한다. 단적인 예로 이미 검증된 맛집을 다시 방문하는 것이 좋은가, 아니면 새로운 맛집을 찾아 탐방을 가는 것이 좋은가에 대한 선택에 있어서 나이가 중요한 파라메터가 된다는 내용이다. 더 간단히 이야기 하자면, 인생의 절반 이상을 산 사람에게는 기존에 방문했던 맛집을 가는 것이 좋고, 그렇지 않은 사람이들에게는 새로운 맛집을 찾아 나서라는 간단한 결론을 얻을 수 있다. 하지만, 그것은 기존 맛집이 그 맛을 유지하며 그대로 존속한다는 가정이 있어야 가능한 것이고, 새로운 도전은 그 도전 자체로도 매력이 있다는 것을 감안하면 알고리즘대로 살아간다는 것이 꼭 만족감을 보장하는 것은 아닐 것이다.

캐시에 대한 이야기도 흥미롭다. 컴퓨터는 빠른 속도의 저장장치와 느린 속도의 저장장치 사이의 간극을 조정하기 위해서 여러 단계의 캐시메모리를 가지고 있다. 그리고, 그 캐시메모리에 과연 어떠한 정보를 담을 것인가를 결정하는 알고리즘 중 가장 자주 사용되는 방법은 LRU(Least Recently Used)라고 불리우는 알고리즘인데, 인생에서도 이러한 알고리즘을 적용할 수 있다. 즉, 캐시메모리가 가득 차서 비워야 할 경우, 최근에 가장 덜 사용한 데이터를 제거하는 방법이다. 뒤집어 말하면, 캐시 메모리에는 최근에 가장 자주 사용될 데이터가 저장되어 있어야 캐시적중률이 높아 진다는 뜻이다. 실생활에서 자주 사용하는 것들은 책상 위에, 잘 사용하지 않는 것들은 서랍에, 그리고 어쩌다 한 번 사용할까 말까하는 것들을 창고에 넣어 두는 것이 그러한 예일 것이다.

노화로 인해 기억력이 예전같지 않은 이들에게 위로가 될 만한 내용도 있다. 아이들에 비해 노인들이 기억이 가물가물하고 잘 생각이 나지 않는 것에 대해서 슬퍼하지만, 아이들에 비해서 데이터가 많기 때문에 검색에 오랜 시간이 걸리기 때문이라고 한다. 즉, 아는 것이 많아서 찾는데 오래 걸릴 뿐이니 너무 슬퍼하지 말라는 뜻이다. 정말 위로가 되지 않는가!

내가 근래에 관심을 갖기 시작한 베이즈이론에 대한 이야기도 등장한다. 최근에 각광받고 있는 머신 러닝 기술은 수많은 데이터를 필요로 한다. 하지만, 그렇게 많은 데이터가 없는 경우는 어떻게 선택의 기로에서 합리적인 결정을 할 것인가! 그 답은 역시 베이즈 이론일 것이다. 무엇인가 얼마나 오래 지속될지 예측하고 싶은데 아무 정보도 없다면 합리적인 가정은 무엇을까? 최상의 추측은 지금까지 존속한 만큼 지속될 것이라고 가정하는 것이다. 물론 이러한 추측은 아무 정보도 없을 때 그나마 최선의 방법이라는 것이지, 이 방법이 적중율이 높은 것은 아니다. 베이즈 이론 역시 사전확률을 계산할 여지가 있는 데이터가 많을 수록 적중율이 올라간다. 베이즈 이론이 인간의 직감이랑 가장 연관이 깊다는 설명이 있는데, 종종 베이즈이론이 나에게 어렵게 다가오곤 하는 것을 보면 동의하기는 어렵다. 아니면 나의 직감이 그리 좋은 편이 아니거나...

인간관계를 유지하는 방법에 대해서 지수 백오프를 이용하라는 조언은 내가 이미 비슷하게 사용하고 있다는 생각에 피식하게 만들었는데, 관계를 아예 끊어 버릴 만큼 나쁜 사람은 아닌데 만나면 나를 화나게 만드는 사람이 있다면 지수 백오프 알고리즘을 사용해 보자. 즉, 처음에는 한달에 한 번 보다가 만나서 기분이 좋지 않다면 다음에는 두 달에 한 번, 그래도 기분이 좋지 않다면 네 달에 한 번, 이렇게 하다 보면 마음이 잘 맞는 사람은 자주 보게 되고, 잘 맞지 않는 사람은 가끔 보면서 가까스로 관계는 유지가 될 것이다. 물론, 실상은 덜 바쁜 사람끼리 자주 만나게 된다는...

이 밖에도 탐색 비용을 줄이기 위한 라그랑주 완화, 밀러-라빈 소수 판별법 등에 대한 이야기도 흥미로웠다. 선택을 할 때 그냥 감정에 이끌려 결정을 내리기 보다는, 이렇게 합리적으로 생각을 하다 보면 늘 성공하는 것은 아니지만, 조금씩 조금씩 인생의 추가 포인트를 누적할 수 있을 지 않을까 한다. 이런 것을 계산적 금욕주의라고 한단다.

이상욱