나의 성장일기

알고리즘, 인생을 계산하다. 본문

독서가 주는 힘/2019년 독서록

알고리즘, 인생을 계산하다.

천진 김 2019. 11. 1. 10:07
728x90

2019년 아흔 한번째 책


알고리즘, 인생을 계산하다

일상의 모든 문제를 단숨에 해결하는 생각의 혁명

저자   브라이언 크리스천톰 그리피스  | 역자          이한음
출판   청림출판  |  2018.3.7.

나의 서평은 한줄로 표현하면 '읽기가 어려웠다.'이다.

모든 인생은 평균적인 처리 루틴에 따라 이루어진다는 내용으로 받아들였다.

우리는 항상 어떤 선택이 올바르고 적절한지 그리고 효과적인지를 고민하며 살아간다.

이런 물음에 이 책은 컴퓨터의 알고리즘을 통해 설명하고 있으며 그런 내용은 우리가 무의식적으로 선택하고 결정을 내리는 것 중에 하나라고 생각한다.

다만 우리는 스스로 내리는 선택에 항상 의문을 가지고 있고 불안해 한다.

이 책은 우리가 결정을 내림에  확률적인 부분과 생각을 통한 불안감을 해소하는 부분에 도움을 줄 수 있지 않을까 생각이 되었다.

나에게 이 책은 다른 사람들의 추천도서였고 찬사를 아끼지 않은 책이었기에 기대가 너무 컷었던 것인지 읽는 내내 책을 접어야 하는지 고민하게한 책이다.

책의 내용이 문제가 아니라 나의 문제일 것이다.

내가 이런 책을 아직은 받아 들일 수 있는 문해력이 부족한 것이다.

책이 머릿속에 머물지않고 맴돌아 나가 버리는 상황이어서 이 책에 시간을 투자해야하나를 고민했다. 그래도 우선 마무리를 하자는 생각에 포기하지 않고 마무리 했다.

매번 생각하는 것이지만 도서관에서 책을 대여해 읽다보니 주요점을 발췌해두는 방법을 사용하지 않아서 나의 뇌리에 남기지 못하는 것일 수도 있다.

아무튼 이 책은 내가 살아가는 인생의 모든 순간에 발생하는 의문에 결정을 도와 줄 수 있는 효과적인 대답을 제공해주는 것은 알겠다.

다만, 내가 아직은 이해할 수 있을 정도의 능력이 되지 않는다는 아쉬움이 남는 책이었다.

조금더 나의 문해력이 쌓이면 다시한번 도전해 보고자 한다.


다음 책 검색


우리는 지원자 수가 늘수록 최고의 사람을 뽑을 확률이 꾸준히 낮아질 것임을 직관적으로 안다. 예를 들어, 우리가 지원자 100명 중에서 무작위로 골라 고용한다면 성공 확률은 1%가 될 것이고, 100만 명 중에서 그렇게 한다면 0.0001%가 될 것이다. 그러나 놀랍게도 비서 문제의 수학은 한결같다. 최적 전략을 따라서 멈춘다면, 지원자 100명 중에 가장 나은 사람을 뽑을 확률은 37%다. 그리고 믿기 힘들지 모르지만, 지원자가 100만 명일 때에도 여전히 37%다. 따라서 지원자 수가 더 늘수록, 최적 알고리즘을 아는 것이 더욱더 가치가 있다. 대체로 건초 더미에서 바늘을 찾아낼 정도로 가능성이 적다는 것은 분명하지만, 최적 멈춤 전략은 건초 더미가 아무리 커도 그것에 대처하는 최고의 방어 전략이 된다. _p. 33 [살펴보는 일을 멈춰야 할 때_최적 멈춤]
아마 노년기를 수십 년에 걸쳐 모은 지식을 이용할 기회라고 여김으로써 얻게 될 가장 심오한 깨달음은 이것이 아닐까? 삶은 시간이 흐를수록 더 나아져야 한다는 것. 지식을 얻기 위해 탐색자가 내놓는 것은 즐거움이다. 앞서 살펴보았듯이, 기틴스 지수와 신뢰 상한 알고리즘은 덜 알려진 대안들의 매력을 우리가 실제로 기대하는 것 이상으로 부풀린다. 즐겁고 놀라운 대안을 발견하면 몇 배 더 큰 보상을 얻을 수 있기 때문이다. 그런 한편으로 이것이 대부분의 상황에서는 탐색이 반드시 실망으로 이어지기 마련임을 의미하기도 한다. 선호하는 것에 주의를 집중하면 삶의 질은 높아져야 한다. 그리고 실제로 그런 듯하다. _p. 33 [가장 최신의 것 vs 가장 좋은 것_탐색/이용]

이로부터 우리는 정렬할 때 고통과 괴로움을 최소화하는 방법이 오로지 ‘정렬해야 할 항목의 수를 최소화하는 것이 아닐까?’ 하고 추론할지도 모르겠다. 그 말이 맞다. 양말 정렬을 계산하는 어려움을 예방하는 가장 좋은 방법 중의 하나는 그저 빨래를 더 자주 하는 것이다. 한 예로, 빨래를 3배 더 자주 하면, 정렬의 총비용을 9분의 1로 줄일 수 있다. 만약 힐리스의 방 친구가 자신의 별난 방식을 고집한다고 해도 세탁을 14일마다 하는 대신에 13일마다 했다면, 빨래 바구니에서 양말을 꺼내는 횟수가 28번이나 줄어들었을 것이다.(그리고 세탁 간격을 하루 더 늘리면 3 0번을 더 꺼내야 할 것이다.) 그렇게 그리 심하지 않은 2주 단위만 해도, 정렬의 규모가 감당할 수 없이 커지기 시작한다는 것을 알 수 있다. 하지만 컴퓨터는 한 번에 수백만 가지의 항목을 일상적으로 정렬해야 한다. 영화 〈조스Jaws〉의 대사를 인용하자면, 그러려면 더 커다란 배가 필요할 것이다. 더 나은 알고리즘도. 하지만 정렬을 어떻게 해야 하고, 어느 방법이 가장 나은가 하는 질문에 답하려면, 먼저 알아내야 할 것이 있다. 어떻게 기록할 것이냐다._p. 119 [질서를 찾다_정렬하기]

요컨대 자기 조직화 목록의 수학은 급진적인 무언가를 시사한다. 당신의 책상에 가득 쌓여 있는 서류 더미는 죄책감을 일으키는 ...혼돈의 산물과는 거리가 멀며, 사실상 가장 잘 설계된 가장 효율적인 구조 중의 하나라는 것이다. 남들에게는 정리 안 된 쓰레기 더미처럼 보일지라도, 사실 그것은 자기 조직화 더미다. 꺼냈던 것을 더미 꼭대기에 던져놓는 것은 미래를 알지 못하는 상태에서 당신이 할 수 있는 최고의 행동이다. 앞 장에서 우리는 무언가를 정리하지 않고 놔두는 것이 시간을 들여서 모든 것을 정렬하는 것보다 더 효율적인 사례들을 살펴본 바 있다. 하지만 여기서는 정리할 필요가 없는 전혀 다른 이유가 있다. 이미 정리를 했으니까._p. 185 [잊어라_캐싱]

예를 들어, 각 과제가 기다리는 고객을 나타낸다면, 가능한 한 그들의 전체 시간을 줄일 방법이 있다. 4일짜리 과제와 1일짜리 과제를 하나씩 일정표에 담고서 월요일 아침을 시작한다고 하자. 목요일 오후에(4일이 지난) 큰 과제를 전달한 다음 금요일 오후에(5일이 지난) 작은 과제를 전달한다면, 고객은 총 4+5=9일을 기다리는 셈이 될 것이다. 하지만 순서를 뒤집어서, 월요일에 작은 과제를 전달하고 금요일에 큰 과제를 전달하면, 고객은 총 1+5=6일만 기다리면 된다. 어느 쪽이든 간에 당신은 주중 내내 일하지만, 고객의 시간에서 총 3일을 절약해주는 게 된다. 일정 관리 이론가들은 이 척도를 ‘완료 시간의 총합sum of completion times’이라고 한다. 완료 시간의 총합을 최소화하는 것은 ‘최단 처리 시간Shortest Processing Time’이라는 아주 단순한 최적 알고리즘으로 이어진다. 언제나 가장 빨리 끝낼 수 있는 과제를 먼저 하라는 것이다._p. 206 [중요한 것부터 하라_일정 계획]

결과적으로, 좋은 예측에는 좋은 사전 확률이 필요하다. 여기에는 많은 중요한 의미가 함축되어 있다. 우리의 판단은 우리의 기댓값을 드러내며, 우리의 기댓값은 우리의 경험을 드러낸다.

목차

 서문 인생의 거의 모든 문제를 해결하는 알고리즘
제1장 살펴보는 일을 멈춰야 할 때 _ 최적 멈춤
제2장 가장 최신의 것 vs 가장 좋은 것 _ 탐색/이용
제3장 질서를 찾다 _ 정렬하기
제4장 잊어라 _ 캐싱
제5장 중요한 것부터 하라 _ 일정 계획
제6장 미래 예측 _ 베이즈 규칙
제7장 생각을 덜해야 할 때 _ 과적합
제8장 그냥 넘어가자 _ 완화
제9장 우연에 맡겨야 할 때 _ 무작위성
제10장 어떻게 연결할 것인가 _ 네트워킹
제11장 남들의 마음 _ 게임 이론
결론 계산 친절


이 책에서 알려주는 11개의 알고리즘
* 최적 멈춤 : 최적 멈춤은 우리가 살펴볼 때는 언제이고 뛰어들 때는 언제인지 알려준다. 
* 탐색/이용 : 자신에게 남은 시간이 얼마나 되는지 예민하게 의식하게 될 때, ‘탐색/이용’이 필요하다.  
* 정렬하기 : 어떤 문제라도 기준을 정하면 정렬을 확장하는 계산 문제로 바뀌면서 풀린다. 
* 캐싱 : ‘캐싱’은 컴퓨터의 기억 구조에서 중요한 역할을 하며 인간 삶의 온갖 저장 체계와 기억 은행을 보는 새로운 관점을 제시한다.
* 일정 계획 : 시간을 배분하는 다양한 알고리즘을 통해 우리는 일과 인생의 균형을 맞춰갈 수 있다. 
* 베이즈 규칙 : ‘베이즈 규칙’이란 한 사건이 발생했을 때 이 사건을 근거로 알고자 하는 사실의 가능성을 추측하는 것이다.
* 과적합 : 가장 단순한 것이 최고의 계획일 수도 있다. 우리의 기댓값이 불확실하고 자료에 잡음이 많을 때, 최선의 방안은 폭넓게 생각하는 것이다. 이렇듯 ‘과적합’ 상태에 놓인다면 생각을 덜해야 한다. 
* 완화 : 우리는 완화를 통해 현실과 실제로 타협할 수 있게 되며 완벽함을 추구하느라 하염없이 세월을 보내지 않을 수 있다. 
* 무작위성 : 무작위 알고리즘은 때로 모든 결정론적 알고리즘보다 더 빨리 어려운 문제의 좋은 근사적 해답을 내놓을 수 있다. 인생도 마찬가지다. 때로 철저히 추론하여 답을 얻으려고 하기보다 그저 우연에 맡기는 것이 어떤 문제에 대한 최고의 해답일 수 있다. 
* 네트워킹 : 메시지가 전달되고 있는지 어떻게 알 수 있는가? 네트워킹 버퍼가 가득 차면 모든 패킷을 그냥 거부함으로써 사실상 삭제한다. 우리 인생도 마찬가지다. 누군가의 기다림이 길어지게 하지 말라. 기다릴 수 있을 만큼만 줄을 세워라. 기다릴 수 없을 것 같다면 거부하라. 그래도 달라지는 것은 없다.
* 게임 이론 : 모든 게임에는 경쟁자가 있다. 우리는 경쟁 상대의 반응을 고려해 자신의 최적 행위를 결정해야 하는 상황에서 의사 결정을 내려야 한다. 컴퓨터과학의 게임 이론은 말한다. “전략을 바꾸어도 도움이 되지 않는다면 게임 자체를 바꾸려고 시도하라.” 무엇보다 정직이 우선인 게임을 찾는 것이 가장 좋다. 


최적멈춤
책은 "비서문제"를 소개하고 어떻게 37% 법칙이 나오게 되었는지 설명한다. 이 알고리즘은 주어진 시간동안 여러개의 후보를 살펴보고 최적의 선택을 해야할때 적용할수 있다. 확률적 실험을 해본결과 최상의 전략은 총 후보들중 37% 까지 살펴보고 그 이후에 나오는 후보들 중 더 뛰어난 후보가 나타나면 바로 선택하는 것이다. 놀랍게도 이 전략을 통해 최상의 답을 찾을 확률도 37%에 수렴한다. 이것은 보기드문 수학적 대칭성을 지닌 사례라고 한다.


 이 37% 법칙은 후보군이 늘어날수록 그 진가를 발휘한다. 100개의 후보중 37%의 확률로 최상의 답을 찾을 수 있듯이 100만개에서도 마찬가지로 확정적으로 37% 법칙을 적용할수 있다는 점이다. 물론 여전히 63%라는 큰 실패확률에도 불구하고 최고의 방어 전략임에 틀림없다. 책은 비서들이 선별 기준이 되는 스펙(학점, 영어점수..)을 가지고 있다고 가정한 변형된 "비서문제" 도 다룬다.

탐색/이용
 저녁때 외식을 하기로 했다. 어떤 식당을 갈까? 라는 고민을 하기 마련이다. 이 문제는 컴퓨터과학자가 50여년간 균형을 찾기위해   애써왔던 "탐색/이용 트레이드오프"이다.
우리를 둘러싸고 있는 세계는 익숙하고 검증된 영역이 있는가 하면, 그 너머에는 전혀 경험하지 못한 미지의 영역이 존재한다. 탐색 과 이용의 균형은 이용 가능한 시간과 깊은 연관이 있다고 한다. 내일 지구에 운석이 떨어져 멸망한다는 뉴스를 봤다고 가정했을때 오늘 모임에 나가 새로운 친구를 사귀는 것과 사랑하는 사람과 함께하는 것 중 뭐가 더 가치있다고 느낄까? 가치가 있다는 것은 행복감을 느끼는 정도로 볼 수있겠다. 이럴때 당연하게도 대다수의 사람은 사랑하는 사람과의 시간을 선택할 것이다. 하지만 이용 가능한 시간이 충분할때 다음과 같은 확률이 존재한다고 한다. 주목할 점은 승/패가 0/0일때 즉, 새로운 것에 대한 기대값이 90프로에 육박한다. 과학적으로 새로운 것을 탐구하는 것이 얼마나 현명한 선택인지를 입증한 셈이다.


정렬
 컴퓨터과학에서 정렬(Sorting)은 데이터를 특정 기준에 의해서 다시 배열하는 것이다. 일상생활에서 책장에 책을 순서대로 꽂는 일도 정렬이다. 
 미국에서 1880년대에 인구조사에서 자료를 정리하는 데 막대한 시간과 비용이 발생했다. 이 문제해결에 지대한 공을 세운 인물인 허만 홀러리스는 카드에 구멍을 뚫어 자료를 분류하는 기계를 만들었다. 이를 계기로 그가 세운 회사는 1900년대 초 우리가 익히 알고있는 IBM(International Business Machine) 이라는 회사가 되었다.


 
 컴퓨터 과학의 발전에서 정렬은 큰 의미를 갖는다. 1960년대의 한 연구에 의하면 컴퓨터 자원의 무려 1/4이 정렬문제 해결에 사용되었다고 한다.
 정렬과 같은 알고리즘의 성능을 이야기할때 빠질 수 없는 개념이 빅오(Big-O)이다. 정확한 예측이 아닌 문제의 크기에 비례한 작업 시간에 관계에만 관심을 둔다. O(1) 상수시간, O(N) 선형시간, O(N^2) 2차시간 순으로 느려진다.
 존 폰 노이만이 1940년대에 최초로 도입한 합병 정렬은 컴퓨터 과학 분야에서 전설로 기록된다. 이 정렬의 성능은 O(N*logN)으로 선형로그 시간이다.

다른 서평

http://blog.naver.com/PostView.nhn?blogId=jjhan94&logNo=221694526276

http://blog.naver.com/PostView.nhn?blogId=lshvig&logNo=221620170404

'독서가 주는 힘 > 2019년 독서록' 카테고리의 다른 글

친구의 친구  (0) 2019.11.03
냉정한 이타주의자  (0) 2019.11.02
뇌(하)  (0) 2019.10.27
뇌(상)  (1) 2019.10.25
칼의노래  (1) 2019.10.23