Trong một thế giới mà chúng ta có thể dễ dàng truy cập vào các mô hình mạng neural tiên tiến nhất, việc cố gắng xây dựng mô hình của riêng bạn với nguồn lực hạn chế cũng giống như cố gắng phát minh lại chiếc bánh xe. Điều này hoàn toàn vô nghĩa.
Thay vào đó, bạn hoàn toàn có thể “tái sử dụng” những mô hình tiên tiến, chứng minh được độ chính xác và hiệu suất cao, do những gã khổng lồ về công nghệ phát triển. Tất cả những gì bạn cần là hiểu về transfer learning (học chuyển giao) và nắm chắc trong tay danh sách những mô hình đã được đào tạo sẵn (pre-trained model) và có mã nguồn mở.
FriData tuần này sẽ giúp bạn thực hiện cả hai điều trên. Bài viết đi từ những thông tin sơ lược giới thiệu về transfer learning và cách thức hoạt động của nó, đến những gợi ý hữu ích về 4 mô hình pre-trained CNN cho các bài toán thị giác máy tính.
Đối với mỗi bài báo hay mô hình được nhắc đến, FriData cũng gắn sẵn đường link giúp bạn dễ dàng truy cập và tham khảo!
Vậy còn chần chừ gì mà chưa lưu lại bài viết này và bắt tay vào triển khai ngay tác vụ thị giác máy tính của bạn? Kết quả chắc chắn sẽ thành công hơn nhiều so với một mô hình bạn xây dựng từ đầu!
Transfer learning là gì?
Học chuyển giao (Transfer learning) là một lĩnh vực con của học máy và trí tuệ nhân tạo nhằm mục đích áp dụng kiến thức thu được từ một tác vụ (tác vụ nguồn – source task) cho một tác vụ khác nhưng tương tự (tác vụ đích – target task).
Ví dụ, kiến thức thu được khi học cách phân loại văn bản Wikipedia có thể được sử dụng để giải quyết các bài toán phân loại văn bản pháp lý. Một ví dụ khác là sử dụng kiến thức từ bài toán phân loại ô tô để nhận biết các loài chim trên bầu trời.
Transfer learning, do đó, có thể hiểu đơn giản là cải tiến việc học trong một tác vụ mới thông qua chuyển giao kiến thức từ một tác vụ liên quan đã được học.
Như vậy, với transfer learning, bạn có thể xây dựng các ứng dụng AI trong một khoảng thời gian rất ngắn.
Transfer learning ra đời như thế nào?
Để chứng minh cho sức mạnh của transfer learning, hãy nhìn vào nhận định của Andrew Ng – người đồng sáng lập Google Brain: “Transfer learning will be the next driver of machine learning’s commercial success after supervised learning.” (tạm dịch: Học chuyển giao sẽ là động lực tiếp theo dẫn dắt sự thành công về thương mại của học máy sau học có giám sát).
Lịch sử của Transfer learning bắt đầu từ năm 1993. Với bài báo “Discriminability-Based Transfer between Neural Networks”, Lorien Pratt đã giới thiệu với thế giới về tiềm năng của học chuyển giao. Vào tháng 7 năm 1997, tạp chí Machine Learning đã xuất bản một số đặc biệt cho các bài báo về Transfer learning. Khi lĩnh vực này phát triển, các chủ đề có liên quan như học đa tác vụ (multi-task learning) cũng được đưa vào lĩnh vực học chuyển giao. Learning to Learn là một trong những cuốn sách tiên phong trong lĩnh vực này. Ngày nay, học chuyển giao là một nguồn lực mạnh mẽ để các công ty công nghệ xây dựng những giải pháp AI mới và các nhà nghiên cứu tiếp tục thúc đẩy giới hạn của học máy.
Kỳ vọng của Andrew Ng về thành công thương mại của các lĩnh vực học máy. Nguồn ảnh: Towards Data Science.
Transfer learning hoạt động như thế nào?
Có ba yêu cầu để đạt được học chuyển giao:
-
Mô hình được đào tạo sẵn với mã nguồn mở bởi bên thứ ba
Mô hình được đào tạo trước là mô hình do người khác xây dựng và huấn luyện để giải quyết một vấn đề tương tự. Thực tế, các mô hình được tham khảo thường là sản phẩm của những gã khổng lồ công nghệ hoặc nhóm các nhà khoa học nổi tiếng. Họ thường chọn tập dữ liệu rất lớn làm dữ liệu cơ sở, chẳng hạn như ImageNet hoặc Wikipedia Corpus. Sau đó, họ phát triển một mạng thần kinh lớn (ví dụ: VGG19 có 143.667.240 tham số) để giải quyết một vấn đề cụ thể (ví dụ: phân loại hình ảnh cho VGG19). Tất nhiên, mô hình được đào tạo trước này phải được công khai để ta có thể tái sử dụng chúng.
-
Tái sử dụng mô hình
Sau khi tiếp cận các mô hình được đào tạo trước này, ta sử dụng lại kiến thức mà mô hình đã học, bao gồm các lớp, tính năng, trọng số và hệ số tự do. Có một số cách giúp bạn tải mô hình đã được đào tạo vào môi trường của mình, biến nó trở thành một tệp/thư mục chứa thông tin liên quan. Tuy nhiên, hãy ưu tiên các thư viện học sâu lưu trữ nhiều mô hình được đào tạo trước, chẳng hạn như: TensorFlow Hub, Keras Applications, PyTorch Hub
Bạn có thể sử dụng một trong các nguồn trên để tải mô hình đào tạo sẵn. Nó thường đi kèm với tất cả các lớp, trọng số và bạn có thể chỉnh sửa mạng theo ý muốn.
-
Tinh chỉnh cho bài toán
Việc tinh chỉnh mô hình được đào tạo trước nhằm hai mục đích: nâng cao độ chính xác của mô hình và đảm bảo đầu ra đúng định dạng.
Nói chung, trong một mạng thần kinh, trong khi các lớp dưới cùng và giữa thường đại diện cho các tính năng chung, thì các lớp trên cùng thể hiện các tính năng cụ thể của bài toán. Vì bài toán mới khác với bài toán ban đầu, nên ta thường có xu hướng loại bỏ các lớp trên cùng và thêm vào các lớp cụ thể cho bài toán của mình để đạt được độ chính xác cao hơn.
Ví dụ: một mô hình được đào tạo với ImageNet có thể phân loại tới 1000 đối tượng. Nếu ta cố gắng phân loại các chữ số viết tay (ví dụ: phân loại MNIST), cách tốt nhất là nên kết thúc với lớp cuối cùng chỉ có 10 nơ-ron.
Sau khi thêm các lớp tùy chỉnh vào mô hình được đào tạo trước, ta có thể định cấu hình mô hình đó bằng các loss functions và trình tối ưu hóa đặc biệt, đồng thời tiến hành đào tạo bổ sung.
4 mô hình được đào tạo trước cho thị giác máy tính
Dưới đây là bốn mô hình được đào tạo trước mà bạn có thể sử dụng cho các tác vụ thị giác máy tính, chẳng hạn như tạo ảnh, chuyển đổi phong cách ảnh (neural style transfer), phân loại ảnh, chú thích ảnh, phát hiện bất thường, v.v.:
- VGG19
- Inceptionv3 (GoogLeNet)
- ResNet50
- EfficientNet
Dưới đây là thông tin chi tiết về từng mô hình.
-
VGG-19
VGG là một mạng thần kinh tích chập (CNN) có độ sâu 19 lớp. Nó được xây dựng và đào tạo bởi Karen Simonyan và Andrew Zisserman tại Đại học Oxford vào năm 2014. Bạn có thể truy cập tất cả thông tin từ bài báo của họ, Very Deep Convolutional Networks for Large-Scale Image Recognition, được xuất bản vào năm 2015. VGG-19 được đào tạo bằng cách sử dụng hơn 1 triệu hình ảnh từ cơ sở dữ liệu ImageNet, trong đó có các ảnh màu 224×224 pixel. Đương nhiên, bạn có thể nhập vào mô hình các trọng số được huấn luyện bởi ImageNet. Điểm đặc biệt, VGG-19 có thể phân loại tới 1000 đối tượng. Dưới đây là thông tin ngắn gọn về kích thước và hiệu suất của nó:
- Kích thước: 549 MB
- Top-1: Độ chính xác: 71,3%
- Top-5: Độ chính xác: 90,0%
- Số tham số: 143.667.240
- Độ sâu: 26
Mô hình mạng VGG-19. Nguồn ảnh: Towards Data Science.
-
Inceptionv3 (GoogLeNet)
Inceptionv3 là một mạng thần kinh tích chập có độ sâu 50 lớp. Nó được xây dựng và đào tạo bởi Google và bạn có thể truy cập tất cả thông tin trên bài báo,có tiêu đề “Going deeper with convolutions”. Phiên bản được đào tạo trước của Inceptionv3 với trọng số ImageNet có thể phân loại tới 1000 đối tượng. Kích thước hình ảnh đầu vào của mạng này là 299×299 pixel, lớn hơn mạng VGG19. Trong khi VGG19 về nhì trong cuộc thi ImageNet năm 2014 thì Inception là mô hình thắng cuộc. Tóm tắt ngắn gọn về các tính năng của Inceptionv3 như sau:
- Kích thước: 92 MB
- Top-1: Độ chính xác: 77,9%
- Top-5: Độ chính xác: 93,7%
- Số tham số: 23.851.784
- Độ sâu: 159
Mô hình mạng Inceptionv3 (GoogLeNet). Nguồn ảnh: Towards Data Science.
-
ResNet50 (Residual Network)
ResNet50 là một mạng thần kinh tích chập có độ sâu 50 lớp. Nó được xây dựng và đào tạo bởi Microsoft vào năm 2015 và bạn có thể truy cập kết quả hoạt động của mô hình trên bài báo có tiêu đề Deep Residual Learning for Image Recognition. Mô hình này cũng được đào tạo trên hơn 1 triệu hình ảnh từ cơ sở dữ liệu ImageNet. Cũng giống như VGG-19, nó có thể phân loại tới 1000 đối tượng và mạng được đào tạo trên các hình ảnh có màu 224×224 pixel. Dưới đây là thông tin ngắn gọn về kích thước và hiệu suất của nó:
- Kích thước: 98 MB
- Top-1: Độ chính xác: 74,9%
- Top-5: Độ chính xác: 92,1%
- Số tham số: 25.636.712
Nếu so sánh ResNet50 với VGG19, bạn sẽ thấy rằng ResNet50 thực sự vượt trội so với VGG19 mặc dù nó có độ phức tạp thấp hơn. ResNet50 đã được cải thiện nhiều lần và bạn cũng có quyền truy cập vào các phiên bản mới hơn như ResNet101, ResNet152, ResNet50V2, ResNet101V2, ResNet152V2.
Mô hình mạng ResNet50. Nguồn ảnh: Towards Data Science
-
EfficientNet
EfficientNet là mạng thần kinh tích chập tiên tiến nhất đã được Google đào tạo và phát hành ra công chúng với bài báo “EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks” vào năm 2019. Có 8 phiên bản thay thế của EfficientNet (B0 đến B7) và ngay cả phiên bản đơn giản nhất, EfficientNetB0, cũng xuất sắc. Với 5,3 triệu tham số, nó đạt hiệu suất chính xác Top-1 77,1%.
Kích thước mô hình EfficientNet so với Độ chính xác ImageNet. Nguồn ảnh: Towards Data Science
Tóm tắt ngắn gọn về các tính năng của EfficientNetB0 như sau:
- Kích thước: 29 MB
- Top-1: Độ chính xác: 77,1%
- Top-5: Độ chính xác: 93,3%
- Số tham số: ~5.300.000
- Độ sâu: 159