Feynman Algorithm (파인만 알고리즘)

미국의 유명한 물리학자 리처드 파인만은 다음과 같은 ‘일반적인’ 문제 해결법을 제시 했다.

1. Write down the problem.
2. Think real hard.
3. Write down the solution.

1. 문제를 쓴다.
2. 열심히 생각한다.
3. 답을 쓴다.

한 십년쯤 전에 이 걸 처음 봤을 때는, 황당하다고 생각했고, 파인만 같은 천재들에게나 해당하는 문제 해결방법이라고 생각했다. 몇 년 후 시간이 흘러서, 대학원생일 때 이걸 다시 봤을 때는 2번 항목에 감명을 받았었다. 문제를 ‘직접’ 해결하는 방법 중에, 저 방법 말고 다른 방법이 도대체 뭐가 있을까를 생각 했다. 열심히 생각하는 것 이외에 문제를 해결하는 방법은, 답을 아는 사람에게 물어 본다 따위가 있을 수 있겠으나, ‘직접’ 해결하는 방법은 아니다. (물론, 답을 아는 사람에게 물어 보는 해결 방법에서도, 누가 답을 알고 있을 것인지에 대해서 열심히 생각해 봐야 한다.)

2011년, 이제 와서 다시 이 문제 해결방법에 대해서 생각하게 됐다. 여전히 2번에 대해서는 강한 동의를 하고 있지만, 지금 감명 받은 부분은 1번 항목이다.

‘문제를 쓴다.’

이것은 내가 풀어야 할 문제가 정확히 무엇인지를 알고 있을 때만 할 수 있는 것이다. 당연하다. 문제가 뭔지 모르는 데, 문제를 어떻게 쓸 수가 있을까? 그런데, 많은 경우에 우리가 풀고 싶은 문제가 도대체 무엇인지 정확히 알지 못한다. 풀어야 할 문제를 정확히 알고 정확하게 기술할 수 있는 경우는 얼마 되지 않는다. 그래서 아무리 생각해 봐야, “문제”를 풀지도 못 하고, 소위 ‘삽질’만 하게 된다.

파인만이 제시한 문제 해결 방법 1단계, 2단계, 3단계는 같은 크기의 중요성을 갖는다고 생각한다. 두번째 단계가 가장 어려워 보이지만, 실제로는 첫번째도 그에 못지 않게 어려우며, 세번째도 어려움으로는 뒤처지지 않으며 비슷한 수준으로 중요하다.

파인만의 문제 해결 방법은 ‘일반적인’ 경우에도 모두 적용된다고 생각하고, 내가 지금 이야기 하고자 하는, 1단계의 중요성 역시 적용된다고 생각한다. 하지만, 내가 그런 이야기를 할 수 있을 만큼, 인생 전반에 대해서 경험과 내공이 많지 않으니, 그래도 남들보다 조금 더 시간을 투자했다고 할 수 있는, 공부하고 연구하는 것에 대해서 이야기 해 보겠다.

공부를 하면서 만나는 많은 연습 문제들과 시험 문제들은, 1단계를 누군가가 잘 해 놓은 것이다. 문제는 아주 잘 씌여져 있다. 그래서 1단계가 필요없다. 대신, 이런 경우에 1단계는, 문제를 ‘잘’ 읽는 것이다. 그래서 문제가 무엇인지를 정확히 ‘인지’ 해야 한다. 문제를 푸는 방법은 알고 있었는데, 문제를 잘 읽지 않아서, 잘못된 답을 해 본 경험이 꽤 있을 거라고 생각한다. 그래도, 이런 경우에는 조금만 조심하면 1단계는 비교적 쉽게 넘어갈 수 있다.

내가 1단계를 직접 해서, 문제를 써야 하는 경우는 굉장히 어려울 수 있다. 연구를 해서, 논문을 써야 하는 경우를 생각해보자. 많은 연구 초심자들은 (나같이) 도대체 어떤 문제를 풀어야 하는지를 모를 때가 많다. 연구라는 것을 처음 시작하는 사람들은, 아예 감도 잡지 못 한다. 석사과정 학생들에게, 혹은 박사과정 학생들 까지도, 지도교수가 논문 주제를 던져주는 경우가 많은 이유이다. 어떻게 해야 도대체 ‘문제’ 라는 것을 발견할 수 있는 지를 모른다.

조금 감을 잡았다고 해도, 여전히 문제를 정확히 기술 하는 1단계를 통과하기에는 많은 과정들이 남아있다. 예를 들어서, ‘대형 지진 발생 이후의 대처법’ 이라는 것에 대해서 관심이 생겨서 연구를 하기로 했다고 하자. 이것은 ‘연구 분야’가 될 수는 있을 지언정, ‘문제’는 전혀 아니다. (사실 연구 분야라고 부르기에도 너무 범위가 넓다.) 조금 더 범위를 좁혀서 ‘대형 지진 발생 이후의 적절한 구호 물자 운송방법’ 에 대해서 연구를 하기로 했다고 하자. 많이 양보해서 이건 논문의 ‘제목’은 될 수 있어도, 문제는 아직 아니다. 사실, 논문의 제목보다는, 저런 유사한 여러가지 문제에 대해서 기술한 ‘책’의 제목으로 더 적합하다고 생각한다.

이제 범위를 좁혔으니, 무엇이 정말 ‘문제’가 되는지를 알아야 한다. 사실 이것은 쉬운 일은 아니다. 내가 ‘만들어낸’ 문제와 ‘실제로 발생하는’ 문제는 전혀 다를 수도 있기 때문이다. “Financial calculus: an introduction to derivative pricing” 이라는 책의 서문에 보면, 많은 사람들이 잘못된 문제에 정확한 답을 찾기 위해서 헛수고를 하고 있다고 나온다 — finding precise answers to the wrong questions. 파인만 문제 해결법의 첫번째 단계에서 실수를 범했기 때문이다. (거론한 책을 읽어 보지는 않았다. 우연히 서문을 잠깐 읽게 되었고, 저 부분에서 감명을 받아, 기억하고 있을 뿐이다.)

위에서 언급한 지진 발생 이후의 물자 운송방법이라는 주제에 대해서, 있을 법한 문제로는 다음과 같은 것이 있다. (내가 정확히 연구하는 분야가 아니기 때문에, 말이 안 될 수 도 있겠다.)

–  A 라는 빈도로 B 라는 지역에서 구호 물자에 대한 수요가 발생할 때, 얼마나 자주 C 지역에서 B 지역으로 물자를 수송해야 할까?

이것은 ‘문제’ 이다. Problem 혹은 question 이긴 하지만, wrong question 일 수는 있다. 예를 들어서, 실제로 B 라는 지역에서 수요는 A 라는 빈도로 발생하는 것이 아니라, AA 라는 빈도로 발생한다고 하면, 이것은 wrong question 이다.

파인만 문제 해결방법 1단계를 제대로 하지 않은 다른 경우도 있다. 예를 들어서, A 라는 ‘분야’에 B 라는 모델을 적용시켜보았다 라는 논문을 쓸 수도 있겠다. 이것은 문제를 해결한 것이 아니라, 단순히 논문을 한 편 쓴 것이고, 당연히 좋은 논문은 아니다. 좋은 논문이 되려면, ‘A라는 분야에서 발생하는 C 라는 문제를 해결하기 위해 B 라는 모델을 이용했다.’ 정도가 되어야 한다. 좋은 논문이 되기 위해서는 우선 좋은 문제가 있어야 한다.

이 글을 쓰게 된 동기는, 내 자신을 반성하기 위해서 이다. 여지껏 내가 쓴 논문들은 (몇 편 되지도 않지만) 좋은 문제 없이, 열심히 “답”을 구한 논문들이 많다. 아마 대부분일 것이다. 그리고, “문제”가 풀리지 않아서 결국 포기 했던 것들은, 거의 모두가 실제로는 문제를 찾을 수가 없을 때였다. 문제가 무엇인지 명확하게 알고 있을 때는, 열심히 하면 대부분 문제가 풀렸다. 논문은 아니지만, 컴퓨터 프로그램을 작성한 것이 결과가 제대로 나오지 않는 경우, 소위 버그가 있는 경우를 예로 들어 보자. ‘결과가 제대로 나오지 않는다. 어떻게 제대로 나오게 할 수 있을까?’는 좋은 문제가 아니다. 좋은 문제가 되기 위해서는 몇가지 단계로 나누어야 한다. (1) 어떤 결과가 제대로 나오고, 어떤 결과가 제대로 나오지 않는가? (2) 결과가 제대로 나오지 않는 것은 잘못된 코드 때문인가, 혹은 잘못된 알고리즘 때문인가? 더 나아가서, 알고리즘이 풀려고 하는 문제 자체가 잘 못 된 것인가? 등으로 나누어서 문제를 정의 하고, 열심히 생각하면, 대부분 해결 된다.

고민이 있을 때는, ‘문제’가 무엇인지를 명확히 구체화 시켜 보자. 열심히 생각하면 그 문제를 해결 할 수 있을지도 모른다. 문제를 명확히 구체화 시킬 수 없을 때는, 두 가지 경우가 있을 수 있다. (1) 문제가 아니다. 그러므로, 고민 거리가 아니다. (2) 내 능력으로는 문제를 구체화 시킬 수 없다. 고로, 당연히 문제를 해결 할 수도 없다. 고민 거리가 아니다.

파인만은 위대하다.

세 번째 단계 ‘답을 쓴다’ 에서도 여러가지 어려움이 발생한다. 이것에 대해서는 스크롤바가 너무 많이 내려왔으므로, 다음 기회에 이야기 해 보기로 하자. 그리고 제대로 된 문제를 좀 더 쓰고, 풀어 보고, 답을 구하고, 답을 써 보고 난 다음에 이야기 하기로 하자.

You may also like...

18 Responses

  1. Doosan Back says:

    지금 전자기학 숙제 하다가 하도 안풀려서 멍하니 있었는데 이글 보고 나니 왜 삽질을 하고 있는지 알겠네요;;;. 문제를 다시 천천히 읽어봐야겠습니다.

  2. 춘구 says:

    창현씨, 잘 읽었습니다. 아주 공감합니다. 저희분야에서는 “너에 가설이 뭐냐?”와 비슷한 것이겠지요. 요즘 계산생물학 분야에서는 NULL-HYPOTHESIS를 기반으로 하는 연구들이 많이 보이긴 하지만, (개인적으로) 그 자체의 시도에는 높은 점수를 줄수 있지만, INPUT/OUTPUT 효율성 부족과 TAKE HOME MESSAGE가 명확하지 않아 보이더라구요.

    좋은글 계속 부탁드립니다.

    • 권창현 says:

      아, 춘구형 반갑습니다. 정말 오랫만이네요. 잘 지내시지요? Null-Hypothesis 기반의 연구라니, 신기하네요. 연구하다가 멘붕이 올 수도 있겠네요 ^^;; 이게 뭐하는 짓이지.. 하면서. 어려워 보입니다.

  3. 무다 says:

    답을 쓴다 에서 발생하는 어려움에 대한 이야기는 언제 볼 수 있을까요..
    아직 답을 쓴다도 아니고 2단계에서 헤매다가 1단계로 돌아가 있는 상태지만… ^^ .
    가장 어려운 것은 1단계인가 봅니다.
    오랜만에.. (10년만인가요?) 글을 보니 반갑네요.

    • 무다 says:

      데자뷰~!! 혹시 10년전에도..??

    • 권창현 says:

      아이구 이게 누구십니까!!! 정말 반갑습니다!! 정말 10년만이네요 ㅎㅎㅎ 잘지내시죠? 블로그 쓰다 보니, 이런 반가운 일도 생기네요.

      그런데 1단계, 2단계라니, 요즘 문제 푸시나요? ^^;;

      데쟈뷰라니, 아마 10년전에도 제가 파인만 알고리즘에 대해서 궁시렁 거리면서 다니긴 했었던 것 같긴합니다.

      • 무다 says:

        이거 혹시.. 10년에 한번 연재되는 건가요? ㅎㅎ
        (1) 문제가 아니다. 그러므로, 고민 거리가 아니다. (2) 내 능력으로는 문제를 구체화 시킬 수 없다
        2번이면 어떻게 하죠?
        문제를 해결할 수 없다..
        끝?
        그럼.. 정말 헉인데..

        그리고 이 코멘트는 왜..수정, 삭제 기능이 없나요?

        • 무다 says:

          핫..쓰고보니 한가지 떠올랐어요.
          능력을 끌어올린다..가 있군요.
          자문자답일세… 하하
          감사합니다. ^^
          더 노력해봐야겠어요.

  4. 김미수 says:

    좋은 글 잘 보고 갑니다~
    경상 계열로 학부를 나와서
    공학 계열로 석사를 시작하게 되면서,
    연구라는 것이 뭔지 정확히 몰라서 침체기가 왔었어요 ㅠ_ㅠ
    그 와중에 님 글 읽고 용기 얻고 갑니다!

    • 권창현 says:

      처음 하는 연구에 침체기가 오는 것은 계열을 가리지 않는 것 같습니다. 어쩌면 대학원 뿐만 아니라 대학 졸업 후에 어떤 길로 가든 그 때 즈음이면 침체기가 오는 것 같기도 합니다. 화이팅입니다 :)

  5. Anonymous says:

    답을 쓰다 편 기대 하겠습니다~~

  6. 눈눈눈 says:

    좋은 글 많이 읽고 갑니다.
    정말 도움되는 정보가 많은 것 같아요.
    한가지 의문으로 마지막에 문제를 구체화 시킬 수 없을 때 문제가 아니다라고 결론내리는 것은 성급한 판단일 수도 있지 않나 생각이 듭니다. 정말로 문제가 아니기에 구체화가 되지 않을 수 있지만 문제를 구체화시키는 과정이 어렵거나 혹은 문제라는 것 자체를 인지하는 것조차 어렵기에 구체화가 어려운 것일수도 있다고 생각합니다.
    제가 공부와 경험이 부족해서 정확히 설명하기 어려운데 예를 들자면 어떤 현상에 대해서 메커니즘이 명확하지 않을 때 그것을 풀어야하지만 그것에서 문제가 무엇인지 구체화시키는 것이 어려울 수 있다고 생각하고 또는 대부분의 사람들이 당연하다고 생각하는 것에서 이상함을 느끼고 무엇이 문제인지 생각해 볼 수 있겠죠
    문제를 쓴 다음에 열심히 생각해서 답을 내놓을 수도 있겠지만 어떤 무엇에 대해서 열심히 생각해서 문제를 명확히 할 수도 있지 않을까요? ^^;
    어떻게 보면 2번에서의 경우처럼 능력의 문제라고 볼 수도 있겠지만 능력을 키우거나 혹은 문제자체를 인지하는 것이 어려울수도 있으니까요
    저도 잘 모르겠지만 이런 생각들이 들어서 글을 써봅니다.
    좋은 글 감사합니다~

    • 권창현 says:

      동의합니다. 1번 끝나고 나서 2번으로 넘어가는 것이 아닙니다. 1번과 2번을, 심지어 3번까지 반복하다보면 문제의 정의가 명확해집니다. 뭐가 뭔지 모르는 상황에서 헤메다가 생각의 깊이가 깊어지면서 문제의 정의가 명확해지고, 그것의 답도 명확해집니다. 말씀하신대로 ‘문제를 구체화 시킬 수 없을 때 문제가 아니다’라는 것은 성급한 결론입니다. 제가 말씀드리고자 한 바를 조금 더 자세히 쓰자면, 뭔가 이상한 점이 있다고 생각되고 불안한 마음이 들어서 ‘문제’가 무엇인지 생각해보기 시작했는데, 긴 시간의 고민 끝에 이상한 점이 없고 잘 못 되는 일도 없다고 생각되는 때가 있습니다. 그래서 그 때는 ‘불안한 마음’ 자체는 고민거리가 아니라는 거지요. 사실, 마지막 언급은 약간의 말장난 같은 것이라 그리 심각하게 생각 하지 않으셔도 됩니다 ^^

  1. September 26, 2012

    […] 질문하는 많은 경우는 본인 스스로 질문의 핵심이 무엇인지 잘 모르기 Feynman Algorithm (파인만 알고리즘)에 대한 글을 […]

  2. March 18, 2013

    […] 여기 1번에 대한 글 : 권창현씨의 블로그 […]

  3. October 22, 2015

    […] 파인만 알고리즘 […]

  4. November 9, 2015

    […] 파인만 알고리즘 […]

Leave a Reply to 춘구 Cancel reply

Your email address will not be published.