7 bước của học máy

Từ phát hiện ung thư da tới chọn lọc dưa chuột hay phát hiện ra thang cuốn cần sửa chữa, học máy (machine learning) đã mang lại cho các hệ thống máy tính những khả năng hoàn toàn mới.

Nhưng sâu bên trong, học máy thực sự hoạt động như thế nào? Ta hãy cùng xem xét một ví dụ cơ bản, sử dụng nó để giải thích quá trình tìm kiếm các câu trả lời từ dữ liệu thông qua học máy.

Ví dụ ta được yêu cầu tạo ra một hệ thống có khả năng trả lời câu hỏi đồ uống này là rượu hay bia. Hệ thống trả lời câu hỏi này mà chúng ta xây dựng được gọi là một “mô hình” (model) và mô hình này được tạo ra thông qua quá trình được gọi là “huấn luyện” (training). Mục đích huấn luyện là để tạo ra một mô hình chuẩn xác, trả lời những câu hỏi của chúng ta một cách chính xác trong hầu hết mọi trường hợp. Nhưng để huấn luyện một mô hình, chúng ta cần đến dữ liệu. Đây chính là điểm xuất phát của ta.

Nếu học máy còn mới mẻ với bạn và bạn muốn tìm hiểu nhanh về tổng quan công nghệ này, hãy đọc bài báo này trước khi bắt đầu: Học máy là gì?

Đây mới chỉ là khởi đầu thôi.

 

Rượu hay bia?

Ta sẽ thu thập dữ liệu từ các cốc bia, ly rượu. Chúng ta có thể thu thập dữ liệu về nhiều khía cạnh liên quan đến hai loại đồ uống này, tất cả mọi thứ từ lượng bọt đến hình thức của ly, cốc.

Để phục vụ mục đích của mình, ta sẽ chỉ chọn ra hai khía cạnh đơn giản: Màu sắc (theo bước sóng ánh sáng) và nồng độ cồn (theo phần trăm). Hy vọng rằng chúng ta có thể phân biệt được hai loại đồ uống này chỉ với hai yếu tố trên. Từ giờ trở đi, ta gọi màu sắc và nồng độ cồn là “các tính năng”.

Đầu tiên ta phải chạy đến cửa hàng tạp hóa, mua một loạt các loại rượu bia khác nhau, và lấy một số dụng cụ dùng để đo lường – một cái máy phổ kế để đo màu sắc và một cái tỉ trọng kế để đo nồng độ cồn. Chắc là cửa hàng tạp hóa của chúng ta có một khu bán thiết bị điện tử 🙂

Thu thập dữ liệu

Một khi chúng ta đã có thiết bị và đống đồ uống, đã đến lúc thực hiện bước thực sự đầu tiên của học máy: Thu thập dữ liệu. Đây là bước rất quan trọng bởi chất lượng và số lượng dữ liệu bạn thu thập được sẽ quyết định trực tiếp tới việc  mô hình dự đoán của bạn có thể tốt đến đâu. Trong trường hợp này, dữ liệu chúng ta thu thập sẽ là màu sắc và nồng độ cồn của mỗi đồ uống.

Ta thu được một bảng gồm màu sắc, tỷ lệ nồng độ cồn và kết luận là rượu hay bia. Đây sẽ là dữ liệu huấn luyện của chúng ta.

Chuẩn bị dữ liệu

Một vài giờ sau khi đo các thông số, chúng ta thu thập được dữ liệu tập huấn. Giờ là lúc thực hiện bước tiếp theo trong học máy: Chuẩn bị dữ liệu. Đây là bước chúng ta tải dữ liệu tới nơi phù hợp và chuẩn bị sử dụng chúng trong quá trình huấn luyện học máy.

Trước hết ta đặt tất cả dữ liệu vào với nhau và sắp thứ tự ngẫu nhiên. Chúng ta không muốn thứ tự dữ liệu ảnh hưởng tới những gì ta học, bởi đó không liên quan đến phần xác định xem đồ uống là rượu hay bia. Nói cách khác, việc chúng ta xác định một thứ đồ uống là gì không phụ thuộc vào việc thứ đồ uống nào đến trước, thứ nào đến sau.

Đây cũng là thời điểm tốt để trực quan hóa dữ liệu theo bất kỳ cách hợp lý nào để xem bạn có thể tận dụng mối quan hệ liên quan nào đó giữa các biến hay không. Đồng thời biết được nếu có bất kỳ sự mất cân đối nào về dữ liệu. Chẳng hạn, nếu chúng ta thu thập quá nhiều dữ liệu về bia so với rượu, mô hình mà chúng ta huấn luyện sẽ bị thiên lệch về hướng đoán rằng gần như mọi thứ nó thấy đều là bia bởi dự đoán đó gần như lúc nào cũng đúng. Tuy nhiên trong thế giới thực, mô hình này có thể thấy bia và rượu nhiều như nhau, điều này có nghĩa là việc đoán “bia” sẽ sai trong nửa số lần đoán.

Chúng ta cũng sẽ cần phân tách dữ liệu thành hai phần. Phần thứ nhất, sử dụng trong việc huấn luyện mô hình, sẽ chiếm phần lớn bộ dữ liệu. Phần thứ hai sẽ dùng cho việc đánh giá chất lượng mô hình mà ta đã huấn luyện. Chúng ta không muốn sử dụng cùng dữ liệu đã dùng để huấn luyện dữ liệu cho việc đánh giá bởi mô hình trả lời được vì nó nhớ “các câu hỏi”. Điều này cũng giống như bạn sẽ không muốn dùng cùng câu hỏi trong bài tập về nhà cho bài kiểm tra.

Đôi khi dữ liệu ta thu được cần chuyển sang hình thức đánh giá và thao tác khác. Những thứ như de-duping (loại bỏ phần trùng lặp), bình thường hóa, sửa lỗi, v.v… Tất cả những việc này sẽ được làm ở bước chuẩn bị dữ liệu. Trong trường hợp của chúng ta, ta không có bất cứ nhu cầu chuẩn bị dữ liệu nào thêm nữa, nên tiếp tục thôi.

Chọn mô hình

Bước tiếp theo trong luồng công việc của ta là chọn mô hình. Qua nhiều năm, các nhà nghiên cứu và nhà khoa học dữ liệu đã tạo ra nhiều mô hình. Một số mô hình rất phù hợp với dữ liệu hình ảnh, một số khác dành cho chuỗi (như văn bản hay âm nhạc), một số dành cho dữ liệu số, những mô hình khác lại phù hợp cho dữ liệu dạng văn bản, Trong trường hợp của ta, bởi ta có hai tính năng – màu sắc và tỷ lệ cồn, chúng ta có thể sử dụng một mô hình tuyến tính nhỏ khá đơn giản để thực hiện công việc.

Huấn luyện

Giờ chúng ta chuyển sang bước được coi là quan trọng nhất của học máy – huấn luyện. Trong bước này, chúng ta sẽ sử dụng dữ liệu để từng bước cải thiện khả năng của mô hình trong việc dự đoán loại đồ uống được đưa ra là rượu hay bia.

Xét về nhiều điểm thì bước này tương tự như việc ai đó lần đầu tập lái xe. Ban đầu họ không biết bất cứ thứ gì như bàn đạp, nút bấm, công tắc vận hành ra sao và khi nào cần dùng đến chúng. Tuy nhiên sau nhiều lần luyện tập và sửa lỗi, họ lấy được bằng lái xe. Hơn nữa sau một năm lái xe, họ trở nên khá thành thạo. Hành động lái xe và phản ứng lại dữ liệu trong thế giới thực đã thay đổi khả năng lái xe của họ, tôi luyện kĩ năng của họ.

Chúng ta sẽ thực hiện điều này trong phạm vi nhỏ hơn với những đồ uống ta có. Cụ thể, công thức cho đường thẳng là y=m*x+b, trong đó x là đầu vào, m là độ dốc của đường thẳng, b là hệ số chặn y và y là giá trị của đường thẳng ở vị trí x. Những giá trị chúng ta có sẽ để điều chỉnh hoặc “huấn luyện” là m và b. Không có cách nào khác để tác động tới vị trí của đường thẳng bởi những biến còn lại là x – đầu vào và y-đầu ra.

Trong học máy, do có thể có nhiều tính năng, ta có nhiều m. Tập hợp những giá trị m đó luôn tạo thành ma trận, chúng ta sẽ biểu thị W cho ma trận “trọng số”. Tương tự như vậy đối với b, ta sắp xếp chúng lại với nhau và gọi đó là các thành kiến (biases).

Quá trình huấn luyện liên quan đến việc khởi tạo một số giá trị ngẫu nhiên cho W và b rồi cố gắng dự đoán đầu ra với các giá trị đó. Có thể bạn đã hình dung ra, việc này được thực hiện khá kém. Nhưng chúng ta có thể so sánh những dự đoán của mô hình với đầu ra mà đáng lẽ nó phải cho ra, rồi điều chỉnh các giá trị trong W và b sao cho ta có được những dự đoán chính xác hơn.

Sau đó quá trình này được lặp lại. Mỗi vòng lặp hoặc chu kỳ cập nhật trọng số và thành kiến được gọi là một “bước” huấn luyện.

Hãy xem trong trường hợp này thì sao, cụ thể hơn cho bộ dữ liệu của chúng ta. Khi ta bắt đầu huấn luyện, nó giống như việc ta vẽ một đường thẳng ngẫu nhiên qua dữ liệu. Sau đó khi từng bước huấn luyện tiến triển, đường thẳng di chuyển, từng chút một, gần hơn với sự phân tách lý tưởng giữa rượu và bia.

Đánh giá

Một khi việc huấn luyện hoàn tất, ta cần xem mô hình có tốt không bằng cách dùng bước Đánh giá. Đây là bước dùng đến bộ dữ liệu mà ta để riêng từ đầu. Việc đánh giá cho phép chúng ta kiểm tra mô hình với những dữ liệu chưa từng được dùng cho huấn luyện.

Chỉ số này cho phép ta xem thử mô hình có thể thực hiện tốt với những dữ liệu nó chưa từng thấy như thế nào. Điều này cũng đại diện cho việc mô hình có thể làm tốt trong thế giới thực ra sao.

Một quy tắc nhỏ tôi dùng để chia dữ liệu huấn luyện và đánh giá đó là chia theo tỉ lệ khoảng 80/20 hoặc 70/30. Điều này phụ thuộc nhiều vào kích thước bộ dữ liệu đầu ban đầu. Nếu bạn có nhiều dữ liệu, có lẽ bạn không cần đến một lượng lớn dữ liệu đến thế cho bộ đánh giá.

Điều chỉnh thông số

Sau khi hoàn thành phần đánh giá, bạn có thể sẽ muốn cải thiện việc huấn luyện của mình bằng cách nào đó. Chúng ta có thể thực hiện điều này bằng cách điều chỉnh thông số. Có một vài thông số được chúng ta ngầm giả định khi tiến hành huấn luyện và giờ là lúc để quay lại, kiểm tra những giả định đó và thử những giá trị khác.

Ví dụ như số lần chúng ta chạy qua bộ dữ liệu huấn luyện trong quá trình huấn luyện. Ý tôi muốn nói đến là chúng ta có thể “hiển thị” toàn bộ bộ dữ liệu cho mô hình nhiều lần chứ không chỉ một lần. Đôi khi, điều này có thể mang đến độ chính xác cao hơn.

Một thông số khác là “tỉ lệ học”. Thông số này xác định chúng ta đã dịch chuyển đường thẳng bao xa trong mỗi bước, dựa trên thông tin từ bước huấn luyện trước. Tất cả những giá trị đó đều góp phần tạo nên tính chính xác của mô hình và quyết định thời gian huấn luyện.

Điều chỉnh thông số có khả năng là một hành trình dài.

Đối với những mô hình phức tạp hơn, những điều kiện ban đầu có thể đóng vai trò quan trọng trong việc xác định kết quả huấn luyện. Sự khác nhau có thể thấy được phụ thuộc vào việc mô hình bắt đầu huấn luyện từ con số 0 so với việc xuất phát từ phân phối giá trị nào đó, điều này đặt ra câu hỏi rằng ta cần dùng đến phân phối nào.

Bạn có thể thấy ta cần xem xét nhiều thứ trong bước huấn luyện này và quan trọng là bạn xác định được xem điều gì khiến một mô hình “đủ tốt”, nếu không bạn sẽ mất nhiều thời gian loay hoay chỉnh sửa những thông số.

Những thông số này thường được coi là “siêu thông số”. Việc thay đổi hay điều chỉnh những siêu thông số ấy vẫn còn là một nghệ thuật và là một quá trình thử nghiệm phụ thuộc nhiều vào những dữ liệu chi tiết, mô hình và quá trình huấn luyện của bạn.

Sau khi bạn đã hài lòng với bước huấn luyện và những siêu thông số của mình qua bước đánh giá, cuối cùng cũng đến lúc sử dụng mô hình của bạn để làm điều gì đó hữu ích!

Dự đoán

Học máy là việc sử dụng dữ liệu để trả lời câu hỏi. Vì vậy Dự đoán, hay suy luận, là bước để ta trả lời một số câu hỏi. Trọng tâm của tất cả công việc ta làm là hiện thực hóa giá trị của học máy.

Cuối cùng chúng ta cũng có thể sử dụng mô hình của mình để dự đoán xem đồ uống đã cho là rượu hay bia dựa trên màu sắc và nồng độ cồn.

Tổng thể

Sức mạnh của học máy chính là việc ta có thể xác định cách phân biệt rượu và bia bằng mô hình thay vì đánh giá của con người hay những quy tắc tự nhiên. Bạn có thể suy luận từ những ý tưởng được trình bày hôm nay cho những miền vấn đề khác, áp dụng những nguyên tắc tương tự:

  • Thu thập dữ liệu
  • Chuẩn bị dữ liệu
  • Chọn mô hình
  • Huấn luyện
  • Đánh giá
  • Điều chỉnh siêu thông số
  • Dự đoán

TensorFlow Playground

Để có thêm cách để huấn luyện và điều chỉnh thông số, bạn có thể xem TensorFlow Playground. Đó là một sandbox học máy hoàn toàn dựa trên trình duyệt, nơi bạn có thể thử các thông số khác nhau và huấn luyện dựa trên các tập dữ liệu giả.

Tiếp theo là gì?

Trong tương lai chúng ta sẽ phải thực hiện nhiều bước hơn và nhiều sắc thái hơn, nội dung này sẽ là khung nền tảng giúp bạn suy nghĩ về vấn đề, mang đến cho chúng ta ngôn ngữ chung để nói về từng bước và đi sâu tìm hiểu trong tương lai.

Nguồn: towardsdatascience.com

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.