Thứ Bảy, 6 tháng 6, 2009

Kỹ năng viết Paper

Tôi ghi lại ở đây một số kinh nghiệm mà tôi đã thu lượm được trong quá trình thực hiện project này. Hi vọng nó có thể giúp ích cho các bạn khi gửi bài vào các top conferences:1. Bài ở các top conferences đòi hỏi sự hoàn chỉnh về mọi mặt liên quan đến lí thuyết nền tảng, thí nghiệm, so sánh và kiểm chứng. Nếu bài thiên về ứng dụng thì các thí nghiệm phải đầy đủ, hoàn chỉnh và đa dạng. Nếu bài thiên về lí thuyết nền tảng thì phải có chứng minh đầy đủ các lí thuyết đưa ra. Bài này tôi làm thiên về ứng dụng, do đó các thí nghiệm phải đủ nhiều và đa dạng thì mới đủ sức thuyết phục reviewers. Thời gian trung bình dành cho một bài top conference khoảng từ 6 tháng trở lên.2. Đối với các bài thiên về ứng dụng, nên có thêm phần thảo luận về các hướng mở rộng của đề tài. Ví dụ bài của tôi lúc đầu chỉ tập trung vào dữ liệu Yahoo. Tuy nhiên trong bài ICDM, tôi có thảo luận thêm về một số hướng mở rộng của đề tài, ví dụ dùng model learned từ Yahoo dataset để annotate new images từ Google dataset. Điều này tăng khả năng được chấp nhận.3. Kĩ năng trình bày đóng một vai trò hết sức quan trọng trong khả năng được chấp nhận. Trình bày tốt, rõ ràng và chặt chẽ sẽ giúp người đọc hiểu rõ hơn bài toán mình làm. Nếu so với phiên bản đầu tiên của tôi submit vào CVPR, có thể thấy phiên bản ở ICDM được trau chuốt kĩ hơn. Thực ra để có được phiên bản cuối cùng, tôi đã thảo luận rất nhiều với Prof. và các bạn khác trong lab. Với mỗi lập luận của tôi, họ đưa ra các cách nhìn khác nhau (mà có thể cũng là cách nhìn của reviewers), sau đó là góp ý để tôi hoàn chỉnh. Nói như vậy để thấy vai trò của nhóm nghiên cứu rất quan trọng.4. Mỗi conference đều có mỗi taste và community riêng. Do đó, lúc viết cũng nên cân nhắc đến điều này. Ví dụ, nếu bài gửi vào CVPR, chỉ cần nói rằng face detection dùng AdaBoost là đủ. Những người làm về CVPR sẽ hiểu đó là state-of-the-art cho frontal face và kết quả đủ cao để có thể dùng trong ứng dụng thực tế. Tuy nhiên nếu bài đó mà gửi cho ICDM, người ta có thể sẽ không hiểu rõ chuyện này. Trong đầu họ, face detection là chưa hoàn hảo, làm sao mà có thể detect face multi-view, etc. Do đó, khi viết bài cho ICDM phải nói rõ hơn so với viết cho CVPR. Cụ thể là nói rõ ra những điều được ngầm hiểu, đó là face detection ở đây là frontal face mà thôi, kết quả của AdaBoost là cao trên 95%. Và chúng tôi chỉ làm thí nghiệm và đánh giá dựa trên kết quả detect này. Một ví dụ khác, kích thước của dữ liệu trong các thí nghiệm cũng đóng vai trò quan trọng. Data mining community có mối quan tâm đặc biệt đến scalability, lớn hơn nhiều so với computer vision community. Do đó, nên nhấn mạnh đến điểm này để làm nên sự khác biệt. Với những người làm về image và video, số lượng dimensions của feature vectors khoảng từ vài chục đến vài trăm là chuyện thường. Nhưng với những người làm về data mining, high dimensional feature space từ 20 đến 50 là cũng đủ gây ấn tượng rồi.5. Một trong các "phàn nàn" thường gặp là các reviewers không thể hiểu rõ đâu là contributions của tác giả. Để có thể làm rõ contributions, cũng không đơn giản. Trước hết là phải làm thế nào để phân định rõ đâu là điểm khác giữa công trình này với các công trình khác đã công bố. Để làm điều này phải tìm hiểu các công trình liên quan một cách đầy đủ, hiểu rõ bản chất của từng phương pháp. Ví dụ bài của Fergus04ECCV thì chủ yếu là về feature, trong khi bài của Li07CVPR-OPTIMOL là về learning method. Prof. tôi trong lúc thảo luận đã nói với tôi rằng: Hãy mô tả điểm khác/điểm mạnh trong đề tài của tôi trong vòng một câu mà thôi. Bạn có thể nói rằng, phương pháp của tôi gồm bước 1, bước 2, ... Nhưng bản chất của những bước này là gì, phải làm rõ. Có như vậy thì mình mới thấy được contribution của chính mình và thuyết phục người khác.Một ý khác trong việc làm rõ contribution là làm rõ bài toán mình muốn giải quyết (problem statement). Chuyện này thấy vậy mà không đơn giản. Ví dụ, Prof. tôi hỏi một anh bạn trong lab đề tài PhD của anh ta là gì? Anh ta trả lời, face detection in video. Tại sao chọn bài toán này? Bởi vì hiện nay face detection methods chỉ làm việc tốt cho frontal face, điều này làm hạn chế tầm mở rộng của các ứng dụng. Dùng video, mình có một sequence of frames, hi vọng sẽ giúp detect face tốt hơn. Tới đây thì mọi chuyện ổn, vì lập luận vậy là ok. Tuy nhiên, nó vẫn quá chung chung, vì đây là điều ai cũng biết cả. Bước tiếp theo là phải làm rõ hơn, vậy đâu là ý tưởng của bạn để giải quyết/tận dụng thông tin từ sequence of frames. Ý tưởng này có ai làm chưa? Ý tưởng này khác với ý tưởng đã có ở chỗ nào? Đâu là điểm mấu chốt để ý tưởng này mang lại thành công hơn các ý tưởng khác? v.v... Trả lời đầy đủ những câu hỏi này mới có thể đủ sức thuyết phục người khác.Một thói quen trước đây của tôi là lao đầu vào code ngay khi có một ý tưởng nào đó. Điều này rất rủi ro vì có thể ý tưởng đó người ta đã nghĩ ra rồi (xác suất rất cao > 90%). Bây giờ thì khác, trước khi bắt tay vào code, tôi phải tự trả lời cho mình các câu hỏi trên. Coding nếu có cũng chỉ để phục vụ cho việc trả lời các câu hỏi trên mà thôi. Chỉ khi nào trong đầu đã có "kế hoạch hoàn chỉnh", lúc đó mới bắt tay vào code. Cũng nói thêm là "kế hoạch hoàn chỉnh" này vẫn có thể bị chỉnh lại trong quá trình thí nghiệm, thảo luận. Tuy nhiên nó đóng vai trò như một kim chỉ nam giúp mình định hướng tốt hơn mỗi khi gặp rắc rối.6. Thiết kế các thí nghiệm để cung cấp bằng chứng hỗ trợ cho các lập luận cũng đòi hỏi nhiều công sức. Một threshold trong bài được đặt bằng tay (manually) sẽ ít ấn tượng hơn nếu threshold đó được tìm thông qua một thuật toán, mặc dù thuật toán này vẫn đòi hỏi một threshold. Ví dụ, trong k-means, đòi hỏi người dùng cung cấp k là số các clusters để chạy thuật toán. Ước lượng số k này không đơn giản. Trong greedyRSC của Houle, người dùng cũng cung cấp một con số t để chạy thuật toán, thuật toán này sẽ tự động tìm ra số cluster. Điểm khác là ước lượng t thì dễ hơn là ước lượng k. Do đó, dùng t sẽ gây được ấn tượng nhiều hơn.Trong bài ICDM, các thuật toán đều đòi hỏi threshold. Nếu chỉ dùng một threshold, người đọc chắc chắn sẽ tự hỏi tại sao tôi lại chọn threshold này. Lỡ tôi cố tình dùng threshold có lợi cho phương pháp của tôi, trong khi lại có hại cho các phương pháp khác mà tôi so sánh đến thì sao. Do đó, cách tốt nhất là cung cấp kết quả so sánh cho range of thresholds để thấy dù chọn threshold thế nào đi nữa, kết quả của tôi vẫn tốt hơn kết quả các phương pháp khác. (Thiết kế thí nghiệm này lúc đầu không có, nó có được trong quá trình thảo luận của tôi với Prof.).Vì có thể có nhiều phương án lựa chọn trong khi thiết kế thuật toán của bạn. Ví dụ khi xây sân vận động Olympic Tổ Chim ở Beijing, bạn sẽ phải chọn xi măng loại nào, thép kiểu gì, gạch loại nào, ... Tương tự, khi bạn chọn một dataset nào đó để làm thí nghiệm, nếu đó ko phải là dataset chuẩn, bạn phải giải thích. Ví dụ, nếu làm face recognition mà không xài FERET hay làm object recognition mà không xài CALTECH-101 là khó mà được chấp nhận. Bạn cũng phải giải thích rõ ràng tại sao bạn chọn phương pháp này để so sánh mà ko chọn phương pháp kia, etc. Nói chung là viết càng chi tiết, người đọc ít thắc mắc, cơ hội sẽ cao hơn.7. Khi trình bày đề tài của mình, tôi giới thiệu faces trả về từ các search engine thường không chính xác do dựa vào text, do đó cần có cách để improve. Ý tưởng chính là tận dụng sự lặp lại nhiều lần của relevant faces để từ đó đề ra phương pháp giải quyết. Prof. tôi nói rằng, cách tiếp cận như trên là bottom-up, có nghĩa là đi từ dưới lên. Cách này cũng ok, nhưng có thể làm cho người đọc không thấy được tính tổng quát của bài toán mình đang giải quyết. Trình bày top-down sẽ tốt hơn. Cụ thể, tôi sẽ bàn về một bài toán tổng quát: cho K điểm trong n-dimensonal feature space, và một target label L. Giả sử các điểm có label L chiếm đa số trong K điểm trên. Làm thế nào để có thể xác định các điểm có label L này. Có thể thấy đây là bài toán tổng quát của bài toán tôi đề cập ban đầu. K điểm chính là K faces, label L chính là relevant face. Trình bày theo cách này, bài toán tổng quát hơn và về mặt nguyên tắc, cách giải quyết của nó có thể áp dụng cho các bài toán tương tự. Nếu mỗi điểm là face, thì tôi trở lại bài toán ban đầu. Nếu mỗi điểm là object, tôi lại có bài toán mới. Có thể thấy cách trình bày top-down dễ thuyết phục người đọc hơn, mặc dù phần còn lại hầu như của hai cách đều như nhau.Nói một cách tóm tắt:- Kĩ năng trình bày đóng vai trò rất quan trọng trong việc tăng khả năng được chấp nhận của bài báo.- Thảo luận trong nhóm giúp ích rất nhiều trong quá trình hoàn chỉnh bài báo.- Cố gắng miêu tả ý chính của bài chỉ trong vòng 1 câu. Đây sẽ là tiêu đề của bài báo.- Nên chú ý đến người đọc khi trình bày.Rất hi vọng nhận được sự trao đổi của các bạn. Những trao đổi như thế này sẽ rất có ích để nhóm chúng ta có nhiều bài ở các top conferences hơn nữa.