Sungjoo Ha

Logical

Leadership series

우리가 업무를 수행하며 논리적이어야 한다는 것은 당연하지만 어떻게 실천해야 좋은지 잘 감이 오지 않는 항목입니다. 저는 논리적이라는 항목에 대해 생각을 명확하게 표현 하여 헛점이 없는지 살펴볼 수 있도록 하고 논의 중인 명제에 대한 근거를 제시 하는 것이라 생각합니다.

우리가 흔히 논리적이라고 이야기하는 논리 전개 구조는 삼단논법을 띄게 마련입니다. "P가 참이고 P이면 Q라는 규칙이 있어서 Q이다." 의 modus ponens와 "P이면 Q의 규칙이 있는데 not Q이므로 not P이다." 의 modus tollens 두 가지가 가장 대표적인 예시입니다. 여기서 조금 더 나아가 단순히 참과 거짓인 명제만을 다루는 것이 아니라 그럴듯함(plausibility)에 대해 제대로 다루며 추론을 하기 위해서는 베이지안 추론 기법을 사용해야 합니다. 전통적인 삼단논법이 되었든 베이지안 추론 기법이 되었든, 시작은 내가 어떤 명제들을 가지고 어떤 규칙을 통해 이야기를 이끌어나가는지, 그 과정에서 잘못이 없는지를 살펴보는 것입니다.

💡 삼단논법이 아닌 추론 기법에 대한 소개는 E.T. Jaynes의 Probability Theory: The Logic of Science의 전반부에서 잘 다루고 있습니다. 사실 베이지안 추론 기법이 어째서 불확실성을 다루는 가장 좋은 추론 체계인지 소개하는 내용이라 보아도 무방합니다.

이를 위한 가장 좋은 방법은 글을, 특히 줄글 형태로 작성 하는 것입니다. 글을 쓰는 행위와 명료한 생각의 관계에 대해서는 엄청나게 많은 사람들이 강조하였습니다. Andy Grove는 하이 아웃풋 매니지먼트에서 보고서를 작성하는 가장 중요한 이유는 보고서에서는 명시적으로 정리하며 글을 작성해야 하기 때문에 여러 사안들에 대해 훨씬 더 정밀해질 수 있기 때문이라 했습니다. 심지어 Andy Grove는 보고서의 작성은 중요하지만 읽는 것은 그렇게까지 중요하지 않다고 표현할 정도였죠. Jeff Bezos의 유명한 아마존 6-페이저도 비슷한 목적을 가지고 있습니다. 파워포인트에 불렛포인트로 정리된 내용은 사고의 구멍을 잘 드러내지 못하며 그렇기 때문에 아마존 6-페이저는 반드시 줄글로 작성하여 명료한 사고를 강제한 것이라 하였습니다. Jordan Peterson은 심지어 "Writing is thinking, formalized"라고 표현하였습니다.

생각을 명시적으로 구체화하는 과정이 나의 생각에 있는 구멍을 없애는 방법입니다. 우리가 프로젝트를 시작하며 테크스펙을 쓰는 이유도, 논문을 실험이 완성되기 전에 미리 작성하라고 하는 이유도 다 마찬가지입니다. 사람들은 자기가 어떤 개념을 알고 있다고 이야기하지만 막상 설명을 해보라 시키면 설명을 어려워하는 것을 볼 수 있습니다. 해당 개념을 아주 친숙하게 알고 있지 않고 아는 것 같은 기분만 갖고 있기 때문입니다. 마찬가지로 사람들은 자기가 명료한 생각을 하고 있다고 생각하지만 막상 글을 써보게 시키면 명료하지 않은 생각의 파편만 머릿속에 들고 있었음을 알게 됩니다. 명확하게 직접적으로 글을 작성하는 것이야 말로 명료한 생각을 갖기 위한 시작점입니다. 비슷한 경험을 프로그래머들은 코드를 작성하면서 느끼게 되는 경우가 많습니다. 실수에 관대하지 않은 컴파일러/인터프리터를 채점자로 두며 그들이 이해할 수 있도록 한치의 빈틈이 없는 생각을 코드라는 구체적인 형태로 구현해야 하기 때문이죠.

이러한 과정을 통해 명료하게 명제와 그 명제 사이를 잇는 규칙을 명시하였다면 각각의 명제의 가능성에 대해 고려해야 합니다. 이를 우리는 근거 기반의 사고라 부릅니다.

버그를 만났을 때 어째서 프로그램이 이런 방식으로 동작하는지 시나리오를 상상해보고 문제가 될 것 같은 부분을 추정하는 것은 대단히 흔합니다. 이게 왜 이러지?라는 질문을 스스로에게 던져보고 어떤 기작에 의해 그러한 문제가 발생하는지 상상해보는 것은 대단히 중요한 과정입니다. 하지만 그렇게 만들어낸 가설이 맞는지 확인하는 과정이 없이 무작정 상상한 문제에 대한 해결책을 남발하는 것은 보통 효과적이지 않습니다. 우리는 이러한 디버깅 방법은 산탄처방(shotgun approach)라 부릅니다. 뭐라도 하나 걸려라라는 생각으로 다양한 시도를 하는 것이죠. 물론 이러한 진단적 치료가 의미있는 경우도 종종 있습니다. 하지만 당연하게도 이러한 경우는 진단적 치료의 비용이 원인을 파해치는 것보다 훨씬 쌀 때 뿐입니다.

지금 구현체가 너무 느린 언어로 짜여져서 어쩔 수 없이 새로운 언어로 완전히 다시 구현을 해야 한다. 모델 학습에서 데이터 가챠가 있어서 특정 시점에 학습했던 모델만 성능이 좋다. 실제로 하이퍼커넥트 AI 조직에서 제가 들었던 문제에 대한 설명 및 제안 받은 해결책들입니다. 실제로는 파이썬이 느린 것이 문제가 아니라 우리가 원하지 않는 시점에 글로벌 GC가 돌아 세상이 멈추는 일이 있는 것이었고 이는 GC를 우리가 명시적으로 관리하면서 해결할 수 있었습니다. 모델은 특정 시점에 데이터와 모델이 잘 맞는 가챠가 있던 것이 아니라 학습 및 배포 전체의 파이프라인 곳곳에 엄청나게 많은 수의 미묘한 버그가 숨어있었고 그로인해 향후 새롭게 만드는 모델의 성능이 안 좋도록 하는 결과를 만들어 냈었습니다. 둘 다 사고의 흐름과 근거에 구멍이 있었으나 이를 명시적으로 이해하지 못하고 있었던 예라고 생각합니다.

이런 방식의 사고의 함정을 빠져나오는 것이 쉽지는 않습니다. 내재적으로 불확실성이 내포된 명제를 바탕으로 추론을 해야 하기 때문입니다. 다만 여기에서 사용할 수 있는 방법은 앞서 말했다시피 명료하게 가정이 되는 명제와 추론 규칙을 명시하고 각각의 가정에 대한 그럴듯함도 드러내고 서로 이야기를 나눠보는 것입니다. 물론 이를 다루는 방식의 근본은 베이지안 추론 기법입니다.

명시적으로 줄글을 통해 생각을 나열하고 각 명제에 대해 근거를 제시하는 것으로 보다 논리적으로 생각하는 것이 가능합니다.

베이지안 추론 방식의 사고를 보여준 Alan Turing의 글로 마치겠습니다.

The evidence concerning the possibility of an event occurring usually divides into a part about which statistics are available, or some mathematical method can be applied, and a less definite part about which one can only use one’s judgement. Suppose for example that a new kind of traffic has turned up and that only three messages are available. Each message has the letter V in the 17th place and G in the 18th place. We want to know the probability that it is a general rule that we should find V and G in these places. We first have to decide how probable it is that a cipher would have such a rule, and as regards this one can probably only guess, and my guess would be about 1/5,000,000. This judgement is not entirely a guess; some rather insecure mathematical reasoning has gone into it, something like this:-

The chance of there being a rule that two consecutive letters somewhere after the 10th should have certain fixed values seems to be about 1/500 (this is a complete guess). The chance of the letters being the 17th and 18th is about 1/15 (another guess, but not quite as much in the air). The probability of a letter being V or G is 1/676 (hardly a guess at all, but expressing a judgement that there is no special virtue in the bigramme VG). Hence the chance is 1/(500 × 15 × 676) or about 1/5,000,000. This is however all so vague, that it is more usual to make the judgment “1/5,000,000” without explanation.

The question as to what is the chance of having a rule of this kind might of course be resolved by statistics of some kind, but there is no point in having this very accurate, and of course the experience of the cryptographer itself forms a kind of statistics.