Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add "transposed convolution" #2336

Merged
merged 2 commits into from Aug 10, 2020
Merged

Add "transposed convolution" #2336

merged 2 commits into from Aug 10, 2020

Conversation

trgiangdo
Copy link
Collaborator

Từ transposed convolution em nghĩ có thể dịch thành phép tích chập đảo hoặc tích chập đảo.
Theo em tìm hiểu thì nó ngược lại so với phép tích chập trong mạng tích chập bình thường là làm tăng kích thước đầu vào dựa vào kernel.
Em không học sâu về mảng này nên mong mọi người góp ý.

@thanhcsf thanhcsf added this to Review in progress in v0.14.x via automation Aug 9, 2020
@thanhcsf thanhcsf added this to In progress in Glossary via automation Aug 9, 2020
@ngcthuong
Copy link
Contributor

Tranpose là chuyển vị chứ không phải nghịch đảo.

@davidnvq
Copy link
Contributor

davidnvq commented Aug 9, 2020

transpose là chuyển vị nhưng khi dịch là conv chuyển vị thì cũng hơi khó hiểu vì không có phép chuyển vị nào trong conv.

deconv cũng đc sử dụng thay thế cho transposed conv (cũng khá phổ biến) nên em thấy @trGiang99 dịch là đảo cũng ok.

https://towardsdatascience.com/transposed-convolution-demystified-84ca81b4baba
có 1 repo visualize khá trực quan, k biết mn đã xem chưa :3
https://github.com/vdumoulin/conv_arithmetic

@ngcthuong
Copy link
Contributor

Deconvolution là một từ khoá không thể hiện đúng bản chất, vì sau phải sửa lại là convolution tranpose đó.

@davidnvq
Copy link
Contributor

davidnvq commented Aug 9, 2020

Thế ạ, e đọc đâu đó thì cũng thấy có tranh cãi. Nhưng mới gần đây đọc vài bài CVPR20 thì thấy họ cũng dùng từ deconv. :D

@ngcthuong
Copy link
Contributor

Deconvolution là tên gọi không chuẩn của tranposed convolution. Mục đích ban đầu là người ta muốn làm đảo ngược quá trình của convolution (convolution với giá trị stride lớn hơn một sẽ làm giảm chiều không gian, spatial resolution), thì làm ngược lại sẽ tăng chiều không gian đó lên. Nên nó sẽ làm tăng kích thước output hay có tác dụng như là interpoliation, nội suy, hay up-sampling. Như hình ví dụ trên. Đó là lý do tại sao họ dùng chữ “de” trước convolution. Và đây là cách đặt tên rất “lười”.

Tuy nhiên thuật ngữ deconvolution này lại không chính xác với thuật ngữ deconvolution thường dùng trong signal processing (xử lý tín hiệu) dẫn đến gây hiểu nhầm. Trong xử lý tín hiệu, convolution là việc tính gộp của nhiều pixel lân cận dẫn tới hiệu ứng bị mờ. Điển hình như khi chụp ảnh bị mờ. Và deconvolution là bài toán làm đảo ngược hiệu ứng mờ đó, làm ảnh sắc nét hơn. Chứ không phải làm tăng kích thước của ảnh. Thuật ngữ convolution tranpose là hoàn toàn chính xác trong trường hợp này. Vì theo phép toán đơn giản y = W*x làm giảm chiều của x, thì W^T *y sẽ làm tăng chiều của y.

Hơn nữa, tất cả các implementation, reference về sau đều gọi là tranposed convolution chứ không dùng thuật ngữ deconvolution nữa. Lý do vì, deconvolution chính xác là convolution với cái kernel của filter khác nhau.

Link tham khảo 27

@ngcthuong
Copy link
Contributor

https://forum.machinelearningcoban.com/t/thac-mac-ve-deconvolutional-layer/5341

glossary.md Outdated Show resolved Hide resolved
@trgiangdo
Copy link
Collaborator Author

tích chập đảo ở đây thực ra em dịch ra không mang nghĩa phép nghịch đảo, mà nó có tác động ngược lại vào đầu vào so với phép tích chập thông thường trong mạng tích chập.

Copy link
Member

@lkhphuc lkhphuc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tích chập chuyển vị là chuẩn nhất và đều thống nhất với các cách dịch transpose khác như Ma trận chuyển vị rồi mà.

@ngcthuong
Copy link
Contributor

ngcthuong commented Aug 9, 2020

tích chập đảo ở đây thực ra em dịch ra không mang nghĩa phép nghịch đảo, mà nó có tác động ngược lại vào đầu vào so với phép tích chập thông thường trong mạng tích chập.

Từ khóa mà em cần phải giải thích thêm như vậy là có nhiều khả năng hiểu nhầm rồi. Nên tiêu chí dịch ngược dùng từ "tích chập đảo" sẽ không suy ra được từ tiếng Anh mà sẽ là từ "inverse" hoặc "de" convolution. Còn nếu dùng từ chuyển vị thì sẽ suy ra chính xác là tranposed convolution. Vậy nên về ngữ nghĩa từ chuyển vị chuẩn hơn.

Co-authored-by: Duc Pham <phamminhduc0711@gmail.com>
v0.14.x automation moved this from Review in progress to Reviewer approved Aug 10, 2020
@thanhcsf thanhcsf merged commit 2395d8a into d2l-ai:master Aug 10, 2020
v0.14.x automation moved this from Reviewer approved to Done Aug 10, 2020
Glossary automation moved this from In progress to Done Aug 10, 2020
@trgiangdo trgiangdo deleted the patch-14 branch August 13, 2020 02:41
thanhcsf pushed a commit that referenced this pull request Sep 13, 2020
* Add "transposed convolution"

* Update glossary.md

Co-authored-by: Duc Pham <phamminhduc0711@gmail.com>

Co-authored-by: Duc Pham <phamminhduc0711@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Glossary
  
Done
v0.14.x
  
Done (Max)
Development

Successfully merging this pull request may close these issues.

None yet

6 participants