Ngày nay, con người đã sáng chế thành công trí thông minh nhân tạo có thể tự học qua dữ liệu, kinh nghiệm… để tự mình thực hiện những nhiệm vụ phức tạp. Machine learning tư duy như con người theo những cách nào? Phần 3 của loạt bài về robot và trí thông minh nhân tạo sẽ giới thiệu một số giải thuật machine learning cơ bản.
Theo đà tiến bộ của khoa học công nghệ trong xu hướng cách mạng công nghiệp 4.0, trí thông minh về khả năng học tập không còn là đặc quyền của con người hay các loài vật trong tự nhiên. Ngày nay, con người đã sáng chế thành công trí thông minh nhân tạo có thể tự học qua dữ liệu, kinh nghiệm… để tự mình thực hiện những nhiệm vụ phức tạp. Loại trí thông minh này được gọi là học máy (machine learning, còn gọi là máy học), một trong những tiến bộ quan trọng gần đây nhất của trí thông minh nhân tạo.
Cách thức học tập của machine learning rất giống con người. Phần 3 của loạt bài về robot và trí thông minh nhân tạo sẽ giới thiệu một số giải thuật machine learning cơ bản.
Bài viết lược dịch từ loạt bài giảng trực tiếp của giáo sư chuyên ngành toán ứng dụng Chris Budd (Vương quốc Anh), được đăng lại trên Plus Magazine.
Với những tiến bộ vượt bậc về tốc độ hoạt động của máy vi tính và giải thuật lập trình, học máy đang ngày càng tăng trưởng nhanh chóng. Các giải thuật đồng hành cùng chúng đang bắt đầu có ảnh hưởng lớn đến cuộc sống của chúng ta, và thường vượt trội hơn con người. Vậy, machine learning đang làm việc theo cách như thế nào?
Học sàng lọc CV qua kinh nghiệm
Trong một hệ thống machine learning, máy vi tính được đào tạo để tự viết ra mã nguồn thực hiện một công việc nào đó, thường dựa theo một cơ sở dữ liệu của những việc tương tự. Phần lớn quá trình này là máy tính nhận ra các khuôn mẫu và ra quyết định dựa trên các mẫu này. Lấy một ví dụ, bạn là một công ty đang tìm nhân sự mới. Bạn đăng quảng cáo và 1.000 người úng tuyển, mỗi người đều nộp CV. Bạn thấy có quá nhiều hồ sơ cần lọc theo kiểu thủ công nên đào tạo một cái máy giúp mình làm việc này.
Bạn có hồ sơ tất cả CV của các ứng viên đã dự tuyển vào công ty trước đây. Với mỗi CV, bạn ghi nhận lại tình hình bạn đã thật sự thuê người đó hay chưa. Để dạy cho máy, bạn yêu cầu nó tìm trong một nửa số CV những khuôn mẫu tương ứng có thể đem lại cơ hội ứng tuyển thành công cho chủ nhân CV. Do đó, nếu được trao cho một CV, máy có thể ra quyết định có thể thuê người đó hay không. Sau đó, bạn kiểm tra máy trên nửa số CV còn lại.
(Ảnh: Slideshare)
Nếu tỉ lệ thành công đủ cao, bạn sẽ tự tin rằng, máy có khả năng đánh giá khả năng có thể tuyển dụng của một ứng viên chỉ qua CV của họ. Sự đánh giá của con người là không cần thiết ở mọi giai đoạn. Một quy trình kiểu này là hoàn toàn khả thi với sức mạnh máy tính hiện đại. Do đó, nó đặt ra những vấn đề quan trọng và những câu hỏi về đạo đức (chủ đề chính của kỳ sau).
Học nhận dạng chữ viết tay
Để dễ hiểu hơn quá trình học của machine learning, chúng ta sẽ xem xét vấn đề nhận dạng khuôn mẫu qua một ví dụ rất cụ thể: phát triển một chiếc máy có thể nhận dạng các chữ số viết tay. Chiếc máy này cần có khả năng nhận dạng chữ số nào đại diện cho số nào mà không quan trọng cách viết các chữ số.
Ngay với con người thì việc nhận dạng chữ viết tay cũng không phải là chuyện dễ dàng.
Tiến trình nhận dạng chữ số của học máy gồm hai giai đoạn.
Giai đoạn 1: quét hình ảnh các chữ só viết tay để đưa vào máy, và trích xuất dữ liệu chính từ các hình ảnh đã số hóa này. Bước này luôn đươc thực hiện bằng phương pháp phân tích thành phần chính (principle component analysis-PCA, một phương pháp đơn giản trong thống kê giúp phân tích dữ liệu nhiều biến). RCA sẽ giúp bạn tự động trích xuất các đặc điểm chính của mỗi hình, ví dụ như chiều dài, chiều rộng, các điểm giao nhau giữa các đường trong hình. Quá trình này liên quan chặt chẽ với giá trình tìm kiếm các giá trị riêng và vector riêng (eigenvalues và eigenvectors) của ma trận, và cũng rất giống quá trình Google dùng để tìm kiếm thông tin trên mạng lưới world wide web.
Giai đoạn 2: đào tạo máy nhận dạng các chữ số từ các đặc điểm được trích xuất này. Một trong các phương pháp đào tạo rất phổ biến là mạng lưới neuron (mạng thần kinh, neural net). Kỹ thuật học máy này rất gần vời cách hoạt động của bộ não người trong suy nghĩ của chúng ta. Đầu tiên, một bộ "neuron" phần mềm được tạo ra và kết nối với nhau, được phép gửi thông điệp cho nhau. Kế đến, mạng lưới được yêu cầu xử lý một tập hợp lớn các vấn đề mà kết quả đã được biết trước. Với phương pháp này, máy sẽ "học" cách xác định các kết nối giữa các neuron để có thể nhận dạng thành công các khuôn mẫu trong dữ liệu sẽ đưa tới kết quả chính xác.
Mốt ví dụ về mạng neuron là một hệ thống lớp đơn lẻ mang tên perceptron được dùng để mô hình hóa một neuron riêng lẻ. Khái niệm perceptron được Frank Rosenblatt (1928-1971, nhà tâm lý học người Mỹ có những đóng góp tiên phong trong lĩnh vực trí tuệ nhân tạo) đưa ra năm 1962. Trong phần tiếp theo, chúng ta sẽ tìm hiểu cấu trúc tiêu biểu của một perceptron.
Một perceptron điển hình
Đầu vào của perceptron là n số từ X1, X1cho đến Xn. Sau đó, chúng ta nhân mỗi số Xivới một trọng số wi, rồi cộng tất cả các tích lại để ra được tổng số w1X1+w2X2+...+wnXn(weighted sum). Nếu tổng này lớn hơn một ngưỡng nhất định C, máy sẽ trả về kết quả (output) bằng 1, ngược lại là 0.
Nói cách khác, perceptron sẽ trả về một trong hai giá trị
1 nếu w1X1+w2X2+...+wnXn– C > 0
0 nếu w1X1+w2X2+...+wnXn–C ≤ 0
Với vấn đề của chúng ta, các đầu vào Xilà các đặc điểm được trích xuất của các hình ảnh chữ số, và quyết định cần thực hiện là chữ số đó là một số 3 hay số 4. Quá trình đào tạo perceptron bao gồm việc tìm các trọng số wivà ngưỡng C thích hợp để perceptron nhận dạng chữ số đúng một cách nhất quán. Để làm được điều này, chúng ta cần sử dụng các giải thuật toán tối ưu về mặt thống kê một cách cẩn thận.
Các mạng neuron và deep learning (học sâu)
Chúng ta có thể đào tạo các perceptron đơn giản cho nhiều việc đơn giản, nhưng rồi chúng sẽ nhanh chóng đạt tới giới hạn. Hiển nhiên là chúng ta có thể đạt được nhiều hơn bằng cách sử dụng nhiều perceptron cùng lúc, nhưng để thực hiện bước tiến này thì chúng ta phải chờ sự ra đời của các máy tính mạnh hơn. Chúng ta chỉ có được đột phá lớn khi các lớp perceptron đi cùng nhau, tạo ra một mạng lưới thần kinh (mạng neuron). Dưới đây là minh họa cấu trúc tiêu biểu của một mạng neuron.
Trong trường hợp này, các đầu vào kết hợp để tạo ra lớp đầu tiên của perceptron. Các đầu ra của đầu vào này lại kết hợp để tạo thành lớp kế tiếp và các lớp mới tiếp tục kết hợp thành đầu ra.
Minh họa cấu trúc mạng neuron (Ảnh: Petro Vietnam)
Càng nhiều lớp thì mạng lưới mà ta có càng "sâu" hơn. Sau đó, mạng lưới này được đào tạo bằng cách gán trọng số cho mỗi kết nối ở trên. Quá trình này tương tự cách bộ não làm cho những đường dây thần kinh mạnh lên hay yếu đi. Quá trình đào tạo một mạng lưới neuron được gọi là deep learning.
Trong thực tế, điều này khả thi là nhờ những tiến bộ của các giải thuật tối ưu mới cùng với công suất máy tính mạnh. Kết thúc tiến trình tìm trọng số (wi) phù hợp cho mạng lưới, bạn sẽ thấy một hộp đen có thể chạy rất nhanh và đưa ra các quyết định. Để hình dung rõ hơn, bạn có thể tìm hiểu và chơi thử mục về thiết lập mạng neuron trên website Plus Magazine.
Các cách học qua ví dụcủa máy
Nhìn vào quá trình học một cách chi tiết hơn, chúng ta thấy quá trình học qua ví dụ của machine learning có nhiều hình thức khác nhau.
Học có giám sát: tập hợp các cặp ví dụ đầu vào và đầu ra được người dùng mạng cho trước. Cách học là nhắm tới việc tìm mạng neuron có đầu ra phù hợp với các ví dụ. Phương pháp quen thuộc để so sánh đầu ra của mạng neuron với đầu ra của ví dụ là tìm sai số bình phương trung bình giữa đầu ra thực và đầu ra hiệu chỉnh. Sau đó, mạng lưới sẽ được đào tạo để tối thiểu hóa sai số này trên tất cả các tập hợp đào tạo.
Minh họa cách học có giám sát của máy
Một ứng dụng tiêu chuẩn của cách học này là việc vẽ các đường cong phù hợp với điểm dữ liệu (curve fitting) trong thống kê. Cách này cũng tốt trong việc nhận dạng chữ viết và các vấn đề nhận dạng mẫu khác.
Học củng cố (học tăng cường): dữ liệu không được cho trước bởi người dùng mà được tạo ra theo thời gian, do sự tương tác giữa môi trường và máy mà mạng neuron điều khiển. Tại mỗi điểm thời gian, máy thực hiện một hành động lên môi trường, tạo ra một quan sát với chi phí của hành động đó. Mạng lưới sẽ được đào tạo để lựa chọn các hành động tối thiểu hóa tổng chi phí. Quá trình này tương tự cách học của con người chúng ta (nhất là trẻ nhỏ).
Máy học chơi cờ
Để học chơi cờ, máy tính AlphaZero đã trải qua gần 1 triệu ván tự chơi với mình. AlphaZero là một sản phẩm khác của Deepmind, nơi cho ra đời cỗ máy AlphaGo đã đánh bại kiện tướng cờ vây Lee Sedol. So với AlphaGo chỉ chơi cờ vây, AlphaZero chơi được cả cờ vua, cờ shogi và đã đánh bại các chương trình AI khác trên thế giới trong cả ba môn cờ trí tuệ này. Do tự hoạt động hoàn toàn độc lập với con người, AlphaZero có những bước đi và chiến thuật đột phá chưa từng có, gây ngạc nhiên cho cả các đại kiện tướng cờ vua đẳng cấp thế giới như Matthew Sadler (kỳ thủ số hai của nước Anh và đứng thứ 50 thế giới tính đến tháng 1/2019 với hệ số elo 2693).
(Ảnh: Youtube)
Trong những năm gần đây, các giải thuật toán trong học máy đã có nhiều tiến bộ. Trong các phương pháp kết hợp kỹ thuật xử lý hình ảnh và mạng lưới neuron deep learning, các mạng neuron tích chập (Convolutional neural network-CNN) là sự mở rộng quan trọng, mới mẻ và thú vị. CNN có thể được dùng trong nhận dạng gương mặt và cả phát hiện cảm xúc. Hiện nay, CNN còn được dùng trong nhiều ứng dụng khác, trong đó có chẩn đoán y khoa.
CNN sâu cũng được ứng dụng trong việc giúp AlphaZero học cách chơi cờ vua. AlphaZero được đào tạo bằng phương pháp học củng cố, tự chơi với chính mình gần 1 triệu ván (700.000 ván) trong 24 giờ. Giải thuật được dùng để cấp phát các trọng số là cây tìm kiếm Monte-Carlo mục đích chung (MCTS). Để học chơi cờ vây và cờ shogi (cờ tướng Nhật Bản, một loại cờ phổ biến tại Nhật và có cùng nguồn gốc với cờ tướng, cờ vua), AlphaZero cũng dùng biện pháp tương tự vã đã đánh bại các AI chơi cờ shogi giỏi nhất thế giới. Quá ấn tượng!
Machine learning đã tiến bộ nhanh chóng, với xu hướng các mạng lưới sâu hơn, phức tạp hơn đang gia tăng chưa từng có, được dẫn dắt bởi các giải thuật đào tạo nhanh hơn, nhiều dữ liệu hơn.
Tuy nhiên, liệu có an toàn và có đạo đức không khi để cho máy móc đưa ra các quyết định có khả năng thay đổi cuộc đời như chẩn đoán y khoa? Mời bạn đọc đến với bài viết tiếp theo: Machine learning có thể dẫn tới các quyết định thiếu đạo đức và đáng ngờ hay không?