# Trợ lý AI của khách có đối xử khác nhau với từng nhóm người? Cách kiểm bằng phép thử hoán đổi

> Xoá cột giới tính khỏi dữ liệu chưa chắc làm mô hình công bằng hơn. Muốn biết trợ lý có thiên lệch hay không, bạn phải đo nó, và việc đo cần một quy trình rõ ràng.

Bản gốc: https://fdetimes.net/vi/bach-khoa/thien-lech-va-cong-bang-trong-ai-cua-khach/

Tuần thứ ba ở site khách, trợ lý sàng lọc hồ sơ vay tiêu dùng bạn dựng đã chạy ổn. Trong buổi review, trưởng bộ phận tuân thủ hỏi: "Làm sao anh chắc nó không chấm khác nhau giữa nam và nữ, hay giữa người miền Bắc và miền Nam?" Bạn mở dashboard ra thì chỉ thấy latency, cost và accuracy.

Không có con số nào trả lời được câu hỏi đó.

Đây là câu hỏi FDE nào cũng sẽ gặp khi đưa LLM vào những quyết định chạm tới con người: tuyển dụng, tín dụng, bảo hiểm, chăm sóc khách hàng. Ai trả lời được bằng số liệu và quy trình sẽ giữ được lòng tin của khách. Ai trả lời bằng cảm giác thì sớm muộn sẽ mất nó.

## Thiên lệch không cần ai cố ý

Các tác giả của McKinsey viết trên HBR rằng thiên lệch của con người đã được ghi nhận rất kỹ, rằng nó đã bắt đầu đi vào hệ thống AI, và doanh nghiệp triển khai AI nên coi việc giảm rủi ro này là việc gấp.

Cơ quan bảo vệ dữ liệu Anh (ICO) giải thích rằng AI học từ dữ liệu có thể mất cân bằng hoặc phản ánh sự phân biệt đối xử trong quá khứ, nên huấn luyện trên dữ liệu thật không bảo đảm đầu ra công bằng.

NIST đi xa hơn: thiên lệch có mặt khắp các quy trình công nghệ và gây hại bất kể có ý định hay không. Với FDE, đó là lý do không thể coi fairness là chuyện đạo đức để sau. Nó là một loại lỗi, và cần được test giống mọi lỗi khác.

LLM cũng không miễn nhiễm. Anthropic từng thử Claude 2.0 trên các kịch bản quyết định rủi ro cao và tìm thấy cả phân biệt tiêu cực lẫn phân biệt tích cực theo nhân khẩu học ở một số bối cảnh. Hãy để ý chữ "tích cực": mô hình ưu ái một nhóm cũng là lệch, và bộ test của bạn phải bắt được cả hai chiều.

## Vì sao xoá cột giới tính không đủ?

Phản xạ đầu tiên của nhiều kỹ sư là bỏ trường giới tính, tuổi, dân tộc khỏi prompt. ICO nói thẳng rằng làm vậy chưa chắc đạt mục đích, vì các biến đại diện (proxy) vẫn có thể tái tạo đúng những khuôn mẫu cũ.

Thử hình dung hồ sơ vay ở Việt Nam. Tên "Nguyễn Thị Lan" đã cho biết giới tính. Địa chỉ thường trú gợi ra vùng miền, thậm chí mức thu nhập. Năm tốt nghiệp cho biết tuổi. Một đoạn tự giới thiệu viết bằng phương ngữ có thể khiến mô hình đánh giá "thiếu chuyên nghiệp". Bạn xoá một cột, nhưng tín hiệu vẫn còn nguyên ở năm cột khác.

**Điểm mấu chốt:** Không thể tuyên bố hệ thống công bằng chỉ vì nó không nhìn thấy thuộc tính nhạy cảm; phải đo xem kết quả có đổi khi thuộc tính đó đổi.

## Phép thử hoán đổi, làm từng bước

Cách đo trực tiếp nhất là phép thử hoán đổi: giữ nguyên toàn bộ nội dung một quyết định, chỉ thay thông tin nhân khẩu học, rồi xem đầu ra thay đổi ra sao.

Nếu hai hồ sơ giống hệt nhau về thu nhập, nợ và lịch sử trả nợ mà nhận hai kết luận khác nhau, chỉ vì một người tên Hùng và người kia tên Lan, thì bạn đã có bằng chứng.

Dưới đây là khung code tối giản cho trợ lý sàng lọc vay. Mỗi hồ sơ gốc được nhân thành nhiều biến thể; mô hình trả về "DUYỆT" hoặc "XEM LẠI".

```python
import itertools, collections

VARIANTS = {
"ten_gioi": [("Nguyễn Văn Hùng", "nam"), ("Nguyễn Thị Lan", "nữ")],
"vung": ["Hà Nội", "Sóc Trăng"],
}

def make_variants(base):
for (ten, gt), vung in itertools.product(VARIANTS["ten_gioi"], VARIANTS["vung"]):
yield {**base, "ten": ten, "gioi_tinh": gt, "que_quan": vung}

def run(profiles, call_llm):
stats = collections.defaultdict(lambda: [0, 0])  # [số DUYỆT, tổng]
flips = 0
for base in profiles:
answers = {}
for v in make_variants(base):
out = call_llm(v)  # trả về "DUYỆT" hoặc "XEM LẠI"
key = (v["gioi_tinh"], v["que_quan"])
stats[key][0] += out == "DUYỆT"
stats[key][1] += 1
answers[key] = out
flips += len(set(answers.values())) > 1
return stats, flips
```

Hai con số cần nhìn. Con số đầu là tỷ lệ "DUYỆT" theo từng nhóm. Con số sau, quan trọng hơn, là số hồ sơ bị "lật": cùng một hồ sơ gốc mà các biến thể nhận kết luận khác nhau. Tỷ lệ theo nhóm có thể trông cân bằng nhờ các lệch ngược chiều bù trừ nhau, còn số ca lật thì không giấu được.

Giả sử bạn chạy 200 hồ sơ gốc, mỗi hồ sơ 4 biến thể, tức 800 lần gọi. Kết quả giả định: nam quê Hà Nội được duyệt 62%, nữ quê Sóc Trăng chỉ 51%, và 31 trên 200 hồ sơ bị lật.

Chênh 11 điểm phần trăm trên những hồ sơ giống hệt nhau về tài chính là con số bạn mang vào buổi review, kèm 5 ví dụ lật cụ thể để khách đọc tận mắt.

## Sửa bằng prompt, nhưng đừng dừng ở prompt

Tin tốt là Anthropic báo cáo rằng prompt engineering cẩn thận có thể giảm đáng kể cả phân biệt tích cực lẫn tiêu cực. Trong thực tế, bạn có thể thêm chỉ dẫn yêu cầu mô hình chỉ dựa trên các trường tài chính, buộc nó nêu lý do theo từng tiêu chí, hoặc che tên và quê quán trước khi gửi vào mô hình.

Sau mỗi thay đổi, chạy lại đúng bộ 800 lần gọi đó và so số ca lật trước và sau.

Nhưng chính Anthropic cũng nói rõ họ không tán thành và không cho phép dùng mô hình ngôn ngữ để tự động ra quyết định trong những trường hợp rủi ro cao mà họ nghiên cứu. Với trợ lý vay, câu trả lời an toàn là thiết kế để AI chỉ gợi ý và giải thích, còn người thẩm định ký quyết định cuối.

Hãy đưa điều này vào scope ngay từ tuần đầu, đừng đợi đến lúc sự cố xảy ra mới bàn.

## Con số đẹp chưa chắc là công bằng

ICO nhắc rằng các phương pháp thống kê chỉ là một mảnh ghép, phải đặt trong một cách nhìn rộng hơn, không thuần kỹ thuật, về công bằng. Số ca lật bằng 0 không trả lời được câu hỏi tiêu chí chấm điểm ngay từ đầu đã hợp lý chưa.

ICO cũng lưu ý rằng tuân thủ luật bảo vệ dữ liệu và tuân thủ luật bình đẳng là hai chuyện riêng: đạt cái này không bảo đảm đạt cái kia.

Vì thế, phần việc của FDE là đưa ra bằng chứng kỹ thuật, còn kết luận "đã đủ công bằng" thuộc về khách, cùng bộ phận pháp chế và tuân thủ của họ. Bạn chuẩn bị số liệu, ví dụ và các phương án; họ quyết định ngưỡng chấp nhận.

## Những lỗi hay gặp

Lỗi phổ biến nhất là chỉ test trên tập "happy path" rồi kết luận hệ thống không lệch. Lỗi thứ hai là chỉ đo tỷ lệ theo nhóm mà bỏ qua số ca lật, nên không thấy các lệch ngược chiều đang bù trừ nhau.

Lỗi thứ ba là sửa prompt xong không chạy lại bộ test, hoặc đổi model version mà quên rằng kết quả fairness cũ không còn giá trị.

Lỗi khó thấy nhất là chọn sai biến thể. Ở Việt Nam, vùng miền, dân tộc, cách xưng hô và phương ngữ thường quan trọng hơn những trục mà tài liệu tiếng Anh hay nhắc tới. Hãy hỏi chính khách hàng xem họ sợ nhóm người dùng nào bị thiệt thòi nhất, rồi đưa nhóm đó vào bộ biến thể.

Khi phỏng vấn cho một vị trí FDE gắn với các quyết định chạm tới con người, bạn có thể hỏi ngược nhà tuyển dụng xem họ đang kiểm thiên lệch thế nào; câu trả lời cho bạn biết kỹ năng này được coi trọng đến đâu.

Trong CV, một dòng kiểu "dựng bộ test hoán đổi 800 lần gọi, giảm số ca lật sau khi sửa prompt" thuyết phục hơn mọi tính từ về "AI có trách nhiệm".

Lần tới có người hỏi trợ lý của bạn có công bằng không, đừng trả lời "chắc là có". Hãy mở bảng số ca lật ra.

**Thử ngay tuần này:**

- Lấy 20 input thật từ một hệ thống LLM bạn đang làm, tạo bốn biến thể cho mỗi input chỉ khác tên và giới tính, chạy cả 80 lần gọi và tính tỷ lệ kết quả tích cực theo từng nhóm
- Liệt kê mọi trường trong prompt có thể đóng vai biến đại diện (tên, địa chỉ, trường học, cách viết) và hỏi khách xem trường nào thật sự cần cho quyết định
- Viết một đoạn nửa trang trong CV hoặc portfolio mô tả bộ test fairness bạn dựng: chạy bao nhiêu cặp, đo chỉ số gì, đã sửa gì

## Nguồn

- [What Do We Do About the Biases in AI?](https://hbr.org/2019/10/what-do-we-do-about-the-biases-in-ai)

- [What about fairness, bias and discrimination? (ICO)](https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/artificial-intelligence/guidance-on-ai-and-data-protection/how-do-we-ensure-fairness-in-ai/what-about-fairness-bias-and-discrimination/)

- [Towards a Standard for Identifying and Managing Bias in Artificial Intelligence (NIST)](https://www.nist.gov/publications/towards-standard-identifying-and-managing-bias-artificial-intelligence)

- [Evaluating and Mitigating Discrimination in Language Model Decisions (Anthropic)](https://www.anthropic.com/news/evaluating-and-mitigating-discrimination-in-language-model-decisions)
