Tầm quan trọng của việc hợp nhất mô hình trong Keras là gì?


10

Tôi đã học được rằng Keras có chức năng "hợp nhất" hai mô hình theo các điều sau:

from keras.layers import Merge

left_branch = Sequential()
left_branch.add(Dense(32, input_dim=784))

right_branch = Sequential()
right_branch.add(Dense(32, input_dim=784))

merged = Merge([left_branch, right_branch], mode='concat')

Điểm nào trong việc sáp nhập NN, trong tình huống nào là hữu ích? Đây có phải là một kiểu mẫu đồng bộ? Sự khác biệt giữa một số "chế độ" (concat, avg, dot, v.v.) trong ý nghĩa của hiệu suất là gì?

Câu trả lời:


14

Nó được sử dụng vì nhiều lý do, về cơ bản, nó được sử dụng để kết nối nhiều mạng với nhau. Một ví dụ điển hình là nơi bạn có hai loại đầu vào, ví dụ thẻ và hình ảnh. Bạn có thể xây dựng một mạng mà ví dụ:

HÌNH ẢNH -> Chuyển đổi -> Tối đa hóa -> Chuyển đổi -> Tối đa hóa -> Mật độ dày đặc

TAG -> Nhúng -> Lớp dày đặc

Để kết hợp các mạng này thành một dự đoán và huấn luyện chúng lại với nhau, bạn có thể hợp nhất các lớp Mật độ này trước khi phân loại cuối cùng.

Các mạng nơi bạn có nhiều đầu vào là cách sử dụng chúng rõ ràng nhất, đây là hình ảnh kết hợp các từ với hình ảnh bên trong RNN, phần Đa phương thức là nơi hai đầu vào được hợp nhất:

Mạng lưới thần kinh đa phương thức

Một ví dụ khác là lớp Inception của Google nơi bạn có các kết cấu khác nhau được thêm lại với nhau trước khi đến lớp tiếp theo.

Để cung cấp nhiều đầu vào cho Keras, bạn có thể chuyển một danh sách các mảng. Trong ví dụ từ / hình ảnh, bạn sẽ có hai danh sách:

x_input_image = [image1, image2, image3]
x_input_word = ['Feline', 'Dog', 'TV']
y_output = [1, 0, 0]

Sau đó, bạn có thể phù hợp như sau:

model.fit(x=[x_input_image, x_input_word], y=y_output]

Xin lỗi, tôi không thể thấy điểm trong việc xây dựng các mạng riêng biệt cho cả các trường hợp đào tạo và nhãn trong khi có khả năng cung cấp các mạng này trong một mạng duy nhất trong giai đoạn phù hợp thực hiện công việc. Tôi có thể thấy rằng sáp nhập là một khả năng nhưng không phải là lợi thế của nó so với "không hợp nhất".
Hendrik

Làm thế nào để bạn cho chúng ăn trong giai đoạn phù hợp? Các đầu vào luôn tách biệt, bạn không thể sử dụng lớp chập trên nhãn của mình để các lớp này cần được hợp nhất bằng cách nào đó.
Jan van der Vegt

Trong Keras model.fit()chấp nhận cả X và y để phù hợp và modeltrong trường hợp này cũng có thể là mô hình "không hợp nhất". Khá giống như các kiểu mô hình khác trong Sklearn chẳng hạn.
Hendrik

3
Nhãn có thể là một tên được chọn kém từ phía tôi, giả sử bạn có một hình ảnh và chú thích với hình ảnh đó và bạn muốn phân loại xem sự kết hợp đó có phải là về mèo hay không, sau đó bạn có hai loại đầu vào và một đầu ra nhị phân . Để có được sức mạnh tổng hợp giữa chúng, bạn sẽ phải hợp nhất các lớp ở đâu đó. Một ví dụ khác là bạn có hai bức ảnh, một từ trên xuống và một từ dưới cùng mà bạn phải phân loại cùng nhau
Jan van der Vegt 16/8/2016

3
@Hendrik: Không có "mô hình thành phần", chỉ có một mô hình. Nó là một thứ phức tạp, được kích hoạt bởi tính năng hợp nhất lớp. Bạn đánh giá nó giống như bạn làm với bất kỳ mô hình đơn lẻ nào - tức là với một số liệu dựa trên tập dữ liệu kiểm tra giữ (trong ví dụ hình ảnh / từ với dữ liệu bao gồm hình ảnh, văn bản một phần liên quan và từ tiếp theo làm nhãn để dự đoán). Nếu bạn muốn, bạn có thể kiểm tra các lớp trong mô hình để xem chúng đang làm gì - ví dụ: phân tích các tính năng CNN vẫn có thể được áp dụng cho các lớp chập.
Neil Slater
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.