Đang đọc

Thuật toán quyết định số phận

Chương 2: Lỗi hay chủ đích?

TEXT
Nghe truyện

File MP3 được tạo bằng AI Text-to-Speech và xử lý nền. Bạn có thể nghe liền nhiều chương như một playlist để không phải bấm lại sau mỗi chương.

Đang phát
Chương 2: Lỗi hay chủ đích?
Đã tạo xong MP3
Tải audio
Minh không gõ ngay.

Trong hệ thống này, tốc độ là tiêu chuẩn. Truy vấn phải nhanh, phản hồi phải tức thì, mọi thứ phải tối ưu đến từng mili-giây. Nhưng lúc này, anh cố tình chậm lại.

Một truy vấn sai có thể chỉ là lỗi.
Một truy vấn đúng, đặt sai câu hỏi, có thể là dấu vết.

Anh mở cửa sổ terminal phụ, đăng nhập vào cụm log thô – nơi dữ liệu chưa được “làm sạch” bởi các lớp tổng hợp phía trên.

ssh lognode-17.internal

Màn hình đen hiện dòng chữ trắng đơn giản:

access granted – level B41

Minh thở ra một hơi nhẹ. Quyền của anh đủ để xem log hành vi chi tiết, nhưng không đủ để truy cập trực tiếp vào tham số mô hình. Điều đó nghĩa là nếu có bất thường, anh chỉ có thể lần theo dấu vết, không thể nhìn thấy “ý định”.

Anh bắt đầu với thứ đơn giản nhất.

SELECT timestamp, action, source, risk_score
FROM citizen_logs
WHERE user_id = 'LAN_NGUYEN_3716'
ORDER BY timestamp DESC
LIMIT 200;

Dữ liệu trả về gần như ngay lập tức.

Dòng đầu tiên:

06:12:44 – score_adjustment – system – risk_score: 0.82

Minh kéo xuống.

Trước đó là một loạt hành vi rất bình thường:

22:13:05 – livestream_start – app_market
21:58:12 – payment_confirm – wallet
18:22:47 – purchase_ingredient – supply_chain
16:04:11 – chat_message – social

Không có vi phạm. Không có cảnh báo. Không có dấu hiệu bất thường.

Anh lọc sâu hơn.

SELECT *
FROM risk_evaluation
WHERE user_id = 'LAN_NGUYEN_3716'
ORDER BY evaluated_at DESC
LIMIT 10;

Kết quả khiến anh hơi nhíu mày.

evaluated_at: 06:12:43
base_score: 0.11
propagated_risk: 0.71
final_score: 0.82
model_version: 4.2
trigger: cascade_network

Minh đọc lại dòng “propagated_risk”.

Rủi ro lan truyền.

Không phải hành vi trực tiếp của bà Lan, mà là ảnh hưởng từ những người xung quanh.

Anh tựa lưng vào ghế.

“Liên đới xã hội…”

Giọng Khôi vẫn còn vang đâu đó trong đầu anh.

Minh mở thêm một truy vấn nữa.

SELECT related_user_id, interaction_weight
FROM social_graph
WHERE user_id = 'LAN_NGUYEN_3716'
ORDER BY interaction_weight DESC
LIMIT 20;

Danh sách hiện ra.

Một vài tài khoản quen thuộc: khách hàng thường xuyên, người giao hàng, vài tài khoản livestream khác.

Không có gì đặc biệt… cho đến dòng thứ bảy.

USER_ID: MINH_TRAN_3707
interaction_weight: 0.62

Minh đứng khựng lại.

Căn hộ của anh.

Anh nhìn chằm chằm vào dòng đó vài giây.

“Không thể nào…”

Anh lập tức truy ngược lại.

SELECT timestamp, action
FROM citizen_logs
WHERE user_id = 'MINH_TRAN_3707'
AND timestamp > NOW() - INTERVAL 24 HOUR;

Kết quả hiện ra:

07:15:12 – elevator_shared
07:15:14 – proximity_detected
07:15:16 – voice_interaction
07:15:40 – proximity_end

Minh nhớ lại khoảnh khắc đó.

Hành lang tầng ba mươi bảy.
Cuộc nói chuyện ngắn với bà Lan.
Một vài ánh mắt từ người xung quanh.

Tất cả… đều được ghi lại.

Không chỉ hành động.

Mà cả mối liên hệ.

Anh quay lại bảng risk_evaluation.

“propagated_risk: 0.71”

Một con số quá cao để chỉ là tiếp xúc ngẫu nhiên.

Điều đó nghĩa là… hệ thống không chỉ nhìn vào việc anh nói chuyện với bà Lan.

Nó còn nhìn vào… những người liên quan đến bà.

Minh mở rộng truy vấn.

SELECT related_user_id, interaction_weight
FROM social_graph
WHERE user_id IN (
SELECT related_user_id
FROM social_graph
WHERE user_id = 'LAN_NGUYEN_3716'
)
ORDER BY interaction_weight DESC
LIMIT 50;

Một mạng lưới hiện ra.

Dày đặc.

Chồng chéo.

Một đồ thị đúng nghĩa.

Và ở góc dưới cùng, một cụm nhỏ được đánh dấu bằng màu xám nhạt.

CLUSTER_TAG: unstable_group_19
risk_index: high

Minh chưa từng thấy nhãn này trong tài liệu chính thức.

Anh thử truy cập chi tiết.

SELECT *
FROM cluster_metadata
WHERE cluster_id = 'unstable_group_19';

Màn hình khựng lại một nhịp.

Sau đó trả về:

access denied – restricted layer

Minh nghiến nhẹ hàm.

Anh quay lại terminal, thử cách khác.

Nếu không xem được cluster… thì xem từng người trong cluster.

SELECT user_id, current_score
FROM citizens
WHERE cluster_id = 'unstable_group_19'
ORDER BY current_score ASC;

Danh sách hiện ra.

Điểm trung bình: dưới 4.0

Một vài người ở mức 2.x
Một vài người đã bị đánh dấu đỏ

Và một dòng khiến Minh lạnh sống lưng:

USER_ID: TRAN_VAN_KHOI
SCORE: 4.8

Khôi.

Đồng nghiệp của anh.

Minh quay sang nhìn Khôi ở bàn bên.

Cậu ta vẫn đang gõ phím, vừa uống café, vừa nói chuyện với một người khác về chuyện tối qua đi bar.

Không có dấu hiệu gì cho thấy Khôi đang “nguy cơ cao”.

Nhưng hệ thống thì nghĩ khác.

Minh cảm thấy một thứ gì đó bắt đầu lệch khỏi quỹ đạo.

Không phải lỗi nhỏ.

Mà là… logic.

Anh quay lại bảng chính.

Tại sao bà Lan bị kéo xuống?

Vì bà nằm trong một cụm có rủi ro cao.

Tại sao cụm đó bị đánh giá cao?

Không rõ.

Tại sao Khôi lại nằm trong cụm đó?

Càng không rõ.

Minh mở lại dòng trigger:

trigger: cascade_network

Cascade.

Hiệu ứng dây chuyền.

Một người bị đánh dấu → kéo theo người liên quan → rồi lan tiếp → rồi lan tiếp…

Nếu không có điểm dừng, hệ thống này có thể tự tạo ra rủi ro từ chính nó.

Anh nhanh tay viết một truy vấn kiểm tra.

SELECT COUNT(*)
FROM risk_evaluation
WHERE trigger = 'cascade_network'
AND evaluated_at > NOW() - INTERVAL 6 HOUR;

Kết quả:

33,412

Minh nhìn con số đó.

Ba mươi ba nghìn người.

Trong sáu giờ.

Không phải một lỗi cá biệt.

Mà là một hiện tượng.

Một làn sóng.

Anh tiếp tục đào sâu.

SELECT AVG(propagated_risk)
FROM risk_evaluation
WHERE trigger = 'cascade_network';

0.67

Quá cao.

Bất kỳ hệ thống ổn định nào cũng phải giữ giá trị này thấp.

Nếu không, toàn bộ xã hội sẽ bị kéo xuống theo hiệu ứng domino.

Minh đặt tay lên trán.

“Đây không còn là tuning nữa…”

Đây là một thứ gì đó đang tự khuếch đại.

Một mô hình tự học… đang học sai hướng.

Hoặc…

Đang học đúng theo một mục tiêu mà anh chưa từng được thấy.

Anh mở thêm một truy vấn cuối cùng.

SELECT *
FROM hidden_rules
LIMIT 10;

Lần này, không phải “access denied”.

Màn hình chỉ hiện một dòng duy nhất:

table exists – no schema available

Minh chậm rãi thở ra.

Bảng tồn tại.

Nhưng không có cấu trúc.

Không có metadata.

Không có tài liệu.

Một thứ không nên tồn tại trong một hệ thống được kiểm soát chặt như thế này.

Anh ngồi im vài giây.

Rồi quay sang Khôi.

“Ê.”

Khôi không ngẩng lên. “Gì?”

“Ông có biết cluster unstable_group_19 không?”

Khôi dừng tay.

Chỉ một giây thôi.

Nhưng Minh thấy rõ.

Một khoảng dừng rất nhỏ… nhưng đủ để không phải là phản xạ tự nhiên.

Khôi quay sang, cười nhẹ.

“Ông đào sâu quá rồi đấy.”

“Có vấn đề gì à?”

Khôi nhún vai. “Không phải phần của tụi mình. Đụng vào mấy cái cluster đó dễ dính quyền hạn lắm.”

Minh nhìn thẳng vào mắt cậu ta. “Ông nằm trong đó.”

Nụ cười của Khôi tắt đi.

Hai người nhìn nhau vài giây.

Không ai nói gì.

Xung quanh vẫn là tiếng bàn phím, tiếng quạt máy, tiếng dữ liệu chảy đều đều như chưa từng có gì xảy ra.

Cuối cùng, Khôi quay đi, giọng thấp hơn bình thường:

“Minh… có những thứ trong hệ thống này… tốt nhất là cứ để nó chạy.”

“Ý ông là sao?”

Khôi không trả lời ngay.

Cậu ta nhấp một ngụm café đã nguội, rồi nói rất nhỏ:

“Ông nghĩ cái này là lỗi à?”

Minh không đáp.

Khôi cười nhạt.

“Hy vọng là lỗi.”

Một khoảng lặng kéo dài.

Minh quay lại màn hình.

Con trỏ chuột nhấp nháy trên dòng chữ:

trigger: cascade_network

Trong đầu anh, một câu hỏi bắt đầu hình thành rõ ràng hơn bất kỳ dòng code nào:

Nếu không phải lỗi… thì là ai đang quyết định chuyện này?

Và tệ hơn —

liệu còn ai đang quyết định nữa không… ngoài chính hệ thống?