본문 바로가기

DM ML AD

공부하자 (나 논문 좀 읽어봤어요)

새해가 되면 으레 없던 새해결심이 생기기 마련입니다. 현실성이 없지만 가장 현실적인 소망으로 운동하자 (다이어트, 금연, 금주 등 포함)와 공부하자 (기술, 취미, 경력 등 포함)일 것입니다. 오늘은 두번째 특히 연구와 관련해서 어떤 것을 어떻게 읽을 것인가에 대해서 적으려 합니다. 기술직군에 속하지만 프로그래밍은 제 전문 영역이 아니니, 더 구체적으로 일단 데이터마이닝이나 머신러닝을 공부하는 것이라고 가정하고 글을 적습니다.

어떤 것을 읽어야할까? 또는 어떤 것을 읽지 말아야할까? 지극히 주관적인 생각입니다.

1. 한글 문서는 피한다.
블로그 등에 소개된 가벼운 글이나 급하게 한글문서를 찾아볼 수는 있지만, 장기적으로 한 분야를 마스터하는 것이 목표라면 어렵고 지루하더라도 가급적이면 영문 (논문이나 책)으로 공부하기를 권합니다. 한글 무시가 아니라 이걸 제1원칙으로 둔 이유는 용어 때문입니다. 용어가 개념입니다. 한글로 제대로 표현된 전문용어가 적습니다. 순수 한글 용어는 거의 없기도 하고, 번역하더라도 (일본식) 한문 용어가 대부분입니다. 어설픈 한자 용어를 접하는 것보다는 처음부터 영어 용어에 익숙해지는 것이 좋습니다. 적절한 예는 아니지만, 고등학교 때까지 파동이 중첩되는 현상을 '간섭'이라고 배웠습니다. 그런데 대학에서 원서로 일반물리를 다시 배울 때 interference라는 용어를 사용했습니다. 한동안 둘 사이에 연결하는 것이 쉽지 않았습니다. 한글로 바꾸면 쉽게 이해되는 경우도 종종 있지만, 가능하면 원어 그대로의 개념을 흡수하는 것이 장기적으로 좋습니다. 프로그래밍 스킬이나 노하우, 또는 단순 읽을거리는 한글/번역 문서도 많지만 심도있는 연구결과는 대부분 영어로만 제공돼서 결국 영어 문서/논문을 읽게 될 가능성이 큰데 초반에 한글로 습득한 지식이 오히려 학습에 장애가 될 여지가 있습니다.

2. 너무 짧은 논문은 피한다.
새로운 분야를 처음 접하면서 두꺼운 논문이나 책은 좀 부담스럽습니다. 그래서 2~3 페이지짜리 짧은 논문으로 시작하는 경우가 있습니다. 하지만 제가 볼 때 이건 별로 바람직한 방법은 아닙니다. 단순히 문서 길이가 짧으면 빨리 읽을 수 있다고 생각하겠지만, 논문이 짧다는 것은 내용이 축약됐다는 의미입니다. 해당 분야에서 일반화된 개념이나 용어에 대한 설명을 생략하거나 진행 및 풀이 과정 없이 결론만 제시하는 경우가 많습니다. 나름의 기승전결을 가진 논문이더라도 초보자들에게는 논리적 비약이 심할 수 있습니다. (보통 매거진에 소개되는) 쉽게 쓰여진 짧은 글들도 많겠지만, 개념과 내용이 압축된 결과가 짧은 논문입니다. 결국 그걸 이해하기 위해서 몇 배나 많은 다른 논문들을 읽어야 합니다. 그래서 적당히 긴 (10 페이지 전후) 논문들을 먼저 읽어으면서 읽기 연습을 하는 것도 중요합니다. 길다고 무조건 쉽게 풀어 적었다는 의미는 아닙니다.

3. 리뷰 페이퍼를 활용한다.
보통 리뷰 논문은 좀 길어서 (2~30 페이지 이상) 초보자들을 기죽이기도 합니다. 하지만 한 분야를 마스터하기 위해서는 그 분야 전체를 아루르는 지식을 가져야 하는데, 한명의 개인이 관련된 모든 연구를 진행 및 리뷰할 수 없기 때문에 먼저 그 분야에 오래 몸담았던 분들이 적어놓은 리뷰 페이퍼를 읽어야할 때가 옵니다. 논문이 길고 많은 개념들이 제한된 공간에 꽉 차있기 때문에 극초보자들은 어려움을 겪을 수도 있지만, 한 분야의 역사 및 발전 방향을 저자의 관점에서 체계화해놓은 것이어서 그 분야의 전체를 조망하는데 큰 도움이 됩니다. 이런 리뷰 페이퍼를 읽으면서 그 논문에서 소개하는 주요 엮인 논문들을 읽어가면 이 분야가 어떻게 발전해왔고 현재 부족한 점은 어떤 것이고 앞으로 어느 분야에 더 집중해야하는지를 알게 되고, 그러는 과정 속에 자신만의 체계를 갖춰갑니다. 조금 길게 느껴질 수 있지만 그 분야를 잘 소개한 리뷰 페이퍼 몇 편은 어느 순간에는 잘 습려해두면 도움이 됩니다.
리뷰 논문이 그 분야를 집대성해놓은 것은 맞지만 한두편의 논문에 지나치게 편중되면 안 됩니다. 그 논문이 전체를 아우를 수도 없고 그 저자들의 생각과 체계가 완벽하다고 볼 수도 없습니다. 과학 논문이더라도 하나의 검증된 의견으로 보는 게 더 맞습니다. 특히 머신러닝 분야에서 절대적으로 옳은 알고리즘이 없고 늘 새로운 도전에 직면하기 때문입니다. 학문이라는 것은 넓게 보지 못하면 깊게 볼 수가 없고 또 깊게 보지 못하면 넓게 볼 수가 없습니다.

4. Text book을 활용한다.
최신 기술을 연구하는 사람들이 흔히 하는 실수 중에 하나가 최신 논문만을 찾아읽는다는 점입니다. 거인의 어깨 위에 서지 않고는 더 멀리 볼 수가 없습니다. 최신의 연구 트렌드도 지금까지의 누적된 연구 결과 위에서 해석됩니다. 텍스트북이 리뷰페이퍼와 비슷한 역할을 하겠지만, 텍스트북은 더 기초적인 것부터 시작해서 그 분야를 종합해서 정리해주기 때문에 수백 페이지의 텍스트북을 한두권 마스터하는 것이 전체 연구의 틀을 잡아줘서 결국에는 큰 도움이 됩니다. 다만, 텍스트북의 단점이라면 당장 필요하지 않을 것 같은 내용을 많이 포함해서 길다는 것도 있지만, 최신 개정판이더라도 최신의 모든 기술을 두루 다루지 못한다는 점은 있습니다. 그래서 텍스트북과 최신 논문을 함께 읽어가면서 기술의 과거와 현재, 그리고 스스로 연구할 미래를 거시적으로 확립해야 합니다.

5. 유명한 것은 피한다.
조금 이상하게 들릴 수도 있습니다. 유명한 연구소/회사에서 내놓은 논문, 유명한 저자가 적은 논문, 또는 유명한 저널에 기재된 논문을 보면 좋을 거라고 생각하겠지만 초보자들한테는 오히려 독이 될 수 있습니다. 잘 쓰여졌거나 아니면 필독해야하는 유명한 논문이 아니라, 단지 저자가 유명하거나 유명한 회사에서 기여를 했거나 또는 네이처나 사이언스와 같은 유명한 저널에 기재됐기 때문에 유명해진 논문은 앞서 설명한 '짧은 논문'과 같습니다. 군더더기는 모두 쳐내고 많은 지식을 축약/압축해서 적었을 가능성이 많거나 해당 회사의 기술에 종속된 논문일 가능성이 많습니다. 오히려 덜 유명한 저자들이 적은 논문이 작은 개념도 이해하기 쉽게 잘 설명해주고 친절한 경우가 많습니다. (하지만 쉬운 논문이 때론 개념을 오해해서 적었을 가능성도...) 그런 단련 후에 유명한 논문을 마스터하는 것을 권합니다. 비슷하게 최신 논문도 그 분야를 어느 정도 마스터한 후에 읽어나갈 것을 권합니다. 물론 자신감을 갖기 위해서 상징적인 논문을 읽어보는 것도 나쁘지는 않습니다.

6. 다양하게 많이 읽는다.
앞서 여러 가지를 얘기했지만 결국 결론은 많이 읽어라는 것입니다. 쉬운 것도 읽고 어려운 것도 읽고 짧은 것도 읽고 긴 것도 읽고 기초적인 것도 읽고 최신 트렌드도 읽어야 합니다. 위에서 몇 가지 가이드는 적었지만 결국 어떤 문서든 많이 그리고 꾸준히 읽어서 그 분야에 친근해지는 것 외에 다른 길이 없습니다. 그리고 나름의 지식 체계를 만들어야 합니다. 주변에 도움을 받을 사람이 있으면 적당히 도움을 받거나 함께 공부하는 것도 유용하고, 또 나중에 스스로 다른 이들에게 도움을 주는 역할을 해가면서 지식을 발전시킬 수 있습니다. 

그러면 어떻게 읽으면 될까? 기본적으로 많이 읽어라지만... 케바케지만 어느 정도 이해할 때까지 읽어야 합니다. 보통의 단편 논문인 경우 논문의 세세한 것까지 모두 이해할 필요는 없이 저자가 핵심적으로 말하려는 바만 잡아내면 됩니다. (어차피 비슷한 것들을 계속 읽었거나 읽어야할 테니...) 그 말하는 바를 도와주는 개념들도 함께 이해해야 하지만, 다른 논문들을 꾸준히 읽다보면 자연스레 습득되기도 합니다.
논문을 충분히 이해하기 위해서 개인적으로 3회정도 반복해서 읽을 것을 권합니다. 첫번째는 논문의 전체 흐름을 이해하기 위해서 그냥 읽어나갑니다. 읽어나간다고 표현했듯이 세부 내용을 이해하려 하지 말고 그냥 한번에 쭉 읽어보겠다는 생각으로 모르는 단어나 개념은 그냥 무시하면서 처음부터 끝까지 읽습니다. 세부 개념을 이해하지 못하더라도 흐름 또는 감만 알면 됩니다. 그리고 다시 논문을 읽으면서 처음에 이해 못했던 개념을 다시 확인하고 참고 논문도 함께 읽어가면서 세부 내용을 이해하면 됩니다. 그리고 마지막으로 한번 더 읽으면서 전체 내용과 세부 내용을 함께 자신의 지식의 틀 안에 넣으면 됩니다. 논문의 난이도나 경험/숙련도에 따라서 1~2회만 읽어도 될 때도 있고 3회 이상을 읽어야할 때도 있습니다. 그건 그때그때 다릅니다.
저널에 출판하기 전에 peer review라는 걸 하는데 마치 지금 읽는 논문을 피어리뷰를 하는 것처럼 읽어보면 좋습니다. (제가 보통 피어리뷰를 하면 3회정도 읽음) 그래서 전체의 흐름을 파악하고, 각 파트의 개념과 연결의 완결성을 파악하고, 그런 후에 세부적으로 잘된 또는 잘못된 개념/부분을 잡아내서 논문의 장단점 및 보강해야할 것을 정리해서 저자에게 알려줍니다. 한편의 논문(연구)를 제대로 이해하기 위해서 이런 과정을 거칩니다. 그리고 직접 구현하거나 서비스에 바로 적용할 것이 아니라면 논문에 등장하는 수식 하나하나에 너무 집중할 필요는 없습니다.

한편의 논문을 읽으면서 참고논문을 모두 읽을 필요는 없지만 중요한 것은 북마킹해놨다가 나중에라도 읽어두는 게 좋습니다. 전문분야파기 (논문읽기)는 마치 고구마 캐기와 비슷해서 마스터하고 싶은 논문을 정해서 그 논문과 참조한 레퍼런스를 따라 들어가면서 읽다보면 어느 순간 그 분야의 전체 맥을 잡을 수 있습니다.
...
이런 글을 적고 있다는 것은 올해는 매주 최소 1~2편의 논문은 읽어야겠다는 현실성없는 희망을 가져보고, 또 항상 하는 운동과 다이어트를 목표로 삼겠다는 의지의 표현이랄까...

===
반응형