Github에서 가끔 한국인이 구현한 논문 코드를 보인다. 예전보다 논문 구현에 대한 관심이 훨씬 많아진 것 같아 기분이 좋고, 깔끔하고 훌륭한 코드를 보면서 배우고 자극도 많이 받는다.
하지만 논문의 결과를 replicate하지 못한 코드를 별다른 명시 없이 잘 작동하는 마냥 올려두는 경우도 많아지고 있는데, 예를 들면
- README에 논문에서 혹은 다른 곳에서 결과를 그대로 캡쳐해서 본인의 코드로 만들 수 있는 것처럼 올려 둔 경우
- 대부분의 코드를 다른 코드에서 copy-paste 했지만, reference를 하지 않는 경우
- Function만 구현해 두고 코드 그 어디에도 validation 실험을 하지 않은 경우
이런 "가짜 구현"을 올려두는 사람들은 한두 번에 그치지 않기 때문에 Github의 star 수와 CV만 보면 굉장히 화려하다. 코드는 논문과 다르게 review system이 issue정도 밖에 없기 때문에, poor performance issue도 없다면 구현을 제대로 했는지 알기 어렵고 구현의 수만 보고 그 사람을 잘못 판단하기 쉽다.
구현에 성공 여부와 상관없이 코드 공개는 커뮤니티에 큰 도움이 된다. 먼저 시도했던 코드를 보면서 코드의 불필요한 재생산을 피하거나 같은 실수를 반복하지 않을 수 있다. 하지만 코드를 읽고 사용할 사람들을 위해서 코드의 상태를 정확하게 명시해야 한다고 생각한다. loss나 accuracy graph 정도만 올려둬도 쓸데없는 시간 낭비를 막을 수 있다.
구현은 본인의 실력을 쌓는데 굉장히 중요하다. 하지만 그 과정에서 본인과 남을 속이진 않았으면 좋겠다.
원글: Facebook