Bài viết giới thiệu về bối cảnh lịch sử của artificial intelligence, machine learning, và deep learning. Cách deep learning hoạt động ở mức độ tổng quát, những gì deep learning đã đạt được cho đến nay.
Đầu tiên, chúng ta cần xác định rõ việc chúng ta đang nói về cái gì khi nhắc đến artifical intelligence (trí tuệ nhân tạo), machine learning (học máy), deep learning (học sâu)? Chúng có quan hệ với nhau như thế nào?
Artificial intelligence (AI)
Trí tuệ nhân tạo ra đời vào những năm 1950, khi một số ít những người tiên phong trong lĩnh vực computer science (khoa học máy tính) bắt đầu đặt câu hỏi liệu có thể tạo ra những chiếc máy tính mà bản thân chúng có thể "suy nghĩ" hay không?
Trong khi nhiều ý tưởng cơ bản đã được hình thành trong nhiều năm và thậm chí nhiều thập kỷ trước đó, "trí tuệ nhân tạo" cuối cùng cũng đã kết tinh thành một lĩnh vực nghiên cứu vào năm 1956, khi John McCarthy , lúc đó là trợ lý giáo sư toán học trẻ tuổi tại đại học Dartmouth, tổ chức một hội thảo mùa hè, theo đề xuất sau:
Nghiên cứu được tiến hành dựa trên cơ sở của sự phỏng đoán rằng tất cả khía cạnh của việc học hoặc bất kỳ đặc tính nào của trí thông minh, về nguyên tắc thì có thể được mô tả chính xác đến mức có thể tạo ra một cỗ máy để mô phỏng chúng. Một nỗ lực sẽ được thực hiện để tìm cách làm cho máy móc có thể sử dụng ngôn ngữ, hình thành sự trừu tượng và các khái niệm, giải quyết các vấn đề mà con người đang giải quyết, và tự cải thiện bản thân chúng. Chúng tôi nghĩ rằng có thể tạo ra một bước tiến đáng kể trong việc giải quyết một hoặc nhiều vấn đề đó nếu một nhóm những nhà khoa học được tuyển chọn có thể cùng nhau làm việc trong mùa hè. Vào cuối mùa hè, hội thảo kết thúc mà vẫn chưa giải quyết được hết những vấn đề mà họ đặt ra để nghiên cứu. Tuy nhiên với sự tham gia của nhiều người - những người tiên phong trong lĩnh vực này, hội thảo mùa hè đó đã khởi động một cuộc cách mạng trí tuệ vẫn đang tiếp diễn cho đến hôm nay.
Nói một cách chính xác thì AI có thể được mô tả là sự nỗ lực để tự động hoá các nhiệm vụ trí tuệ thường được thực hiện bởi con người. Trí tuệ nhân tạo là một lĩnh vực bao gồm cả học máy và học sâu, nhưng cũng bao gồm nhiều cách phương pháp khác có thể không liên quan đến bất kỳ việc "học" nào. Trước những năm 1980, hầu hết các sách về AI đều không đề cập đến học.
Ví dụ, các chương trình cờ vua ban đầu chỉ dựa trên các quy tắc được lập trình cứng do các lập trình viên tạo ra, và không thể coi là học máy. Trên thực tế, trong một thời gian khá dài hồi xưa thì hầu hết các chuyên gia đều tin rằng trí tuệ nhân tạo ở cấp độ con người có thể đạt được bằng cách để các lập trình viên tạo thủ công những bộ quy tắc đủ lớn để xử lý kiến thức được lưu trữ trong các cơ sở dữ liệu. Phương pháp này được biết đến với tên gọi là symbolic AI.
Mặc dù symbolic AI tỏ ra phù hợp trong việc giải quyết các vấn đề được mô tả rõ ràng và dựa trên logic. Chúng ta có nhiều vấn đề phức tạp hơn, như phân loại hình ảnh (image classification), nhận dạng giọng nói (speech recognition), dịch ngôn ngữ tự nhiên (natural language translation). Một phương pháp mới đã xuất hiện để thay thế vị trí của symbolic AI: machine learning.
Machine learning (ML)
Năm 1843, Ada Lovelace nhận xét về việc phát minh ra Máy phân tích (Analytical Engine):
Analytical Engine không có bất kỳ kỳ vọng nào trong việc tạo ra bất kỳ thứ gì. Nó có thể làm bất cứ điều gì chúng ta biết cách ra lệnh cho nó thực hiện.... Mục đích của nó là hỗ trợ chúng tôi trong những việc chúng tôi đã biết rồi. Cho đến gần đây, quan điểm của quý bà Lovelace vẫn còn gây chú ý. Liệu một chiếc máy tính đa dụng có thể tự "khởi tạo" bất cứ thứ gì không, hay nó sẽ luôn bị ràng buộc để thực hiện các quy trình mà con người chúng ta hoàn toàn hiểu? Nó có khả năng tự học và sáng tạo không?
Nhận xét của bà sau này đã được nhà tiên phong về AI là Alan Turing trích dẫn và gọi là "Sự phản đối của quý bà Lovelace" trong bài nghiên cứu mang tính bước ngoặc năm 1950 của ông Máy tính và trí thông minh, bài nghiên cứu đã giới thiệu bài kiểm tra Turing cũng như các khái niệm chính sẽ hình thành nên AI. Vào thời điểm đó, Turing đã có ý kiến cho rằng máy tính về nguyên tắc thì có thể được tạo ra để mô phỏng mọi khía cạnh của trí tuệ con người.
Cách thông thường để khiến máy tính có thể thực hiện một công việc hữu ích là nhờ một lập trình viên viết ra các quy tắc - một chương trình máy tính nhằm biến dữ liệu đầu vào thành các câu trả lời phù hợp, giống như Quý bà Lovelace viết ra các hướng dẫn từng bước cho Analytical Engine để thực hiện.
Machine learning đã xoay chuyển vấn đề trên, máy sẽ nhìn vào dữ liệu đầu vào và câu trả lời tương ứng được cung cấp, và dựa vào đó để tìm ra các quy tắc là gì.
Một hệ thống machine learning được huấn luyện (train) chứ không phải được lập trình rõ ràng. Ví dụ, nếu bạn muốn tự động hoá việc gắn thẻ các bức ảnh (xem ảnh đó nên được gắn thẻ là gì), bạn có thể tạo ra một hệ thống machine learning với nhiều ví dụ về các bức ảnh đã được gắn thẻ sẵn bởi con người, và dựa trên dữ liệu đó, hệ thống sẽ học các quy tắc thống kê để liên kết các bức ảnh cụ thể với các thẻ cụ thể. Không giống như thống kê, machine learning có xu hướng xử lý các tập dữ liệu lớn, phức tạp (chẳng hạn như tập dữ liệu gồm hàng triệu hình ảnh, mỗi hình ảnh bao gồm hàng chục ngàn pixels), mà phân tích thống kê cổ điển như phân tích Bayes sẽ không thực tế.
Để định nghĩa deep learning và hiểu sự khác biệt giữa deep learning và các phương pháp machine learning khác, trước tiên chúng ta xem machine learning làm gì.
- Ta đưa vào dữ liệu - Ví dụ, nếu nhiệm vụ là nhận dạng giọng nói, thì những điểm dữ liệu này là những tệp âm thanh ghi giọng nói của con người. Nếu nhiệm vụ là nhận diện vật thể, những điểm dữ liệu này là các hình ảnh.
- Dữ liệu đầu ra mà ta mong đợi từ hệ thống machine learning - Trong nhận diện giọng nói, kết quả mong đợi có thể là bản ghi chứa những từ mà xuất hiện trong tệp âm thanh. Trong nhiệm vụ nhận diện vật thể, kết quả mong đợi có thể là các thẻ như "ô tô", "con người", và "mèo".
- Cách để xem thuật toán có hoạt động tốt hay không - Ta phải xem xét sự khác biệt giữa dữ liệu đầu ra hiện tại của thuật toán và dữ liệu đầu ra mà chúng ta mong đợi từ thuật toán. Chúng ta có thể thay đổi các biến số để điều chỉnh cách thức hoạt động của thuật toán, các bước điều chỉnh này, chúng ta gọi là học.
Một mô hình (model) machine learning biến đổi dữ liệu đầu vào thành dữ liệu đầu ra có ý nghĩa, quá trình này là "học" từ việc tiếp xúc với các dữ liệu đầu vào và dữ liệu đầu ra đã biết.
"Deep" trong "deep learning" (DL)
Deep learning là một lĩnh vực con của machine learning. Từ "deep" trong “deep learning” không ám chỉ đến bất kỳ loại hiểu biết sâu hơn nào mà nó đại diện cho ý tưởng về các lớp (layer) biểu diễn liên tiếp. Số lượng layer đóng góp vào một mô hình dữ liệu được gọi là độ sâu (depth) của model. Deep learning hiện đại thường liên quan đến hàng chục hoặc thậm chí hàng trăm layer biểu diễn liên tiếp và tất cả chúng đều được học tự động khi tiếp xúc với dữ liệu đào tạo (training data).
Trong deep learning, các lớp biểu diễn này được học thông qua các model được gọi là mạng thần kinh (neural network), được cấu trúc theo các layer xếp chồng lên nhau theo nghĩa đen. Bạn có thể coi deep network như một quá trình chắt lọc thông tin nhiều tầng, trong đó thông tin đi qua các bộ lọc (filters) liên tiếp và trở nên ngày càng tinh khiết (nghĩa là hữu ích đối với một số nhiệm vụ).
Hiểu cách deep learning hoạt động
Lúc này, ta biết rằng machine learning là chuyện ánh xạ (mapping) các dữ liệu đầu vào (ví dụ là hình ảnh) tới các mục tiêu (chẳng hạn như nhãn "con người"), được thực hiện thông qua việc quan sát nhiều ví dụ về dữ liệu đầu vào và mục tiêu. Bạn cũng biết rằng các deep neural networks thực hiện việc ánh xạ dữ liệu đầu vào tới mục tiêu thông qua một chuỗi các layers xếp chồng lên nhau, giờ ta sẽ xem xét cụ thể quá trình học này diễn ra như thế nào.
Thông số kỹ thuật về những gì một layer thực hiện đối với dữ liệu đầu vào của nó được lưu trữ bên trong các trọng số (weight) của layer, về bản chất weights là một loạt các con số. (weights đôi khi được gọi là parameters của layer). Trong ngữ cảnh này, việc học có nghĩa là tìm một tập hợp các giá trị cho weights của tất cả các layers trong network, sao cho network sẽ ánh xạ chính xác dữ liệu đầu vào tới các mục tiêu được liên kết của chúng.
Nhưng vấn đề ở đây là: một deep neural network có thể chứa hàng chục triệu parameters. Việc tìm kiếm các giá trị chính xác cho tất cả chúng có vẻ như là một nhiệm vụ khó khăn, đặc biệt là khi việc sửa đổi giá trị của một tham số sẽ ảnh hưởng đến hành vi của tất cả các tham số khác!
Để kiểm soát một cái gì đó, trước tiên bạn cần có khả năng quan sát nó. Để kiểm soát dữ liệu đầu ra của neural network, bạn cần có khả năng đo lường xem dữ liệu đầu ra này khác xa bao nhiêu so với những gì bạn mong đợi. Đây là công việc của loss function của network (đôi khi còn được gọi là objective function hay cost function). Loss function lấy các dự đoán của network và mục tiêu thật (bạn muốn network xuất ra cái gì khi cho vào dữ liệu đầu vào). Sau đó sẽ tính khoảng cách, từ đó suy ra liệu neural network của ta đã đạt được độ chính xác cao hay chưa.
Ta dựa vào giá trị của loss function làm tín hiệu phản hồi để điều chỉnh giá trị của các weights với mong muốn hạ giá trị của loss function. Việc điều chỉnh này là công việc của trình tối ưu hóa (optimizer), nó thực hiện cái được gọi là thuật toán backpropagation - một thuật toán quan trọng trong deep learning. Bài viết tiếp theo giải thích chi tiết hơn về cách hoạt động của backpropagation. Trong hình dưới đây ta có thể thấy, từ loss score tính được, optimizer sẽ cập nhật các weights của layers. Cơ bản là sẽ huấn luyện đến khi mô hình cho ra độ chính xác cao, việc này được gọi là vòng lặp training (thường là hàng chục lần lặp trên hàng nghìn dữ liệu).
Nhưng không có nghĩa là sau nhiều lần huấn luyện (training) thì model sẽ trở nên tốt hơn. Nó còn phụ thuộc vào chúng ta xây dựng model thế nào, các tham số truyền vào, hay dữ liệu chúng ta dùng để huấn luyện như thế nào. Nhưng những thứ này sẽ nói ở các bài viết sau.
Cho đến nay thì deep learning đã đạt được gì
Mặc dù deep learning là một lĩnh vực con khá cũ của machine learning, nó chỉ nổi lên vào đầu những năm 2010. Trong vài năm kể từ 2010, nó đã trở thành một cuộc cách mạng trong lĩnh vực này, tạo ra những kết quả đáng chú ý đối với các nhiệm vụ nhận thức và thậm chí cả các nhiệm vụ xử lý ngôn ngữ tự nhiên—các vấn đề liên quan đến các kỹ năng có vẻ tự nhiên và trực quan đối với con người nhưng từ lâu đã khó nắm bắt đối với máy móc. Đặc biệt, deep learning đã tạo ra những bước đột phá sau đây, tất cả đều nằm trong những lĩnh vực khó khăn trước đây của machine learning:
- Phân loại hình ảnh, độ chính xác gần mức con người
- Chuyển đổi văn bản thành giọng nói được cải thiện đáng kể
- Các trợ lý kỹ thuật số như Google Assistant, Amazon Alexa và Apple Siri
- Xe tự lái ở cấp độ gần như con người
- Có khả năng trả lời các câu hỏi bằng ngôn ngữ tự nhiên (gần đây Chat GPT)
- Chúng ta vẫn đang khám phá toàn bộ những gì deep learning có thể làm được. Với mỗi cột mốc quan trọng, chúng ta đang tiến gần hơn đến thời đại mà deep learning hỗ trợ chúng ta trong mọi hoạt động và mọi lĩnh vực như y học, sản xuất, giao thông vận tải, phát triển phần mềm, nông nghiệp và thậm chí cả sáng tạo nghệ thuật.
Kết bài
Vậy là ta đã cùng nhau tìm hiểu về lịch sử của AI, ML, và DL cũng như làm quen với các khái niệm chính trong deep learning. Ở bài viết sau chúng ta sẽ tìm hiểu sơ lược về machine learning.
Sắp tới em/ mình sẽ viết loạt bài về deep learning, viết dạng blog , dựa trên sách của François Chollet (người tạo ra thư viện deep learning Keras) và các khoá học từ các trường đại học cũng như Coursera. Anh chị em nào có hứng thú có thể bookmark ạ, tiến độ hy vọng là một tuần một bài.