Nhưng cụm từ “artificial intelligence” mới chính thức xuất hiện từ năm 1955, do John McCarthy (1927-2011) đề xuất. Phương pháp chính để tạo ra AI là tạo ra những máy “biết học” để “thông minh dần lên” để ngày càng trở thành đầy tớ của con người.
Máy thông minh hơn người?
Nhà thờ “Eremitani” (“Các thầy tu khổ hạnh”) ở thành phố Padova, xây từ thời Trung cổ, từng được trang trí bằng những bức tranh trên tường (fresco) rất lớn do họa sĩ Andrea Mantegna vẽ từ thời Phục Hưng, làm cho rất nhiều người ngưỡng mộ, trong đó có đại thi hào Goethe. Vào năm 1944, trong một trận ném bom của Mỹ vào Phát xít Đức, nhà thờ bị trúng bom, và các bức tranh trên tường bị phá tan tành. Người ta tìm lại được 88 ngàn mảnh nhỏ của các bức tranh, phủ được một diện tích 77 mét vuông, chỉ bằng một phần mười so với ban đầu, những chỗ còn lại thì bị mất hoàn toàn. Và trong vòng mấy thập kỷ, các mảnh vụn này được cất giữ trong các kho bảo tàng. Đến năm 1992, nhờ có kỹ thuật ảnh số, chúng mới được lau chùi, chụp ảnh, phân loại, rồi được đưa cho các nhà toán học nghiên cứu.
Đến năm 2000, nhóm nghiên cứu của giáo sư Massimo Fornasier phát triển được một phần mềm máy tính, dựa trên một phương pháp toán học gọi là “circular harmonic decomposition” (“phân tách điều hòa vòng quanh”), để ghép các mảnh vụn của bức tranh. Sau đó phải mất 6 năm trời chạy máy tính, từ 2000 đến 2006, nhóm của Fornasier mới hoàn thành công việc.
Năm 2006 là mới cách đây có 13 năm thôi, nhưng đó là thời mà còn chưa ai biết đến khái niệm “học sâu” (deep learning), và muốn xử lý ghép ảnh người ta phải tự tìm tòi ra thuật toán sắc sảo đưa vào máy tính, chứ máy chưa tự nghĩ ra được thuật toán.
Mười hai năm sau, vào cuối năm 2018, nhóm AI (artificial intelligence - trí tuệ nhân tạo) của tôi ở Toulouse gặp phải một “trò chơi ghép hình” tương tự, tuy chỉ là một vấn đề có tính chất học thuật chứ không có ý nghĩa thiết thực như vấn đề mà Fornasier đã giải quyết, nhưng về độ phức tạp không kém nhiều: Làm sao ghép 22 ngàn bức ảnh nhỏ lại với nhau cho khớp để tạo thành những bức ảnh khổ lớn, mỗi bức gộp lại của hàng trăm mẩu ảnh nhỏ? Điều duy nhất chúng tôi biết là những bức ảnh nhỏ mà chúng tôi có là những mảnh nhỏ của những bức ảnh lớn hơn nhiều đã bị cắt vụn ra, và nếu ghép lại được thì sẽ khôi phục được nhiều thông tin giá trị mà nếu chỉ nhìn các bức ảnh nhỏ riêng biệt thì không thấy được. Nhưng phải ghép như thế nào thì chúng tôi không biết. Và chúng tôi phải tìm cách giải nó, không phải là trong 6 năm, mà là trong 1-2 tuần.
Ban đầu, chúng tôi thử dùng các phương pháp toán học khác nhau, từ khai triển Taylor cho đến xác định hướng của các “đường mức” ở gần mép ảnh, v.v. để so sánh giữa các ảnh với nhau xem ảnh nào có vẻ khớp với ảnh nào. Các kết quả thu được đều khá tồi: với mỗi ảnh nhỏ thì thuật toán cho ra rất nhiều các ảnh nhỏ “ứng cử viên” của việc ghép vào bên cạnh, tất nhiên hầu hết sẽ là sai, nhưng dùng máy để phân biệt cái nào đúng cái nào sai vẫn rất khó (còn nếu làm “thủ công” dùng mắt người để phân biệt thì có khi làm trong 10 năm cũng chưa xong). Sau nhiều lần thử không ra được thuật toán như ý, chúng tôi đành “đầu hàng”, thôi không cố tự viết ra thuật toán nữa. Thay vào đó, chúng tôi muốn thử “bắt” máy tự tìm ra thuật toán ghép hình. Chúng tôi bèn viết một chương trình cho máy “học sâu”, một mô hình mạng thần kinh (neuron network) đi kèm với một “ống bơm dữ liệu” (data generator pipeline) gồm hàng triệu cặp ảnh ghép được và cặp ảnh không ghép được.
Những cặp ảnh ghép được là chính do máy tạo ra từ các ảnh đã có bằng cách cắt chúng ra rồi ghép lại, chứ với các ảnh ban đầu thì tất nhiên máy và người đều không biết ảnh nào ghép được với ảnh nào.
Kết quả đạt được tốt một cách bất ngờ: chỉ sau 4 tiếng học như vậy, máy đã tự tạo ra được thuật toán và chương trình ghép ảnh chạy trên PC, có khả năng tìm nhanh và khá chính xác xem ảnh nào có thể ghép được vào ảnh nào trong số 22 nghìn ảnh ban đầu. Kết quả này khiến cho cả nhóm chúng tôi phải thừa nhận rằng trí tuệ nhân tạo, do chúng tôi tạo ra cho máy, đã thật sự giỏi hơn chúng tôi về khả năng nghĩ ra thuật toán đề giải quyết một vấn đề cụ thể, ở đây là vấn đề ghép ảnh. Chúng tôi chỉ “chỉ đạo chung chung” cho máy là cần phải “học theo những bước nào”, còn máy “tự học là chính” để tự tạo ra phần mềm ghép ảnh.
Việc AI đánh thắng được cả những người vô địch quốc tế về cờ vua hay cờ vây thì chắc nhiều người đã nghe nói. Một ví dụ “nhỏ” khác nhưng có ý nghĩa thực tiễn quan trọng: Các bác sĩ da liễu đều biết rằng việc chẩn đoán các bệnh da là việc khó khăn, tỷ lệ chẩn đoán sai lên đến 50%, không phải là vì các bác sĩ không tận tâm hay kém trình độ, mà vì bệnh da có nhiều và rất phức tạp, dễ lẫn kiểu bệnh này sang kiểu bệnh khác. Tuy nhiên AI đang làm thay đổi tình hình: với sự trợ giúp của AI thì tỷ lệ chẩn đoán sai của các bác sĩ sẽ giảm từ 50% xuống chỉ còn 10-20% hoặc thấp hơn nữa, và đó là điều vô cùng đáng mừng cho các bác sĩ, và đặc biệt là cho các bệnh nhân.
Nhóm AI của tôi cũng có tham gia vào một chương trình hợp tác “Deep Clinics” về bệnh da, cùng với một số bác sĩ da hàng đầu ở Việt Nam như GS. Phạm Hoàng Khâm và PGS. Đinh Văn Hân và những người khác. Một kết quả về bệnh acne (trứng cá) cho thấy, ngay từ khi mới chỉ được học chưa thật nhiều trường hợp, máy đã có khả năng khoanh vùng và phân loại các mụn acne rất nhanh nhạy, có thể tin tưởng là sẽ giúp ích nhiều cho các bác sĩ và bệnh nhân.
Nhìn một cách lạc quan, AI càng ngày càng trở thành đầy tớ trung thành tài giỏi giúp ích cho cuộc sống của con người. Ngay những con sư tử dữ tợn còn tuyệt đối trung thành với người chăm sóc nó từ bé. AI không có bản năng tấn công tự vệ để sinh tồn như sư tử, nên lại càng dễ trung thành với con người, vì con người “tạo ra và chăm sóc” nó. Và tuy chúng ta sẽ “không thông minh bằng” AI trong phần lớn các lĩnh vực, nhưng AI sẽ giúp chúng ta ngày càng thông minh và văn minh lên.
“Mạng thần kinh” của máy
Năm 1959, một trong những nhà tiên phong khác trong lĩnh vực AI tên là Arthur Samuel đưa ra cụm từ “machine learning” (“học máy”) để chỉ việc cho máy học đó. Ý tưởng chính của các nhà tiên phong và những người kế tục là thiết kết “máy biết học” dựa trên mô phỏng bộ não và quá trình suy nghĩ và học tập của con người và động vật. Đặc biệt là, máy cũng có các “neuron” (tế bào thần kinh) như người!
Một ví dụ sơ đồ đơn giản hóa về “neural network”: các nút tròn là “neuron” (mỗi nút ứng với một tham số), các mũi tên là các “axon”.
“Mạng thần kinh” trong một chương trình máy tính là cái gì đó nghe có vẻ rất thần bí khó hiểu, nhưng thực ra có thể hình dung nó rất đơn giản như sau. Một chương trình máy tính “cố điển” (chưa có học máy) là một cái “hộp” H có khả năng nhận các thông tin ở “đầu vào” và cho ra thông tin ở “đầu ra”. Về mặt toán học, có thể biểu diễn nó như là một ánh xạ H: V → R từ tập “đầu vào” V đến tập “đầu ra” R. Ví dụ như, đầu vào v ∈ V là một văn bản, đầu ra r = H(v) ∈ R là các lỗi chính tả được chương trình phát hiện trong văn bản đó. Một chương trình “học máy” cũng là một cái “hộp” H, nhưng ngoài tập “đầu vào” V và tập “đầu ra” R, còn có một tập khác liên quan, là tập các tham số T: H : T x V → R.
Với mỗi tham số θ ∈ T cố định thì ta được một chương trình “cổ điển” Hθ tương ứng: Hθ (v) = H(θ, v). Quá trình học của “máy H” chính là quá trình thay đổi dần và chọn lựa các tham số θ ∈ T sao cho Hθ “thông minh nhất” có thể, làm được công việc yêu cầu một cách tốt nhất có thể. Trái với các đầu vào được nhận từ phía bên ngoài của cái máy “biết học” H, các tham số nằm trong bản thân máy, và mỗi một chỗ trong máy dùng để chứa tham số nào đó được gọi là một neuron thần kinh của máy.
Như vậy, nói một cách đơn giản, ở trong máy, các neuron chẳng qua là... các số có thể điều chỉnh. Người ta hình dung là tín hiệu từ đầu vào phải đi qua các neuron (để thu thập các tham số) bằng các “đường truyền tín hiệu” (các công thức) trước khi ra đến đầu ra. Người ta hình dung các “đường truyền tín hiệu” đó như là các cái “râu” (axon) nối từ tế bào thần kinh này đến tế bào thần kinh khác trong một bộ não, và thế là các “neuron” cùng với các “axon” đó tạo thành “neuron network” (mạng thần kinh) của máy. Để thay đổi trị số ở các neuron (tức là để cho máy học, thay đổi các tham số), cần phải dùng các công thức nhận biến số là giá trị hiện tại của các tham số, và cả các giá trị tại đầu vào và đầu ra. Người ta hình dung nó nôm na như là một quá trình lan tỏa ngược lại (back propagation) từ đầu ra qua các axon đến các neuron. Cơ chế “lan tỏa ngược lại” để học này tương tự như là cơ chế tạo phản xạ có điều kiện trong các thí nghiệm của Pavlov vậy.
Thực ra thì, cho đến cách đây một thập kỷ, những thuật toán phổ biến nhất cho máy học, ví dụ như thuật toán gọi là SVM (support vector machine), còn chưa dùng đến khái niệm “mạng thần kinh”, tuy rằng khái niệm này có từ những năm 1960. Khái niệm “mạng thần kinh” chỉ trở nên thật sự phổ biến khi người ta thiết kế được các mạng thần kinh có nhiều “lớp” (chính vì thế mà gọi là “học sâu” - “deep learning” - sâu ở đây có nghĩa là có nhiều lớp) với khả năng học vượt trội hơn hẳn so với các thuật toán trước đó, đồng thời với việc xuất hiện các bộ vi xử lý GPU (graphic processing units) mạnh, có khả năng tính toán song song hàng nghìn phép tính đồng thời, thích hợp cho việc học của các mạng thần kinh này. Các “deep neural network” mới bắt đầu thật sự vượt lên trên các phương pháp học máy khác trong thập kỷ 2010. Đến ngày hôm nay, hầu hết các chương trình học máy quan trọng nhất và hiệu quả nhất đều dựa trên “deep learning”, cũng tương tự như là TV kỹ thuật số đã thay thế hoàn toàn TV có ống cathode vậy.
Máy học so với người học
Một phần chính vì các máy AI được “thiết kế theo hình ảnh bộ não con người”, nên tuy máy là “cục sắt” nhưng nó học rất giống người học! Dưới đây là một danh sách nhỏ không đầy đủ các điểm giống nhau đó.
Máy học bằng cách ghi nhớ và bắt chước, thậm chí có thể đến mức “như con vẹt, thuộc lòng” một số thứ hay gặp nhất. Người học nhiều khi cũng phải bắt chước, ghi nhớ những thứ cơ bản quen thuộc nhất, để “có gì đó trong đầu” rồi mới lấy đó làm cơ sở để mà hiểu và vận dụng.
Thậm chí, để kiểm tra xem một mô hình học máy có thích hợp cho một vấn đề nào đó hay không, người ta cho nó học trên một lượng nhỏ các đầu vào (input) xem nó có thể học thuộc được các ví dụ đó hay không, tức là khi đầu vào là các ví dụ đó thì đầu ra có chính xác gần 100% hay không? (Kiểu kiểm tra này gọi là overfit, máy muốn học tốt được thì cũng phải overfit được).
Máy học bằng các ví dụ, cũng giống như người. Các ví dụ chính là các “tấm gương” để bắt chước theo. Dù cho cấu trúc mô hình của máy có tốt đến mấy (hay là đứa trẻ có nhiều tài năng bẩm sinh đến mấy), nhưng các “tấm gương” mà tồi, sai lệch nhiều, thì kết quả của việc học tất nhiên cũng tồi theo.
Càng nhiều ví dụ (data) chất lượng cao thì máy càng dễ học giỏi, và đó chính là một điểm mấu chốt trong lĩnh vực AI: data đủ tốt và đủ nhiều là tối quan trọng.
Nếu so giữa máy và người, thì khả năng “tiêu thụ data” của người chậm hơn máy nhiều. Một máy AI có thể xem hàng triệu ca bệnh để học trong một buổi trong khi một bác sĩ cả năm may ra xem được vài nghìn ca bệnh. Bù lại, người có thể học được kể cả khi chỉ có rất ít data vì có khả năng “tổng quát hóa” cao, còn máy thường “tiêu tốn” nhiều data hơn (tuy nhiên, các nhà nghiên cứu cũng quan tâm đến chuyện thiết kế máy có khả năng học với rất ít data).
Máy học có bài kiểm tra (vaditation/test), cũng như người khi học phải làm bài kiểm tra. Phải có kiểm tra thì qua đó bản thân máy mới “biết được” là nó đã học được đúng sai hay dở ra sao, rồi tìm cách củng cố cái đúng, sửa cái sai, tăng cái hay, giảm cái dở.
Máy có thể học có hướng dẫn (supervised learning) hoặc tự học (unsupervised learning). Cũng tương tự như với người, nếu có được hướng dẫn tốt, thì sử dụng hướng dẫn chắc sẽ học nhanh hơn, nhưng khi khó tìm được hướng dẫn (mà càng “lên cao, đi xa” càng khó tìm hướng dẫn), thì phải mày mò tự học là chính.
Máy học có thưởng có phạt (gain/loss function), cũng tương tự như người và động vật. Thưởng phạt tạo ra động lực để thay đổi hành vi nhằm tăng được thưởng, giảm bị phạt. Hệ thống thưởng phạt (hay là có thể gọi là hàm số thưởng phạt đối với máy) đóng vai trò rất quan trọng trong việc học. Nếu hàm này mà bị thiết kế tồi, việc thưởng phạt sẽ không khuyến khích được học cho đúng, và kết quả cuối cùng sẽ tồi.