Làm thế nào để thêm một danh mục mới vào một mô hình học tập sâu?


15

Nói rằng tôi đã thực hiện việc học chuyển trên một mạng được đào tạo trước để nhận ra 10 đối tượng. Làm cách nào để thêm mục thứ 11 mà mạng có thể phân loại mà không mất tất cả 10 danh mục mà tôi đã đào tạo cũng như thông tin từ mô hình được đào tạo ban đầu? Một người bạn nói với tôi rằng nghiên cứu tích cực đang diễn ra trong lĩnh vực này, nhưng tôi không thể tìm thấy bất kỳ giấy tờ liên quan hoặc tên nào để tìm kiếm?

Cảm ơn bạn.


Nếu bạn đào tạo với nhiều lớp hơn thì có? Điều đó có thể giúp gì không? Ví dụ: giả sử bạn biết sẽ không có hơn 1000 lớp. Bạn đào tạo từ đầu bộ phân loại của mình với 1000 lớp trên 10 lớp bạn hiện có và khi bạn có nhiều lớp hơn, chỉ cần giữ tàu trên chúng ... Đó có phải là một giải pháp tốt không? Có giấy liên quan đến phương pháp này?
Michael

Câu trả lời:


13

Nếu đây chỉ là trường hợp một lần, bạn có thể chỉ cần đào tạo lại mạng lưới thần kinh. Nếu bạn thường xuyên phải thêm các lớp mới, thì đây là một ý tưởng tồi. Những gì bạn muốn làm trong những trường hợp như vậy được gọi là truy xuất hình ảnh dựa trên nội dung (CBIR), hoặc đơn giản là truy xuất hình ảnh hoặc tìm kiếm trực quan. Tôi sẽ giải thích cả hai trường hợp trong câu trả lời của tôi dưới đây.

Trường hợp một lần

Nếu điều này chỉ xảy ra một lần - bạn đã quên lớp thứ 11 hoặc khách hàng của bạn đã thay đổi ý định - nhưng nó sẽ không xảy ra lần nữa , thì bạn có thể chỉ cần một nút đầu ra thứ 11 đến lớp cuối cùng. Khởi tạo ngẫu nhiên các trọng số cho nút này, nhưng sử dụng các trọng số bạn đã có cho các đầu ra khác. Sau đó, chỉ cần đào tạo nó như bình thường. Nó có thể hữu ích để sửa một số trọng lượng, tức là không đào tạo những trọng lượng này.

Một trường hợp cực đoan sẽ là chỉ đào tạo các trọng lượng mới, và để tất cả những người khác cố định. Nhưng tôi không chắc liệu điều này có hoạt động tốt không - có thể đáng để thử.

Lấy hình ảnh dựa trên nội dung

Hãy xem xét ví dụ sau: bạn đang làm việc cho một cửa hàng CD, người muốn khách hàng của họ có thể chụp ảnh bìa album và ứng dụng cho họ xem CD họ đã quét trong cửa hàng trực tuyến của họ. Trong trường hợp đó, bạn sẽ phải đào tạo lại mạng cho mỗi CD mới mà họ có trong cửa hàng. Đó có thể là 5 đĩa CD mới mỗi ngày, do đó, đào tạo lại mạng theo cách đó không phù hợp.

Giải pháp là đào tạo một mạng, ánh xạ hình ảnh vào một không gian đặc trưng. Mỗi hình ảnh sẽ được đại diện bởi một mô tả, ví dụ như một vectơ 256 chiều. Bạn có thể "phân loại" hình ảnh bằng cách tính toán mô tả này và so sánh nó với cơ sở dữ liệu mô tả của bạn (tức là mô tả của tất cả các đĩa CD bạn có trong cửa hàng của mình). Mô tả gần nhất trong cơ sở dữ liệu chiến thắng.

Làm thế nào để bạn đào tạo một mạng lưới thần kinh để tìm hiểu một vectơ mô tả như vậy? Đó là một lĩnh vực nghiên cứu tích cực. Bạn có thể tìm thấy công việc gần đây bằng cách tìm kiếm các từ khóa như "truy xuất hình ảnh" hoặc "học số liệu".

Ngay bây giờ, mọi người thường lấy một mạng được đào tạo trước, ví dụ VGG-16, cắt bỏ các lớp FC và sử dụng phép chập cuối cùng làm vector mô tả của bạn. Bạn có thể đào tạo thêm mạng này, ví dụ như bằng cách sử dụng mạng siamese bị mất bộ ba.


Tôi đã được nhìn vào học tập một shot. Bạn có nghĩ rằng có thể giúp tôi?
nnrales

Tôi thực sự không biết về học tập một lần. Nhưng các bài học sâu một lần mà tôi thấy khá giống với phương pháp CBIR, vì vậy nó chắc chắn có thể hữu ích cho bạn
hbaderts

2

Cấu trúc liên kết mạng của bạn có thể trông khác nhau, nhưng cuối cùng, mạng được đào tạo trước của bạn có một lớp, xử lý sự công nhận của 10 lớp gốc. Thủ thuật đơn giản nhất (và hoạt động) để giới thiệu lớp thứ 11, 12 .. thứ n, là sử dụng tất cả các lớp trước lớp cuối cùng như được cấp và thêm một lớp bổ sung (trong một mô hình mới hoặc như một lớp song song) cũng sẽ ngồi trên hết các lớp cuối cùng, sẽ trông giống với lớp 10 lớp (có lẽ là lớp phủ dày đặc nhất của lớp dày đặc và ma trận hình dạng [len(dense layer), 10]với độ lệch tùy chọn).

Lớp mới của bạn sẽ là một lớp matmul với hình dạng [len(dense layer), len(new classes)].

Không có quyền truy cập vào dữ liệu đào tạo ban đầu, bạn sẽ có hai tùy chọn:

  1. Đóng băng tất cả các trọng số trong các lớp ban đầu bằng cách cho phép mô hình "mới" chỉ tối ưu hóa các trọng số mới. Điều đó sẽ cung cấp cho bạn sức mạnh dự đoán chính xác cho 10 lớp ban đầu và có thể mang lại hiệu suất OK cho những lớp mới.
  2. Huấn luyện toàn bộ mạng cùng một lúc (bằng cách truyền lỗi của các lớp mới), có thể đang hoạt động cho (các) lớp mới, nhưng bạn sẽ kết thúc với giải pháp ban đầu không hiệu quả cho 10 lớp (vì trọng số sẽ được thay đổi cho lớp thấp hơn và lớp cuối cùng sẽ không được cập nhật để phù hợp với những thay đổi đó).

Mặc dù, khi bạn có quyền truy cập vào dữ liệu đào tạo ban đầu, bạn có thể dễ dàng thêm lớp mới vào mạng ban đầu và đào tạo lại để hỗ trợ 11 lớp ngoài hộp.


2

Điều này có thể được thực hiện dễ dàng.

Đầu tiên xây dựng một mô hình với 10 lớp đó và lưu mô hình dưới dạng base_model.

Tải base_model và cũng xác định một mô hình mới có tên new_model as-

new_model = Sequential()

Sau đó thêm các lớp của base_model vào new_model -

# getting all the layers except the last two layers
for layer in base_model.layers[:-2]: #just exclude the last two layers from base_model
    new_model.add(layer)

Bây giờ làm cho các lớp của mô hình mới không thể đào tạo được vì bạn không muốn mô hình của mình được đào tạo lại.

# prevent the already trained layers from being trained again
for layer in new_model.layers:
    layer.trainable = False

Bây giờ khi bạn chuyển việc học, khi bạn xóa các lớp cuối cùng, kiểu mô hình sẽ quên khoảng 10 lớp để chúng ta phải giữ lại các trọng số của base_model cho new_model -

weights_training = base_model.layers[-2].get_weights()
new_model.layers[-2].set_weights(weights_training) 

Bây giờ thêm một lớp dày đặc ở cuối và chúng tôi sẽ chỉ đào tạo lớp dày đặc này trong ví dụ này.

new_model.add(Dense(CLASSES, name = 'new_Dense', activation = 'softmax'))

Bây giờ đào tạo mô hình và tôi hy vọng nó cung cấp đầu ra đúng cho tất cả 11 lớp.

Học tập vui vẻ.

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.