Thêm lớp đối tượng mới trong mạng lưới học tập sâu


7

Giả sử rằng tôi có một mạng lưới học tập sâu được đào tạo có thể phát hiện 10 lớp đối tượng (đường, bầu trời, cây, v.v.) trong hình ảnh. Nó lấy hình ảnh RGB và đưa ra bản đồ xác suất kích thước (img_col, img_row, n_class)và phân đoạn cuối cùng sẽ là một argmaxthao tác trên kích thước cuối cùng.

Bây giờ tôi muốn thêm một lớp mới vào mạng, ví dụ: người đi bộ, để sau khi đào tạo, mạng sẽ có thể phát hiện người đi bộ trong hình ảnh.

Nhưng tôi không còn có dữ liệu đào tạo cũ. Thay vào đó, tôi đã có một bộ dữ liệu mới cũng chứa người đi bộ, nhưng chỉ những người đi bộ được dán nhãn . Đào tạo với bộ dữ liệu mới (sử dụng trọng số cũ làm khởi tạo) sẽ là cách đơn giản nhất, nhưng tôi muốn nghe một số cách tiếp cận khác.

Bất cứ ai có thể chia sẻ một số suy nghĩ về cách nhận ra điều này?

Câu trả lời:


3

Ít nhất, bạn nên đào tạo lại lớp phân loại. Khi bạn thêm một đầu ra khác, trong quá trình học lớp mới, kích hoạt lớp khác phải thu nhỏ một cách rõ ràng (sigmoid) hoặc ngầm (softmax). Tuy nhiên, có thể tốt hơn để tìm hiểu, ít nhất, lớp tính năng cuối cùng vì sẽ có một số tính năng hữu ích để nhận biết người đi bộ.

Một cách tiếp cận khác có thể cung cấp lớp mới cho mạng và thu thập niềm tin từ đầu ra. Độ tin cậy thấp có thể là dấu hiệu của một lớp khác không thuộc về bất kỳ lớp nào đã học trước đó. Để chắc chắn phương pháp này cũng có thể cung cấp độ tin cậy thấp cho một lớp khác ngoài người đi bộ hoặc bất kỳ lớp nào mà mạng đã học. Ngoài ra, NN là một phương pháp tổng quát hóa không cục bộ. Nó có xu hướng phân loại một hình ảnh rác hoàn toàn với độ tin cậy cao (Xem các ví dụ đối nghịch nếu bạn tò mò).


Tôi đã cập nhật câu hỏi, trong bộ dữ liệu mới, chỉ có lớp người đi bộ được dán nhãn. Bạn có nghĩ rằng về mặt lý thuyết là có thể làm điều đó?
GoC

Bạn có thể gắn nhãn dữ liệu của bạn bằng cách sử dụng mạng trước đó. Sau đó tìm hiểu một mạng mới (một số trọng số có thể được chia sẻ) dựa trên bộ dữ liệu được dán nhãn mới. Sau đó, dựa vào mạng mới hoặc sử dụng cả hai cùng nhau thông qua tính trung bình dựa trên lớp. Đây là mạng thứ hai quyết định cho người đi bộ mà không có bất kỳ đóng góp nào của mạng đầu tiên.
yasin.yazici

1

Một vài năm sau khi câu hỏi được hỏi, có một số nỗ lực để giải quyết vấn đề này.

Dự đoán tốt nhất của tôi sẽ là:

  • thêm một lớp trong lớp cuối cùng

  • đào tạo lớp tương ứng với người đi bộ với dữ liệu mới

  • cố gắng không di chuyển theo cách mà mạng đã dự đoán lớp khác bằng cách sử dụng chưng cất. Điều này có thể cần một số dữ liệu khác ngoài dữ liệu cho người đi bộ, nơi lớp khác xuất hiện (ô tô, nhìn thấy, kính hiển vi, ...). Điều tốt là nếu bạn có thể lấy mẫu những thứ này (có thể thông qua internet), bạn không phải gắn nhãn cho chúng để làm cho kỹ thuật hoạt động. Nếu dữ liệu mới có nhãn cho người đi bộ đến từ cùng một phân phối như dữ liệu được sử dụng để huấn luyện mạng ban đầu, bạn thậm chí không phải nghĩ về điều đó.

Một ví dụ về kỹ thuật này có thể được tìm thấy trong bài báo này: https://arxiv.org/abs/1708.06977

Bạn có thể tìm thấy các tài liệu liên quan khác bằng cách tìm kiếm các chủ đề sau: "Học liên tục", "Học suốt đời", "Quên đi thảm khốc".

[EDITS]

Gần đây tôi đã đọc và yêu thích các bài viết liên quan này: học mà không quên , iCaRLHọc tập tăng dần từ đầu đến cuối


0

Để thêm một lớp, bạn gần như chắc chắn sẽ cần một mạng có cấu trúc khác (ví dụ: đầu ra +1). Bạn cũng có thể yêu cầu nhiều nút hoặc đầu vào ẩn hơn tùy thuộc vào vấn đề của bạn. Tất nhiên, như bạn đã đề cập, bạn chỉ có thể đào tạo lại các tham số dựa trên tất cả dữ liệu mới, tuy nhiên, bạn sẽ mất tất cả lợi ích của bộ dữ liệu gốc.

Có khả năng sẽ là khởi tạo mạng mới của bạn (hoặc ít nhất là cùng số lượng tham số đầu vào / ẩn / đầu ra) với các trọng số bạn có từ bộ dữ liệu ban đầu và sau đó đào tạo dữ liệu mới. Điều này gần như chắc chắn sẽ tăng tốc quá trình và ở một mức độ nào đó giữ lại thông tin ban đầu từ bộ dữ liệu đầu tiên giả định rằng nó đủ khái quát.


Cảm ơn vi đa trả lơi! Có, cấu trúc của mạng sẽ thay đổi. Đối với mạng tôi đã tạo, tôi chỉ cần thêm một kênh lớp bổ sung vào bản đồ xác suất đầu ra và điều đó dễ thực hiện. Vấn đề là, tốt hơn hết là đừng thay đổi bất cứ điều gì khác ngoài điều này. Như bạn đã đề cập, đào tạo về bộ dữ liệu mới với các trọng số cũ khi khởi tạo sẽ là một cách tiếp cận rõ ràng, đó là điều tôi muốn nói một cách đơn giản nhất. Bạn có suy nghĩ khác trong đầu?
GoC

0

Tôi không biết liệu nó có hoạt động không, nhưng một cách tiếp cận sẽ là thêm một nơ-ron mới trong lớp softmax đầu ra và luyện tập với độ dốc giảm dần nhưng chỉ cập nhật các trọng số cho lớp mới đó.

Nó có thể là một phương pháp rất tối ưu nhưng nó có thể đáng để thử.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.