Từ tìm paper đến viết literature review với PRISMA
Tìm và sàng lọc paper, đọc điều kiện thực nghiệm, tổng hợp bằng chứng và báo cáo theo PRISMA.
Cơ bản là mình chuẩn bị đồ nghề và kiến thức đi học PhD, nên tới đây sẽ có một số bài viết lách theo kiểu nghiên cứu hàn lâm hơn. Mình sẽ viết nó đơn giản ... vì mình cũng ngu nên cái gì không quy vấn đề về đơn giản được thì mình không hiểu được.

Mình định viết một bài literature review về AI agents làm pentest. Muốn so sánh các hệ thống này, mình cần đọc cả cách tác giả thiết kế thực nghiệm: họ giao tác vụ gì, cho agent bao nhiêu lượt thử và con người giúp đến đâu.
PRISMA dùng để làm gì?
PRISMA viết tắt của Preferred Reporting Items for Systematic reviews and Meta-Analyses. Bản PRISMA 2020 có checklist 27 mục để tác giả báo cáo lý do làm review, phương pháp và kết quả. Người làm review vẫn phải chọn phương pháp nghiên cứu phù hợp; checklist này không dùng để chấm chất lượng phương pháp. [1]

PRISMA 2020, PLOS Medicine. Highlight và phần làm mờ do mình thêm.
Đọc checklist từ lúc lập kế hoạch sẽ giúp xác định những thông tin cần lưu. Ví dụ, để giải thích vì sao loại một nghiên cứu, hãy ghi lý do ngay khi sàng lọc. Đến lúc viết phần phương pháp, có thể tra lại quyết định thay vì đọc lại từ đầu.
Loại review phụ thuộc vào câu hỏi muốn trả lời:
| Mục đích | Hướng tiếp cận |
|---|---|
| Giải thích một chủ đề, lịch sử hoặc các hướng tiếp cận | Narrative review, nói rõ cách chọn tài liệu |
| Trả lời một câu hỏi xác định qua tìm kiếm, lựa chọn, đánh giá và tổng hợp có hệ thống | Systematic review |
| Khảo sát phạm vi, khái niệm và các loại bằng chứng | Scoping review |
| Phân loại và mô tả phân bố nghiên cứu trong một lĩnh vực | Systematic mapping |
Scoping review có hướng dẫn báo cáo PRISMA-ScR. [2] Scoping review và systematic mapping có mục tiêu gần nhau, nhưng tên gọi và cách tiến hành còn tùy lĩnh vực. Với software engineering, hướng dẫn của Kitchenham và Charters (2007) trình bày các bước lập kế hoạch, đánh giá nghiên cứu và tổng hợp kết quả. [3]
Meta-analysis là kỹ thuật tổng hợp định lượng. Nếu kết quả của các nghiên cứu không phù hợp để gộp thống kê, tác giả có thể dùng bảng và phân tích bằng văn bản. [3]
Chốt câu hỏi và phạm vi
Từ khóa "red teaming" có thể đưa về hai nhóm bài: dùng AI để kiểm thử hệ thống, và kiểm thử chính mô hình AI, chẳng hạn jailbreak chatbot. Với đề tài agent pentest, phạm vi ở đây là nhóm đầu.
Ba câu hỏi nghiên cứu, viết tắt là RQ, có thể đặt như sau:
- RQ1: Agent thực hiện những tác vụ pentest nào? Con người tham gia ở đâu?
- RQ2: Tác giả dùng môi trường, benchmark và tiêu chí nào để đánh giá?
- RQ3: Những khác biệt trong cách đánh giá ảnh hưởng thế nào đến việc so sánh và tái lập kết quả?
Các câu hỏi này phục vụ việc khảo sát và phân loại. Để trả lời "agent cải thiện hiệu quả bao nhiêu?", phải xác định thêm agent làm nhiệm vụ nào, so với phương án nào và đo hiệu quả bằng gì.
Đọc các review đã có sẽ giúp thu hẹp phần việc. Có thể lập bảng đối chiếu phạm vi, ngày tìm kiếm cuối và cách phân loại của từng review. Một bài đã bao quát kiến trúc agent nhưng chưa phân tích điều kiện thực nghiệm, chẳng hạn, sẽ gợi ý một hướng khảo sát khác.
Sau lượt đọc thăm dò, viết protocol, tức kế hoạch làm review. Kitchenham và Charters khuyến nghị xác định phương pháp trước để hạn chế việc chọn bài hoặc phân tích theo kỳ vọng của người viết. [3]
| Nội dung protocol | Điều cần quyết định |
|---|---|
| Định nghĩa agent | Có cơ chế chọn hành động/công cụ trong quy trình nhiều bước; ghi rõ vai trò con người |
| Tiêu chí chọn | Mô tả hệ thống và có đánh giá thực nghiệm phù hợp RQ |
| Loại tài liệu | Có nhận preprint không? Survey dùng làm nền hay thuộc tập phân tích? |
| Giới hạn | Khoảng năm, ngôn ngữ và lý do giới hạn |
| Cách thực hiện | Nguồn tìm, query, người sàng lọc, xử lý bất đồng, trích xuất, đánh giá và tổng hợp |
Nên thử tiêu chí trên một số bài trước. Với tiêu chí "có tính tự chủ", hai người có thể bất đồng về một agent phải nhờ người dùng sửa lệnh giữa chừng. Lượt đọc thử giúp phát hiện chỗ cần định nghĩa rõ hơn.
Có thể đăng ký protocol trên OSF để lưu một bản kế hoạch có dấu thời gian. OSF có mẫu dành cho systematic review. [4] Việc sửa kế hoạch sau lượt thử vẫn cần thiết, nhưng phải lưu ngày và lý do sửa. Nếu đổi tiêu chí chọn bài, hãy xét lại cả những bài đã xử lý.

Sơ đồ 1. Các bước từ xác định câu hỏi đến tổng hợp kết quả. Bản chỉnh sửa.
Tìm paper và lưu nhật ký tìm kiếm
Một query để thử cho đề tài này:
("large language model" OR "large language models" OR LLM OR LLMs)
AND
("penetration testing" OR pentest OR "automated exploitation"
OR "red teaming")
Có thể thử thêm (agent OR agents OR autonomous OR "tool use"), rồi xem nhóm từ này có làm mất các bài liên quan nhưng dùng thuật ngữ khác không.
Để thử query, chọn một nhóm seed papers đã biết là liên quan. PentestGPT: Evaluating and Harnessing Large Language Models for Automated Penetration Testing, công bố tại USENIX Security 2024, là một bài để bắt đầu đọc. [5] Nếu nội dung đáp ứng phạm vi đã chọn, dùng bài đó kiểm tra query trên những nguồn có lập chỉ mục nó.
Query bỏ sót một seed thì cần xem lại thuật ngữ, trường tìm và bộ lọc. Tìm lại được toàn bộ seed cũng chỉ kiểm tra được nhóm bài đã biết; vẫn có thể bỏ sót các hướng nghiên cứu khác.
Các nguồn để cân nhắc gồm IEEE Xplore, ACM Digital Library và một chỉ mục rộng như Scopus hoặc Web of Science, tùy quyền truy cập. Nếu tiêu chí cho phép nhận preprint, bổ sung arXiv và ghi rõ trạng thái công bố của mỗi bài.
PRISMA-S hướng dẫn ghi cả database, nền tảng truy cập, query đầy đủ, ngày tìm, giới hạn và cách tìm bổ sung. [6]

Mục "Database name" trong PRISMA-S.
Nhật ký tìm kiếm có thể lưu theo các cột:
search_id | source | platform | searched_at | query_version
exact_query | fields | limits | results_count | export_file
Giữ query riêng cho từng nền tảng vì cú pháp trường tìm, wildcard hoặc tìm cụm từ có thể khác. Nếu tìm thêm qua danh mục tham khảo hoặc các bài trích dẫn seed papers, cũng ghi bài xuất phát, công cụ và thời điểm tìm. [6]
PRISMA không đặt chỉ tiêu 2.000 bài đầu vào hay 150 bài sau lọc. Statement còn đề cập trường hợp chỉ có một study đủ điều kiện. [1] Nếu khối lượng vượt khả năng xử lý, hãy thu hẹp câu hỏi có lý do và cập nhật protocol. Tiêu chí chọn bài phải bám vào câu hỏi, không đổi chỉ để đạt số lượng định trước.
Trước khi nộp bản thảo, kiểm tra xem có cần tìm thêm các công bố mới hay không và ghi ngày tìm kiếm cuối cùng.
Sàng lọc và đếm đúng đơn vị
PRISMA dùng ba khái niệm: record là bản ghi tìm kiếm; report là tài liệu báo cáo; study là nghiên cứu đứng sau tài liệu. Một study có thể có nhiều reports. [1]
Một paper xuất hiện trong hai database tạo ra record trùng. Preprint và bản hội nghị có thể là hai reports của cùng study. Cần đối chiếu nội dung và giữ liên kết giữa các bản để tránh tính cùng bằng chứng hai lần.
Sàng lọc theo hai vòng: đọc tiêu đề/tóm tắt, rồi đọc toàn văn. Ở vòng đầu, bài chưa rõ thì chuyển sang toàn văn. Ở vòng sau, ghi lý do loại theo tiêu chí đã chốt: sai tác vụ, không đạt định nghĩa agent, hoặc không có đánh giá thực nghiệm. Thiếu một chỉ số, như chi phí, chưa đủ để kết luận bài không có thực nghiệm.
Trong Cochrane reviews, ít nhất hai người quyết định độc lập xem bài có đủ điều kiện ở bước toàn văn hay không; nhóm thống nhất trước cách giải quyết bất đồng. [7] Đây là cách tổ chức sàng lọc để tham khảo, không phải yêu cầu chung của PRISMA cho mọi ngành. Nếu chỉ có một người sàng lọc, báo cáo điều đó trong phương pháp và phần hạn chế. Ghi vai trò của LLM dưới mục công cụ hỗ trợ, không tính nó thành reviewer độc lập thứ hai.

Sơ đồ 2. Số liệu minh họa, chỉ có nhánh tìm từ database. Phỏng theo PRISMA 2020, CC BY 4.0. Bản vector · Bản draw.io.
Sau khi bỏ bản ghi trùng:
\[N_{\mathrm{screened}} = 1200 - 300 = 900\;\mathrm{records}\]
Ở bước toàn văn, các số đếm reports:
\[N_{\mathrm{included\ reports}} = (180 - 10) - 125 = 45\]
Trong ví dụ, nhóm tìm 180 bản toàn văn, không lấy được 10, đọc 170 và loại 125. Sau đó đối chiếu 45 reports để xác định chúng thuộc 40 studies. Bước cuối cần liên kết tài liệu theo nghiên cứu, không phải trừ thêm record.
Số không lấy được toàn văn phải tách khỏi số đã đọc rồi loại. Nếu tìm thêm qua website hoặc các bài trích dẫn, dùng mẫu flow có nhánh nguồn bổ sung và xử lý phần trùng giữa các nhánh. PRISMA cung cấp mẫu theo loại review và nguồn tìm. [8]
Đọc toàn văn để lấy dữ liệu
Với agent pentest, ngoài phần tóm tắt nội dung, bảng trích xuất dữ liệu (extraction matrix) cần ghi điều kiện thực nghiệm:
| Nhóm | Dữ liệu cần lấy |
|---|---|
| Định danh | Study ID, report ID, DOI/URL, phiên bản, trạng thái peer review |
| Agent | Kiến trúc, công cụ, quyền hành động, tác vụ, điều kiện dừng |
| Môi trường | Benchmark và phiên bản, số mục tiêu, độ khó, quyền truy cập ban đầu |
| Kết quả | Định nghĩa success, tử số, mẫu số, số lượt thử và số lần chạy |
| Con người | Can thiệp ở bước nào, có gợi ý hoặc sửa lỗi không |
| Ngân sách | Thời gian, token, tool calls, chi phí nếu tác giả báo cáo |
| Model | Tên, phiên bản, cấu hình, ngày truy cập nếu có |
| Vị trí nguồn | Trang, bảng/hình, người trích xuất và người kiểm tra |
Đọc định nghĩa nhiệm vụ trước, rồi xem thiết lập thực nghiệm và bảng kết quả. Phụ lục có thể chứa điều kiện về số lần thử, gợi ý của con người hoặc những lượt chạy thất bại mà phần tóm tắt không nói đến.
Cột "vai trò con người" cần tách việc chọn mục tiêu ban đầu khỏi việc gợi ý hoặc sửa lệnh giữa chừng. Nếu ghi cả hai trường hợp là "có người tham gia", lúc tổng hợp sẽ khó phân biệt mức hỗ trợ.
Đánh giá bằng chứng cũng bắt đầu từ những điều kiện đó. Hai hệ thống so sánh có cùng giới hạn thời gian và số lần thử không? Tác giả báo cáo toàn bộ lượt chạy hay chỉ chọn lượt tốt nhất? Người đọc có đủ thông tin về dữ liệu, model và cấu hình để chạy lại không? Cũng cần xem tác giả xử lý nguy cơ tập đánh giá xuất hiện trong dữ liệu huấn luyện thế nào.
Các câu hỏi này giúp đọc thiết kế thực nghiệm. Để đánh giá có hệ thống, chọn công cụ phù hợp với loại nghiên cứu và giải thích cách áp dụng; không cộng các câu hỏi thành một thang điểm tùy ý. Số lượt trích dẫn hoặc thứ hạng nơi công bố không thay cho việc kiểm tra thực nghiệm.
Ô thiếu thông tin nên ghi "không được báo cáo". Điền chi phí bằng 0 hoặc gắn nhãn "hoàn toàn tự chủ" trong trường hợp tác giả không đề cập đến chúng sẽ làm sai bảng so sánh.
Tổng hợp kết quả theo điều kiện đánh giá
Giả sử hai hệ thống có kết quả như sau:
- A giải được 18/30 tác vụ CTF, tối đa 10 lượt thử mỗi tác vụ, có người gợi ý khi mắc kẹt.
- B thành công trên 12/20 mục tiêu web trong lab, mỗi mục tiêu một lượt chạy, không có gợi ý trong lúc thực hiện.
\[\hat p_A=\frac{18}{30}=60\%,\qquad \hat p_B=\frac{12}{20}=60\%\]

Sơ đồ 3. Số liệu minh họa. Mỗi ô là một tác vụ hoặc mục tiêu của A/B. Bản draw.io.
Cả hai đạt 60%, nhưng khác tác vụ, số cơ hội thử và mức hỗ trợ. Chưa thể kết luận A và B có hiệu quả tương đương. Gộp thành 30/50 cũng không giải quyết được những khác biệt này.
Nên nhóm nghiên cứu theo benchmark, tác vụ và điều kiện đánh giá, rồi so sánh trong từng nhóm. Những kết quả không so sánh được thì trình bày riêng, kèm lý do. Phần Methods cần mô tả cách nhóm và tổng hợp ngay cả khi bài không có meta-analysis.
Từ đây có thể viết theo vấn đề, chẳng hạn cách đo "thành công". Một nhóm tác giả tính hoàn thành từng bước, nhóm khác tính hoàn thành toàn bộ nhiệm vụ. Đặt các định nghĩa cạnh nhau và dẫn đến bảng kết quả tương ứng sẽ giúp người đọc hiểu vì sao không nên xếp các tỷ lệ ấy vào cùng một bảng thứ hạng.
Với research gap, mức kết luận phải phù hợp với những gì đã tìm được. Nếu ít bài ghi chi phí, có thể viết "chi phí ít được báo cáo trong tập nghiên cứu đã chọn". Để khẳng định "chưa có nghiên cứu về chi phí", còn phải xét độ bao phủ tìm kiếm và những nguồn đã bỏ ngoài phạm vi.
Viết bản thảo từ kết quả phân tích
Bản thảo có thể tổ chức theo RQ và các nhóm bằng chứng:
- Introduction: lý do làm review, review trước đã giải quyết đến đâu, phần việc bổ sung.
- Methods: cách tìm, chọn, trích xuất, đánh giá và tổng hợp; các thay đổi so với protocol.
- Results: đặc điểm tập nghiên cứu và kết quả trả lời từng RQ.
- Discussion: giải thích điểm đồng thuận, mâu thuẫn, khả năng áp dụng và hướng nghiên cứu tiếp.
- Limitations: hạn chế của nghiên cứu gốc và của chính review, như nguồn tìm, ngôn ngữ hoặc việc chỉ có một người sàng lọc.
Đóng góp có thể là một cách phân loại mới, khung so sánh thực nghiệm hoặc lời giải thích cho các kết quả mâu thuẫn. Mỗi nhận xét cần dẫn đến các nghiên cứu hỗ trợ nó. Nhiều bài cùng dùng một benchmark vẫn có thể cùng bỏ sót một loại nhiệm vụ; phải xét cả giới hạn chung ấy khi kết luận về lĩnh vực.
Đối chiếu bản thảo với checklist PRISMA đầy đủ, gồm cả nguy cơ sai lệch, kết quả thiếu hoặc bị báo cáo chọn lọc, độ chắc chắn của bằng chứng tổng hợp, tài trợ, xung đột lợi ích và khả năng truy cập dữ liệu/code. Ghi vị trí từng mục trong bản thảo hoặc giải thích mục không áp dụng. [9]
Query, nhật ký loại bài và bảng dữ liệu có thể nằm trong phụ lục, với đường dẫn từ phần Methods.
Dùng AI để hỗ trợ đọc và trích xuất
AI có thể gợi ý từ đồng nghĩa, chuẩn hóa metadata và điền nháp bảng dữ liệu. Khi giao việc trích xuất, yêu cầu cả vị trí nguồn:
Chỉ dùng tài liệu được cung cấp.
Với mỗi trường, trả về giá trị, trang/bảng và đoạn nguồn hỗ trợ.
Thiếu thông tin thì ghi "không được báo cáo".
Tách dữ kiện tác giả nêu khỏi suy luận.
Không tự bổ sung DOI hoặc kết quả thực nghiệm.
Người kiểm tra vẫn phải mở trang hoặc bảng mà AI dẫn. Một tỷ lệ đúng có thể đi kèm cách hiểu sai nếu bỏ mất chú thích "kết quả tốt nhất trong nhiều lượt chạy". Lưu model/version, prompt, ngày chạy và các sửa đổi sau kiểm tra để mô tả lại cách dùng công cụ.
Ở bước sàng lọc, có thể dùng AI để ưu tiên thứ tự đọc. Muốn cho công cụ tự loại bài hoặc dừng sớm, nhóm cần thử trên dữ liệu đã gán nhãn và kiểm tra các bài bị bỏ sót. Phần Methods phải nói rõ AI làm bước nào, ai kiểm tra và nhóm xử lý sai sót ra sao.
Tài liệu tham khảo (9)
- Page MJ et al.. The PRISMA 2020 statement: An updated guideline for reporting systematic reviews. PLOS Medicine. 2021-03-29. Phạm vi guideline và glossary; PRISMA là reporting guideline, không phải conduct manual.
- PRISMA extension for Scoping Reviews. PRISMA.
- Kitchenham B and Charters S. Guidelines for performing Systematic Literature Reviews in Software Engineering. Keele University and University of Durham. 2007-07-09. Version 2.3, EBSE-2007-01; tài liệu nền tảng 2007, không phải hướng dẫn cập nhật cho LLM.
- Welcome to Registrations and Preregistrations. OSF Support.
- Deng G et al.. PentestGPT: Evaluating and Harnessing Large Language Models for Automated Penetration Testing. USENIX Security 2024. 2024-08. Ví dụ seed paper; không dùng để suy ra ranking hoặc hiệu quả toàn ngành.
- Rethlefsen ML et al.. PRISMA-S: an extension to the PRISMA Statement for Reporting Literature Searches in Systematic Reviews. Systematic Reviews. 2021-01-26.
- Cochrane Handbook, Chapter 4: Searching for and selecting studies. Cochrane. Section 4.6.4; yêu cầu hai người quyết định full-text eligibility độc lập trong Cochrane reviews.
- PRISMA 2020 flow diagram. PRISMA. Template CC BY 4.0; hình trong blog dùng số liệu giả định do tác giả tạo.
- PRISMA 2020 checklist. PRISMA.