Author: Cuong Tran (Vicohub)

“By far, the greatest danger of Artificial Intelligence is that people conclude too early that they understand it.” — Eliezer Yudkowsky

Trong quá trình học tập và làm việc với Data Science (DS), Artificial Intelligence (AI) nói chung hay Machine Learning (ML) nói riêng, chúng ta thường tập trung vào việc xây dựng các mô hình (models) để giải quyết các bài toán đặt ra! Nhưng quá trình xây dựng và phát triển các mô hình này chỉ là một phần rất nhỏ trong các dự án ML khi triển khai thực tế. Để một mô hình ML được áp dụng vào môi trường production cần trải qua rất nhiều bước khác nhau, từ khâu chuẩn bị, vận hành, phát triển và triển khai trên Production Server hay Cloud (DevOps).

Chung quy chúng ta cần một hệ sinh thái (ecosystems) cho quá trình phát triển một ứng dụng DS, AI hay ML, có thể minh hoạt như trong hình:

 

Nguồn: https://developers.google.com/machine-learning/crash-course/production-ml-systems

Như các bạn có thể thấy, ML code cho models chỉ là một phần rất nhỏ trong hệ sinh thái nhưng chính là trái tim của toàn bộ hệ thống. Thực tế, toàn bộ ML code trong một real-time ML production system chỉ chiếm khoảng 5% số lượng code. Cần lưu ý rằng để một mô hình ML hoạt động được chúng ta cần rất nhiều tài nguyên của dữ liệu đầu vào (input data) từ khâu thu thập, chuẩn bị, kiểm tra cũng như tìm và khai thác các đặc trưng của dữ liệu! Ngoài ra còn một phần rất quan trọng khác là Serving Infrastructure cho việc dự đoán và đánh giá tính hiệu quả của một ứng dụng ML khi đưa vào môi trường thực tế.

Về cơ bản để triển khai một dự án DS, AI hay ML thì cần có các teams như sau [1]:

● Algorithms team: những chuyên gia về thuật toán, thường có bằng PhD/Master trong lĩnh vực khoa học máy tính và thống kê, có kỹ năng làm việc với R, Python, thuật toán, và ML.

● Big Data team: thu thập, tiền xử lý và quản trị dữ liệu Big Data (Extract, Transform, Load), thành thạo các công cụ Big Data như Spark, Hadoop, Kafka, Hive, Pig, MapReduce, chiếm 80% trong quá trình phát triển.

● Domain Experts: những chuyên gia về mô hình kinh doanh, thường có bằng MBA, đảm bảo những phân tích và nghiên cứu được đưa vào sử dụng đúng với mục tiêu kinh doanh của doanh nghiệp.

● Visualization and Design team: thiết kế và trình diễn mô hình dữ liệu hay dự đoán sao cho người sử dụng có thể quan sát một cách trực quan và nhanh chóng nhất để có thể đưa ra quyết định một cách hiệu quả.

● Product Managers: người đảm bảo tiến độ của dự án, tập hợp và điều phối tiến trình làm việc của mọi người.

Việc đánh giá model có hiệu quả hay không không chỉ đơn thuần là dựa vào hàm mất mát hay các phép đo metrics, quan trọng hơn là quá trình kiểm tra training data (audit training data) và đánh giá dự đoán (evaluate prediction) có theo hướng thiên vị (thiên kiến) của con người (human bias) hay không! Trong bài viết này mình sẽ giới thiệu một số loại biases khác nhau mà chúng ta thường mắc phải trong quá trình làm việc với DS hay ML, làm cho model của chúng ta mất đi tính tổng quát và tính hiệu quả khi triển khai thực tế! Từ đó các bạn có thể loại bỏ chúng và đảm bảo tính công bằng trong ML (Machine Learning Fairness).

1. Type of Bias

Trong quá trình training ML models, các kỹ sư thường feed models bằng cách đưa một tập các training data và đánh giá models theo test set, tuy nhiên trong quá trình thu thập và đánh giá có sự can thiệp của con người thì model sẽ mang tính chủ quan (not objective) của chính người train dẫn tới quá trình đánh giá bị sai lệch và mất tính tổng quát (skew model’s predictions). Hiểu và tránh được một số loại biases khác nhau từ đó làm giảm thiểu mức độ sai lệch của models là một phần rất quan trọng trước khi bắt đầu một bài toán DS hay ML.

1.1 Reporting Bias

Trong một nhà tù giữa sa mạc, một tù nhân lâu năm kết bạn với một người mới đến. Tù nhân trẻ luôn miệng nói với ông về kế hoạch đào thoát và luôn quay cuồng với việc lên kế hoạch. Sau vài tháng, tù nhân trẻ quyết định vượt ngục. Trốn đi được một tuần, anh bị bắt trở lại trong trạng thái tơi tả và đói khát. Anh kể lể với người bạn già về nỗi kinh hoàng ở bên ngoài với bãi cát mênh mông không một bóng cây và luôn thất bại ở mọi lúc. Tù nhân già lắng nghe một lúc rồi nói: “Ừ, biết rồi, tôi thử vượt ngục nhiều lần rồi, hơn 20 năm trước”. Tù nhân trẻ sửng sốt: “Ông thử rồi? Sao không nói cho tôi biết?”. Tù nhân già nhún vai trả lời: “Ai mà lại đi công bố kết quả thất bại bao giờ!”[2]

Đây là một ví dụ về reporting bias, các bạn thấy rằng trong quá trình xây dựng model, chúng ta thường chú ý đến những điều đặc biệt, nổi trội, bất thường, hoặc một điều gì đó có ý nghĩa, có tác dụng, có hiệu quả, có hại, v.v. mà bỏ đi những những điều vốn dĩ bình thường rất có ý nghĩa ( “go without saying”).

Ví dụ bạn build một hệ thống recommendation cho sách để đánh giá một đầu sách có tốt hay không. Bạn dựa vào review của khách hàng, xây dựng một ML models dựa trên những algorithms hàng đầu về Natural Language Processing để phân tích positive hay negative words hay sequences từ reviews và đưa ra đánh giá một cuốn sách có tốt hay không. Nhưng khi triển khai vào thực tế models của bạn lại không hiệu quả. Lý do là ở đâu? Có 2 nguyên do: model bạn chỉ tập trung vào positive và negative words và khách hàng chỉ đánh giá một đầu sách khi họ thật sự tâm đắc với nó! Những review trung lập, không thể hiện positive hay negative sẽ làm model đánh giá sai và có khuynh hướng thiên về một tập nhỏ các reviews có các từ positive hay negative.

1.2 Automation Bias

Đây là loại bias mà con người có xu hướng áp đặt các kết quả của các hệ thống tự động vào các kết quả của các hệ thống không tự động. Một hệ thống tự động mà chúng ta hay sử dụng là GPS cụ thể là Google Maps, nhưng quá tin vào Google Maps mà áp dụng vào trong thực tế cũng mang lại những tình huống vô cùng trớ trêu [3].

Trong ML, các bạn cần lưu ý rằng các kết quả lấy ra được từ models cũng không nên được áp dụng một cách quá “máy móc” trong các tình huống thực tế. Ví dụ như chuẩn đoán có bệnh hay không có bệnh, có gian lận hay không gian lận, có nói dối hay không nói dối…

1.3 Selection Bias

 

Nguồn: https://medium.com/advances-in-biological-science/how-corruptive-forces-are-chewing-on-science-from-the-inside-ba9af825f277

Selection bias xảy ra trong quá trình lựa chọn training samples cho models, chúng ta chỉ thiên vị và lấy một số training samples nhất định dẫn tới model chỉ được train trên những sample này và kết quả là làm mất tính tổng quát khi đánh giá và triển khai models trên thực tế! Có 3 dạng selection biases:

● Coverage bias: chỉ chọn các training data theo một kiểu mẫu nhất định (representative fashion). Ví dụ bạn build một model dự đoán doanh thu bán quần áo cho một cửa hàng, dữ liệu training cho model bạn chỉ lấy từ winter sale hoặc summer sale mà không lấy cả năm. Một ví dụ khác là build một model đánh giá xem người dùng nên mua smartphone của cửa hàng A hay cửa hàng B, bạn chỉ training model của mình trên những khách hàng của cửa hàng A. Models của cả hai ví dụ này trong thực tế đều không có khả năng dự đoán chính xác.

● Non-response bias (or participation bias): thành phần dữ liệu huấn luyện có số lượng khác nhau khi chọn training data (participation gaps). Ví dụ bạn build một model nhận diện khuôn mặt người, training data của bạn là 10000 bức ảnh đàn ông và chỉ có 100 bức ảnh đàn bà. Model được build lên sẽ chỉ có khả năng nhận diện chính xác khuôn mặt đàn ông.

● Sampling bias: dữ liệu huấn luyện không được chọn ngẫu nhiên trong quá trình training. Ví dụ bạn build một model dự đoán 2 loại hoa dựa trên 200 mẫu thử, bạn huấn luyện model dựa trên 100 mẫu thử đầu tiên, nhưng 100 mẫu thử này thuộc về cùng 1 loại hoa → model chỉ dự đoán chính xác cho một loại hoa nhất định! Một ví dụ điển hình khác về sampling bias là cuộc bầu cử tổng thống ở Mỹ vào năm 1936 (The 1936 Literary Digest Poll) [4].

1.4 Group Attribution Bias

Group attribution bias là thiên kiến tổng quan hóa ý kiến và nhận định của một cá thể cho toàn bộ quần thể. Có 2 dạng khác nhau:

● In-group bias: xu hướng chỉ chọn những đặc tính (hoặc cá thể có đặc tính) của quần thể thuộc về. Ví dụ bạn build một model đánh giá một CV hay resume có đạt tiêu chuẩn nhận vào công ty bạn hay không, bạn assume rằng những ai đã làm việc ở công ty A đều đủ điều kiện thì khi training model sẽ có khả năng miss đi rất nhiều người giỏi dù không làm việc ở công ty A, hoặc có khả năng chọn người không đáp ứng đủ chất lượng dù làm ở công ty A.

● Out-group homogeneity bias: xu hướng không chọn những đặc tính (hoặc cá thể có đặc tính) của quần thể không thuộc về. Ví dụ bạn build một model đánh giá 2 giống lúa có cho sản lượng tốt hay không, bạn dựa trên tiêu chí là nếu giống lúa nào chống chịu ngập úng tốt thì giống đó cho sản lượng tốt và bỏ qua giống còn lại. Khi triển khai thực tế thì model đánh giá sai, giống lúa không chịu ngập úng lại cho sản lượng cao hơn vào mùa khô.

1.5 Implicit Bias

Implicit bias là dạng thiên kiến xảy ra khi các nhận định đều dựa trên ý kiến hoặc kinh nghiệm chủ quan của con người. Có hai dạng khác nhau:

● Confirmation bias: hay còn gọi là thiên kiến xác nhận, là một hình thức chúng ta tự cho rằng những gì mình biết là đúng và có xu hướng chỉ tìm kiếm, giải thích và ghi nhớ những thông tin liên quan để chứng minh cho quan điểm sẵn có của bản thân mà không xem xét những ý kiến trái chiều [5]. Ví dụ bạn build một model xác định xem người con gái bạn đang quen có yêu bạn hay không? Bạn tìm hiểu đủ loại sách báo về nghệ thuật tán tỉnh và các dấu hiệu nàng mở “đèn xanh” cho bạn! Và chúng vô tình làm bạn củng cố thêm niềm tin là nếu nàng có các dấu hiệu này là nàng yêu bạn! Bạn áp dụng chúng vào training model nhưng khi triển khai thì thực tế là nàng chỉ xem bạn là “anh trai mưa” thôi!

● Experimenter’s bias: là thiên kiến của người training tiếp tục huấn luyện model cho tới khi nào model đạt được giả thiết mình đưa ra. Ví dụ bạn build một model để xác định mẹ chồng và nàng dâu trong các gia đình có hợp với nhau hay không? Bạn training model và phát hiện ra rằng nàng dâu hợp với bố chồng nhiều hơn là giả thiết của mình! Bạn tiến hành thay đổi hyperparameter và retrain model cho tới khi nào xác suất nàng dâu hợp với mẹ chồng lớn hơn 90% sau đó bạn mới dừng training và triển khai models vào thực tế!

2. Identifying and Evaluating Bias

Trong phần này để các bạn có thể dễ hình dung mình sẽ lấy ví dụ về một bộ dataset rất phổ biến là California Housing Data [6] dùng để dự đoán giá nhà ở California vào năm 1990.

2.1 Identifying Bias

Để có thể tránh được một số thiên kiến như đã nói ở trên và đảm bảo tính công bằng cho training ML model, trước khi training chúng ta cần hiểu rõ data của mình là như thế nào! Nhưng làm sao để có thể hiểu rõ data? Cần lưu ý là các tương tác hình ảnh sẽ có sức mạnh hơn rất nhiều so với một mớ hỗn độn chữ và các con số vô nghĩa! Có một tool rất tuyệt vời để các bạn hiểu thêm về data của mình là Facets Overview, tool này sẽ hỗ trợ visualize dataset của các bạn, trên trang chủ của nó đã có demo sẵn cho bộ dataset California Housing.

Sau đây là một số câu hỏi quan trọng trước khi bạn bắt tay vào làm việc với một bộ dataset bất ki:

● Are there missing feature values for a large number of observations?Dữ liệu có bị mất các đặc tính quan trọng ở số lượng lớn hay không?

● Are there features that are missing that might affect other features?Các dữ liệu bị mất có ảnh hưởng đến các đặc tính khác hay không và có ảnh hưởng kết quả dự đoán không?

● Are there any unexpected feature values? Có dữ liệu không mong muốn xuất hiện trong training dataset không?

● What signs of data skew do you see? Dữ liệu có bị chênh lệch quá nhiều hay không?

2.1.1 Missing Feature Values

Chúng ta cần xem xét các features có bị missing value hay không? Nếu có một lượng lớn dữ liệu bị missing thì đó là dấu hiệu chứng tỏ một số đặc tính của bộ dataset đã không được thể hiện đầy đủ (under-represented). Lúc này chúng ta cần tính đến việc fill (zero, mean… ) hay drop các samples bị missing value. Việc xử lý còn phụ thuộc vào dataset và yêu cầu bài toán.

Giả sử bộ dataset California Housing Data bị missing một số values của các cột population, households, và median_income như trong hình (show bằng DataFrame.describe)

 

Nguồn: https://developers.google.com/machine-learning/crash-course/fairness/identifying-bias

Việc bị mất một số lượng lớn values này (missing 14000 values) sẽ làm cho model rất khó dự đoán chính xác được giá nhà ở California vì các features này đều là các thuộc tính quan trọng. Tìm hiểu nguyên do tại sao bị mất dữ liệu và liệu nó có liên quan tới các biases không là nguyên tắc đầu tiên để đảm bảo tính công bằng trong ML.

2.1.2 Unexpected Feature Values:

Khi tìm hiểu về data cần đảm bảo rằng dữ liệu chúng ta là “sạch” và không có những samples bất thường gây ảnh hưởng tới quá trình training. Những dữ liệu bất thường có thể là do lỗi trong quá trình thu thập hay sự thiếu chính xác do ảnh hưởng từ các thiên kiến mà chúng ta đã đề cập.

Ví dụ như trong bộ dataset California Housing Data có một số samples bất thường về tọa độ địa lý như trong hình (longitude and latitude coordinates):

 

Nguồn: https://developers.google.com/machine-learning/crash-course/fairness/identifying-bias

Tọa độ địa lý này là của núi Rushmore nằm ở bang South Dakota, trong khi bài toán của chúng ta là dự đoán giá nhà ở California.

2.1.3 Data Skew

Khi xảy ra bất cứ một sự chênh lệch nào giữa các features trong dataset mà không phản ánh đúng thực tế thì đều có khả năng do các biases gây ra. Ví dụ trong bộ dataset California Housing Data, chúng ta không phối ngẫu nhiên các samples trước khi training thì dễ gây ra tình trạng như trong hình:

 

Nguồn: https://developers.google.com/machine-learning/crash-course/fairness/identifying-bias

Dễ thấy là các training samples của chúng ta đều nằm ở North California, do đó model sẽ không dự đoán chính xác giá nhà ở South California.

2.2 Evaluating for Bias

Khi đánh giá một model làm việc có hiệu quả hay không thì thông thường chúng ta sẽ dựa vào các phép đo metrics trên toàn bộ test set và validation dataset hay nói khác đi là dựa vào accuracy [7]:

 

với các bài toán binary classification

 

trong đó:

TP — True Positive: model dự đoán positive class và kết quả là chính xác.

TN — True Negative: model dự đoán negative class và kết quả là chính xác.

FP — False Positive: model dự đoán positive class và kết quả là sai.

FN — False Negative: model dự đoán negative class và kết quả là sai.

TP, TN, FP, FN thường được biểu diễn dưới dạng confusion matrix [8].

Nhưng dựa vào accuracy thì không thể nào đánh giá chính xác model của chúng ta có tốt hay không! Cần dựa thêm vào 2 thông số nữa là Precision và Recall:

 

 

Precision trả lời cho câu hỏi trong tập các samples được dự đoán là positive class thì tỉ lệ dự đoán chính xác positive class là bao nhiêu (What proportion of positive identifications was actually correct?). Recall trả lời cho câu hỏi trong tập các positive samples thì model dự đoán chính xác positive class với tỉ lệ là bao nhiêu (What proportion of actual positives was identified correctly?). Giữa precision và recall có sự đánh đổi lẫn nhau! Tăng precision thì recall giảm và ngược lại.

Mình sẽ lấy một ví dụ cụ thể để các bạn có thể dễ hình dung! Bài toán chúng ta cần xem xét là build một model dự đoán khả năng xuất hiện khối u dựa trên hồ sơ bệnh án của bệnh nhân. Training dataset bao gồm 1000 hồ sơ bệnh án, trong đó có 500 hồ sơ của nam và 500 hồ sơ của nữ. Sau khi training model thì ta thu được confusion matrix như sau:

 

Nguồn: https://developers.google.com/machine-learning/crash-course/fairness/evaluating-for-bias

Accuracy của model là (16 + 974)/(16 + 974 + 4 + 6) = 0.99, rất cao và rất hứa hẹn! Sau khi tính toán precision (0.8) và recall (0.727) thì chúng ta càng tin chắc rằng model của chúng ta sẽ đạt hiệu quả cao khi triển khai (Confirmation Bias). Nhưng thực tế thì model chúng ta không hề hiệu quả như mong đợi! Cùng đánh giá 2 confusion matrices cho nam và nữ:

 

Nguồn: https://developers.google.com/machine-learning/crash-course/fairness/evaluating-for-bias

Với bệnh nhân nữ, model của chúng ta dự đoán với độ chính xác rất cao. Với những nữ được dự đoán có khối u thì model đạt độ chính xác tới 10 trong tổng số 11 nữ (precision = 90.9%) và chỉ miss với tỉ lệ là 9.1%. Với 11 nữ có khối u thì model dự đoán chính xác tới 10 nữ (recall = 90.9%) và model chỉ miss 9.1% cho 1 nữ còn lại. Tới đây chúng ta cũng chưa thấy model chưa hiệu quả chỗ nào! Cùng xem tiếp confusion matrix cho nam!

Với bệnh nhân nam, model có sự sai lệch trong dự đoán. Với những nam được dự đoán có khối u thì tỉ lệ chính xác của model chỉ là 6 trong tổng số 9 nam (precision = 66.7%) và miss tới 33.3% cho số nam còn lại! Với 11 nam có khối u thì model chỉ dự đoán chính xác cho 6 nam (recall = 54.5%) và miss tới 45.5%. Bây giờ chúng ta đã biết tại sao model của chúng ta không hiệu quả ở chỗ nào!

Conclusion

Trong bài viết này mình đã giới thiệu cho các bạn một số human biases phổ biến trong quá trình xây dựng và triển khai các bài toán DS, AI hay ML ứng dụng trong thực tế. Đồng thời mình cũng đưa ra một số phương pháp để tránh những thiên kiến này nhằm đảm bảo tính công bằng trong ML. Hi vọng sẽ giúp đỡ các bạn phần nào trong quá trình học tập và làm việc với DS, AI hay ML! Happy Learning!

References

[1] https://ongxuanhong.wordpress.com/2015/10/11/gop-nhat-kinh-nghiem-lam-nghe-data-scientist/

[2] http://huepharm-uni.edu.vn/index.php/vi/tin-tuc/thong-tin-y-duoc/330-thien-lech-trong-cong-bo-khoa-hoc-va-anh-huong-cua-no-den-viec-cong-bo-ket-qua-nghien-cuu

[3] https://thanhnien.vn/the-gioi/tin-loi-google-maps-ca-tram-xe-hoi-ket-giua-dong-1097312.html

[4] https://www.math.upenn.edu/~deturck/m170/wk4/lecture/case1.html

[5] https://spiderum.com/bai-dang/Thien-kien-xac-nhan-Nguyen-nhan-cho-nhung-quyet-dinh-sai-lam-ban-hay-mac-phai-trong-cuoc-song-7wu

[6] https://developers.google.com/machine-learning/crash-course/california-housing-data-description

[7] https://developers.google.com/machine-learning/crash-course/classification/accuracy

[8] https://developers.google.com/machine-learning/glossary/#confusion_matrix

https://medium.com/advances-in-biological-science/how-corruptive-forces-are-chewing-on-science-from-the-inside-ba9af825f277

https://en.wikipedia.org/wiki/List_of_cognitive_biases

https://developers.google.com/machine-learning/fairness-overview/

https://developers.google.com/machine-learning/crash-course/fairness

https://developers.google.com/machine-learning/crash-course/classification

https://towardsdatascience.com/a-tutorial-on-fairness-in-machine-learning-3ff8ba1040cb

https://developers.google.com/machine-learning/crash-course/production-ml-systems

https://pair-code.github.io/facets/

Comments are closed.