Các bộ lọc mặc định được sử dụng bởi Keras Convolution2d () là gì?


18

Tôi khá mới đối với các mạng thần kinh, nhưng tôi hiểu đại số tuyến tính và toán học về tích chập khá rõ ràng.

Tôi đang cố gắng để hiểu mã ví dụ mà tôi tìm thấy ở nhiều nơi trên mạng để đào tạo một NN tích chập Keras với dữ liệu MNIST để nhận dạng các chữ số. Kỳ vọng của tôi sẽ là khi tôi tạo một lớp chập, tôi sẽ phải chỉ định một bộ lọc hoặc bộ bộ lọc để áp dụng cho đầu vào. Nhưng ba mẫu tôi đã tìm thấy tất cả tạo ra một lớp chập như thế này:

model.add(Convolution2D(nb_filter = 32, nb_row = 3, nb_col = 3,
                        border_mode='valid',
                        input_shape=input_shape))

Điều này dường như đang áp dụng tổng cộng 32 bộ lọc 3x3 cho các hình ảnh được xử lý bởi CNN. Nhưng những bộ lọc đó là gì? Làm thế nào tôi có thể mô tả chúng về mặt toán học? Các tài liệu keras là không giúp đỡ.

Cảm ơn trước,


2
Điều này xuất phát từ việc hiểu được phần tích chập của CNN. Bạn có thể đọc ở đây: cs231n.github.io/convolutional-networks
Christian Safka

Câu trả lời:


15

Theo mặc định, các bộ lọc được khởi tạo ngẫu nhiên bằng phương thức, rút ​​ra các giá trị từ phân phối đồng đều với giới hạn dương và âm được mô tả như vậy: Wglorot_uniform

WU(6nin+nout,6nin+nout),

Trong đó là số đơn vị cung cấp cho đơn vị này và là số đơn vị mà kết quả này được cung cấp.ninnout

Khi bạn đang sử dụng mạng để đưa ra dự đoán, các bộ lọc này được áp dụng ở mỗi lớp của mạng. Nghĩa là, một tích chập riêng biệt được thực hiện cho từng bộ lọc trên mỗi hình ảnh đầu vào và kết quả của các cấu trúc này được đưa đến lớp kết hợp tiếp theo (hoặc lớp được kết nối đầy đủ hoặc bất kỳ thứ gì khác mà bạn có thể có).

Trong quá trình đào tạo, các giá trị trong các bộ lọc được tối ưu hóa với backpropogation liên quan đến chức năng mất. Đối với các nhiệm vụ phân loại như nhận dạng chữ số, thông thường mất entropy chéo được sử dụng. Đây là một hình ảnh trực quan của một số bộ lọc đã học ở lớp đầu tiên (trên cùng) và các bộ lọc đã học ở lớp thứ hai (dưới cùng) của mạng chập:

trực quan bộ lọc net

Như bạn có thể thấy, các bộ lọc lớp đầu tiên về cơ bản đều hoạt động như các bộ dò cạnh đơn giản, trong khi các bộ lọc lớp thứ hai phức tạp hơn. Khi bạn đi sâu hơn vào mạng, các bộ lọc có thể phát hiện các hình dạng phức tạp hơn. Mặc dù có một chút khó khăn để hình dung, vì các bộ lọc này hoạt động trên các hình ảnh đã được xác định nhiều lần và có lẽ không giống với hình ảnh tự nhiên ban đầu.


5
glorot_uniformkhông sử dụng phân phối bình thường. Tôi nghĩ rằng bạn đang mô tả glorot_normal. Tôi không nghĩ rằng vấn đề rất lớn đối với câu trả lời - điểm chính là khởi tạo ngẫu nhiên theo sau là hiệu quả của việc đào tạo. Có thể đáng để giải thích làm thế nào các bộ lọc được đào tạo cuối cùng trông giống như các bộ lọc cạnh / góc vv (có thể với một trong những hình ảnh cổ điển của trước / sau khi đào tạo hình ảnh bộ lọc lớp đầu tiên).
Neil Slater

Tim, cảm ơn vì đã cung cấp toán học. @Neil Slater - cái nhìn sâu sắc của bạn rằng các bộ lọc, sau khi được đào tạo với backpropagation, cuối cùng có thể trông giống như phát hiện cạnh, v.v., khá hữu ích. Nếu tôi có nhiều danh tiếng hơn, tôi sẽ +1 cả hai đóng góp của bạn.
ChrisFal

@NeilSlater Cám ơn nhận xét của bạn - Bạn nói đúng, tôi đã nhầm lẫn glorot_normalglorot_uniform, và tôi đã cập nhật câu trả lời cho phản ánh điều này. Tôi cũng đã thêm một chút thông tin bổ sung về cách các bộ lọc kết thúc, như bạn đề xuất.
timleathart

6

Chúng là hạt nhân chập. Ví dụ hình ảnh của bạn là 5x5, bạn có 32 3x3 chập Hạt nhân . Border_mode là 'hợp lệ' có nghĩa là không có phần đệm xung quanh đầu vào, do đó, pixel (i, 0), (0, j), (i, 4), (4, j) bị mất. Do đó, kết quả của bạn là 32 hình ảnh 3x3 , (i = 1,2,3, j = 1,2,3), mỗi hình ảnh kết quả được xác định bởi tích chập: F k B k ( i , j ) B k ( i , j ) = ( F kA ) ( i , j ) = l = 0 , 1 , 2 m = 0 , 1 , 2 F k ( l , m ) A ( i - l , j -AFkBk(i,j)

Bk(i,j)=(FkA)(i,j)=l=0,1,2m=0,1,2Fk(l,m)A(il,jm)

nhập mô tả hình ảnh ở đây

Mô hình traned sẽ huấn luyện các hạt nhân theo hàm chi phí của bạn và cuối cùng các hạt nhân này là các bộ lọc của mô hình của bạn.


Tôi hiểu toán này, nhưng tôi chắc rằng nhiều độc giả của chủ đề này sẽ tìm thấy sơ đồ hữu ích. Xin cảm ơn!
ChrisFal

imghost.in/images/2018/03/06/XvatD.jpg có lẽ hình ảnh phải có coords (0,0) trên B?
vinnitu

@vinnitu vâng, thực sự. Thật ra tôi cũng cần sửa B thành Bk (i, j), (i = 0,1,2, j = 0,1,2).
lucky6qi
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.