Transfer Learning: A Comprehensive Review

Tiếp tục loạt bài về Deep Learning, phần này mình sẽ giới thiêu cơ bản và chi tiết về kỹ thuật transfer learning (TL). Bài viết này nhằm cung cấp kiến thức cơ bản về TF (định nghĩa, ứng dụng, cái nhìn tổng quan - big picture), sử dụng TF khi nào và như thế nào để hiệu quả, các vấn đề/thách thức của TF, các kỹ thuật TF tiên tiến.

Bạn đang xem: Transfer learning là gì

Trong bài viết này các bạn sẽ thấy Transfer Learning nó không chỉ đơn giản là tái sử dụng lại các giá trị weights đã được học từ tập dữ liệu lớn như ImageNet, rồi chuyển sang tập dữ liệu nhỏ cho vấn đề của bạn bằng việc train lại một vài layer đầu/cuối. Mà transfer learning rộng hơn, đa dạng hơn, với rất nhiều cách, phương thức kỹ thuật transfer learning khác.

I. Giới thiệu

1.1. Định nghĩa Transfer Learning

Transfer learning là việc ứng dụng kỹ năng/tri thức mình học được từ vấn đề này (source domain - D_S ), với ứng dụng này (source task - T_S) sang vấn đề khác (target domain - D_T) với ứng dụng khác (target task - T_T) có liên quan. Transfer learning nhằm cải thiện việc học hàm f_T(\cdot) cho ứng dụng T_T trên miền D_T .

*

1*ZEJeJS06czdyPwov5EbCuQ.png1198×204 9.85 KB

Transfer cái gì: phần nào của tri thức đã học có thể transfer? Vì một số tri thức có tính đặc thù riêng của nhiệm vụ, và có các tri thức chung giữa các nhiệm vụ khác nhau. Về cơ bản, tri thức chung là có thể transfer được.Transfer khi nào: trường hợp nào (không) nên transfer. Transfer learning có thể sẽ không đem lại lợi ích nếu hai nhiệm vụ không có mối sự liên hệ, tương quan (còn được biết đến là negative transfer)Transfer như thế nào: Cách thức thực hiện transfer như thế nào cho hiệu quả.B. Phân loại theo domains

*

2.1. Tại sao nên dùng transfer learning trong deep learning

*

Pre-trained model

Việc sử dụng các pre-train model không chỉ dừng lại ở việc freezinng và fine-tuning các layer như trên. Mà có thể ghép nối nhiều network lại với nhau và freeze, fine-tune tương ứng. Việc sử dụng pre-trained model góp phần làm giảm đáng kể thời gian training và tăng chất lượng dự đoán.

Ví dụ bạn muốn thực hiện xóa nhiễu (image denoising) và tăng độ phân giải (image super-resolution), thì có thể tận dụng hai network DenoiseNet và SRNet. Ví dụ input của SRNet là output của DenoiseNet và tiến hành train tuần tự hoặc train cùng lúc cả hai mạng. Giống như kiểu Network trong network, hay train mạng tạo sinh GAN ấy.

Hoặc bạn có thể phối hợp giữa warm re-start và pre-trained model như, Net1 dùng VGG19 fine-tune 2 layer cuối cùng. Net2 dùng VGG19 làm warm start, và train cả 2 thằng cùng lúc. Với việc fusion (sớm hoặc muộn) features của 2 network và chọn làm features cho việc dựa đoán.

Nếu bạn làm về GAN, khôi phục ảnh, super-resolution sẽ biết tới việc Pre-trained VGG net được sử dụng làm perceptual loss - một hàm loss rất nổi tiếng. Thay vì tính hàm loss theo mean square error (MSE - hay L2 norm), structure similarity (SSIM) của dữ liệu gốc x và dữ liệu dự đoán \hat{x} thì perceptual loss này so sánh sự khác biệt về MSE giứa các intermediate feature của mạng VGG(x) và VGG(\hat{x}) <13>

Transfer on Metadata (hyper parameters)

Như một số bài báo gần đây về các kỹ thuật AutoML, Auto Augmentation, không chỉ các weights mà cả các policy như adaptive learning rate, adaptive augmentation hoàn toàn có thể transfer được. Điển hình là policy cho việc adaptive augmentation được học từ dữ liệu nhỏ CIFAR10 và ứng dụng cho CIFAR100 ở AutoAugment <9>

Transfer learning via generalization

Học cách khái quát hóa dữ liệu tốt hơn thông qua giai đoạn pre-train. Điển hình là phương pháp Selfie mà mình review <7>.

Học cách biểu diễn data ở dạng unsupervised, từ đó cũng đạt tính khái quát hóa tốt hơn như ở <8>

III. Ứng dụng transfer learning

3.1. Domain Adaptation

Như đã đề cập ở trên, supervised deep learning cần rất nhiều dữ liệu có nhãn để làm việc hiệu quả. Và cần nhiều dữ liệu ở đây không chỉ là ở số lượng mà còn là chất lượng nhãn như độ tin cậy (dữ liệu có thể bị dán nhầm nhãn), tính đa dạng (đủ các nhãn, số lượng mẫu trên một nhãn), .v.v. Các ứng dụng phổ biến như “nhận diện”, “phân loại”, thường có các tập dữ liệu lớn, phổ biến, được thu thập, dán nhãn bởi các tổ chức, cuộc thi nào đó điển hình như IMAGENET, COCO, PASCAL VOC, CELEBA, .v.v.

Xem thêm: Giao Tiếp I2C Là Gì - Giao Tiếp I2C — Tài Liệu Esp32 1

Data bias. Sử dụng các dataset sẵn có - OK, không có vấn đề gì cả, nhưng thường các dữ liệu đó không được thu thập theo hướng giải quyết vấn đề riêng của bạn. Điều này dẫn tới vấn đề bias về dữ liệu. Ví dụ như, ứng dụng nhận diện khuôn mặt ở VN thì tập dữ liệu khác về phân bố, số lượng class, và số mẫu từng class. Trong khi dữ liệu CelebA có thể bị bias cho người da trắng, dữ liệu của bạn lại bias cho đối tượng người Việt Nam.

Domain Shift - Đời không như là mơ. <15> Dù cho dữ liệu bạn lấy chi tiết như thế nào, da dạng tới cỡ nào thì luôn luôn có sự khác biệt giữa giữ liệu bạn có và dữ liệu thực sự dùng khi triển khai. Ví dụ bạn lấy dữ liệu train từ CelebA, tập này ảnh có thể bị tiền xử lý, lọc màu các thứ, nhưng thực tế bạn cần triển khai với đầu vào từ Camera aninh với chất lượng khác một trời một vực. Chưa kể ảnh nền có thể thay đổi, điều kiện sáng, vân vân và mây mây.

Làm thế nào để mô hình của bạn có thể giải quyết các vấn đề này tốt hơn? Welcome to Domain Adaptation

Domain adaptation là một mảng trong transfer learning khi phân bố (probability distribution) của dữ liệu gốc (source domain) khác (nhưng có liên hệ) với miền dữ liệu cần transfer (target domain) <14>. Ví dụ điển hình của domain adaptation là ứng dụng bộ lọc spam (Spam filtering problem). Mô hình lọc spam được học từ user này (source distribution) sang một user khác có sự khác biệt đáng kể về email nhận. Domain adaptation cũng được dùng để học các nguồn dữ liệu không có mối liên hệ trực tiếp. Ngoài ra, domain adaptivation với nghiên nguồn dữ liệu khác nhau còn gọi là multiple-source domain adaptation.

Phương thức Adaptation <14>

Reweighting. Dùng các trọng số để các mẫu nguồn có phân bố giống như mẫu đích. Ví dụ dữ liệu của bạn cho người Châu Á, thì đưa trọng số cho các class người Châu Á trong bộ dataset CelebA cao hơn.Auto-labeling. Dùng network có sẵn để gán nhãn tự động cho mẫu của mình. Giả sử ta có mạng Net1, train cho dữ liệu nhận dạng A với số lượng class khác dữ liệu B (-dữ liệu chúng ta cần làm). Dùng output layer gần cuối của Net1 trên dữ liệu B --> cho ta các feature vectors. Dùng thuật toán clustering (phân loại cụm) để nhóm thành các nhóm - nhãn mà chúng ta quan tâm.Common representation space. Tìm miền biểu diễn chung giữa hai domain sao cho source domain vẫn có kết quả tốt. Adversarial ML là một ứng viên sáng giá.Hierarchical Bayesian Model. Cái này mình không rõ lắm, các bạn quan tâm tự tìm hiểu thêm nhé :3

3.2 Domain Confusion <1, 16>

Vì intermediate feature ở mỗi layer mang các thông tin khác nhau (output của layer đầu thường mang thông tin cạnh, texture, trong khi output của layer cuối mang thông tin tổng quát hóa về bài toán .v.v.) dẫn đến ta hoàn toàn có thể tận dụng features ở các layer khác nhau (Không nhất thiết phải là ở layer gần cuối). Ví dụ điển hình là hàm suy hao Perceptual loss mình nhắc ở phần 2.2.

Việc tận dụng các intermediate feature này có thể giúp học các features có thể dùng cho nhiều domain khác nhau (domain-invariant). Ý tưởng cơ bản là thêm các hàm los để mô hình gốc học các đặc tính chung giữa các domain khác nhau nhiều hơn <16>. Điển hình là tác giả <16> thêm một adaptation layer và hàm suy hao domain confusion loss.

Common representation space ở 3.1 và mulit-task learning cũng cho kết quả tương tự.

Xem thêm: Đánh Giá Sharp 404Sh Tinhte, Trên Tay Sharp Aquos Xx 404Sh: Máy Cũ, Viền Mỏng

3.3 ‘X’-Short Learning

Mặc dù nhiều lần được PR là công nghệ tiên tiến trong trí tuệ nhân tạo, DL thực ra không có “thông minh” cho lắm. Bởi lẽ khi đứa bé lớp 1 nhìn một vài lần là biết “quả táo” là “quả táo” chứ không phải quả “nho” thì deep learning cần cả mớ dữ liệu để nhận dạng được nó. Nếu bắt trước được như em bé, thì DL sẽ dùng được nhiều hơn ở các ứng dụng thực tế.

Bài viết liên quan

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 *