Bước Tiền Xử Lý Đã Âm Thầm Vứt Bỏ Tín Hiệu

Trong loại công việc này có một bước mà gần như ai cũng coi là lao động dọn dẹp nhàm chán: tiền xử lý — việc làm sạch, co giãn và định hình lại dữ liệu trước khi nó chạm tới phần thực sự đảm nhận việc học. Tôi đã đối xử với nó đúng theo kiểu đó, như một việc vặt trung tính cần giải quyết cho xong trước khi công việc thật sự bắt đầu. Nó không hề trung tính, và việc xem nó như vậy khiến tôi phải trả giá đắt. Một phép biến đổi thường lệ mà tôi áp dụng, không hề suy nghĩ thêm, đã âm thầm vứt bỏ đúng cái thông tin mà tôi cần nhất, rồi sau đó tôi tốn nhiều tuần trời ngơ ngác vì sao hệ thống dường như mù tịt trước một thứ rõ ràng đang nằm ngay đó.

Suốt thời gian ấy, tôi đã nhìn nhầm chỗ. Tôi cứ tra hỏi những phần tinh vi, đinh ninh rằng thất bại nằm đâu đó trong sự khôn khéo. Nhưng thất bại đã xảy ra sớm hơn rất nhiều, ở cái phần mà tôi thậm chí còn chẳng buồn coi là một quyết định.

Tiền xử lý có vẻ trung tính. Nhưng không phải vậy.

Khi bạn chuẩn hóa, co giãn, làm mượt hay định hình lại dữ liệu, nó thực sự cho cảm giác như đang dọn dẹp — như lau sạch mặt bàn bếp trước khi bắt tay vào nấu. Trung tính, sạch sẽ, hiển nhiên đúng. Chính cảm giác đó là cái bẫy, bởi vì mỗi một thao tác trong số đó, trên thực tế, đều là một quyết định: quyết định giữ lại thông tin nào và vứt bỏ thông tin nào.

Tiền xử lý “chuẩn” ở đây đặc biệt quyến rũ, bởi vì từ chuẩn khiến nó nghe như một mặc định trung tính đã được chốt sẵn chứ không phải một lựa chọn. Nhưng một phép biến đổi chuẩn chỉ là một tập hợp các mặc định mà ai đó, ở đâu đó, đã chọn cho một trường hợp tổng quát. Nung sẵn bên trong mỗi phép biến đổi là một giả định về cái gì quan trọng và cái gì không — và những giả định đó, hoàn toàn hợp lý trong trường hợp chung, lại có thể sai một cách thẳng thừng và thảm khốc đối với bài toán cụ thể của bạn. Bạn thừa hưởng giả định ấy mà chẳng bao giờ được chỉ cho thấy nó, bởi nó đến trong lốt một thủ tục thường lệ.

Phép biến đổi đã xóa sạch ý nghĩa

Trong trường hợp của tôi — và tôi cố ý nói chung chung — một bước chuẩn hóa hoàn toàn thường lệ đã có tác dụng san phẳng đi một loại thông tin mà, đối với bài toán riêng của tôi, lại tình cờ chính là phần mang ý nghĩa. Bản thân phép biến đổi là đúng. Nó là chuẩn. Nó là loại thứ mà mọi hướng dẫn đều khuyên dùng như một lẽ đương nhiên. Vậy mà đối với bài toán của tôi, nó đang xóa đi tín hiệu trong khi vẫn trung thành giữ lại nhiễu.

Đây là một điều khám phá ra thực sự khiến người ta phải khiêm nhường, bởi nó có nghĩa là mô hình chưa bao giờ thất bại trong việc học cả. Nó đã bị làm cho mù trước cả khi dữ liệu kịp đến tay. Chính tay tôi đã loại bỏ sự phân biệt liên quan trong lúc làm sạch, rồi đặt hệ thống ngồi trước cái kết quả đã được chà sạch và tự hỏi vì sao nó không thể thấy thứ vốn đã không còn ở đó nữa.

Bạn không thể học cái bạn không thể thấy

Đây là nguyên tắc lẽ ra phải hiển nhiên nhưng đã không hiển nhiên: mô hình chỉ có thể làm việc với những gì sống sót qua bước tiền xử lý. Bất cứ thứ gì các phép biến đổi của bạn loại bỏ trước khi dữ liệu đến đều đơn giản là biến mất, vĩnh viễn, đối với mọi thứ ở phía sau. Không có sự tinh vi nào về sau có thể khôi phục lại thông tin đã bị xóa từ trước. Bạn không thể suy luận để quay ngược về một sự phân biệt mà bạn đã xóa mất rồi.

Thế là tôi đã làm toàn bộ công sức theo chiều ngược. Tôi cứ cố làm cho mô hình thông minh hơn, cho nó nhiều năng lực hơn, giúp nó tìm ra quy luật — trong khi vấn đề thực sự là tôi đã vứt bỏ quy luật ấy ở thượng nguồn và giờ đang yêu cầu mô hình khám phá lại thứ mà chính tôi đã đích thân xóa đi. Thật là một kiểu tàn nhẫn kỳ lạ khi đòi hỏi một hệ thống phải tìm ra cái mà bạn đã loại khỏi tầm với của nó, rồi lại phán xét nó vì đã thất bại.

Mọi phép biến đổi đều gây mất mát và đều có thiên kiến

Sự thật tổng quát nằm dưới chuyện này là: không hề tồn tại cái gọi là một phép biến đổi trung tính. Mọi sự định hình lại dữ liệu đều ưu ái một số khía cạnh và đè nén những khía cạnh khác; đó chính là bản chất của việc biến đổi dữ liệu. Co giãn, trên thực tế, tuyên bố rằng độ lớn tuyệt đối không quan trọng. Làm mượt tuyên bố rằng chi tiết ngắn hạn không quan trọng. Mỗi phép biến đổi là một quan điểm về bài toán của bạn — một khẳng định về cái gì là tín hiệu và cái gì là nhiễu — và mỗi khẳng định ấy được đưa ra trong im lặng, như một mặc định, trước khi bạn kịp có bất kỳ cơ hội nào để đồng ý hay phản đối.

Chính sự im lặng đó mới là phần nguy hiểm. Các mặc định nguy hiểm chính bởi vì bạn không trải nghiệm chúng như những lựa chọn. Một quyết định được trình ra dưới dạng việc vặt sẽ không nhận được sự soi xét mà một quyết định đáng được nhận. Bạn sẽ chẳng bao giờ chấp nhận câu “phần này không quan trọng” như một khẳng định bừa bãi về bài toán của mình — nhưng đó lại đúng là thứ bạn chấp nhận, không hề xem xét, mỗi lần bạn áp dụng một phép biến đổi chuẩn mà không hỏi xem nó đang giả định điều gì.

Hãy nhìn dữ liệu trước và sau

Kỷ luật rút ra từ chuyện này cơ bản đến mức gần như đáng xấu hổ: hãy thực sự nhìn xem bước tiền xử lý của bạn làm gì với dữ liệu. So sánh nó trước và sau mỗi bước. Nhìn, một cách cụ thể, xem cái gì đã thay đổi và cái gì đã biến mất. Hãy hỏi, với mỗi phép biến đổi, “thao tác này vừa loại bỏ cái gì, và tôi có thực sự đủ sức để mất nó không?”

Đó là công việc nhàm chán, và nó cho cảm giác rõ rệt là hèn kém so với phẩm giá của bài toán thú vị. Nhưng chính sự so sánh tẻ nhạt, kém hào nhoáng này lại là nơi một số quyết định hệ trọng nhất trong toàn bộ pipeline được âm thầm đưa ra — đưa ra theo mặc định, theo quán tính, theo lời khuyên của một bài hướng dẫn, mà chẳng có ai thực sự quyết định bất cứ điều gì. Chọn nhìn vào nó là chọn biến những mặc định lặng lẽ kia trở lại thành những lựa chọn hữu hình, có thể xem xét được.

Những phần có vẻ rẻ tiền lại giấu đi những sai lầm đắt giá

Đến giai đoạn này của dự án, điều đó đã đông kết lại thành một khuôn mẫu mà tôi thấy ở khắp nơi. Những bước cho cảm giác rẻ tiền và nhàm chán — tiền xử lý, cấu hình, những mặc định khiêm tốn — lại đúng là nơi những sai lầm đắt giá và vô hình tích tụ, chính bởi vì sự rẻ tiền của chúng là thứ miễn cho chúng khỏi bị soi xét. Những phần hào nhoáng, khó nhằn thì được hưởng trọn sự chú ý cẩn thận. Còn phần đường ống thì chỉ nhận được vài giả định và một cái nhún vai.

Mà đường ống lại chính là nơi nước thực sự chảy qua. Một mặc định sai trong một bước nhàm chán không tự xưng rằng nó quan trọng; nó chỉ lặng lẽ đầu độc mọi thứ ở phía sau trong khi mọi ánh mắt đều dán vào cỗ máy hào nhoáng bên trên. Sự lệch pha giữa nơi các vấn đề trú ngụ và nơi sự chú ý đổ về, tôi giờ đã tin chắc, là một trong những nguồn đáng tin cậy nhất gây lãng phí hàng tháng trời trong toàn bộ công cuộc này.

Bài học sâu hơn: hãy ngờ vực từ “chỉ”

Điều cuối cùng tôi mang theo là một mối ngờ vực sâu sắc đối với một từ nhỏ bé: chỉ. Nó chỉ là chuẩn hóa thôi mà. Nó chỉ là làm sạch dữ liệu thôi. Nó chỉ là một phép biến đổi chuẩn, chỉ là tiền xử lý, chỉ là thường lệ. Cái từ “chỉ” ấy chính là nơi hiểm họa ẩn nấp. Nó là dấu hiệu ngôn ngữ của một bước mà bạn đã quyết định trước là sẽ không suy nghĩ về nó — một lá cờ bạn cắm xuống đất để tự nhủ rằng ở đây chẳng có gì đáng xem xét.

Rất thường, ở đó có một thứ đáng để xem xét. Giờ đây, khi có gì đó thất bại theo một cách vô lý, một trong những câu hỏi sớm nhất của tôi không còn là về phần khôn khéo nữa. Nó là: tôi đã làm gì với dữ liệu này, ở những bước nhàm chán phía trước, trước cả khi phần thú vị kịp nhìn thấy nó? Đã hơn một lần, câu trả lời là tôi đã vứt bỏ đúng cái thứ mình đang tìm kiếm, rồi dán cho hành động ấy cái nhãn “chỉ là dọn dẹp”.

— Không tín hiệu, không lợi nhuận, không phải lời khuyên đầu tư.