Mở đầu Chuyện tôi đi thi NLP và vác về một mớ báo cáo
Các bạn ạ, tôi nhớ cái hồi còn đi học, mỗi lần nghe tới hai chữ “báo cáo” là y như rằng tôi tìm cách lảng tránh. Ấy vậy mà giờ đây, ngồi viết blog về chuyện đi thi NLP rồi phải viết báo cáo tổng kết, tôi lại thấy nó… thú vị một cách kỳ lạ.
Có lẽ vì tôi đã trải qua đủ nhiều để nhìn nhận nó như một cách để hiểu sâu hơn những gì mình đã làm, chứ không phải là một thủ tục hành chính khô khan. Câu chuyện bắt đầu từ một cuộc thi về xử lý ngôn ngữ tự nhiên (NLP) có sự đồng hành của Upstage.Nghe tên thì có vẻ “xịn xò” nhưng thực chất, hành trình của tôi từ một kẻ “ngoại đạo” đến khi hoàn thành báo cáo là cả một quá trình dài với không ít lần “vỡ mặt”. Hôm nay, tôi muốn kể lại toàn bộ câu chuyện đó, từ khâu chuẩn bị, tham gia cho đến những kinh nghiệm xương máu khi viết báo cáo cuộc thi NLP sao cho không bị “điểm liệt”.Nếu bạn đang có ý định tham gia một cuộc thi tương tự, bài viết này chính là “cẩm nang” mà tôi ước gì mình đọc được trước khi bắt đầu.Hiểu đúng về NLP trước khi “lao vào”
Trước khi kể về cuộc thi, tôi phải nói một chút về cái “sân chơi” mang tên NLP này. Nhiều người cứ nghĩ NLP là một thứ gì đó quá cao siêu, nhưng thực ra nó đã âm thầm xuất hiện trong cuộc sống chúng ta từ rất lâu rồi.
Các bạn có nhớ vụ AlphaGo đánh bại kỳ thủ Lee Se-dol hồi tháng 3/2016 không? Đó là một cột mốc khiến cả thế giới chú ý đến AI, nhưng ít ai biết rằng AlphaGo thuộc dạng “Narrow AI” (trí tuệ nhân tạo hẹp) – tức là nó chỉ giỏi duy nhất một việc là chơi cờ vây.Còn NLP lại là một mảng khác, nó xoay quanh việc giúp máy tính hiểu và sinh ra ngôn ngữ của con người. Điều đáng nói là các mô hình NLP ngày nay, điển hình như ChatGPT, đã tiến xa hơn nhiều so với Narrow AI thuần túy.Chúng được thiết kế chủ yếu cho các tác vụ ngôn ngữ, nhưng lại có thể áp dụng cho nhiều việc khác nhau: viết code, tóm tắt văn bản, dịch thuật, thậm chí là phân tích cảm xúc. Tuy vậy, chúng vẫn chưa phải là “General AI” (trí tuệ nhân tạo tổng quát) đúng nghĩa, bởi kiến thức của chúng bị giới hạn trong phạm vi dữ liệu được đào tạo.Cái bẫy ở đây là nhiều người mới vào nghề thường “ảo tưởng” rằng cứ đổ dữ liệu vào là mô hình sẽ tự hiểu hết mọi thứ. Thực tế thì không phải vậy, và tôi đã phải trả giá bằng chính bài thi đầu tiên của mình để nhận ra điều đó.Khi tham gia cuộc thi NLP, việc đầu tiên bạn cần làm không phải là chạy model, mà là ngồi xuống và trả lời câu hỏi: “Bài toán này thuộc dạng nào? Phân loại văn bản, sinh văn bản hay là hiểu ngữ nghĩa?”.Nếu bạn không trả lời được câu hỏi này một cách rành mạch, thì đến 90% là bạn sẽ đi sai hướng ngay từ những bước đầu tiên. Đó chính là lý do vì sao trước khi tìm hiểu về cuộc thi, tôi khuyên các bạn nên dành thời gian tìm hiểu kỹ về bản chất của NLP và các mô hình ngôn ngữ lớn (LLM), bởi vì cuộc thi chỉ là nơi để bạn “thực chiến” những kiến thức nền tảng mà thôi.Hành trình tham gia cuộc thi NLP Từ “gà mờ” đến khi hoàn thành báo cáo
Nói về cuộc thi NLP có sự góp mặt của Upstage, tôi nhớ nhất là giai đoạn đầu tiên: đọc hiểu đề bài. Nghe thì có vẻ đơn giản, nhưng đề bài của các cuộc thi NLP thường được viết rất “mở” và yêu cầu người tham gia phải tự đề xuất hướng giải quyết.
Có những đội thi đã chọn cách tiếp cận an toàn là dùng các mô hình có sẵn như BERT hay GPT rồi tinh chỉnh (fine-tune) trên bộ dữ liệu của cuộc thi. Còn đội của tôi thì sao?Chúng tôi đã chọn một hướng đi “liều lĩnh” hơn: thử nghiệm với nhiều kiến trúc mô hình khác nhau và so sánh kết quả. Để các bạn dễ hình dung, tôi xin phép được tóm tắt một vài thông tin quan trọng mà tôi đã tổng hợp được trong quá trình nghiên cứu trước khi bắt tay vào làm:
| Mô hình | Đặc điểm chính |
|---|---|
| GPT-3/GPT-4 | Sinh văn bản giống người |
| BERT | Hiểu ngữ cảnh hai chiều |
| LLaMA (Meta) | Mã nguồn mở, hiệu quả |
| Claude (Anthropic) | Chú trọng an toàn, đạo đức |
| Mistral | Nhẹ, hiệu suất cao |
Bảng trên chỉ là một phần nhỏ trong số hàng chục mô hình mà chúng tôi đã cân nhắc. Mỗi mô hình đều có những điểm mạnh và điểm yếu riêng, và việc lựa chọn mô hình nào phụ thuộc rất nhiều vào đặc điểm của bộ dữ liệu mà cuộc thi cung cấp.
Có một sự thật mà tôi đã học được sau cuộc thi này: không có mô hình nào là “vạn năng” cả. Có những mô hình sinh văn bản rất tốt nhưng lại phân loại cảm xúc rất tệ, và ngược lại.Vì thế, việc thử nghiệm nhiều mô hình khác nhau không phải là một sự lãng phí thời gian, mà là một cách để bạn hiểu rõ hơn về bản chất bài toán và tìm ra “chân ái” của mình. Trong quá trình thi, đội của tôi đã có một phen “khóc ròng” vì tưởng rằng chỉ cần nạp dữ liệu vào mô hình là xong.Chúng tôi đã phải mất gần một tuần chỉ để làm sạch dữ liệu, xử lý các trường hợp ngoại lệ và chuẩn hóa định dạng đầu vào. Đến bây giờ nghĩ lại, tôi vẫn thấy giai đoạn tiền xử lý dữ liệu (preprocessing) chính là lúc quyết định 50% sự thành bại của cả bài thi.Và khi đã có kết quả, chúng tôi lại phải đối mặt với một thử thách khác: viết báo cáo cuộc thi NLP sao cho thuyết phục được ban giám khảo rằng cách tiếp cận của chúng tôi là hợp lý và có cơ sở khoa học.Nghệ thuật viết báo cáo cuộc thi NLP không bị “điểm liệt”
Đây có lẽ là phần mà tôi tâm đắc nhất và cũng là phần mà rất nhiều đội thi, kể cả những đội có kết quả tốt, lại thường xem nhẹ. Các bạn biết không, có một nghịch lý trong các cuộc thi NLP: người ta có thể chạy model rất giỏi, điểm số trên leaderboard rất cao, nhưng lại viết báo cáo một cách hời hợt, thiếu chiều sâu và cuối cùng bị đánh giá thấp.
Ngược lại, có những đội có kết quả không quá nổi bật nhưng lại trình bày báo cáo một cách logic, chặt chẽ và thuyết phục đến mức giành được giải thưởng phụ từ phía nhà tài trợ. Vậy bí quyết nằm ở đâu?Theo kinh nghiệm của tôi, một báo cáo cuộc thi NLP tốt cần phải trả lời được ba câu hỏi lớn: “Tại sao bạn chọn cách tiếp cận này?”, “Bạn đã làm gì để cải thiện kết quả?” và “Nếu làm lại từ đầu, bạn sẽ thay đổi điều gì?”. Nhiều đội thi thường mắc sai lầm khi chỉ tập trung vào việc mô tả kiến trúc mô hình một cách khô khan mà quên mất rằng ban giám khảo muốn nhìn thấy tư duy giải quyết vấn đề của bạn, chứ không phải là một bản mô tả kỹ thuật.Một điều quan trọng nữa mà tôi muốn nhấn mạnh: đừng bao giờ “ngụy biện” bằng cách đưa ra những con số không có căn cứ hoặc cố tình làm phức tạp vấn đề để che giấu việc bạn không hiểu rõ. Ban giám khảo của các cuộc thi NLP thường là những người có chuyên môn rất sâu, họ sẽ hỏi bạn những câu hỏi “xoáy” vào đúng điểm yếu của bài làm.Nếu bạn không hiểu rõ mô hình của mình đang làm gì, họ sẽ phát hiện ra ngay. Vì vậy, hãy viết báo cáo một cách trung thực, thừa nhận những hạn chế và đề xuất hướng khắc phục trong tương lai.Sự trung thực và tinh thần cầu thị luôn được đánh giá cao hơn là sự hoàn hảo giả tạo. Để các bạn có cái nhìn cụ thể hơn, tôi xin phép được chia sẻ một vài đầu mục chính mà tôi thường sử dụng khi viết báo cáo cho các cuộc thi NLP:
- Giới thiệu bài toán: Mô tả bối cảnh, ý nghĩa thực tiễn và các thách thức chính của bài toán.
- Phân tích dữ liệu: Trình bày các đặc điểm thống kê của bộ dữ liệu, những khó khăn gặp phải khi xử lý.
- Phương pháp đề xuất: Giải thích lý do lựa chọn mô hình, các kỹ thuật tiền xử lý và hậu xử lý.
- Thí nghiệm và kết quả: Mô tả quá trình thử nghiệm, so sánh giữa các mô hình và phân tích lỗi.
- Kết luận và hướng phát triển: Tóm tắt những gì đã học được và đề xuất các cải tiến trong tương lai.
Mỗi phần trong số này đều đóng vai trò quan trọng như nhau, và việc phân bổ thời gian hợp lý cho từng phần là một kỹ năng mà bạn chỉ có thể rèn luyện thông qua thực hành. Đừng để đến phút chót mới bắt đầu viết báo cáo, bởi vì đó là công thức chắc chắn dẫn đến một bài viết cẩu thả và thiếu chiều sâu.
Những bài học xương máu và lời khuyên cho người mới bắt đầu
Sau khi đã trải qua cả một quá trình dài từ việc tìm hiểu về NLP, tham gia cuộc thi và vật lộn với báo cáo, tôi nhận ra rằng giá trị lớn nhất của cuộc thi không nằm ở giải thưởng hay thứ hạng, mà nằm ở những bài học mà tôi đã học được. Một trong những bài học lớn nhất là: đừng bao giờ đánh giá thấp sức mạnh của việc hiểu dữ liệu.
Bạn có thể sử dụng những mô hình mạnh mẽ nhất hiện nay như GPT-4 hay Claude, nhưng nếu bạn không hiểu dữ liệu của mình đang nói về điều gì, thì mọi thứ chỉ là vô nghĩa. Một bài học quan trọng khác là về việc quản lý kỳ vọng.Khi mới bắt đầu, tôi đã có một niềm tin khá ngây thơ rằng chỉ cần sử dụng một mô hình ngôn ngữ lớn (LLM) “xịn xò” là mọi bài toán NLP sẽ được giải quyết một cách dễ dàng. Nhưng thực tế đã cho tôi thấy rằng, các mô hình này cũng có những hạn chế riêng của chúng.Ví dụ, có những mô hình sinh văn bản rất tốt, nhưng lại không phù hợp cho các tác vụ yêu cầu độ chính xác cao như trích xuất thông tin hay phân loại văn bản theo nhiều nhãn. Việc hiểu rõ điểm mạnh và điểm yếu của từng loại mô hình là chìa khóa để đưa ra quyết định đúng đắn.Ngoài ra, tôi cũng muốn nhắn nhủ với các bạn rằng, đừng ngại thử nghiệm và mắc sai lầm. Trong quá trình thi, đội của tôi đã có không ít lần “phá đảo” mô hình, chạy ra kết quả tệ hơn cả baseline, và phải quay lại từ đầu.Nhưng chính những lần thất bại đó lại giúp chúng tôi hiểu rõ hơn về bản chất của bài toán và tìm ra những hướng đi mới hiệu quả hơn. Nếu bạn cứ mãi lo sợ thất bại và chỉ dám làm những điều an toàn, thì bạn sẽ không bao giờ có cơ hội để khám phá ra những điều bất ngờ thú vị mà NLP mang lại.Cuối cùng, tôi muốn nói về tầm quan trọng của việc đọc và học hỏi từ những người đi trước. Khi tôi bắt đầu tìm hiểu về NLP, tôi đã dành rất nhiều thời gian để đọc các bài blog, báo cáo kỹ thuật và tham gia các diễn đàn cộng đồng.Một trong những tài liệu hữu ích mà tôi tình cờ đọc được là cuốn “Sách trắng phân tích công nghệ ChatGPT”, trong đó giải thích rất rõ về sự khác biệt giữa các loại AI, từ Narrow AI đến General AI và Super AI. Việc hiểu rõ bức tranh tổng thể về AI sẽ giúp bạn có cái nhìn đúng đắn hơn về vị trí của NLP trong hệ sinh thái AI rộng lớn, và từ đó đưa ra những định hướng phát triển phù hợp cho bản thân.Tạm kết Báo cáo không phải là đích đến, mà là một hành trình
Nhìn lại toàn bộ hành trình tham gia cuộc thi NLP và viết báo cáo, tôi nhận ra rằng, giá trị thực sự không nằm ở tấm giấy chứng nhận hay thứ hạng cuối cùng, mà nằm ở những kiến thức, kỹ năng và cả những mối quan hệ mà tôi đã có được trong suốt quá trình đó. Viết báo cáo cuộc thi NLP không chỉ đơn thuần là một nhiệm vụ bắt buộc phải hoàn thành, mà còn là một cơ hội để tôi nhìn lại toàn bộ quá trình làm việc của mình, rút ra những bài học quý giá và định hướng cho những bước phát triển tiếp theo.
Nếu bạn đang chuẩn bị tham gia một cuộc thi NLP nào đó, tôi hy vọng rằng những chia sẻ của tôi trong bài viết này sẽ giúp ích được phần nào cho bạn. Hãy nhớ rằng, một báo cáo tốt không phải là một báo cáo dài dòng, hoa mỹ mà là một báo cáo thể hiện được tư duy logic, sự hiểu biết sâu sắc về vấn đề và tinh thần cầu thị của người viết.Và dù kết quả có như thế nào đi nữa, thì những gì bạn học được từ chính hành trình đó mới là phần thưởng quý giá nhất. Còn bây giờ, nếu bạn đã sẵn sàng bước vào thế giới NLP đầy thú vị này, thì tôi xin chúc bạn sẽ có một hành trình thật đáng nhớ.Và nếu bạn cần thêm lời khuyên hay muốn chia sẻ câu chuyện của mình, đừng ngần ngại để lại bình luận bên dưới nhé. Chúng ta sẽ cùng nhau học hỏi và phát triển trên con đường chinh phục ngôn ngữ tự nhiên này!