- vừa được xem lúc

[Domain adaptation - P1] Tổng quan về kỹ thuật transfer learning và domain adaptation

0 0 17

Người đăng: Nguyen Viet Hoai

Theo Viblo Asia

Giới thiệu

Transfer learning là một kỹ thuật rất hay trong lĩnh vực học sâu, nhờ đó chúng ta có thể giải quyết một nhiệm vụ mới với kiến thức thu được từ một nhiệm vụ cũ để giải quyết việc thiếu dữ liệu được gắn nhãn. Đặc biệt, deep domain adaptation (một nhánh của transfer learning) được chú ý nhiều nhất trong các bài báo gần đây. Các mạng nơ-ron sâu thường có số lượng tham số lớn để học cách biểu diễn từ một tập dữ liệu và một phần thông tin có thể được sử dụng thêm cho một nhiệm vụ mới. Trong bài viết này, mình sẽ đưa ra khảo sát toàn diện liên quan đến deep domain adaptation và phân loại những tiến bộ gần đây thành ba loại dựa trên các cách tiếp cận thực hiện: fine-tuning networks (tinh chỉnh mô hình), adversarial domain adaptation (miền thích ứng đối nghịch) và sample-reconstruction approaches (cách tiếp cận tái tạo mẫu).

Trong suốt thập kỷ qua, lĩnh vực Thị giác máy tính đã có những bước phát triển vượt bậc. Sự tiến bộ này chủ yếu là do hiệu quả không thể phủ nhận của mạng nơ-ron tích chập (CNN). CNN cho ta thấy nó có thể lấy được đặc trưng rất tốt từ dữ liệu dạng ảnh thông qua các kernel. Ví dụ, trong cài đặt phân loại, bạn thường sử dụng một trong các kiến trúc mạng phổ biến hiện nay như ResNet, VGG, EfficientNet,RepVGG,... để huấn luyện cùng với bộ dữ liệu có nhãn của bạn. Gần đây, nổi lên với kiến trúc mạng MLP, lấy cảm hứng từ mô hình ViT, chia ảnh thành 16 phần và thực hiện tính toán trên từng vùng, các mô hình gần đây như RepMLP, ResMLP. được huẩn luyện trên tập imagenet, sử dụng những pretrained-model đó và

Mặt khác, bạn có thể sử dụng kỹ thuật transfer learning bằng cách sử dụng các pretrained model đã được huấn luyện trên tập imagenet sau đó huấn luyện nó trên bộ dữ liệu hiện có của mình, điều này sẽ làm cho mô hình của bạn học nhanh hơn vì có khởi đầu tốt hơn việc bạn lấy ngẫu nhiên các trọng số cho mô hình, không những học nhanh hơn mà nó còn đạt độ chính xác cao hơn.

Cả 2 hướng tiếp cận trên chỉ thích ứng tốt trên bộ dữ liệu có phân phối giống với tập huấn luyện, việc đưa vào mô hình đầu vào có phân phối khác với dữ liệu huấn luyện sẽ làm cho mô hình có kết quả không tốt nữa. Ví dụ, bạn có 1 bài toán cho xe tự hành đó là nhận dạng biển báo giao thông, tòa nhà, cây cối, người đi bộ,... ở TP Hà Nội sử dụng semantic segmentation, bạn sẽ huấn luyện mô hình của mình với bộ dữ liệu này và đạt kết quả rất tốt, khi đưa ra thực tế trên đường phố Hà Nội hoạt động khá tốt. Nhưng khi sử dụng mô hình đó ở Singapore thì mô hình lại đạt kết quả không cao do xe cộ đã khác đi rất nhiều, về màu sắc và hình dáng, tòa nhà, đường phố đều khác.

Lý do khiến mô hình của bạn hoạt động không tốt trong các trường hợp này là miền dữ liệu đã bị thay đổi. Trong trường hợp cụ thể này, miền của dữ liệu đầu vào đã thay đổi trong khi các trọng số của mô hình được học trên nhãn ban đầu vẫn giữ nguyên. Trong một số bài toán đặc thù, việc lấy dữ liệu đích ở bài toán gốc là rất khó nên bạn sẽ phải huấn luyện mô hình trên dữ liệu nguồn tương tự sau đó muốn cho mô hình có thể thích ứng được với dữ liệu đích kia. Kỹ thuật domain adaptation ( thích ứng miền) được ra đời để giải quyết những bài toán này.

Nói chung, thích ứng miền sử dụng dữ liệu được gắn nhãn trong một hoặc nhiều miền nguồn để giải quyết các nhiệm vụ mới trong miền đích. Như vậy thì yếu tố về sự tương quan giữa miền dữ liệu nguồn và miền dữ liệu đích rất quan trọng, xác định mức độ thành công của việc điều chỉnh.

Tổng quan về transfer learning và domain adaptation

Hình 1 : Cấu trúc dạng cây của transfer learning Trước tiên nhìn vào hình ảnh trên chắc hẳn nhiều bạn sẽ thắc mắc D,TD,T là kí hiệu gì đúng không nào? Vậy mình sẽ giải thích từng kí hiệu nhé.

Định nghĩa D\textbf{D}: Giả sử chúng ta có một tập dữ liệu X={x1,...,xn}XX = \{x_1,...,x_n\}\in \mathbb{X}, trong đó X\mathbb{X} là không gian chiều dữ liệu, dữ liệu được tuân theo phân phối P(X)\textbf{P}(X). Một miền dữ liệu được định nghĩa như sau D={X,P(X)}\textbf{D} = \{ \mathbb{X}, \textbf{P}(X)\} . Do đó một miền dữ liệu chứa 2 thành phần đó là không gian chiều dữ liệu và phân phối xác suất trên tập dữ liệu đó.

Định nghĩa T\textbf{T}: Giả sử chúng ta có một tập dữ liệu X={x1,...,xn}XX = \{x_1,...,x_n\}\in \mathbb{X} và nhãn Y={y1,...,yn}YY = \{y_1,...,y_n\}\in \mathbb{Y} trong đó Y\mathbb{Y} là không gian nhãn. Một miền dữ liệu được định nghĩa như sau T={Y,P(YX)}\textbf{T} = \{\mathbb{Y},\textbf{P}(Y|X)\} .

Vậy Transfer learning là gì? Cho một miền nguồn Ds\textbf{D}_s và nhiệm vụ Ts\textbf{T}_s tương ứng , mô hình sẽ dự đoán Ps(YsXs)\textbf{P}_s(Y_s|X_s) từ tri thức của Ds\textbf{D}_sTs\textbf{T}_s . Mục tiêu là học dự đoán Pt(YtXt)\textbf{P}_t(Y_t|X_t) từ tri thức của Dt\textbf{D}_tTt\textbf{T}_t . Mục tiêu của Transfer learning là cải thiện hiệu năng của Pt(YtXt)\textbf{P}_t(Y_t|X_t) bằng cách sử dụng tri thức từ Ps(YsXs)\textbf{P}_s(Y_s|X_s), trong đó Ds#Dt,Ts#Ts\textbf{D}_s \# \textbf{D}_t ,\textbf{T}_s \# \textbf{T}_s .

Transfer Learninglà một nghiên cứu rộng trong lĩnh vực học máy. Nó được chia thành 4 loại: Traditional Deep Learning, Deep Multi-Task Learning, Deep Domain Adaptation và Open Question.\

  • Với bài toán có Ds=Dt,Ts=Ts\textbf{D}_s = \textbf{D}_t ,\textbf{T}_s = \textbf{T}_s, vấn đề trở thành bài toán học sâu truyền thống. Trong trường hợp này, dữ liệu được chia thành dữ liệu huấn luyện Ds\textbf{D}_s và dữ liệu kiểm thử Dt\textbf{D}_t, sau đó bạn huấn luyện mô hình nơ-ron để học Ps(YsXs)\textbf{P}_s(Y_s|X_s) trên Ds\textbf{D}_s và áp dụng nó để dự đoán trên tập Dt\textbf{D}_t.

  • Với bài toán có Ds=Dt,Ts#Ts\textbf{D}_s = \textbf{D}_t ,\textbf{T}_s \# \textbf{T}_s, transfer learning biến thành bài toán multi-task learning. Cùng chung miền dữ liệu nhưng đầu ra của mô hình phải học nhiều nhiệm vụ khác nhau, ở đây chúng ta phải sử dụng một mạng đủ lớn để có thể học đặc trưng chia sẻ giữa nhiều nhiệm vụ. Ví dụ, nhận đầu vào là 1 ảnh trên đường phố, chúng ta phải sử dụng một mô hình học sâu có đủ khả năng để có thể nhận dạng ra được người đi bộ, xe cộ, tòa nhà, làn đường, ...

  • Với bài toán có Ds#Dt,Ts=Ts\textbf{D}_s \# \textbf{D}_t ,\textbf{T}_s = \textbf{T}_s, deep domain adaptation được sử dụng để chuyển tri thức, thông tin từ dữ liệu nguồn sang dữ liệu đích. Nói chung, mục tiêu của domain adatation là học một hàm ánh xạ FF để giảm sự phân kỳ miền giữa Ds\textbf{D}_sDt\textbf{D}_t bao gồm dịch chuyển phân phối và các không gian đặc trưng khác nhau. Cụ thể, nhận miền nguồn là Ds\textbf{D}_s cho nhiệm vụ Ts\textbf{T}_sDt\textbf{D}_t cho nhiệm vụ Tt\textbf{T}_t, trong đó $\textbf{D}_s # \textbf{D}_t $. Domain adaptation có mục tiêu học Pt(YtXt)\textbf{P}_t(Y_t|X_t) trong khi tri thức từ Ts\textbf{T}_sDt\textbf{D}_t có thể sử dụng để nâng cao Pt(YtXt)\textbf{P}_t(Y_t|X_t).

  • Với bài toán có Ds#Dt,Ts#Ts\textbf{D}_s \# \textbf{D}_t ,\textbf{T}_s \# \textbf{T}_s, việc sử dụng transfer learning phải được tiến hành cẩn thận. Nếu miền dữ liệu Ds\textbf{D}_s khác xa so với Dt\textbf{D}_t thì việc chuyển đổi sẽ làm cho hàm dự đoán Pt(YtXt)\textbf{P}_t(Y_t|X_t) có hiệu năng giảm đi, chưa kể đến việc các nhiệm vụ Ts\textbf{T}_sTt\textbf{T}_t cũng khác nhau .Từ một tổng quan tài liệu về học sâu, chúng tôi nhận thấy rằng có rất ít nghiên cứu về kịch bản này và nó vẫn còn là một câu hỏi mở.

Tóm lại, các định nghĩa trên cho chúng ta câu trả lời cho việc chuyển giao những gì, và bốn kịch bản chứng minh vấn đề nghiên cứu về thời điểm chuyển giao. Trong các phần tiếp theo,mình sẽ giới thiệu và tóm tắt ba phương pháp chính của domain adaptation.

Các phương pháp chính của domain adaptation

Mục tiêu của domain adaptation là giảm sự khác biệt về phân phối miền giữa miền nguồn và miền đích để kiến thức đã học từ miền nguồn có thể được áp dụng thêm cho miền đích.

Có 3 loại domain adaptation chính đó là : fine-tunning network, adversarial domain adaptation và data-reconstruction approaches.

fine-tunning network

Một cách tự nhiên để giảm sự thay đổi miền là tinh chỉnh các mạng được đào tạo trước với dữ liệu trong miền đích, vì các nghiên cứu trước đây cho thấy rằng các mạng nơ-ron sâu được học từ các bộ dữ liệu lớn như ImageNet có thể được sử dụng hiệu quả để giải quyết nhiều tác vụ khác nhau trong thị giác máy tính. Cụ thể, đối với một mô hình được đào tạo trước như VGG hoặc ResNet , chúng ta có thể đóng băng chúng lại và coi nó như 1 bộ trích xuất cố định và chỉ huấn luyện những lớp FC sau đó, hoặc có thể mở ra để huấn luyện cùng với các lớp FC sau,. Ý tưởng chính đằng sau điều này là các biểu diễn cấp thấp đã học trước đó chủ yếu bao gồm các đặc điểm chung như bộ dò cạnh, góc. Trong quá trình tinh chỉnh mạng, sự khác biệt giữa miền nguồn và miền đích thường được đo bằng một tiêu chí như tiêu chí dựa trên nhãn lớp và tiêu chí thống kê. Thay vì sử dụng trực tiếp phép đo như một tiêu chí để điều chỉnh mạng, các kỹ thuật chính quy cũng có thể được sử dụng để tinh chỉnh, chủ yếu bao gồm chính quy tham số và chính quy mẫu.

Adversarial domain adaptation

GAN là một phương pháp đầy rất hay và nhận được nhiều sự chú ý nhất do cách tiếp cận học tập không giám sát và tính linh hoạt mô hình. Cụ thể, thông thường có hai mạng trong GAN, đó là một mạng generator và một mạng classification. Mạng generator có tạo ra một kịch bản giả từ một không gian đầu vào được gọi là không gian ẩn và mạng classification có thể phân biệt các mẫu thật với mẫu giả. Bằng cách luân phiên huấn luyện hai mạng này, cả hai đều có thể nâng cao khả năng của mình. Ý tưởng cơ bản đằng sau GAN là chúng ta muốn phân phối dữ liệu mà trình tạo học được gần với phân phối dữ liệu thực. Và điều này rất giống với nguyên tắc của domain adaptation, đó là sự phân phối dữ liệu đã học giữa miền nguồn và miền đích gần nhau.

Data-reconstruction approaches

Phương pháp tiếp cận tái tạo dữ liệu là một loại phương pháp deep domain adaptation sử dụng kiến trúc bộ mã hóa và giải mã . Trong đó mạng mã hóa được sử dụng để sinh ra véc-tơ biểu diễn của nó và mạng giải mã để có thể cấu trúc lại dữ liệu đầu vào từ véc-tơ biểu diễn đó. Chủ yếu có hai loại phương pháp để tiến hành tái tạo dữ liệu: (1) Một cách điển hình là sử dụng mạng sâu bộ mã hóa-giải mã; (2) Một cách khác là tiến hành xây dựng lại mẫu dựa trên các GAN như cycle GAN.

Tổng kết

Ở phần này thì mình chỉ đưa ra khái niệm cơ bản của các kỹ thuật transfer learning và domain adaptation. Một số khái niệm cơ bản của domain adaptation được đưa ra, bài viết sau mình sẽ đi sâu vào từng loại của domain adaptation và ứng dụng của nó.

Tài liệu tham khảo

https://www.intechopen.com/books/advances-and-applications-in-deep-learning/transfer-learning-and-deep-domain-adaptation

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tấn công và phòng thủ bậc nhất cực mạnh cho các mô hình học máy

tấn công bậc nhất cực mạnh = universal first-order adversary. Update: Bleeding edge của CleverHans đã lên từ 3.1.0 đến 4.

0 0 42

- vừa được xem lúc

[Deep Learning] Key Information Extraction from document using Graph Convolution Network - Bài toán trích rút thông tin từ hóa đơn với Graph Convolution Network

Các nội dung sẽ được đề cập trong bài blog lần này. . Tổng quan về GNN, GCN. Bài toán Key Information Extraction, trích rút thông tin trong văn bản từ ảnh.

0 0 219

- vừa được xem lúc

Trích xuất thông tin bảng biểu cực đơn giản với OpenCV

Trong thời điểm nhà nước đang thúc đẩy mạnh mẽ quá trình chuyển đổi số như hiện nay, Document Understanding nói chung cũng như Table Extraction nói riêng đang trở thành một trong những lĩnh vực được quan tâm phát triển và chú trọng hàng đầu. Vậy Table Extraction là gì? Document Understanding là cái

0 0 230

- vừa được xem lúc

Con đường AI của tôi

Gần đây, khá nhiều bạn nhắn tin hỏi mình những câu hỏi đại loại như: có nên học AI, bắt đầu học AI như nào, làm sao tự học cho đúng, cho nhanh, học không bị nản, lộ trình học AI như nào... Sau nhiều lần trả lời, mình nghĩ rằng nên viết hẳn một bài để trả lời chi tiết hơn, cũng như để các bạn sau này

0 0 157

- vừa được xem lúc

[B5'] Smooth Adversarial Training

Đây là một bài trong series Báo khoa học trong vòng 5 phút. Được viết bởi Xie et. al, John Hopkins University, trong khi đang intern tại Google. Hiện vẫn là preprint do bị reject tại ICLR 2021.

0 0 45

- vừa được xem lúc

Deep Learning với Java - Tại sao không?

Muốn tìm hiểu về Machine Learning / Deep Learning nhưng với background là Java thì sẽ như thế nào và bắt đầu từ đâu? Để tìm được câu trả lời, hãy đọc bài viết này - có thể kỹ năng Java vốn có sẽ giúp bạn có những chuyến phiêu lưu thú vị. DJL là tên viết tắt của Deep Java Library - một thư viện mã ng

0 0 139