논문을 제출하다.

어제 창현이 형, 그리고 선영이 누나와 함께하던 논문을 제출했다. 논문 1저자도 아니고, 기여도도 적은 편이지만, ‘연구를 잘 하려면 어떻게 해야하는가’에 대해 배울 수 있는 좋은 기회였다.

1. 연구를 하려면 기본부터 잘 알아야 한다.
수업에서 배우는 교과서 지식을 충분히 소화해야겠다는 생각이 들었다. 과거에 어떤 것이 있었는지 알아야 그보다 나은 무언가를 제안할 수 있기 때문이다. 선배 연구자들의 경험을 이용할 수도 있다. 어떤 주제에 대해 자신의 주장을 갖고 토론하려면 단순히 아는 것으로는 부족하다. 자기의 것으로 소화해내야 한다. 단순히 알기만 하거나, 알지도 못해서 겪은 어려움이 컸다.

2. 자료구조, 알고리즘에 대한 깊이있는 이해가 필요하다.
마찬가지로 자료구조와 알고리즘에 대한 깊이있는 이해가 필요함을 느꼈다. 컴퓨터 구조는 단순히 그 자체만으로 이루어지는 것이 아니기 때문이다. 성능 개선을 위해 자료구조와 알고리즘이 들어가게 되는데, 어떤 것을 선택하느냐를 결정하려면 이를 잘 알아야 한다. (특성은 어떤지, 각각의 장단점은 어떤지, 비용은 어떻게 되는지) 그리고 실험으로 결과를 보이려면 빠르게 구현할 수도 있어야 한다. 이번 연구에 데이터마이닝에서 배운 k-means 알고리즘을 적용하려 했는데, 1) 그것에 대한 설명, 2) 특성과 제약이 무엇인지, 3) 어떻게 구현하는지 모두 막막했다.

3. Tool 사용법을 익혀둬야 한다.
Simulator 사용법을 알아야 실험을 정확하게 할 수 있고, 논문 작성에 필요한 툴을 알아야 불필요한 어려움 없이 아이디어와 논문 작성에만 집중할 수 있다. 이번에 사용한 simulator는 MARSS, CACTI였고, 그 외에 실험을 위해 pin, python, C++, shell script 등을 사용했다. MARSS를 처음 접했기에 사용하기가 힘들었다. 방대한 코드 중에 어느 부분을 수정해야 할지 전혀 알 수가 없었다. 원하는 부분을 빠르고 정확하게 찾고, 수정할 수 있도록 해야겠다.
논문 작성 과정에서는 LaTeX, jgraph, adobe illustrator 등을 사용했다. jgraph는 1) 간단한 쉘 스크립트로도 그릴 수 있다는 점, 2) 연구실에서 많은 사람들이 사용한다는 점이 좋았지만 유연성이 부족한 느낌이었다. 다음에는 pyplot을 사용하고 싶다. 미리 공부해야겠다. (jgraph의 예제로 awk가 제시되어 있는데, 반드시 awk로 작성할 필요는 없다. bash shell script를 사용할 수도 있고, python으로 wrapping해 쓸 수도 있다.)
* 병렬로 실험하는 것이 얼마나 중요한지 느꼈다. MARSS로 simulation하면 1 billion instruction simulation에 1시간 30분 정도 걸린다. SPEC에서 workload 하나씩만 simulate해도 29개이다. 하나의 컴퓨터에서 순차적으로 실행하면 43시간이 걸린다. 따라서 이를 얼마나 잘 병렬화해서 실험하느냐가 실험 속도에 큰 영향을 미친다. 실험이 늦어질수록 논문의 질이 떨어진다.

4. 그 외
– 논문을 잘 쓰려면 prior work에 대한 충분한 조사와 이해가 중요하다.
1) Prior work을 놓치는 바람에 이미 있는 것을 우리가 처음 제시하는 것처럼 쓸 뻔 했다.
2) 논문에 prior work를 써야 하는데, 잘 모르면 쓸 수가 없다. (이야기를 풀어나갈 수 없다.) ‘기존의 A가 있었는데, 이러한 특성을 가진다. 하지만 이러한 단점이 있으므로, 나는 이렇게 개선하겠다.’와 같이 써야 하는데 그것이 안 된다.
– 실험이 잘 되었는지 보려면
1) 구현한 것의 실험결과가 기존의 실험 결과와 유사한가 본다.
(MPKI, hit/miss rate, IPC 등이 기존 논문과 유사한가?)
2) 실험 결과를 잘 보면 된다.
예를 들어 B가 A에 따라 증가하는 경향을 보인다고 (또는 기대한다고) 하자. 전반적으로 그런 경향을 보이는데, 한 데이터에서 특이한 결과를 보인다면 확인해볼 필요가 있다.
– 실험 환경은 미리 구축해놓아야 한다.
내 linux machine은 지난 봄에 Xen을 설치한 이후로 화면이 안 보였다. 프로젝트 하는 것, 수업하는 것이 있어서 차마 지우지 못했는데, 결국 이번에 논문을 쓰면서 새로 설치해야만 했다. 진작에 세팅해두었더라면 불필요한 일이었다. cacloud의 용량 부족으로 어려움을 겪기도 했다.
– scons에서 옵션을 주어, 다른 설정으로 빌드하는 방법을 알아두어야겠다.
– 마찬가지로 영어도 잘 해야 논문을 쓸 때 문제가 없다.

Advertisements
Tagged with: , , , , , ,
Posted in 1) My Story
2 comments on “논문을 제출하다.
  1. NoSyu says:

    진학 후 첫 논문 제출 축하 드립니다.
    (모든 글이 그렇겠지만) 논문이라는게 백 번 읽는 것보다 한 번 쓰는게 얻는게 많더라구요.
    그런 점에서 많은 것을 얻으셨으리라 생각합니다. 🙂
    +
    Prior work 혹은 related work을 잘 쓰면 그 분야에 대해 잘 아는 사람으로 보여지기에 논문에서의 주장이 나름 신뢰도가 높아지는 경우가 있더군요.
    실제로 그러한 리뷰를 받기도 했습니다.
    그런 의미에서 많은 논문을 읽고 이해하고 정리하는 것도 상당히 중요한 것 같습니다. 🙂

    • gumdaeng says:

      감사합니다 🙂 정말 논문을 단순히 읽는 것과, 쓰는 것은 큰 차이가 있더라구요. 앞으로 어떻게 공부하고 연구할지 감을 잡을 수 있었습니다. 연구를 잘 하려면 잘해야 되는 것이 참 많군요 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 88,534 hits
%d bloggers like this: