Làm thế nào chính xác các mạng nơ ron tích chập sử dụng tích chập thay cho phép nhân ma trận?


13

Tôi đã đọc cuốn sách của Yoshua Bengio về học sâu và nó nói ở trang 224:

Các mạng kết hợp đơn giản là các mạng thần kinh sử dụng phép chập thay cho phép nhân ma trận chung trong ít nhất một trong các lớp của chúng.

tuy nhiên, tôi không chắc chắn 100% về cách "thay thế nhân ma trận bằng tích chập" theo nghĩa chính xác về mặt toán học.

Điều tôi thực sự quan tâm là xác định điều này cho các vectơ đầu vào trong 1D (như trong ), vì vậy tôi sẽ không có đầu vào dưới dạng hình ảnh và cố gắng tránh tích chập trong 2D.xRd

Vì vậy, ví dụ, trong các mạng nơ ron "bình thường", các hoạt động và mẫu phường thức ăn có thể được thể hiện chính xác như trong ghi chú của Andrew Ng:

W(l)a(l)=z(l+1)
f(z(l+1))=a(l+1)

Trong đó là vectơ được tính toán trước khi chuyển nó qua phi tuyến tính . Phi tuyến tính hoạt động mục nhập pero trên vectơ và là đầu ra / kích hoạt của các đơn vị ẩn cho lớp được đề cập.z(l)fz(l)a(l+1)

Tính toán này là rõ ràng đối với tôi bởi vì phép nhân ma trận được xác định rõ ràng đối với tôi, tuy nhiên, chỉ thay thế phép nhân ma trận bằng phép chập dường như không rõ ràng đối với tôi. I E

f ( z ( l + 1 ) ) = a ( l + 1 )

W(l)a(l)=z(l+1)
f(z(l+1))=a(l+1)

Tôi muốn chắc chắn rằng tôi hiểu phương trình trên một cách chính xác về mặt toán học.

Vấn đề đầu tiên tôi gặp phải khi chỉ thay thế phép nhân ma trận bằng tích chập là thông thường, người ta xác định một hàng của bằng một sản phẩm chấm. Vì vậy, người ta biết rõ toàn bộ liên quan đến các trọng số và ánh xạ tới một vectơ của kích thước như được chỉ ra bởi . Tuy nhiên, khi người ta thay thế nó bằng các kết quả, tôi không rõ hàng hay trọng số nào tương ứng với mục nào trong . Nó thậm chí còn không rõ ràng với tôi rằng nó có ý nghĩa để đại diện cho các trọng số như một ma trận nữa trên thực tế (tôi sẽ cung cấp một ví dụ để giải thích điểm đó sau) a ( l ) z ( l + 1 ) W ( l ) a ( l )W(l)a(l)z(tôi+1)W(tôi)một(tôi)

Trong trường hợp đầu vào và đầu ra đều trong 1D, liệu người ta chỉ tính toán tích chập theo định nghĩa của nó và sau đó chuyển nó qua một điểm kỳ dị?

Ví dụ: nếu chúng ta có vectơ sau làm đầu vào:

x= =[1,2,3,4]

và chúng tôi đã có các trọng số sau (có thể chúng tôi đã học được với backprop):

W= =[5,6,7]

thì tích chập là:

x*W= =[5,16,34,52,45,28]

sẽ là chính xác nếu chỉ vượt qua sự phi tuyến tính thông qua đó và coi kết quả là lớp / biểu diễn ẩn (giả sử không có nhóm trong thời điểm này)? tức là như sau:

f(x*W)= =f([5,16,34,52,45,28])= =[f(5),f(16),f(34),f(52),f(45),f(28)])

( hướng dẫn về UDLF của stanford Tôi nghĩ rằng nên cắt các cạnh trong đó phép tích chập bằng 0 vì một số lý do, chúng ta có cần phải cắt nó không?)

Đây có phải là cách nó nên làm việc? Ít nhất cho một vector đầu vào trong 1D? Là không phải là một vector nữa?W

Tôi thậm chí đã vẽ một mạng lưới thần kinh về cách nó được cho là trông giống như tôi nghĩ:

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

Câu trả lời:


3

Nghe có vẻ như tôi đang đi đúng hướng, nhưng có lẽ tôi có thể giúp làm rõ.

Đầu ra đơn

Chúng ta hãy tưởng tượng một lớp mạng thần kinh truyền thống với đơn vị đầu vào và 1 đầu ra (chúng ta cũng giả sử không có sai lệch). Lớp này có một vectơ trọng số có thể được học bằng nhiều phương pháp khác nhau (backprop, thuật toán di truyền, v.v.), nhưng chúng ta sẽ bỏ qua việc học và chỉ tập trung vào việc truyền bá về phía trước.w R nnwRn

Lớp lấy một đầu vào và ánh xạ nó tới một kích hoạt bằng cách tính toán sản phẩm chấm của với và sau đó áp dụng một phi tuyến : a R x w σ a = σ ( x w )xRnaRxwσ

a=σ(xw)

Ở đây, các phần tử của chỉ định trọng số của các phần tử tương ứng của để tính kích hoạt tổng thể của đơn vị đầu ra. Bạn thậm chí có thể nghĩ về điều này giống như một "tích chập" trong đó tín hiệu đầu vào ( ) có cùng độ dài với bộ lọc ( ).x x wwxxw

Trong cài đặt tích chập, có nhiều giá trị trong hơn trong ; giả sử bây giờ đầu vào của chúng tôi cho . Chúng ta có thể tính toán kích hoạt đơn vị đầu ra trong cài đặt này bằng cách tính toán sản phẩm chấm của với các tập con liền kề của :w x R m m > n w x a 1xwxRmm>nwx

a1=σ(x1:nw)a2=σ(x2:n+1w)a3=σ(x3:n+2w)amn+1=σ(xmn+1:mw)

(Ở đây tôi đang lặp lại cùng một sự nhầm lẫn khó chịu giữa tương quan chéo và tích chập mà nhiều tác giả mạng lưới thần kinh tạo ra; nếu chúng ta thực hiện những kết luận đúng đắn này, chúng ta sẽ lật các yếu tố của . Tôi cũng giả sử là "hợp lệ" tích chập chỉ giữ lại các phần tử được tính toán trong đó tín hiệu đầu vào và bộ lọc hoàn toàn trùng nhau, nghĩa là không có phần đệm.)w

Về cơ bản, bạn đã đặt câu hỏi này vào câu hỏi của mình, nhưng tôi đang cố gắng thực hiện kết nối với các lớp mạng thần kinh vanilla bằng cách sử dụng sản phẩm chấm để tạo điểm nhấn. Sự khác biệt chính với các lớp mạng vanilla là nếu vectơ đầu vào dài hơn vectơ trọng số, một phép chập biến đầu ra của lớp mạng thành một vectơ - trong các mạng chập, đó là vectơ hoàn toàn! Vectơ đầu ra này được gọi là "bản đồ đặc trưng" cho đơn vị đầu ra trong lớp này.

Nhiều đầu ra

Ok, vậy hãy tưởng tượng rằng chúng ta thêm một đầu ra mới vào lớp mạng của mình, để nó có đầu vào và 2 đầu ra. Sẽ có một vectơ cho đầu ra đầu tiên và một vectơ cho đầu ra thứ hai. (Tôi đang sử dụng siêu ký tự để biểu thị đầu ra của lớp.)nw1Rnw2Rn

Đối với một lớp vani, chúng thường được xếp chồng lên nhau thành một ma trận trong đó các vectơ trọng lượng riêng là các cột của ma trận. Sau đó, khi tính toán đầu ra của lớp này, chúng tôi tính toán hoặc trong ký hiệu ma trận ngắn hơn, trong đó tính phi tuyến được áp dụng theo từng phần tử.W=[w1w2]

a1= =σ(xw1)một2= =σ(xw2)
một= =[một1một2]= =σ(xW)

Trong trường hợp tích chập, các đầu ra của lớp của chúng ta vẫn được liên kết với các vectơ tham số tương tự và . Giống như trong trường hợp đầu ra đơn, lớp chập tạo ra các đầu ra có giá trị véc tơ cho mỗi đầu ra của lớp, do đó, có và (một lần nữa giả sử các kết luận "hợp lệ"). Các ánh xạ bộ lọc này, một bản đồ cho mỗi đầu ra lớp, thường được xếp chồng lên nhau thành một ma trận .w1w2một1= =[một11một21Giáo dụcmộtm-n+11]một2= =[một12một22Giáo dụcmộtm-n+12]Một= =[một1một2]

Nếu bạn nghĩ về nó, đầu vào trong trường hợp tích chập cũng có thể được coi là một ma trận, chỉ chứa một cột ("một kênh đầu vào"). Vì vậy, chúng ta có thể viết sự chuyển đổi cho layer này là nơi "chập" thực sự là một tương quan chéo và chỉ xảy ra dọc theo cột của và .

Một= =σ(X*W)
XW

Những phím tắt ký hiệu là thực sự khá hữu ích, bởi vì bây giờ nó rất dễ dàng để thấy rằng để thêm sản lượng khác đến lớp, chúng ta chỉ cần thêm một cột của trọng để .W

Hy vọng rằng điều đó hữu ích!


1

Một lớp chập là một tập hợp con nghiêm ngặt của một mạng được kết nối đầy đủ, tức là phép nhân ma trận. Một lớp chập trong đường chuyển tiếp trên thực tế tương đương với phép nhân ma trận trong đó:

  • một số trọng lượng được gắn / chia sẻ
  • một số trọng lượng bằng không

Ở đường chuyền ngược, các trọng số sẽ được cập nhật theo đó các trọng số đã đóng góp bao nhiêu trong lượt đi tiếp. tức là các trọng số bằng 0 vẫn bằng không. Các trọng số được liên kết trên nhiều đầu ra sẽ nhận được độ dốc từ tất cả các đầu ra đó (các gradient được tổng hợp lại với nhau, để tạo ra bản cập nhật gradient cuối cùng cho trọng số đó).


0

Không, đó không phải là cách nó hoạt động. Hoạt động tích chập luôn làm cho đầu vào nhỏ hơn (đối với các bộ lọc có kích thước> 1), không lớn hơn như trong ví dụ của bạn.

Nó chỉ đơn giản là một phép nhân nguyên tố. Khi thực hiện tích chập trên 3 phần tử đầu tiên của đầu vào, đầu ra sẽ là . (xem ví dụ deeplearning.stanford.edu )1*5+2*6+3*7= =38


bạn đã thử đối lưu ([1, 2, 3, 4], [5,6,7]) trong MATLAB chưa? Đi đến thiết bị đầu cuối và tự kiểm tra nó. Nếu bạn sử dụng định nghĩa tích chập thông thường, bạn có thể tính toán bằng tay vectơ [5,16,34,52,45,28]. Vector không phải lúc nào cũng co lại. Nó phụ thuộc vào nơi bạn bắt đầu thực hiện tích chập và nếu bạn coi những thứ nằm ngoài phạm vi chỉ số là 0. Nếu bạn làm như tôi đề xuất trong bài viết này, bạn sẽ có được một vectơ có kích thước . Nếu bạn cắt các cạnh (vì chỉ số đi ra khỏi phạm vi), bạn sẽ có được một vectơ có kích thước , trong đó N và n là kích thước của các vectơ trong câu hỏi. N+n-1N-n+1
Charlie Parker

Phép chập được sử dụng trong webapge đó không phải là định nghĩa của phép chập toán học.
Charlie Parker

1
Có, tích chập được sử dụng cho CNN không phải là tích chập thông thường. Điều đó gây nhầm lẫn cho mọi người, nhưng đó chỉ là như vậy :) Với bản chất của CNN tức là phân tích một hình ảnh, nó sẽ luôn bắt đầu với phần tử đầu tiên , trong đó là kích thước bộ lọc và sau đó được chuyển qua đầu vào. Tuy nhiên, nó sẽ không được mở rộng quá cuối, do đó, đầu ra sẽ bị thu hẹp bởi . nnn-1
cướp biển

1
Tôi thấy, tôi nghĩ rằng điều đó có ý nghĩa khi tôi nhìn nó. Tuy nhiên, có một sai lầm nhỏ. Đầu vào không phải lúc nào cũng làm cho nó nhỏ hơn, tôi nhận thức được các loại kết luận khác nhau và ngay cả trong CNN, theo cuốn sách của Yoshua Bengio, có 3 loại kết luận (đầy đủ, hợp lệ, giống nhau) iro.umontreal.ca/ ~ bengioy / dlbook . Tôi không hiểu chi tiết về chúng nhưng ít nhất tôi cũng biết về chúng! Cảm ơn Felbo. Cộng đồng tầm nhìn không nên sử dụng các từ kết luận, gây nhầm lẫn và khó chịu. Dù sao cũng cảm ơn.
Charlie Parker

1
@CharlieParker Hàm đối lưu trong Matlab có cùng 3 loại "hình dạng" (đầy đủ, hợp lệ, giống nhau), Matlab chỉ mặc định là "đầy đủ" - xem tài liệu tại mathworks.com/help/matlab/ref/conv.html . Một tích chập mà không lật hạt nhân là một mối tương quan chéo, vì vậy xcorr(x, y) = conv(x, fliplr(y)). Cộng đồng NN có xu hướng nói tích chập khi họ thực sự đang thực hiện một mối tương quan chéo, nhưng nó khá giống nhau.
lmjohns3
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.