[Nhập Môn Deep Learning] Làm research là làm cái quái gì (2) - Fail and Fail again
Nói chung thì, như Bác Hồ có dặn: Thắng không kiêu, Bại không nản.
Sau một chuỗi ngày họp hành liên tục với công ty đối tác, cuối cùng tôi cũng có thể bình tâm ngồi xuống để viết tiếp một bài blog nữa về chuyện làm nghiên cứu. Lần này, ta sẽ đi vào một chủ đề xảy ra thường xuyên đến mức trở thành "bình thường mới" trong ngành research: đối mặt với thất bại. Những thất bại có thể là sự từ chối thẳng thừng, kết quả thí nghiệm tệ hại, hay tệ hơn nữa nhận ra rằng giả thuyết mình theo đuổi suốt mấy năm trời là sai. Mạng xã hội đầy rẫy những câu chuyện truyền cảm hứng như việc JK Rowling bị từ chối bởi 12 nhà xuất bản trước khi Harry Potter ra đời, hay Edison thử hàng ngàn lần trước khi làm được bóng đèn. Nhưng có lẽ, với những người đã "fail thật sự", đặc biệt là trong nghiên cứu khoa học, thì mấy câu chuyện ấy không giúp được gì nhiều. Bởi trong ngành này, vẫn có những "ngôi sao" mà chỉ cần đăng một dòng tweet cũng đủ làm thay đổi hướng đi cả một cộng đồng. Còn phần đông chúng tôi những, "con mọt nghiên cứu", thì vẫn ngày ngày vật lộn với mô hình, tài nguyên hạn chế, và đôi khi là cả sức khỏe, để chứng minh những điều mà chưa chắc đã có 100 người đọc đến cuối cùng.
Và trước khi chạm được đến bất kỳ "thành tựu" nào, ta phải đi qua hàng loạt những thất bại. Trong bài viết này, tôi sẽ chia sẻ: …. (đoạn này chưa chọn được từ, sẽ chỉnh sửa sau) Bài viết này, trước là viết ra cho vui, cho có chuyện. Sau là mở ra một cái nhìn về ngành nghiên cứu và chuyện nghiên cứu. Sau nữa là chuẩn bị một chút gọi là có tinh thần cho các bạn có ý định đi theo con đường nghiên cứu. Disclaimer: Tôi không muốn bài này trở thành bài làm cho bạn "thấy khó mà lui"
Làm nghiên cứu thì có đếch gì mà thất bại?
Ngay từ đầu chuỗi bài viết này, tôi luôn cố gắng khẳng định rằng “research” là việc mà tất cả mọi người đều có thể làm được. Tuy nhiên, để có thể biến nó thành nghề có thể nuôi sống bản thân thì câu chuyện sẽ bắt đầu phức tạp dần. Ngoài việc lượm lặt thông tin, tổng hợp, phân tích, thì bạn phải tạo ra các tri thức có ý nghĩa (đúng đắn) để đóng góp cho cộng đồng và lớn hơn là xã hội (nếu được).
Có thể bạn sẽ nghĩ: "Làm research thì cũng chỉ là ngồi đọc paper, viết code, vẽ biểu đồ, rồi publish thôi mà, có gì đâu mà gọi là thất bại?" Thực tế thì, đúng là chỉ có bằng đó việc. Tuy vậy, viết ra paper hoặc patent (độ khó tuỳ quốc gia) không phải là xong. Các nghiên cứu cần được đánh giá khắt khe bởi cộng đồng. Quá trình này diễn ra khá căng thẳng và thường đi đến kết quả là bị từ chối. Trong ngành hàng không có một câu mà tôi nghĩ là áp dụng được cho ngành nghiên cứu.
Flying involves endless hours of sheer boredom, punctuated by moments of stark terror.Alan E. Diehl, Air Safety Investigators : Using Science to Save Lives-One Crash at a Time
Hàng tháng trời ngồi đọc báo, viết code, chuẩn bị, và viết paper là “endless hours of sheer boredom”. Và những khoảng khắc “eureka” hoặc nhận thất bại chính là “stark terror”.
Sự thật là, làm nghiên cứu là chuỗi ngày sống trong sự hoài nghi, thử sai, và chịu đựng. 80% thời gian là để tìm hiểu tại sao mô hình chạy không như mong đợi, 15% để sửa những thứ mình tưởng là nguyên nhân nhưng không phải, và chỉ 5% là phần “đẹp đẽ”. Số thời gian ít ỏi này là khi mà làm ra được biểu đồ ra hình ra dáng, mô hình ra kết quả, hoặc may mắn lắm là… có paper được accept. Nhìn chung, làm nghiên cứu thường hướng đến cái mới, tức là chưa có ai làm. Vì thế, đôi khi những sai sót nhỏ không ai trải qua trước đó lại khiến cho một nghiên cứu chậm trễ đến hàng năm hoặc sớm hơn là bị bỏ vào thùng rác. Trong trường hợp này, các cụ nhà ta có câu: “Thua keo này ta bày keo khác”, nhưng các cụ cũng có câu “Kẻ thức thời là trang tuấn kiệt”. Thế thì có nên cố gắng kiên trì hay không? Ai mà biết!
Thất bại trong nghiên cứu không phải là ngoại lệ. Nó là tiêu chuẩn. Chúng tôi hay đùa với nhau
- Làm ra một ý tưởng tưởng chừng rất mới, rồi phát hiện ra người ta làm từ 2018 rồi (và thậm chí làm hay hơn ý tưởng của mình). Đây là đoạn tự vấn khả năng rất nhiều.
- Viết một đoạn code thần thánh chạy mượt, huấn luyện mô hình suốt 3 ngày, rồi phát hiện ra quên chỉnh một thông số nào đó. Nó có thể ám ảnh kinh khủng hơn nhiều nếu code chạy ngay lần đầu thử.
- Review trả về 3 dòng, trong đó dòng cuối là “Reject”. Nếu bạn đã, đang, hoặc sẽ trở thành researcher trong tương lai. Đây là sẽ điều bạn không thể tránh khỏi. Điều đáng ghét ở đây là đôi khi reviewer rất ẩu hoặc “bẩn tính”, sẵn sàng cho bài báo của bạn “ra chuồng gà” bằng những câu hỏi, lý do rất ngang ngược. Bạn có thể thử tìm trên các diễn đàn reddit về việc này, mới đây nhất là những trường hợp cực kì phi lí từ hội nghị “ICML” - một trông những hội nghị lớn nhất ngành AI hiện tại.
- Mất hàng tháng để xây dựng giả thuyết, rồi tự mình chứng minh nó sai. Một người làm khoa học, không thể viết thứ nguỵ khoa học. Vì thế, bạn tốn hàng trăm ngày vô ích, mà một năm chỉ có 365 ngày thôi).
Điều đáng sợ là lượng nghiên cứu được công bố hàng ngày (trong ngành AI) tăng chóng mặt (bạn đọc có thể tìm được con số trên statista). Nó là một con dao mang tên “peer pressure” kề ngay vào cổ của những người làm nghiên cứu không chỉ trong môi trường học thuật mà cả trong môi trường công nghiệp, thậm chí tồi tệ hơn nếu bạn gặp một leader/supervisor quá khó chịu.
![Hình 1: Meme. [Nguồn trong ảnh]](https://images.spiderum.com/sp-images/32a78ec038c511f081ab4bd9ecbafb74.png)
Hình 1: Meme. [Nguồn trong ảnh]
Đáng lo hơn nữa là vấn đề “publish or perish” đang ngày càng nghiêm trọng. Các “máy đẻ” nghiên cứu khoa học “dỏm” đang hoạt động hết công suất với nhiều mục đích: tăng danh tiếng cho trường, đạt chỉ tiêu để lấy fund, bán cho các bạn học sinh/sinh viên cần báo để tốt nghiệp/du học. (Tất cả các trường hợp trên bạn đọc đều có thể search thấy bằng ngay tiếng Việt cũng được). Điều này vô tình còn tạo ra thêm một con dao “fake peer pressure” nữa. Và nếu bạn muốn kiếm miếng cơm từ nghiên cứu, bạn phải chấp nhận áp lực từ cả hai con dao này.
Người ngoài nhìn vào sẽ thấy “nghiên cứu là công việc của những người thông minh”, nhưng chỉ người trong ngành mới biết: đây là công việc của những người lì — rất lì, và có chút… tự hành xác. Mỗi ngày thì 1 đến 2 ly cà phê là đủ, đến deadline nộp báo thì hết cà phê là phải pha thêm ngay. Tôi đã từng ở lab 3 ngày liên tục chỉ vì đi hội nghị chill quá không chịu viết báo cho xong.
Và vì vậy, câu hỏi không phải là: "Làm nghiên cứu có thất bại không?", mà là:
"Khi thất bại đến, mình có đủ sức chơi tiếp không?"
Với tôi, câu trả lời là "tuỳ ngày".
Đối diện với thất bại
Trong nghiên cứu, thất bại không phải là sự kiện mà là trạng thái thường trực. Nó không đến một cách kịch tính như phim ảnh, mà nó rỉ rả, từng chút một, làm ta nghi ngờ chính mình:
- Làm cả tuần để nhận ra mình quên set random seed.
- Submit paper lần thứ 5 vẫn “Thanks for your submission, but…”
- Làm thí nghiệm 3 tháng mới nhận ra mô hình đang overfit dữ liệu train do normalize sai.
- Mất nguyên một mùa hè chỉ để chứng minh giả thuyết ban đầu là sai, mà sai rất đẹp.
Những thất bại nhỏ nhỏ, rả ríc này như là món tra tấn rỏ từng giọt nước vào đầu ai đó suốt nhiều ngày. Nó sẽ đánh quỵ tinh thần chiến đấu thay vì phá huỷ khả năng chiến đấu của một người.
![Hình 2: Meme. [Nguồn: sinh bởi chatgpt]](https://images.spiderum.com/sp-images/bd1ea3e038c511f0ab6e8354ab5b1f0a.png)
Hình 2: Meme. [Nguồn: sinh bởi chatgpt]
Thất bại trong nghiên cứu không phải là chuyện của riêng ai. Từ giáo sư đầu ngành đến sinh viên mới vào phòng lab, ai cũng có một danh sách “những thứ không bao giờ được publish”. Nhưng điều khác biệt nằm ở cách người ta đối diện với nó.
Với tôi, có ba giai đoạn chính:
1. Tê liệt cảm xúc
Giai đoạn này thường diễn ra sau khi nhận review 1 sao hoặc khi mô hình chạy ra toàn NaN. Đôi khi là cài đặt môi trường cả tuần không xong vì những ràng buộc vớ vẩn phải tuân thủ. Những lúc thế ấy, não tôi sẽ tự động bật chế độ “chết trong lòng một ít”. Khi cảm xúc của bạn tê liệt, bạn không muốn làm gì cả, thậm chí còn sợ cả việc code. Tôi sẽ đi bộ, pha trà, nói chuyện với labmates như thể chẳng có chuyện gì xảy ra, hoặc đôi khi... xoá hết code làm lại từ đầu cho đỡ bực.
2. Giải nghĩa thất bại
Sau khi não đã nguôi nguôi, tôi bắt đầu quay lại. Đọc lại review, nhìn lại code, đặt câu hỏi: “Cái sai này có lẽ đến từ đâu?” chứ không còn là “Mình có ngu không mà sai vậy trời?”. Bước này quan trọng. Nó tách mình ra khỏi thất bại, nhìn nó như một hệ quả logic của hệ thống chưa tối ưu chứ không phải bản án tử hình cho sự nghiệp. Và rằng, thất bại là điều chắc chắn xảy ra, chắc chắn xảy ra tiếp. Nếu mình muốn hoàn thành và công bố những thứ mình đang làm, mình phải chấp nhận làm tiếp.
3. Bình thản mà tiếp tục
Đến lúc này, tôi sẽ làm một trong hai việc:
Iterate: Sửa lại mô hình, gửi lại paper, đổi giả thuyết.
Pivot: Chuyển sang hướng khác, bài toán khác, có người còn chuyển cả lĩnh vực nghiên cứu từ NLP sang multimodal luôn.
Kết luận
Nói chung thì, như Bác Hồ có dặn:
Thắng không kiêu, thua không nản.Bác Hồ
Bạn thấy đúng và thấy thích là được. Research mà, phải vui cái đã.
References
Bài viết này không có references, có nhiều fact tôi chỉ nhớ mà viết lại, không chắc chắn về tính đúng đắn, kính mong bạn đọc tự "fact-check". Xin cảm ơn đã đọc.

Khoa học - Công nghệ
/khoa-hoc-cong-nghe
Bài viết nổi bật khác
https://matt.might.net/articles/phd-school-in-pictures/