평가가 중요하다
검색 랭킹 알고리즘을 평가할 때 NDCG 척도를 많이 사용한다. 여기에 깔린 아이디어를 한 마디로 말하면, 더 나은 문서를 상위에 올려줄수록 좋은 랭킹이라는 것이다. 5점 짜리 문서와 4점 문서가 있을 때, 5점을 위에 보여주는 게 낫다는 당연한 생각을 수식으로 만들고, 이상적인 결과와 비교했을 때의 상대적인 성능을 정량화해 놓은 것이 NDCG이다. 그런데…
서로 다른 두 개의 랭킹 함수 A, B를 만들었다. 그리고 각자 나름대로 최고라고 생각하는 문서를 5개씩 뽑아왔다. 이를 평가해보니 [4, 4, 4, 4, 4]와 [5, 3, 2, 2, 2]로 나왔다. 즉, A가 찾은 문서는 모두 4점(=꽤 만족)이었고, B가 찾은 문서는 1등은 5점(=완벽)이었지만 2등 이하는 좀 별로였다. 누가 더 잘했다고 봐야 할까?
아마 쿼리 성격과 검색한 사람의 의도에 따라 다를 것이다. “영화 어벤져스 개봉일” 같은 쿼리는 의도가 단순명확하므로 1등에 정답이 나오기만 하면 된다. 하지만, “유럽여행”에 대해서는 정답이라고 할 만큼 완벽한 문서가 있을 것 같지 않다. 따라서 최고의 문서 하나를 고르려 애쓰기보다는 알찬 내용의 글을 여러 개 보여주는 게 효과적이면서도 안전한 전략이다.
의도가 분명하고 정답이 있는 쿼리에 대해서도 NDCG 척도로 품질을 평가하는 게 합당할까? 물론, 1등에 정답이 나오고 2등 이하에 이를 보완하는 추가 정보가 나오는 게 이상적이긴 하다. 하지만 위에서처럼 A와 B 중 하나를 골라야 하는 상황이라면 어떤 평가 척도를 쓰는지에 따라 최종 결정이 달라질 수 있다. 이 경우에는 A로 낙찰.
야후 연구자들이 2009년 CIKM에 낸 논문 Expected Reciprocal Rank for Graded Relevance에서 조금 다른 평가 척도가 제안되었다. 대충 요약하면, 마지막으로 클릭된 문서가 가장 만족스러웠다고 가정하는 Cascade Model의 전통에 기대어, 최고로 좋은 문서의 순위의 역수의 기댓값을 계산하는 것이다. 그래서 이름이 Expected Reciprocal Rank, 줄여서 ERR이다. 더 쉽게 말하면, 베스트 문서가 몇 등에 나오는지를 보고 품질을 평가하겠다는 것으로서, 어벤져스 개봉일 정보가 1등에 딱 나오느냐가 중요하지 그 밑에 뭐가 나오는지는 크게 개의치 않겠다는 시크한 평가 메트릭이다.
구글은 랭킹 튜닝에 기계학습을 쓰지 않는다고 하는데, Bing의 마이크로소프트나 야후는 랭킹학습(Learning-to-rank; LTR)을 적용하는 데 적극적이라고 알려져 있다. 사람이든 기계든 무언가를 잘 배웠는지 확인하려면 시험을 쳐서 그들이 제출한 답안지의 점수를 매겨봐야 한다. 그러면 그들은 점수를 보고 다음 번 시험에서 높은 점수를 받기 위한 전략을 다시 짤 것이고, 이 과정이 반복되면 결국 평가 척도에 최적화된 결과물이 나올 것이다. 똑같은 학습 알고리즘이라도 NDCG와 ERR 중 무엇을 타겟으로 했는지에 따라 꽤 다른 모델을 내놓을 수 있다.
그래서 평가가 중요하다. 학업성취도를 평가할 때 전체 과목의 평균을 중시하는 척도를 쓰면, 학생들은 정말 좋아하고 잘하는 과목에 집중하기보다는 못하는 과목이 없게 하려고 노력할 것이다. (사람이 그렇게 수동적이고 단순한 존재는 아니지만 어느 정도는..) 작업능력을 평가할 때, 꾸준하게 좋은 성과를 내는 것과 기복이 있지만 잘할 때는 감동적인 결과를 내는 것 중 무엇을 높게 치는지에 따라서 그 조직의 문화가 결정될 수 있다. 평가는 개개인의 행동에 직접적인 피드백을 줌으로써 행동에 영향을 끼치기 때문이다.
우리는 일상 속에서 수많은 판단을 내리고 끊임없이 평가를 한다. 그 대상에는 사용하는 물건, 함께 하는 사람은 물론이고 자기 자신까지 포함된다. 나의 평가는 직간접적으로 그 대상의 행동에 영향을 끼쳐서 결국 나에게로 되돌아온다. 그러니까 평가를 잘 해야 한다, 귀찮고 어렵더라도.