마법이 마법이 아니게 되는 순간

마법이 아니게 되는 순간

무언가를 배울 때는 항상 마법이다. 텐서플로우와는 다르게 왜 파이토치는 바로 실행이 되는가라던가. 물론 내가 관심있는 부분에 관한 얘기다. CPU, GPU의 동작도 충분히 마법이지만, 그 곳에 큰 열망이 생기지는 않는다. 살다가, 공부를 해서던, 익숙해져서던, 그 내부 동작이 이해가 갈 때가 생긴다. 다시 파이토치를 예로 들면, AutoGrad가 어떻게 동작하는지 대강 감이 온 순간이 나한테는 그랬다.

머신러닝을 처음 배울 때에도 그랬다. 어떤 Classificaion Model이 있는데, 얘는 어떻게던 돈다. 무언가를 분류한다. 아무쪼록 살다 보면, 이게 더 이상 마법이 아닌 순간이 오게 된다. 어떠한 방식의 함수를 만들어서, 이 함수가 적당히 0과 1 사이의 결과를 뱉게 만들고, 뭐 그런 함수를 잘 찾는 문제라는 사실과, 데이터와 그 함수가 잘 매칭되게 그 함수를 적당히 찾아나가는 방법들의 집합이라는 사실을 어느 순간 알게 된다.

그런데 이러한 순간은 마법을 많이 사용해 보아야 더 잘 이해할 수 있고, 더 감동을 느낄 수 있는 것 같다. (블로그에서 CLT 얘기를 참 많이 하지만) CLT를 책에서 처음 배웠을 때 가슴 벅찬 느낌이 들지 않았었다. 실제로 아마 대학원에서 무슨 프로젝트를 하면서, 몇 개인가의 개별적인 (개별적으로는 정규분포가 결코 아닌) 에러를 근사할 때 정규분포를 사용했을 때, 이 때에서야 CLT에 대해 이해할 수 있었고, 그 때 무언가 감동할 수 있었던 것 같다.

반대로 numpy를 오래 사용하다가, numpy가 실제로 어떻게 구현되었는가에 대해 한 단계 더 깊게 알게 되었다. BLAS라는 것의 존재를 알게 된 것이다. 마법이 한꺼풀 벗겨졌다. 또, 바텀-업 방식으로 한 단계 더 알게 되었다 (numerical linear algebra를 조금 공부했다). 그 전까지는 내가 할 수 없어 남의 힘을 빌려야만 했던 마법이, (numpy보다 잘 만들 수는 없겠지만), 내가 프레임워크의 도움을 빌리지 않고 직접 할 수 있는 것이 되었다. 엄청 좋았던 것이 기억난다.

이러한 마법같은 느낌과, 마법이 풀리게 된 순간의 감동이, 내 삶의 일부였으면 좋겠다.

PREVIOUS요즘 느낀 것
NEXT11월 27일의 일기