4. Đề nghị cho bảo vệ hay không?
3.3.2 Học chuyển giao và fine-tuning
3.3.2.1 Học chuyển giao
Học chuyển giao (Transfer Learning) là quá trình khai thác, tái sử dụng các tri thức đã được học tập bởi một mô hình huấn luyện trước đó vào giải quyết một bài toán mới mà không phải xây dựng một mô hình huấn luyện khác từ đầu [6]. Đây được coi là một trong những kỹ thuật được xếp mức độ quan trọng hàng đầu trong cộng đồng khoa học dữ liệu, nhằm hướng tới mục đích chung là phát minh ra một thuật toán học tự động mạnh mẽ. Hiện nay, phương pháp phổ biến thường được áp dụng khi huấn luyện mô hình với một bộ cơ sở dữ liệu tương đối nhỏ là sử dụng học chuyển giao để tận dụng một mạng CNN đã được huấn luyện trước đó với bộ dữ liệu rất lớn như ImageNet (1,2 triệu ảnh với 1.000 nhãn đánh dấu). Phương pháp này sử dụng mạng CNN theo hai cách chính như sau: Mạng CNN này sẽ chỉ được sử dụng như một bộ trích chọn đặc trưng cho bộ cơ sở dữ liệu huấn luyện mới, bằng cách thay thế các lớp Fully-connected ở cuối mạng và giữ cố định các tham số cho toàn bộ các lớp còn lại của mạng [8]. Không chỉ thay thế và huấn luyện lại bộ nhận dạng cuối cùng của mạng CNN, mà đồng thời ta thực hiện tối ưu, tinh chỉnh (Fine-tune) một vài hoặc tất cả các lớp trong mạng [2]. Ý tưởng của việc tái sử dụng mạng CNN là dựa trên nhận định rằng các đặc trưng được học trong các lớp đầu của mạng là các đặc trưng chung nhất, hữu dụng với phần lớn bài toán, ví dụ: đặc trưng về cạnh, hình khối hay
các khối màu… Các lớp sau đó của mạng CNN sẽ nâng dần độ cụ thể, riêng biệt của các chi tiết phục vụ cho bài toán nhận dạng cần giải quyết. Do đó, ta hoàn toàn có thể tái sử dụng lại các lớp đầu của mạng CNN mà không phải mất nhiều thời gian và công sức huấn luyện từ đầu [8].
Vai trò của Transfer Learning:
-Cải thiện độ chính xác và đẩy nhanh quá trình huấn luyện.
Hình 3.12 Sơ đồ so sánh hiệu suất mô hình trước và sau khi áp dụng transfer learning
Từ đồ thị ta có thể thấy sử dụng transfer learning sẽ mang lại 3 lợi thế chính:
• Có điểm khởi đầu của accuracy tốt hơn (higher start).
• Accuracy có tốc độ tăng nhanh hơn (higher slope).
• Đường tiệm cận của độ chính xác tối ưu cao hơn (higher asymptote). -Hiệu quả với dữ liệu nhỏ:
Trong trường hợp bộ dữ liệu có kích thước quá nhỏ và khó có thể tìm kiếm và mở rộng thêm thì các mô hình được huấn luyện từ chúng sẽ khó có thể dự báo tốt. Tận dụng lại tri thức từ các pretrained-model với cùng tác vụ phân loại sẽ giúp các mô hình được huấn luyện dự báo tốt hơn với dữ liệu mới vì mô hình được học trên cả 2 nguồn tri thức đó là dữ liệu huấn luyện và dữ liệu mà nó đã được học trước đó [6].
3.3.2.2 Fine-tuning
Tinh chỉnh (Fine-tuning) là sử dụng các trọng số đã được huấn luyện từ một trong các mô hình ConvNet như là khởi tạo cho mô hình mới với dữ liệu mới và sử dụng lan truyền ngược để huấn luyện lại toàn bộ mô hình mới hoặc huân luyện lại một số layer cuối (cũng là để tránh quá khớp (overfitting) khi mà mô hình quá phức tạp hoặc/và dữ liệu không đủ lớn). Việc này được dựa trên quan sát rằng những layers đầu trong ConvNet thường giúp trích ra những đặc tính chung của ảnh (các cạnh - edges, còn được gọi là low-level features), các layers cuối thường mang những đặc trưng riêng của cơ sở dữ liệu (CSDL) (và được gọi là high-level features) [2]. Vì vậy, việc huấn luyện các layer cuối mang nhiều giá trị hơn.
Đối với Fine-tuning, ta chỉ giữ lại phần ConvNet trong CNN và bỏ đi các lớp kết nối đầy đủ. Sau đó thêm các lớp kết nối đầy đủ mới vào đầu ra của ConvNet.
Hình 3.13 Bỏ Fully connected layers ở model VGG16 đi và thêm vào Fully connected layers mới
Khi train model ta chia làm 2 giai đoạn:
Giai đoạn 1: Vì các fully connected layer ta mới thêm vào có các hệ số được khởi tạo ngẫu nhiên tuy nhiên các layer trong ConvNet của pre-trained model đã được train với ImageNet dataset nên ta sẽ không train (đóng băng/freeze) trên các layer
trong ConvNet của model VGG16. Sau khoảng 20-30 chu kì thì các hệ số ở các layer mới đã được học từ dữ liệu thì ta chuyển sang giai đoạn 2.
Hình 3.14 Freeze các layer của pre-trained model, chỉ train ở các layer mới Giai đoạn 2: Ta sẽ unfreeze các layer trên ConvNet của pre-trained model và train trên các layer của ConvNet của pre-trained model và các layer mới. Ta có thể unfreeze tất cả các layer trong ConvNet của VGG16 hoặc chỉ unfreeze một vài layer
Hình 3.15 Unfreeze các layer của pre-trained model và train toàn bộ layer Có 2 lưu ý khi sử dụng pre-trained model:
- Vì pre-trained model đã được train với kích thước ảnh cố định, nên khi dùng pre- trained model ta cần resize lại ảnh có kích ảnh bằng kích thước mà ConvNet của pre- trained model yêu cầu.
- Hệ số learning rate của ConvNet của pre-trained model nên được đặt với giá trị nhỏ vì nó đã được học ở pre-trained model nên ít cần cập nhật hơn so với các layer mới thêm [6].