Tổng quan về machine learning
| |

Machine learning là gì? Tổng quan về machine learning

Bài viết này được mình dịch từ bài viết: A Gentle Guide to Machine Learning

1. Machine learning là gì?

Machine learning là gì? Machine learning là một lĩnh vực con của Trí tuệ nhân tạo(Artificial Intelligence) sử dụng các thuật toán cho phép máy tính có thể học từ dữ liệu để thực hiện các công việc thay vì được lập trình một cách rõ ràng.

machine learning là gì

Bạn đã hiểu rồi chứ? Chúng ta có thể làm cho máy tính học để làm công việc gì đó! Điều này nghe có vẻ khá trừu tượng. Nó có nghĩa rằng, chúng ta có thể lập trình cho các máy tính có khả năng tự học.

Khả năng học tập là một yếu tố then chốt của trí thông minh.

Nếu mang khái niệm này sang machine learning, có vẻ đây là một bước tiến lớn làm cho máy móc thông minh hơn. Trên thực tế, hiện nay Machine learning đang là lĩnh vực cho thấy sự tiến bộ trong tiến trình của Trí tuệ nhân tạo. Nó đang là một chủ đề nóng và có khả năng làm cho máy móc trở nên thông minh hơn.

Bài viết này sẽ cố gắng giúp mọi người hiểu machine learning là gì qua những khái niệm đơn giản nhất. Tôi sẽ trình bày tổng quan về các khái niệm quan trọng, các ứng dụng và thách thức của Machine learning. Bài viết này không thể cung cấp tất cả mọi thứ về ML. Mà tôi sẽ đưa ra các khái niệm nền tảng để mọi người có thể tiếp tục tìm hiểu.

Dành cho bạn nào đang tìm kiếm tài liệu machine learning: Tài liệu Machine Learning tổng hợp

2. Machine learning trên thực tế

Okay, chẳng có gì là hoàn hảo hết. Machine learning cũng có những giới hạn của nó. Chúng ta không thể nào xây dựng một cỗ máy thông minh để học dữ liệu từ cổ chí kim tới hiện tại. Tuy nhiên, đã có những ứng dụng thực tế mà machine learning làm rất tốt. Sau đây là các lĩnh vực phổ biến mà machine learing góp mặt:

2.1. Xử lý ảnh

Bài toán xử lý ảnh(Image Processing) giải quyết các vấn đề phân tích thông tin từ hình ảnh hay thực hiện một số phép biến đổi. Một số ví dụ là:

  • Gắn thẻ hình ảnh(Image Tagging), giống như Facebook, một thuật toán tự động phát hiện khuôn mặt của bạn và bạn bè trên những bức ảnh. Về cơ bản, thuật toán này học từ những bức ảnh mà bạn tự gắn thẻ cho mình trước đó.
  • Nhận dạng ký tự(Optical Character Recognition), là một thuật toán chuyển dữ liệu trên giấy tờ, văn bản thành dữ liệu số hóa. Thuật toán phải học cách nhận biết ảnh chụp của một ký tự là ký tự nào.
  • Ô tô tự lái(Self-driving cars), một phần cơ chế sử dụng ở đây là xử lý ảnh. Một thuật toán machine learning giúp phát hiện các mép đường, biển báo hay các chướng ngại vật bằng cách xem xét từng khung hình video từ camera.

2.2. Phân tích văn bản

Phân tích văn bản(Text analysis) là công việc trích xuất hoặc phân lọi thông tin từ văn bản. Các văn bản ở đây có thể là các facebook posts, emails, các đoạn chats, tài liệu,… Một số ví dụ phổ biến là:

  • Lọc spam(Spam filtering), là một trong những ứng dụng phân loại văn bản được biết và sử dụng nhiều nhất. Ở đây, phân loại văn bản là xác định chủ đề cho một văn bản. Bộ lọc spam sẽ học cách phân loại một email có phải spam không dựa trên nội dung và tiêu đề của email.
  • Phân tích ngữ nghĩa(Sentiment Analysis), học cách phân loại một ý kiến là tích cực, trung tính hay tiêu cực dựa trên nội dung văn bản của người viết.
  • Khai thác thông tin(Information Extraction), từ một văn bản, học cách để trích xuất các thông tin hữu ích. Chẳng hạn như trích xuất địa chỉ, tên người, từ khóa,…

2.3. Khai phá dữ liệu

Khai phá dữ liệu(Data mining) là quá trình khám phá ra các thông tin có giá trị hoặc đưa ra các dự đoán từ dữ liệu. Định nghĩa này có vẻ bao quát, nhưng bạn hãy nghĩ về việc tìm kiếm thông tin hữu ích từ một bảng dữ liệu rất lớn. Mỗi bản ghi sẽ là một đối tượng cần phải học, và mỗi cột là một đặc trưng. Chúng ta có thể dự đoán giá trị của một cột của bản ghi mới dựa trên các bản ghi đã học. Hoặc là phân nhóm các bản ghi của bản. Sau đây là những ứng dụng của khai phá dữ liệu:

  • Phát hiện bất thường(Anomaly detection), phát hiện các ngoại lệ, ví dụ như phát hiện gian lận thẻ tín dụng. Bạn có thể phát hiện một giao dịch là khả nghi dựa trên các giao dịch thông thường của người dùng đó.
  • Phát hiện các quy luật(Association rules), ví dụ, trong một siêu thị hay một trang thương mại điện tử. Bạn có thể khám phá ra khách hàng thường mua các món hàng nào cùng nhau. Dễ hiểu hơn, khách hàng của bạn khi mua món hàng A thường mua kèm món hàng nào? Các thông tin này rất hữu ích cho việc tiếp thị sản phẩm.
  • Gom nhóm(Grouping), ví dụ, trong các nền tảng SaaS, người dùng được phân nhóm theo hành vi hoặc thông tin hồ sơ của họ.
  • Dự đoán(Predictions), các cột giá trị(của một bản ghi mới trong database). Ví dụ, bạn có thể dự đoán giá của căn hộ dựa trên các dữ liệu về giá các căn hộ bạn đã có.

2.4. Trò chơi điện tử & Robot

Trò chơi điện tử(Video games) và robot(Robotics) là lĩnh vực lớn có sự góp mặt của machine learning. Nếu ta có một nhân vật cần di chuyển và tránh các chướng ngại vật trong game. Machine learning có thể học và giải quyết công việc này thay bạn. Một kỹ thuật phổ biến được áp dụng  trong trường hợp này là Học tăng cường(Reinforcement learning). Ở đó, máy sẽ học tăng cường với mục tiêu là giải quyết nhiệm vụ trên. Học tăng cường là tiêu cực nếu nó va phải chướng ngại vật, là tích cực nếu nó chạm tới đích.

Một thành tựu gần đây nhất là cỗ máy Alpha Go của Google DeepMind đã đánh bại kỳ thủ cờ vậy số 1 thế giới. Trong khi cờ vây là một trò chơi có không gian trạng thái cực kỳ lớn.

Okey, tôi đã hiểu machine learning là gì rồi. Tôi cũng đã thấy được những giá trị mà nó đem lại rồi. Nhưng làm sao machine learning làm được điều đó?

3. Machine learning làm việc ra sao?

Một trong những cuốn sách đầu tiên tôi đọc hồi 10 năm trước là Machine Learning by Tom Mitchell. Cuốn sách này được viết năm 1997, nhưng kiến thức trong đó vẫn chuẩn xác cho tới ngày hôm nay.

Trong cuốn sách đó, tôi thích định nghĩa của tác giá về machine learning:

A computer program is said to learn to perform a task T from experience E, if its performance at task T, as measured by a performance metric P, improves with experience E over time

Tạm dịch: Một chương trình máy tính được cho là học để thực hiện một nhiệm vụ T từ kinh nghiệm E, nếu hiệu suất thực hiện công việc T của nó được đo bởi chỉ số hiệu suất P và được cải thiện bởi kinh nghiệm E theo thời gian.

machine learning

Ví dụ: Một cỗ máy thực hiện chơi cờ(nhiệm vụ T), có thể học từ dữ liệu các ván cờ trước đó hoặc chơi với một chuyên gia(kinh nghiệm E). Khả năng chơi của cỗ máy là tỉ lệ số ván mà nó chiến thắng khi chơi với con người(hiệu suất P).

3.1. Một số ví dụ thực tế

Hãy cùng hình dung trong một vài ví dụ khác:

  • VD1: Một hệ thống nhận vào một hình ảnh, nó phải xác định xem trong đó có khuôn mặt của Ngọc Trinh hay không. Điều này thấy rõ nhất ở chức năng tự động gắn thẻ khuôn mặt của Facebook.
  • VD2: Hệ thống nhận vào các reviews về một sản phẩm đồ ăn. cần xác định các reviews đó có nội dung tích cực hay tiêu cực.
  • VD3: Một hệ thống nhận vào hình ảnh/ thông tin của một người. Đánh giá số điểm đo khả năng người đó sẽ trả một khoản vay tín dụng.

Trong VD1, nhiệm vụ phát hiện khuôn mặt của người mẫu Ngọc Trinh trong một bức ảnh. Kinh nghiệm có thể là một tập hợp các ảnh có khuôn mặc Ngọc Trinh và một tập ảnh khác không có. Hiệu suất sẽ được tính bằng tỉ lệ đoán chính xác trên một tập ảnh mới.

Trong VD2, nhiệm vụ của bài toán là là gán nhãn cho mỗi review. Kinh nghiệm ở đây có thể là tập hợp các review và nhãn tương ứng của nó. Hiệu suất được đo bằng tỉ lệ dự đoán nhãn chính xác trên các review mới.

Trong VD3, bài toán cần giải quyết là đánh giá điểm tin cậy của người dùng để thực hiện cho vay tín dụng. Kinh nghiệm có thể học được từ các tập hình ảnh/ thông tin của những người vay tín dụng trước đi kèm thông tin họ có chi trả khoản vay tín dụng đó không. Hiệu suất của mô hình sẽ được đo bằng tỉ lệ dự đoán đúng trên tập khách hàng mới.

3.2. Huấn luyện mô hình

Làm sao thuật toán có thể thể đưa ra đầu ra mong muốn từ tập dữ liệu đầu vào? Bạn cần một quá trình huấn luyện sử dụng các dữ liệu huấn luyện. Nó chính là kinh nghiệm E ở định nghĩa trên.

Một tập dữ liệu huấn luyện bao gồm nhiều mẫu huấn luyện. Mỗi mẫu huấn luyện sẽ là một thể hiện của bài toán(có đầu vào và lời giải). Machine learning sẽ học từ các thể hiện đó để tìm ra lời giải phù hợp với từng đầu vào mới. Nó giống như là bạn dạy 1 đứa trẻ cách ném 1 quả bóng; bạn sẽ ném quả bóng vài lần cho đứa trẻ quan sát; Sau đó đứa trẻ sẽ bắt đầu học để tự ném quả bóng.

Các ví dụ trong tập huấn luyện thường có một tập thuộc tính/ đặc trưng cố định. Đó là những thể hiện để mô tả về đối tượng đó. Như trong VD1, đặc trưng có thể là tần suất các màu của mỗi bức ảnh. Trong VD2, các đặc trưng một review sẽ là các từ tạo nên review đó. Còn VD3, các đặc trưng có thể là tuổi tác, công việc, mức lương của mỗi người,…

Lựa chọn các đặc trưng thích hợp là một nhiệm vụ quan trọng trong Machine learning. Chúng ta sẽ tiếp tục làm rõ điều này ở phần phía sau mục này.

4. Phân loại thuật toán machine learning

Mục này tôi sẽ nói về 2 thuật toán cơ bản của machine learning: Học có giám sát(Supervised learning) và Học không giám sát(Unsupervised learning). Sự khác nhau lớn nhất giữa 2 thuật toán này là cách mà chúng ta cung cấp tập dữ liệu huấn luyện cho mô hình; Cách thuật toán sử dụng dữ liệu và loại vấn đề mà chúng giải quyết.

phân loại thuật toán machine learning
Phân loại các thuật toán machine learning

4.1. Học có giám sát

Trong học có giám sát, thuật toán machine learning thực hiện quá trình “chuyển dữ liệu đầu vào thành đầu ra mong muốn”.

Trong ML, đầu vào được gọi là input, đầu ra còn được gọi là label(nhãn). Tập dữ liệu huấn luyện được gọi là training set; Mỗi mẫu dữ liệu trong tập huấn luyện được gọi là training example.

Thuật toán machine learning cần học cách để chuyển đổi mỗi input(đầu vào) thành label(kết quả) tương ứng. Do vậy, mọi mẫu dữ liệu huấn luyện trong tập dữ liệu huấn luyện cần phải biết trước label của nó.

Trong VD2 – Xác định nhãn cho mỗi review: Đầu vào của tập dữ liệu huấn luyện sẽ là các review về món ăn đó; Và mỗi review đó đã được chỉ định rõ nội dung là tích cực hay tiêu cực.

Tùy thuộc vào loại đầu ra mong muốn, chúng ta tiếp tục chia nhỏ học có giám sát gồm:

4.1.1. Phân loại(Classification)

Khi đầu ra mong muốn của chúng ta là một tập hữu hạn và rời rạc. Khi đó bài toán của chúng ta được gọi là bài toán phân loại. VD2 phía trên có thể xếp vào bài toán phân loại; Các đầu ra mong muốn của chúng ta là: tích cực, tiêu cực và trung tính; Khi đó, tập dữ liệu huấn luyện có thể giống thế này:

Text Label
“Món này ngon phết, giá cả sinh viên nhưng phải chờ khá lâu vì đông khách.” Tích cực
“Chờ lâu quá thể đáng.” Tiêu cực

4.1.2. Hồi quy(Regression)

Khi đầu ra mong muốn là một dải giá trị liên tục. Chẳng hạn như giá trị xác suất, khi đó bài toán sẽ thuộc loại hồi quy. VD3 phía trên là một bài toán dự đoán điểm tin cậy trong [0; 1]; Nó thể hiện xác suất một người sẽ trả các khoản vay của mình. Khi đó, dữ liệu sẽ giống như sau:

Nghề nghiệp Thu nhập Tuổi Điểm tin cậy
Lập trình viên > 1000$ 25 0.85
Sinh viên < 200$ 18 0.3

Học có giám sát là thuật toán phổ biến nhất trong các thuật toán machine learning. Hạn chế khi sử dụng thuật toán này là chúng ta cần cung cấp dữ liệu có gán nhãn. Trong nhiều trường hợp, để có được dữ liệu gán nhãn này rất tốn rất nhiều chi phí. Chẳng hạn trong VD2, nếu ta cần 10.000 review có nhãn(tích cực, tiêu cực, trung tính) để huấn luyện mô hình; Việc này sẽ cần con người đọc từng review và gán nhãn thủ công; Điều này rất tốn thời gian và công sức. Đây cũng là một rào cản của ML: xây dựng các tập dữ liệu gán nhãn chất lượng.

4.2. Học không giám sát

Học không giám sát cũng là một nhánh trong machine learning. Các mẫu dữ liệu trong học không giám sát chỉ cần input(đầu vào) mà không cần label(đầu ra). Nó được sử dụng nhiều trong việc khám phá cấu trúc và mối quan hệ của dữ liệu. Một thuật toán điển hình là bài toán phân cụm(clustering algorithm); Nó học cách để tìm các mẫu dữ liệu tương tự nhau và nhóm vào thành các cụm(cluster). Một số thuật toán phân cụm như K-means học cách phân cụm chỉ học từ tập dữ liệu đầu vào.

5. Các thuật toán Machine learning

Oke, bây giờ chúng ta sẽ đi sâu hơn để hiểu rõ hơn cách machine learning làm việc. Để thực hiện chuyển đổi từ input thành output mong muốn, chúng ta có thể sử dụng các mô hình khác nhau. Machine learning không phải là một loại thuật toán duy nhất; Có thể bạn đã nghe tới Support vector machine(SVM), Naive Bayes, Cây quyết định(Decision Trees) hay Học sâu(Deep learning). Các thuật toán này đều cố gắng giải quyết một bài toán: Học cách chuyển đổi mọi input thành output chính xác của mà nó thuộc về.

Những thuật toán machine learning này sử dụng các mô hình/ kỹ thuật khác nhau để thực hiện quá trình học tập và thể hiện kiến thức về những gì nó được học.

Nhưng trước khi đi vào từng thuật toán, có một nguyên tắc chung: Các thuật toán machine learning cố gắng khái quát hóa. Nghĩa là, nó sẽ tìm và giải thích theo cách đơn giản nhất; Nguyên tắc đó được biết đến là Occam’s razor.

Mọi thuật toán machine learning đều cố gắng đưa ra những giả thiết đơn giản nhất mà có thể đúng với hầu hết các mẫu trong tập dữ liệu huấn luyện.

Có rất nhiều thuật toán machine learning khác nhau. Nhưng tôi sẽ trình bày ngắn gọn về 3 thuật toán phổ biến nhất:

5.1. Một số thuật toán Machine learning

  • Support Vector Machines: Một thuật toán cố gắng xây dựng một siêu mặt phẳng trong không gian nhiều chiều để phân biệt các đối tượng ở các lớp khác nhau; Làm sao cho khoảng cách giữa 2 đối tượng khác label gần nhau nhất có khoảng cách cực đại. Ý tưởng của thuật toán cực kỳ đơn giản, nhưng mô hình này lại rất phức tạp và có hiệu quả. Thực tế, ở một số bài toán, SVM là một mô hình machine learning cho hiệu quả tốt nhất.
  • Mô hình xác suất(Probabilistic Models): Các mô hình này cố gắng giải quyết bài toán bằng phân bố xác suất. Một thuật toán phổ biến nhất là phân loại Naive Bayes; Nó sử dụng lý thuyết Bayes và giả thiết các đặc trưng là độc lập. Điểm mạnh của mô hình xác suất là đơn giản nhưng hiệu quả. Đầu ra của nó không chỉ là label mà còn đi kèm xác suất thể hiện độ chính xác cho kết quả đó.
  • Học sâu(Deep learning): Hiện đang là xu hướng trong machine learning dựa trên các mô hình mạng nơ ron nhân tạo(Artificial Neural Networks). Mạng nơ ron có cách tiếp cận kết nối và sử dụng ý tưởng theo cách bộ não con người làm việc. Chúng bao gồm số lượng lớn các nơ ron liên kết với nhau; được tổ chức thành các lớp(layers). Học sâu liên tục được phát triển với các cấu trúc mới sâu hơn; Nó không chỉ cố gắng học mà còn xây dựng các cấu trúc biểu diễn các đặc trưng quan trọng một cách tự động.

6. Lưu ý quan trọng trong Machine learning

Nhắc lại, Machine learning nghe có vẻ rất thần thánh. Nhưng machine learning không tự động làm tất cả mọi thứ cho bạn được. Thực tế, có nhiều bước thủ công cần làm để thiết kế ra một giải pháp. Tuy nhiên, chúng lại có ảnh hưởng lớn tới kết quả của bài toán. Một số điều cần lưu ý là:

6.1. Tôi nên sử dụng thuật toán học máy nào?

lựa chọn thuật toán machine learning
Lựa chọn thuật toán machine learning phù hợp

6.1.1. Học có giám sát hay học không giám sát?

Dữ liệu của bạn có nhãn(label) hay không? Tức là, mỗi mẫu dữ liệu huấn luyện có một đầu ra tương ứng hay không? Nếu có, bạn hãy sử dụng học có giám sát để giải bài toán. Nếu không, học không giám sát là thuật toán bạn nên dùng.

6.1.2. Phân loại, hồi quy hay phân cụm?

Điều đó phụ thuộc  chủ yếu vào câu hỏi: Bạn đang muốn giải quyết cái gì? Nếu bạn muốn gắn thẻ cho một bài báo; phân loại có thể là lựa chọn đúng đắn. Nhưng nếu bạn cần kết quả là một con số, chẳng hạn dự báo giá nhà đất, hồi quy là lựa chọn tốt nhất. Nếu bạn có một trang web bán hàng và muốn gợi ý sản phẩm tương tự cho khách, lựa chọn hợp lý nhất trong trường hợp này là phân cụm.

6.1.3. Deep learning, SVM, Naive Bayes, Decision Trees… thuật toán nào tốt nhất?

Câu trả lời là: Không có thuật toán nào là tốt nhất cho mọi bài toán. Có thể bạn thấy Deep learning và SVM đã chứng minh chúng mạnh mẽ và hiệu quả trong nhiều ứng dụng khác nhau. Nhưng tùy vào từng bài toán cụ thể và phân tích dữ liệu, một vài thuật toán machine learning có thể làm tốt hơn các thuật toán còn lại. Bạn cần biết điểm mạnh của mỗi thuật toán và thử chúng để tìm được thuật toán tối ưu nhất!

6.2. Feature engineering

Feature engineering là quá trình chúng ta thực hiện trích xuất và trích chọn các đặc trưng(thuộc tính) quan trọng từ dữ liệu thô để sử dụng làm đại diện cho các mẫu dữ liệu huấn luyện. Một tập dữ liệu huấn luyện có thể có rất nhiều thuộc tính, nhưng không phải cái nào cũng cần thiết và quan trọng. Feature engineering là kỹ thuật giúp loại bỏ các thuộc tính dư thừa; làm đơn giản hóa quá trình biểu diễn dữ liệu nhưng không làm ảnh hưởng tới kết quả cuối cùng. Nếu không có bước này, mô hình học sẽ cực kỳ phức tạp và thậm chí còn giảm độ chính xác khi có những thuộc tính nhiễu.

Feature engineering là một bước quan trọng trong Machine learning(trừ khi dữ liệu của bạn đã sạch sẽ hoặc là bài toán chưa đủ lớn).

Bạn nên chú ý: Nếu bạn không thực hiện bước này, kết quả sẽ có thể rất tệ, cho dù bạn có dùng một thuật toán tốt nhất đi nữa. Nó giống như bạn cố gắng đọc trong bóng tối vậy; bạn không thể đọc được cho dù bạn thông minh tới đâu đi nữa.

6.2.1. Trích xuất đặc trưng(Feature extraction)

Để nạp dữ liệu huấn luyện vào mô hình học máy, bạn cần phải đưa dữ liệu thô về cấu trúc nào đó mà thuật toán có thể “hiểu”. Công việc này được gọi là trích xuất đặc trưng. Thông dụng nhất, chúng ta sẽ chuyển dữ liệu thô về dữ liệu số là vector của các đặc trưng.

Trong VD1, làm sao ta có thể truyền vào thuật toán machine learning một hình ảnh?

Một cách đơn giản là chuyển ảnh đó thành một vector; Mỗi phần tử trong vector đó tương ứng là giá trị màu xám của từng pixel trong ảnh. Khi đó, mỗi đặc trưng/thành phần sẽ là một giá trị số từ 0 – 255; 0 là màu đen, 255 là trắng và 1 – 254 là các giá trị mức độ xám.

Giải pháp trên có thể cho kết quả, nhưng kết quả sẽ cải thiện hơn nếu ta cung cấp nhiều đặc trưng có giá trị hơn:

  • Hình ảnh đó có chứa ảnh khuông mặt người?
  • Màu da là gì?
  • Màu mắt là gì?
  • Khuôn mặt có tóc hay không?

Đó là những đặc trưng ở mức cao hơn. Những đặc trưng này có giá trị hơn nhiều so với đặc trưng màu của các pixel ảnh. Các đặc trưng này có thể là kết quả của một thuật toán machine learning khác. Cung cấp các đặc trưng mức cao hơn giúp mô hình học máy của ta học tập và đưa ra dự đoán chính xác hơn.

Nếu chúng ta cung cấp các đặc trưng tốt hơn:

  • Thuật toán sẽ có khả năng cung cấp những kết quả chính xác hơn.
  • Có thể sẽ cần ít dữ liệu huấn luyện hơn
  • Có thể giảm đáng kể thời gian huấn luyện mô hình.

6.2.2. Trích chọn đặc trưng(Feature selection)

Đôi khi, các đặc trưng chúng ta cung cấp cho thuật toán machine learning có thể vô dụng. Chẳng hạn, với bài toán phân loại review, chúng ta cung cấp chiều dài của review, ngày tạo và người tạo review đó,… chúng có thể hữu ích hoặc không. Sẽ rất hữu ích nếu có phương pháp tự động phát hiện điều này. Đó là trích chọn đặc trưng, thuật toán này sử dụng kỹ thuật đánh trọng số cho từng đặc trưng; Và chỉ lựa chọn các đặc trưng có trọng số cao.

Một lưu ý nữa: Cái gì nhiều quá cũng không tốt, tránh sử dụng số lượng đặc trưng quá lớn. Bạn có thể bị cám dỗ và thêm tất cả các đặc trưng có thể hữu ích. Nhưng đó không phải cách tốt, thêm đặc trưng cũng đồng nghĩa không gian bộ nhớ tăng lên, làm cho dữ liệu cách xa nhau hơn. Vấn đề phổ biến này được biết đến với cái tên curse of dimensionality. Khi số lượng mẫu huấn luyện tăng theo cấp số nhân, đó thực sự là một vấn đề.

6.3. Dữ liệu huấn luyện(Training data)

Bạn cần truyền vào thuật toán machine learning các mẫu dữ liệu huấn luyện. Phụ thuộc vào bài toán bạn cần giải quyết, chúng ta có thể cần vài trăm, vài nghìn, triệu hoặc hàng tỷ mẫu dữ liệu huấn luyện. Cân nhắc, cung cấp các mẫu huấn luyện tốt là rất quan trọng; Nếu bạn đưa vào các mẫu dữ liệu sai, cơ hội để có kết quả tốt sẽ giảm đi.

Thu thập một số lượng lớn dữ liệu liệu có chất lượng tốt để huấn luyện các mô hình học máy thường tốn nhiều chi phí. Trừ khi bạn đã có sẵn dữ liệu gán nhãn rồi. Bạn có thể thực hiện công việc này thủ công bằng sức người. Một số công cụ hỗ trợ tăng tốc độ gán nhãn có thể giúp bạn.

Nguyên tắc chung về dữ liệu huấn luyện là: Chất lượng của dữ liệu huấn luyện của bạn càng tốt, khả năng bạn thu được kết quả tốt sẽ cao hơn.

6.4. Dữ liệu kiểm thử và các độ đo

Sau khi chúng ta đào tạo một thuật toán máy học, chúng ta cần kiểm tra hiệu quả của nó. Đây là một bước đặc biệt quan trọng, nếu không bạn sẽ không thể biết mô hình của mình có học được gì hay không!

6.4.1. Kiểm thử và độ chính xác

Ý tưởng thực hiện rất đơn giản, chúng ta sử dụng dữ liệu kiểm thử(testing data); Dữ liệu này có cấu trúc giống với dữ liệu huấn luyện; Nhưng là một tập dữ liệu không có ở trong tập dữ liệu huấn luyện. Chúng ta sẽ thử từng mẫu dữ liệu kiểm thử, kiểm tra mô hình hoạt động có như mong đợi không. Nếu là bài toán học có giám sát, chúng ta quan sát những mẫu mô hình cho ra kết quả đúng. Nếu độ chính xác trả ra là 90% trên tập kiểm thử, chúng ta kết luận mô hình này có độ chính xác là 90%.

Điều quan trọng phải nhớ rằng dữ liệu huấn luyện và kiểm thử phải tách biệt. Đây là cách duy nhất để kiểm tra hiệu suất của mô hình học máy. Bạn có thể có kết quả tốt trên tập dữ liệu huấn luyện, nhưng có kết quả tệ trên tập kiểm thử; Vấn đề này được gọi là overfiting; Mô hình học máy quá khớp với dữ liệu huấn luyện và có một kết quả dự đoán tệ. Cách thường dùng để tránh overfiting là sử dụng ít số lượng đặc trưng hơn; đơn giản hóa mô hình; sử dụng tập huấn luyện lớn hơn và không gian dữ liệu bao quát hơn.

6.4.2. Một số độ đo khác

Độ chính xác là độ đo cơ bản nhất, bạn có thể sử dụng độ đo khác như Precission vs Recall; Nó sẽ nói cho bạn thuật toán hoạt động tốt như nào trên từng nhãn. Confusion matrices là một công cụ tuyệt vời để xem thuật toán phân loại dự đoán ‘nhập nhằng‘ trong trường hợp nào.

Đối với bài toán hồi quy và phân cụm, bạn cần có các độ đo khác để kiểm tra thuật toán của bạn có hoạt động tốt hay không.

6.5. Hiệu suất

Trên thực tế, nếu bạn phát triển giải pháp cho nhu cầu thực tiễn; Độ chính xác và tốc độ xử lý là những yếu tố bạn cần quan tâm. Ứng dụng của bạn dù có hiệu quả tốt nhưng xử lý chậm thì cũng chẳng sài được. Điều này có vẻ khó khăn trong machine learning.

Việc đầu tiên là bạn cần lựa chọn một Machine learning Framework, các framework này thường có ở một số ngôn ngữ lập trình nhất định. Python và thư viện Scikit-learn là một sự lựa chọn hoàn hảo.

Tuy nhiên, vấn đề hiệu năng vẫn có thể xảy ra. Nó phụ thuộc vào số lượng dữ liệu huấn luyện, độ phức tạp và thuật toán bạn sử dụng; Điều này có thể cần những máy tính với bộ nhớ lớn và hiệu năng cao để huấn luyện. Có thể bạn phải huấn luyện nhiều lần để có được kết quả tốt. Bạn cũng có thể đào tạo lại mô hình để phủ hết những không gian dữ liệu mới và tối ưu độ chính xác.

Nếu muốn huấn luyện dữ liệu lớn với tốc độ nhanh, chúng ta sẽ cần những máy tính với cấu hình cao; Chúng cho phép chạy đa luồng tốt và tính toán song song.

Đây cũng là những vấn đề xảy ra trên thực tế, nhưng bạn sẽ cần giải quyết chúng nếu muốn xây dựng những ứng dụng machine learning thực tiễn.

7. Kết luận

Đó là một bức tranh tổng quan về về machine learning, machine learning là gì. Còn rất nhiều khái niệm, các ứng dụng thực tiễn, các thuật toán chưa được nhắc tới trong bài viết này. Tôi không thể trình bày tất cả trong một bài viết. Nhưng, bạn có thể tự khám phá và tìm hiểu về chúng mà.

Machine learning cực kỳ mạnh mẽ nhưng nó khó, nhưng vấn đề khó nêu trong bài viết này chỉ là phần ngọn mà thôi.

Thông thường, bạn cần có một nền tảng trong khoa học máy tính. Đặc biệt, ML đòi hỏi cần phải có kết quả tốt mới dùng được. Mọi người sẽ gặp phải rất nhiều khó khăn và thất vọng để giải quyết các bài toán trước khi tìm ra hướng đi.

Hi vọng bạn thích bài viết này! Hãy để lại tại ô comment 1 ý kiến hoặc bất kỳ câu hỏi nào của bạn!

Similar Posts

Subscribe
Notify of
guest
8 Bình luận
Inline Feedbacks
View all comments