Machine Learning (học máy) là một nhánh của trí tuệ nhân tạo (AI). Mục tiêu chung của học máy là hiểu được cấu trúc của dữ liệu và xây dựng các mô hình từ dữ liệu đó sao cho con người có thể hiểu và sử dụng được.
Mặc dù Machine Learning là một lĩnh vực thuộc ngành khoa học máy tính, nhưng nó khác biệt so với các phương pháp tính toán truyền thống. Trong tính toán truyền thống, các thuật toán là tập hợp các chỉ dẫn được lập trình rõ ràng để máy tính thực hiện tính toán hoặc giải quyết vấn đề. Ngược lại, các thuật toán Machine Learning cho phép máy tính huấn luyện trên các dữ liệu đầu vào và sử dụng phân tích thống kê để đưa ra các giá trị nằm trong một phạm vi cụ thể. Nhờ vậy, Machine Learning giúp máy tính xây dựng mô hình từ dữ liệu mẫu để tự động hóa các quy trình ra quyết định dựa trên đầu vào.
Bất kỳ người dùng công nghệ nào ngày nay đều đã từng hưởng lợi từ Machine Learning. Công nghệ nhận diện khuôn mặt giúp các nền tảng mạng xã hội hỗ trợ người dùng gắn thẻ và chia sẻ ảnh với bạn bè.
Công nghệ nhận dạng ký tự quang học (OCR) chuyển đổi hình ảnh văn bản thành dạng có thể chỉnh sửa. Các công cụ gợi ý đề xuất những bộ phim hay chương trình truyền hình dựa trên sở thích người dùng. Xe tự lái dựa vào Machine Learning để định hướng có thể sớm trở thành sản phẩm tiêu dùng phổ biến.
Machine Learning là một lĩnh vực không ngừng phát triển. Vì vậy, có một số điểm cần lưu ý khi làm việc với các phương pháp hoặc khi phân tích tác động của các quy trình Machine Learning.
Trong bài hướng dẫn này, chúng ta sẽ tìm hiểu các phương pháp học máy phổ biến gồm supervised learning (học có giám sát) và unsupervised learning **(**học không giám sát), cùng với các cách tiếp cận thuật toán phổ biến như thuật toán k-nearest neighbor, decision tree learning (cây quyết định), và deep learning (học sâu). Chúng ta cũng sẽ khám phá các ngôn ngữ lập trình phổ biến được dùng trong học máy, cùng với ưu và nhược điểm của từng ngôn ngữ. Ngoài ra, chúng ta sẽ bàn về các thiên kiến có thể bị củng cố bởi thuật toán học máy và cách phòng tránh khi xây dựng mô hình.
Các phương pháp Machine Learning
Trong Machine Learning, các tác vụ thường được phân loại theo những nhóm lớn, dựa trên cách mô hình tiếp nhận việc học hoặc cách phản hồi đầu ra cho hệ thống được phát triển.
Hai phương pháp học máy được áp dụng rộng rãi nhất là:
- Supervised learning: huấn luyện thuật toán dựa trên dữ liệu đầu vào và đầu ra được con người gán nhãn sẵn.
- Unsupervised learning: không cung cấp nhãn dữ liệu mà để thuật toán tự khám phá cấu trúc trong tập dữ liệu.
Hãy cùng tìm hiểu kỹ hơn từng phương pháp.
Supervised learning
Trong supervised learning, máy tính được cung cấp các đầu vào mẫu đã được gán nhãn với đầu ra mong muốn. Mục đích là để thuật toán “học” bằng cách so sánh kết quả đầu ra thực tế với đầu ra được “dạy”, từ đó phát hiện lỗi và điều chỉnh mô hình. Phương pháp này sử dụng các mẫu để dự đoán giá trị nhãn của dữ liệu chưa được gán nhãn.
Ví dụ: một thuật toán có thể được huấn luyện với hình ảnh cá mập được gán nhãn là “cá” và hình ảnh đại dương là “nước”. Sau khi được huấn luyện, thuật toán nên có khả năng nhận diện hình ảnh cá mập chưa gán nhãn là “cá”, và hình ảnh đại dương là “nước”.
Một ví dụ điển hình khác là sử dụng dữ liệu lịch sử để dự đoán các sự kiện có khả năng xảy ra trong tương lai. Ví dụ như dùng thông tin thị trường chứng khoán để dự đoán biến động sắp tới, hoặc lọc thư rác (spam). Ngoài ra, ảnh chó có gán nhãn có thể được dùng để huấn luyện mô hình nhận diện các ảnh chó chưa có nhãn.
Unsupervised learning
Trong unsupervised learning, dữ liệu không có nhãn. Thuật toán sẽ tự tìm các điểm chung trong dữ liệu đầu vào. Vì dữ liệu không gán nhãn thường phổ biến hơn, nên học không giám sát đặc biệt có giá trị trong thực tế.
Mục tiêu của phương pháp này có thể là tìm ra các mẫu ẩn trong tập dữ liệu, hoặc học đặc trưng (feature learning), cho phép máy tính phát hiện các biểu diễn (representations) cần thiết để phân loại dữ liệu thô.
Một ứng dụng phổ biến là phân tích dữ liệu giao dịch. Bạn có thể có một tập lớn dữ liệu về khách hàng và các món hàng họ mua, nhưng bạn khó có thể nhận ra các điểm tương đồng giữa họ. Một thuật toán học không giám sát có thể phát hiện rằng phụ nữ trong một độ tuổi nhất định mua xà phòng không mùi có thể đang mang thai, từ đó giúp bạn xây dựng chiến dịch tiếp thị nhắm vào nhóm này.
Vì không cần biết “đáp án đúng”, unsupervised learning có thể xử lý dữ liệu phức tạp, rộng và không liên quan rõ ràng, nhằm sắp xếp chúng một cách có ý nghĩa. Nó thường được dùng trong việc phát hiện bất thường (anomaly detection) – ví dụ như phát hiện gian lận thẻ tín dụng, và trong hệ thống gợi ý sản phẩm. Với học không giám sát, ảnh chó chưa gán nhãn có thể được gom nhóm lại thành một nhóm riêng biệt nhờ các đặc điểm giống nhau.
Các cách tiếp cận
Là một nhánh gần với thống kê tính toán, học máy yêu cầu kiến thức nền tảng về thống kê để hiểu và vận dụng tốt các thuật toán.
Nếu bạn chưa học thống kê, bạn nên làm quen trước với tương quan (correlation) và hồi quy (regression) – đây là hai kỹ thuật phổ biến để tìm mối liên hệ giữa các biến định lượng.
- Tương quan đo mức độ liên kết giữa hai biến mà không phân biệt đâu là biến phụ thuộc hay độc lập.
- Hồi quy dùng để xem xét mối quan hệ giữa một biến phụ thuộc và một biến độc lập. Vì hồi quy có thể dự đoán giá trị phụ thuộc khi biết biến độc lập, nó rất hữu ích trong các bài toán dự báo.
Hiện nay có rất nhiều phương pháp học máy đang được phát triển. Dưới đây là một vài phương pháp phổ biến:
k-nearest neighbor (k-NN)
Đây là một thuật toán nhận dạng mẫu dùng cho cả phân loại và hồi quy. Thường được viết tắt là k-NN, trong đó k là một số nguyên dương, có giá trị nhỏ. Dù là phân loại hay hồi quy, đầu vào sẽ bao gồm k mẫu huấn luyện gần nhất trong không gian dữ liệu.
Trong bài này, ta sẽ tập trung vào phân loại k-NN: đầu ra là thông tin về lớp (nhóm) mà đối tượng thuộc về. Đối tượng mới sẽ được gán vào lớp phổ biến nhất trong số k hàng xóm gần nhất. Nếu k = 1, đối tượng sẽ gán vào lớp của láng giềng gần nhất duy nhất.
Ví dụ: trong sơ đồ có các hình thoi màu xanh và các ngôi sao màu cam. Chúng thuộc hai lớp khác nhau: lớp thoi và lớp sao.
Khi một đối tượng mới được thêm vào không gian, trong trường hợp này là trái tim màu xanh lá cây, chúng ta muốn thuật toán machine learning phân loại trái tim đó vào một nhóm (class) cụ thể.
Khi ta chọn k = 3, thuật toán sẽ tìm ba hàng xóm gần nhất của trái tim xanh để quyết định nên phân loại nó vào nhóm hình thoi hay nhóm ngôi sao.
Trong sơ đồ của chúng ta, ba hàng xóm gần nhất của trái tim xanh gồm một hình thoi và hai ngôi sao. Do đó, thuật toán sẽ phân loại trái tim vào nhóm ngôi sao, vì đó là lớp chiếm đa số.
Trong số những thuật toán machine learning cơ bản nhất, k-nearest neighbor được xem là một dạng “học lười” (lazy learning) vì quá trình khái quát hóa không xảy ra cho đến khi hệ thống nhận được một truy vấn cụ thể.
Học cây quyết định
Trong ứng dụng phổ thông, cây quyết định thường được dùng để trực quan hóa quá trình ra quyết định và hỗ trợ con người đưa ra lựa chọn. Trong lĩnh vực machine learning và khai phá dữ liệu, cây quyết định được sử dụng như một mô hình dự đoán. Những mô hình này ánh xạ (map) các quan sát về dữ liệu tới kết luận về giá trị mục tiêu của dữ liệu đó.
Mục tiêu của việc học cây quyết định là tạo ra một mô hình có thể dự đoán giá trị mục tiêu dựa trên các biến đầu vào.
Trong mô hình dự đoán này, các thuộc tính của dữ liệu (được xác định thông qua quan sát) sẽ được thể hiện bằng các nhánh (branches) của cây. Trong khi đó, kết luận về giá trị mục tiêu của dữ liệu được thể hiện ở các lá (leaves).
Khi “học” một cây, dữ liệu gốc sẽ được chia nhỏ thành các tập con dựa trên việc kiểm tra giá trị của một thuộc tính cụ thể. Quá trình này lặp lại đệ quy với mỗi tập con tạo thành. Quá trình này sẽ kết thúc khi toàn bộ tập con tại một nút có cùng một giá trị mục tiêu.
Hãy cùng xem một ví dụ về các điều kiện khác nhau để xác định liệu một người có nên đi câu cá hay không. Các điều kiện bao gồm: Thời tiết và áp suất khí quyển.
Trong cây quyết định đơn giản phía trên, một ví dụ được phân loại bằng cách sắp xếp nó qua cây đến nút lá phù hợp. Sau đó, cây trả về kết quả phân loại tương ứng với nút lá đó, trong trường hợp này là Yes
hoặc No
. Cây quyết định sẽ phân loại các điều kiện trong ngày dựa trên việc liệu hôm đó có phù hợp để đi câu cá hay không.
Một tập dữ liệu thực tế cho cây quyết định sẽ có nhiều đặc điểm hơn nhiều so với ví dụ đơn giản trên, tuy nhiên các mối quan hệ giữa các yếu tố vẫn nên đủ rõ ràng để xác định được. Khi làm việc với học cây quyết định, cần đưa ra một số quyết định như chọn thuộc tính nào, điều kiện nào dùng để phân tách dữ liệu, và khi nào thì cây đã đạt đến điểm kết thúc rõ ràng.
Deep Learning
Deep Learning cố gắng mô phỏng cách não người xử lý kích thích ánh sáng và âm thanh để tạo ra thị giác và thính giác. Kiến trúc Deep Learning được lấy cảm hứng từ mạng nơ-ron sinh học, bao gồm nhiều lớp trong một mạng nơ-ron nhân tạo được xây dựng bằng phần cứng và GPU.
Học sâu sử dụng một chuỗi tầng xử lý phi tuyến để trích xuất hoặc biến đổi các đặc trưng từ dữ liệu. Đầu ra của một lớp sẽ trở thành đầu vào của lớp kế tiếp. Thuật toán học sâu có thể được giám sát để phân loại dữ liệu, hoặc không được giám sát để phân tích mẫu.
Trong số các thuật toán machine learning hiện đang được sử dụng và phát triển, deep learning là phương pháp xử lý khối lượng dữ liệu lớn nhất, và trong một số tác vụ nhận thức, đã vượt qua khả năng của con người. Chính nhờ những đặc điểm này, deep learning đang trở thành phương pháp có tiềm năng lớn trong lĩnh vực trí tuệ nhân tạo (AI).
Các lĩnh vực như thị giác máy tính (computer vision) và nhận dạng giọng nói (speech recognition) đã có những bước tiến lớn nhờ deep learning. Một ví dụ điển hình là IBM Watson, một hệ thống nổi tiếng ứng dụng deep learning.
Ngôn ngữ lập trình
Khi chọn một ngôn ngữ để chuyên sâu trong lĩnh vực machine learning, bạn nên cân nhắc nhu cầu tuyển dụng hiện nay cũng như các thư viện có sẵn phục vụ cho các quy trình machine learning.
Python là một trong những ngôn ngữ phổ biến nhất để làm việc với machine learning, nhờ có nhiều framework như TensorFlow, PyTorch, và Keras. Với cú pháp dễ đọc và khả năng chạy như một ngôn ngữ script, Python rất tiện dụng và mạnh mẽ cho cả tiền xử lý dữ liệu và xử lý trực tiếp. Thư viện scikit-learn được xây dựng dựa trên các gói phổ biến như NumPy, SciPy, và Matplotlib.
Java được sử dụng rộng rãi trong lập trình doanh nghiệp, đặc biệt bởi các lập trình viên ứng dụng desktop frontend có làm machine learning ở cấp độ doanh nghiệp. Dù không phải là lựa chọn ưu tiên cho người mới học, Java lại được ưa chuộng bởi những lập trình viên đã có nền tảng sẵn trong ngôn ngữ này. Trong công nghiệp, Java thường được dùng nhiều hơn Python trong lĩnh vực an ninh mạng, ví dụ như phát hiện gian lận và tấn công mạng.
Một số thư viện machine learning cho Java gồm:
- Deeplearning4j (học sâu phân tán, mã nguồn mở cho Java và Scala)
- MALLET (dành cho xử lý ngôn ngữ tự nhiên, phân loại tài liệu, mô hình chủ đề, và phân cụm)
- Weka (tập hợp các thuật toán dùng trong khai phá dữ liệu)
C++ là ngôn ngữ được chọn trong các ứng dụng machine learning và AI thuộc lĩnh vực game hoặc robot (bao gồm chuyển động robot). Các nhà phát triển phần cứng nhúng hoặc kỹ sư điện tử thường ưa dùng C++ hoặc C nhờ mức độ kiểm soát và thành thạo cao. Một số thư viện C++ phổ biến:
- mlpack (thư viện học máy có thể mở rộng)
- Dlib (cung cấp nhiều thuật toán học máy)
- Shark (mã nguồn mở, thiết kế theo hướng mô-đun)
Thiên kiến con người (Human Biases)
Mặc dù dữ liệu và phân tích tính toán khiến chúng ta tưởng rằng mình đang nhận được thông tin khách quan, điều đó không đúng; chỉ vì dựa trên dữ liệu không có nghĩa là đầu ra của machine learning là trung lập. Thiên kiến con người ảnh hưởng đến cách dữ liệu được thu thập, tổ chức và cuối cùng là cách thuật toán học máy tương tác với dữ liệu.
Ví dụ: Nếu con người đưa vào dữ liệu huấn luyện hình ảnh cá mà phần lớn là cá vàng, thì thuật toán có thể không phân loại cá mập là cá, từ đó tạo ra thiên kiến chống lại cá mập.
Khi sử dụng ảnh lịch sử của các nhà khoa học để huấn luyện, nếu các ảnh đó chủ yếu là người da trắng nam, thuật toán có thể không nhận diện đúng những nhà khoa học là phụ nữ hoặc người da màu. Các nghiên cứu học thuật gần đây chỉ ra rằng AI và machine learning có thể thể hiện những thiên kiến giống con người, bao gồm định kiến giới tính và chủng tộc.
Trong bối cảnh machine learning ngày càng được ứng dụng trong kinh doanh, các thiên kiến không được phát hiện kịp thời có thể gây ra bất công hệ thống, ví dụ như ngăn người dùng tiếp cận khoản vay, không hiển thị quảng cáo việc làm lương cao, hoặc bị loại khỏi dịch vụ giao hàng nhanh trong ngày.
Vì thiên kiến có thể ảnh hưởng tiêu cực đến người khác, chúng ta cần nhận thức rõ và chủ động loại bỏ nó. Một số cách bao gồm:
- Bảo đảm sự đa dạng trong đội ngũ phát triển và kiểm thử dự án.
- Kêu gọi sự tham gia của bên giám sát độc lập để kiểm toán thuật toán.
- Xây dựng các hệ thống thay thế có khả năng phát hiện thiên kiến.
- Thực hiện đánh giá đạo đức như một phần trong kế hoạch dự án khoa học dữ liệu.
Nâng cao nhận thức, kiểm soát thiên kiến vô thức, và cấu trúc sự công bằng trong các dự án machine learning là những cách để đối phó với thiên kiến trong lĩnh vực này.
Kết luận
Hướng dẫn này đã điểm qua một số ứng dụng phổ biến của machine learning, các phương pháp và cách tiếp cận thường được sử dụng trong lĩnh vực này, các ngôn ngữ lập trình phù hợp cho machine learning, đồng thời cũng đề cập đến một số vấn đề cần lưu ý như sự thiên lệch vô thức có thể bị lặp lại trong các thuật toán.
Vì machine learning là một lĩnh vực không ngừng đổi mới, điều quan trọng là cần nhận thức rằng các thuật toán, phương pháp và cách tiếp cận sẽ tiếp tục thay đổi theo thời gian.