AI Core cho lập trình viên/Khi nào cần học từ dữ liệu, khi nào if-else vẫn thắng
2/54
Bài 2 / 54~13 phútBản đồ AI & học từ dữ liệuMiễn phí lượt xem

Khi nào cần học từ dữ liệu, khi nào if-else vẫn thắng

Machine learning không phải bản nâng cấp của code thường — nó đổi cách viết luật lấy chi phí dữ liệu, và có cả một lớp bài toán rule-based vẫn thắng.

TL;DR: Machine learning (học máy) không phải bản nâng cấp của code thường — nó là cách khác để giải bài toán: thay vì viết luật, model học pattern từ training data (dữ liệu huấn luyện) đã có sẵn đáp án đúng. Cái giá là model trở thành hộp đen thống kê, khó giải thích từng quyết định. Rule-based thắng khi luật viết ra được, ổn định, cần audit trail; học từ dữ liệu thắng khi luật ngầm, nhiều ngoại lệ, trôi theo thời gian. Hệ quả lớn nhất: bug từ nay có thể nằm trong tập huấn luyện, không nằm trong code — đọc code hay code review không bắt được nó.

Một đội backend ở fintech nhận nhiệm vụ: phát hiện giao dịch thẻ bất thường trước khi tiền rời tài khoản. Cách làm quen tay: viết luật. Giao dịch trên 50 triệu thì gắn cờ; lúc nửa đêm mà số tiền kha khá thì gắn cờ; từ quốc gia lạ so với thói quen của chủ thẻ thì gắn cờ. Tuần đầu, 8 luật đã bắt được phần lớn ca gian lận rõ ràng.

Sáu tháng sau, con số đó là 200 luật chồng chéo — luật mới vá từng ca lọt lưới, luật cũ không ai dám xoá vì không rõ nó đang che ca nào. Đây không phải team làm ẩu, mà là triệu chứng của một lớp bài toán mà luật viết tay không bao giờ liệt kê hết được.

1. Analogy — bảo vệ mới việc và nhân viên thẩm định kỳ cựu

Nhân viên bảo vệ mới vào nghề được phát một checklist: túi to hơn kích cỡ X thì kiểm tra, khách đi một mình sau 11 giờ đêm thì hỏi giấy tờ. Checklist hoạt động tốt khi người viết đã lường trước gần hết tình huống.

Nhân viên thẩm định gian lận kỳ cựu 15 năm lại không tra checklist nào. Họ nhìn một hồ sơ và thấy "có gì đó không ổn" dù không khớp quy tắc nào từng viết ra — trực giác này tới từ việc đã xem qua hàng chục nghìn hồ sơ thật, biết đáp án đúng của mỗi hồ sơ. Không ai lập trình luật "nếu X thì gian lận" cho họ; họ tự rút pattern từ ví dụ.

Đời thườngMachine learning
Checklist viết sẵn cho bảo vệ mớiRule-based: luật do người viết tay, tường minh
Trực giác của thẩm định viên kỳ cựuModel học pattern từ training data — tập ví dụ đã biết đáp án đúng
Checklist đọc, sửa được từng dòngTrực giác không tách được thành luật riêng lẻ để đọc
Bảo vệ mới bó tay trước tình huống lạThẩm định viên vẫn nhận ra ca lạ nhờ pattern học được
💡 Cách nhớ

Checklist là luật viết tay — đọc được, sửa được, nhưng chỉ giỏi việc đã lường trước. Trực giác kỳ cựu là pattern học từ ví dụ — bắt được ca lạ, nhưng không đọc ra được "vì sao" như checklist.

2. Học từ dữ liệu là đánh đổi, không phải nâng cấp

Dễ nghĩ machine learning là "code thông minh hơn" — bản nâng cấp của if-else. Cách nghĩ đó sai ở gốc: rule-based và học từ dữ liệu là hai cách khác nhau để tạo hành vi cho một chương trình; chọn cái nào là một đánh đổi, không phải bậc thang.

Với rule-based, kỹ sư quan sát bài toán, rút ra luật, rồi gõ thành code:

function la_giao_dich_dang_ngo(giao_dich, tai_khoan):
    if giao_dich.so_tien > 50_000_000: return true            -- luat 1: tien lon
    if gio_dem(giao_dich.gio) and giao_dich.so_tien > 5_000_000:
        return true                                            -- luat 2: khuya + tien kha kha
    if giao_dich.quoc_gia != tai_khoan.quoc_gia_thuong_dung:
        return true                                            -- luat 3: quoc gia la
    -- ... con 197 luat nua, moi luat va mot ca that tung lot luoi
    return false

Mỗi dòng luật là một quyết định con người đọc, giải thích, sửa được — điểm mạnh thật của rule-based là minh bạch. Nhưng minh bạch chỉ giữ được khi số luật còn nhỏ; 200 luật chồng chéo không ai dám xoá là minh bạch đã sụp.

Với học từ dữ liệu, kỹ sư không viết luật "gian lận là gì" nữa. Họ đưa model hàng chục nghìn giao dịch cũ đã gắn nhãn đúng — gian lận hay hợp lệ — để model tự tìm pattern phân biệt hai nhóm. Model không được lập trình luật; nó suy ra luật từ ví dụ, không dòng nào đọc được thành "nếu X thì Y" như code viết tay.

Đây chính là cái giá: đổi luật minh bạch lấy việc cung cấp ví dụ, nhận về một hộp đen thống kê — đúng trên phân bố dữ liệu đã thấy, nhưng không ai chỉ ra được "quyết định này tới từ đâu" theo cách đọc một dòng if-else.

3. Bốn câu hỏi quyết định: khi nào chọn học từ dữ liệu?

Áp bốn câu hỏi này vào bài toán gian lận thẻ ở đầu bài:

(a) Luật có viết ra được và ổn định không? Không — kẻ gian đổi chiêu liên tục, chiêu mới sinh ra ngay khi chiêu cũ bị chặn, không tập luật hữu hạn nào phủ hết.

(b) Có đủ ví dụ đã biết đáp án đúng không? Có — hệ thống lâu năm đã tích luỹ hàng chục nghìn giao dịch được xác nhận gian lận hoặc hợp lệ qua khiếu nại, hoàn tiền, xác minh thủ công.

(c) Sai thì hậu quả ra sao, có bắt buộc giải thích được từng quyết định không? Cần một mức giải thích được khi khách khiếu nại, nhưng không đòi minh bạch tuyệt đối tới từng luật.

(d) Luật có trôi theo thời gian không? Có, mạnh — chiêu gian lận phổ biến hôm nay có thể khác hẳn sáu tháng nữa. Luật viết tay sẽ lỗi thời; model học lại được khi có dữ liệu mới.

Ba trên bốn trục nghiêng về học từ dữ liệu; trục (c) không phủ quyết — nên nhiều đội xây hệ lai: model ra quyết định chính, cộng vài luật cứng cho ca bắt buộc minh bạch tuyệt đối. Kết luận không phải "học từ dữ liệu luôn thắng" mà là bốn câu hỏi cho thấy trục nào đang kéo bạn về phía nào.

Cây quyết định bốn câu hỏi — luật ổn định viết ra được, đủ ví dụ đã biết đáp án, bắt buộc minh bạch tuyệt đối, luật trôi theo thời gian — mọi lối thoát đều dẫn về rule-based, chỉ khi qua hết bốn câu mới tới học từ dữ liệu

4. Bảng quyết định

Tình huốngNên dùngVì sao
Tính lãi suất, hạn mức vay, biểu phí, thuếRule-basedLuật do pháp luật/hợp đồng quy định sẵn, phải khớp chính xác điều khoản
Cần audit trail truy được từng quyết định về đúng một điều khoảnRule-basedModel không tách được quyết định thành một điều khoản cụ thể
Dữ liệu lịch sử ít, chưa đủ ví dụ đáng tinRule-basedModel học từ vài trăm ví dụ dễ học nhầm nhiễu thành pattern
Lọc spam, phát hiện gian lận, gợi ý nội dungHọc từ dữ liệuLuật ngầm, nhiều ngoại lệ, đối thủ đổi chiêu liên tục
Bài toán mà "đúng" trôi theo thời gian hoặc theo hành vi người dùngHọc từ dữ liệuRule-based cần sửa tay mỗi lần lỗi thời; model học lại được khi có dữ liệu mới

5. Điểm đắt nhất: luật không biến mất, nó chuyển nhà

Đây là điều dễ nghĩ sai nhất khi mới tiếp cận machine learning: học từ dữ liệu không loại bỏ luật, nó chỉ dời luật từ code sang dữ liệu.

Với rule-based, "luật" nằm tường minh trong code. Với học từ dữ liệu, "luật" nằm ẩn trong tập ví dụ đã gắn nhãn mà model học từ đó. Tập ví dụ lệch — ví dụ đa số ca "gian lận" tình cờ đều rơi vào cuối tuần, thuần tuý vì lịch làm việc của đội xác minh thủ công — model sẽ học ra một "luật" ngầm sai: cuối tuần đáng ngờ hơn. Không ai viết luật đó; nó tự sinh ra từ cách dữ liệu được thu thập.

Hệ quả với engineer: bug bây giờ có thể nằm trong tập huấn luyện, không nằm trong code. Đọc lại vài dòng gọi model không tìm ra vấn đề, vì code không sai; code review cũng không bắt được, vì reviewer đọc diff code chứ không đọc qua hàng chục nghìn dòng dữ liệu huấn luyện. Câu hỏi debug đúng trở thành: dữ liệu huấn luyện có đại diện đúng thực tế không — một kỹ năng khác hẳn đọc code.

6. Pitfall tổng hợp

Nhầm 1 — coi machine learning là "code thông minh hơn if-else": ✅ Đó là cách giải bài toán khác hẳn, đánh đổi minh bạch lấy khả năng bắt pattern ngầm — không có hướng nào cao cấp hơn tuyệt đối.

Nhầm 2 — nghĩ rule-based lạc hậu, cứ có dữ liệu là nên chuyển sang học từ dữ liệu: ✅ Bài toán mà luật do pháp luật/hợp đồng quy định hoặc cần audit trail tuyệt đối vẫn nên giữ rule-based.

Nhầm 3 — nghĩ bug trong hệ thống học từ dữ liệu vẫn nằm ở code như cũ: ✅ Bug có thể nằm trong tập huấn luyện — cách dữ liệu được thu thập, gắn nhãn, hoặc lệch phân bố thực tế; đọc code không tìm ra.

7. Đào sâu

📚 Nguồn gốc — đọc khi muốn xuống tầng sâu hơn

Tài liệu chính chủ:

8. Liên hệ các bài khác

9. Tóm tắt

  • Bốn câu hỏi chọn hướng: luật có ổn định và liệt kê hết được không, đủ ví dụ không, cần audit trail từng quyết định không, luật có trôi theo thời gian không.
  • Chọn rule-based khi luật do pháp luật/hợp đồng quy định hoặc cần minh bạch tuyệt đối; chọn học từ dữ liệu khi luật ngầm, nhiều ngoại lệ, trôi theo thời gian.
  • Điểm đắt nhất: học từ dữ liệu dời luật từ code vào dữ liệu — bug nằm trong tập huấn luyện, đọc code hay code review không bắt được.
  • Hệ thống thực tế thường là lai: model ra quyết định chính, cộng vài luật cứng cho ca bắt buộc minh bạch tuyệt đối.

10. Tự kiểm tra

Tự kiểm tra
Q1
Vì sao gọi machine learning là 'đánh đổi' thay vì 'nâng cấp' so với rule-based lại chính xác hơn?

Nâng cấp ngụ ý cùng cách làm nhưng tốt hơn; ở đây cách làm đổi hẳn — rule-based là kỹ sư viết luật tường minh, machine learning là model tự suy ra pattern từ ví dụ. Đánh đổi thật xảy ra: mất minh bạch (đọc được luật thành dòng if-else), đổi lấy khả năng bắt pattern ngầm con người không liệt kê hết được — nên không có hướng nào cao cấp hơn tuyệt đối, chỉ có hướng phù hợp hơn tuỳ bài toán.

Q2
Đội gian lận thẻ trong bài áp bốn câu hỏi quyết định và ba trên bốn trục nghiêng về học từ dữ liệu. Trục nào không nghiêng hẳn, và vì sao nó không đủ để chặn quyết định chuyển sang học từ dữ liệu?

Trục (c) — yêu cầu giải thích quyết định. Hệ thống vẫn cần giải thích được lý do chặn khi khách khiếu nại, nhưng chỉ ở mức vừa phải, không phải truy mọi quyết định về đúng một điều khoản như tính lãi suất. Vì ràng buộc chỉ vừa phải, nó không phủ quyết ba trục còn lại — gợi ý một hệ lai: model ra quyết định chính, cộng vài luật cứng cho ca bắt buộc minh bạch tuyệt đối.

Q3
Một fintech khác đang cân nhắc dùng model học từ dữ liệu để tự động tính phí phạt trả chậm dựa trên hợp đồng vay. Bạn khuyên gì, dựa trên bảng quyết định trong bài?

Giữ rule-based. Phí phạt trả chậm do điều khoản hợp đồng quy định sẵn — luật viết ra được, ổn định, và mỗi quyết định phải truy về đúng điều khoản khi khách hàng tranh chấp. Nhiều dữ liệu lịch sử không phải điều kiện đủ để chọn học từ dữ liệu; luật ổn định và yêu cầu audit tuyệt đối mới là yếu tố quyết định.

Q4
Vì sao câu 'model học từ dữ liệu này đang phân biệt đối xử một nhóm khách hàng' có thể đúng dù không dòng code nào của hệ thống nhắc tới nhóm đó?

Vì luật không nằm trong code mà nằm ẩn trong tập ví dụ model học từ đó. Nếu dữ liệu huấn luyện lệch — ca 'đáng ngờ' tình cờ trùng một đặc điểm nào đó do cách thu thập dữ liệu — model học ra pattern lệch đó dù không ai lập trình nó. Đây là điểm đắt nhất của bài: bug chuyển từ code sang dữ liệu, đọc code hay code review không phát hiện ra.

Q5
Vì sao 200 luật if-else chồng chéo (hook đầu bài) là dấu hiệu nên cân nhắc học từ dữ liệu, còn 10 luật tính biểu phí rõ ràng thì không?

200 luật chồng chéo là triệu chứng trục (a) thất bại: luật không viết ra được đầy đủ và ổn định, đội liên tục vá luật mới mà không dám xoá luật cũ. 10 luật biểu phí thì ít không phải vì chưa liệt kê hết, mà vì bài toán vốn hữu hạn và ổn định — vấn đề không nằm ở đếm số luật, mà ở việc luật đó có bản chất ổn định, liệt kê hết được hay không.

Bài tiếp theo: Ba kiểu học — tín hiệu nào dạy model

Bài này đáng gửi cho bạn học cùng?

Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.

Bài này có giúp bạn hiểu bản chất không?

Hỏi đáp về bài này

Chưa có câu hỏi

Đặt câu hỏi

Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).

Đặt câu hỏi đầu tiên

Bài tiếp theo

Ba kiểu học — phân biệt bằng tín hiệu dạy