1. Giới thiệu

Cập nhật lần gần đây nhất: 28/03/2022
Công nghệ học máy
Công nghệ học máy là một lĩnh vực phát triển với tốc độ rất nhanh. Nghiên cứu và khả năng mới được phát hành mỗi ngày, cho phép sử dụng các trường hợp mà trước đây không thể thực hiện được.
Những bản phát hành này thường có kết quả là một mô hình. Bạn có thể hiểu mô hình là các phương trình toán học rất dài, nhận một dữ liệu đầu vào (ví dụ: hình ảnh) và đưa ra kết quả (ví dụ: phân loại)
- Nếu bạn muốn sử dụng một trong những mô hình mới này với dữ liệu của riêng mình thì sao?
- Bạn có thể hưởng lợi như thế nào từ các mô hình hiện đại này cho trường hợp sử dụng hoặc trong ứng dụng của mình?
Lớp học lập trình này sẽ hướng dẫn bạn quy trình tuỳ chỉnh mô hình học máy cho dữ liệu của riêng bạn một cách dễ dàng.
Việc xây dựng và huấn luyện mô hình học máy có nhiều thách thức:
- Tốn nhiều thời gian.
- Sử dụng lượng lớn dữ liệu.
- Yêu cầu chuyên môn trong các lĩnh vực như Toán học và Thống kê.
- Tốn nhiều tài nguyên: một số mô hình có thể mất nhiều ngày để huấn luyện.
Việc xây dựng kiến trúc mô hình mới tốn nhiều thời gian và có thể đòi hỏi nhiều thử nghiệm và nhiều năm kinh nghiệm. Nhưng nếu bạn có thể tận dụng tất cả kiến thức đó và sử dụng trên dữ liệu của riêng mình bằng cách chỉ cần tuỳ chỉnh nghiên cứu hiện đại cho vấn đề của riêng bạn thì sao? Bạn có thể thực hiện việc đó bằng kỹ thuật có tên là Học chuyển giao!
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách thực hiện Học chuyển giao, lý do kỹ thuật này hoạt động và thời điểm sử dụng kỹ thuật này.
Kiến thức bạn sẽ học được
- Học chuyển giao là gì và thời điểm sử dụng kỹ thuật này.
- Cách sử dụng Học chuyển giao.
- Cách tinh chỉnh mô hình.
- Cách sử dụng TensorFlow Lite Model Maker.
- Cách sử dụng TensorFlow Hub.
Bạn cần có
- Tất cả mã đều được thực thi bằng Google Colaboratory, vì vậy, bạn không cần cài đặt bất cứ thứ gì trên máy của mình. Bạn chỉ cần có quyền truy cập vào Internet và Tài khoản Google để đăng nhập vào Colab.
- Kiến thức cơ bản về TensorFlow và API Keras.
- Kiến thức về Python.
Nếu không có kiến thức cơ bản về TensorFlow hoặc Công nghệ học máy, bạn vẫn có thể tìm hiểu về Học chuyển giao. Hãy đọc bước tiếp theo "Học chuyển giao là gì" để tìm hiểu lý thuyết đằng sau kỹ thuật này, sau đó chuyển sang phần "Học chuyển giao bằng Model Maker". Nếu muốn tìm hiểu sâu hơn và xem quy trình chi tiết hơn, bạn sẽ tìm thấy thông tin đó trong các phần về Học chuyển giao bằng TensorFlow Hub.
2. Học chuyển giao là gì?
Mô hình được huấn luyện tiền kỳ là một mạng đã lưu, được huấn luyện trước đó trên một tập dữ liệu lớn, thường là trên một nhiệm vụ phân loại hình ảnh quy mô lớn. Bạn có thể sử dụng mô hình được huấn luyện trước như hiện tại hoặc sử dụng kỹ thuật học chuyển giao để tuỳ chỉnh mô hình này cho một nhiệm vụ cụ thể.
Trực giác đằng sau kỹ thuật học chuyển giao để phân loại hình ảnh là nếu một mô hình được huấn luyện trên một tập dữ liệu đủ lớn và đủ chung, thì mô hình này sẽ đóng vai trò là một mô hình chung của thế giới hình ảnh. Sau đó, bạn có thể tận dụng các bản đồ đặc trưng đã học này mà không cần bắt đầu từ đầu bằng cách huấn luyện một mô hình lớn trên một tập dữ liệu lớn.
Có 2 cách để tuỳ chỉnh Mô hình học máy
- Trích xuất đặc trưng: Sử dụng các biểu diễn được học bởi một mạng trước đó để trích xuất các đặc trưng quan trọng từ các mẫu mới. Bạn chỉ cần thêm một thuật toán phân loại mới (được huấn luyện từ đầu) lên trên mô hình được huấn luyện trước để có thể sử dụng lại các bản đồ đặc trưng đã học trước đó cho tập dữ liệu. Bạn không cần (huấn luyện lại) toàn bộ mô hình. Mạng tích chập cơ sở đã chứa các đặc trưng hữu ích chung cho việc phân loại hình ảnh. Tuy nhiên, phần phân loại cuối cùng của mô hình được huấn luyện trước là dành riêng cho nhiệm vụ phân loại ban đầu và sau đó là dành riêng cho tập hợp các loại mà mô hình được huấn luyện.
- Tinh chỉnh: Bỏ đóng băng một vài lớp trên cùng của mô hình cơ sở đã đóng băng và cùng huấn luyện cả các lớp phân loại mới được thêm vào và các lớp cuối cùng của mô hình cơ sở. Điều này cho phép chúng ta "tinh chỉnh" các biểu diễn đặc trưng bậc cao hơn trong mô hình cơ sở để làm cho chúng phù hợp hơn với nhiệm vụ cụ thể.
Việc trích xuất đặc trưng huấn luyện nhanh hơn, nhưng với tính năng Tinh chỉnh, bạn có thể đạt được kết quả tốt hơn.
Bạn sẽ thử cả hai (Trích xuất đặc trưng và Tinh chỉnh) bằng 2 cách khác nhau để thực hiện Học chuyển giao:
- Thư viện TensorFlow Lite Model Maker tự động thực hiện hầu hết quy trình xử lý dữ liệu và tạo mô hình, giúp quy trình này trở nên dễ dàng hơn nhiều. Bạn cũng có thể dễ dàng xuất mô hình kết quả để sử dụng trên thiết bị di động và trên trình duyệt.
- Mô hình TensorFlow Hub tận dụng kho lưu trữ lớn các mô hình học máy có trên TensorFlow Hub. Các nhà nghiên cứu và cộng đồng đóng góp những mô hình này, giúp các mô hình hiện đại có sẵn nhanh hơn nhiều và đa dạng hơn.
3. Học chuyển giao bằng Model Maker
Giờ đây, khi đã biết ý tưởng đằng sau kỹ thuật Học chuyển giao, hãy bắt đầu sử dụng thư viện TensorFlow Lite Model Maker, một công cụ giúp thực hiện kỹ thuật này một cách dễ dàng.
Thư viện TensorFlow Lite Model Maker là một thư viện nguồn mở giúp đơn giản hoá quy trình Học chuyển giao và giúp quy trình này dễ tiếp cận hơn nhiều đối với các nhà phát triển không phải là nhà phát triển ML, chẳng hạn như nhà phát triển ứng dụng di động và nhà phát triển web.
Sổ tay Colab hướng dẫn bạn thực hiện các bước sau:
- Tải dữ liệu.
- Chia tách dữ liệu.
- Tạo và huấn luyện mô hình
- Đánh giá mô hình.
- Xuất mô hình.
Sau bước này, bạn có thể bắt đầu thực hiện Học chuyển giao với dữ liệu của riêng mình theo đúng quy trình.
Colaboratory
Tiếp theo, hãy chuyển đến Google Colab để huấn luyện mô hình tuỳ chỉnh.
Bạn sẽ mất khoảng 15 phút để xem giải thích và hiểu những kiến thức cơ bản về sổ tay.
Ưu điểm:
- Cách dễ dàng để tuỳ chỉnh mô hình.
- Không cần hiểu TensorFlow hoặc API Keras.
- Công cụ nguồn mở có thể thay đổi nếu người dùng cần một tính năng cụ thể chưa được triển khai.
- Xuất mô hình trực tiếp để thực thi trên thiết bị di động hoặc trình duyệt.
Nhược điểm
- Ít khả năng định cấu hình hơn so với việc tự xây dựng toàn bộ quy trình và mô hình, như với 2 phương thức trước đó
- Ngay cả khi chọn mô hình cơ sở, không phải tất cả mô hình đều có thể được sử dụng làm cơ sở.
- Không phù hợp với lượng lớn dữ liệu khi quy trình xử lý dữ liệu phức tạp hơn.
4. Tìm mô hình trên TensorFlow Hub
Khi kết thúc phần này, bạn sẽ có thể:
- Tìm mô hình học máy trên TensorFlow Hub.
- Tìm hiểu về bộ sưu tập.
- Tìm hiểu các loại mô hình.
Để thực hiện Học chuyển giao, bạn cần bắt đầu với 2 điều:
- Dữ liệu, ví dụ: hình ảnh về các đối tượng bạn muốn nhận dạng.
- Một mô hình cơ sở mà bạn có thể tuỳ chỉnh cho dữ liệu của mình.
Phần dữ liệu thường phụ thuộc vào doanh nghiệp, nhưng cách dễ nhất là chụp nhiều ảnh về những gì bạn muốn nhận dạng. Nhưng còn mô hình cơ sở thì sao? Bạn có thể tìm thấy mô hình cơ sở ở đâu? là nơi TensorFlow Hub có thể giúp bạn.
TensorFlow Hub là kho lưu trữ mô hình cho nhu cầu về mô hình TensorFlow của bạn.
Bạn có thể tìm kiếm và đọc tài liệu của hàng nghìn mô hình, sẵn sàng để bạn sử dụng và nhiều mô hình trong số đó đã sẵn sàng cho học chuyển giao và tinh chỉnh.
Tìm kiếm mô hình
Trước tiên, hãy thực hiện tìm kiếm đơn giản các mô hình để sử dụng trên TensorFlow Hub mà bạn có thể sử dụng trong mã sau này.
Bước 1: Trong trình duyệt, hãy mở trang web tfhub.dev.

Đối với Học chuyển giao trên miền hình ảnh, chúng ta cần Vectơ đặc trưng. Vectơ đặc trưng giống như mô hình phân loại, nhưng không có phần đầu phân loại.
Vectơ đặc trưng có thể chuyển đổi hình ảnh thành biểu diễn bằng số trong không gian thứ N (trong đó N là số chiều của lớp đầu ra của mô hình).
Trên TFHub, bạn có thể tìm kiếm cụ thể Vectơ đặc trưng bằng cách nhấp vào một thẻ cụ thể.

Bạn cũng có thể tìm kiếm tên của mô hình bằng bộ lọc ở bên trái để chỉ hiển thị Image feature vectors.

Các thẻ có biểu tượng màu xanh dương là bộ sưu tập mô hình. Nếu nhấp vào một bộ sưu tập hình ảnh, bạn sẽ có quyền truy cập vào nhiều mô hình tương tự để lựa chọn. Hãy chọn bộ sưu tập hình ảnh.

Di chuyển xuống và chọn MobileNet V3. Bất kỳ vectơ đặc trưng nào cũng sẽ hoạt động.

Trên trang chi tiết của mô hình, bạn có thể đọc tất cả tài liệu về mô hình, xem đoạn mã để thử mô hình hoặc thậm chí thử trực tiếp trên Sổ tay Colab.

Hiện tại, bạn chỉ cần URL ở trên cùng. Đó là mã nhận dạng mô hình và là cách bạn có thể dễ dàng truy cập vào một mô hình từ thư viện TensorFlow Hub.
5. Học chuyển giao bằng TensorFlow Hub
Giờ đây, khi đã chọn một mô hình để sử dụng, hãy tuỳ chỉnh mô hình đó bằng cách tải mô hình đó bằng phương thức KerasLayer từ thư viện TensorFlow Hub.
Phương thức này tải một mô hình theo cách có thể được sử dụng làm một lớp trên mô hình của bạn, cho phép bạn xây dựng mô hình của mình xung quanh lớp này.
Trước đây, khi bạn tìm hiểu cách sử dụng Model Maker, tất cả các thành phần bên trong đều bị ẩn để bạn dễ hiểu hơn. Không, bạn sẽ thấy những gì Model Maker đang thực hiện ở hậu trường.
Colaboratory
Tiếp theo, hãy chuyển đến Google Colab để huấn luyện mô hình tuỳ chỉnh.
Bạn sẽ mất khoảng 20 phút để xem giải thích và hiểu những kiến thức cơ bản về sổ tay.
Ưu điểm:
- Hàng nghìn mô hình có sẵn do các nhà nghiên cứu và cộng đồng đóng góp, được huấn luyện trên nhiều tập dữ liệu.
- Mô hình cho tất cả các nhiệm vụ, như hình ảnh, văn bản và âm thanh.
- Dễ dàng thử nghiệm với nhiều mô hình tương tự. Việc thay đổi mô hình cơ sở có thể chỉ yêu cầu thay đổi một chuỗi.
Nhược điểm
- Vẫn cần một số kiến thức chuyên môn về TensorFlow/Keras để sử dụng các mô hình.
Nếu muốn tìm hiểu sâu hơn nữa, bạn cũng có thể thực hiện Học chuyển giao bằng Keras Application. Đây là một quy trình rất giống với việc sử dụng TensorFlow Hub, nhưng chỉ có các API TensorFlow cốt lõi.
6. Xin chúc mừng
Xin chúc mừng! Bạn đã tìm hiểu Học chuyển giao là gì và cách áp dụng kỹ thuật này cho dữ liệu của riêng mình!
Trong lớp học lập trình này, bạn đã tìm hiểu cách tuỳ chỉnh mô hình học máy cho dữ liệu của riêng mình bằng một kỹ thuật có tên là Học chuyển giao
Bạn đã thử 2 dạng Học chuyển giao:
- Sử dụng một công cụ như TensorFlow Lite Model Maker.
- Sử dụng Vectơ đặc trưng từ TensorFlow Hub.
Cả hai lựa chọn đều có ưu điểm và nhược điểm, cũng như nhiều cấu hình có thể có cho nhu cầu cụ thể của bạn
Bạn cũng đã tìm hiểu rằng bạn có thể đi xa hơn một chút và tinh chỉnh các mô hình bằng cách điều chỉnh trọng số của chúng thêm một chút để phù hợp hơn với dữ liệu của bạn.
Cả hai lựa chọn đều có thể tinh chỉnh mô hình.
Học chuyển giao và tinh chỉnh không chỉ dành cho các mô hình liên quan đến hình ảnh. Vì ý tưởng là sử dụng biểu diễn đã học của một miền để điều chỉnh cho tập dữ liệu của bạn, nên kỹ thuật này cũng có thể được sử dụng cho miền Văn bản và Âm thanh.
Các bước tiếp theo
- Thử với dữ liệu của riêng bạn.
- Chia sẻ với chúng tôi những gì bạn xây dựng và gắn thẻ TensorFlow trên mạng xã hội bằng các dự án của bạn.
Tìm hiểu thêm
- Để biết thêm thông tin về cách tinh chỉnh cho các mô hình hiện đại như BERT, hãy xem bài viết Tinh chỉnh mô hình BERT.
- Để biết thêm thông tin về Học chuyển giao cho mô hình âm thanh, hãy xem bài viết Học chuyển giao bằng YAMNet để phân loại âm thanh môi trường.