ในซีเอ็นเอ็นมีการยกตัวอย่างและแปลงรูปแบบเดียวกันหรือไม่


12

ทั้งคำว่า "อัพแซมปลิง" และ "ทรานสคริซิชั่น" จะถูกใช้เมื่อคุณกำลังทำ "deconvolution" (<- ไม่ใช่คำศัพท์ที่ดี แต่ให้ฉันใช้ที่นี่) แต่เดิมฉันคิดว่าพวกเขาหมายถึงสิ่งเดียวกัน แต่ดูเหมือนว่าฉันจะแตกต่างกันหลังจากที่ฉันอ่านบทความเหล่านี้ ใครช่วยอธิบายหน่อยได้ไหม

  1. Transpose convolution : ดูเหมือนว่าเราสามารถใช้มันได้เมื่อเราเผยแพร่การสูญเสียผ่านเครือข่ายประสาทเทียม convolutonal

    http://andrew.gibiansky.com/blog/machine-learning/convolutional-neural-networks/#Backward-Propagation

    https://github.com/vdumoulin/conv_arithmetic

    https://arxiv.org/pdf/1312.6034v2.pdfส่วนที่ 4 "สำหรับเลเยอร์ convolutional ... "

  2. Upsampling : ดูเหมือนว่าเราจะใช้มันเมื่อเราต้องการสุ่มตัวอย่างจากอินพุตที่เล็กลงไปสู่อินพุตที่ใหญ่ขึ้นในโครงสร้าง convnet-decovnet

    https://www.youtube.com/watch?v=ByjaPdWXKJ4&feature=youtu.be&t=22m


1
ข้ามโพสต์ที่datascience.stackexchange.com/questions/15863/... โปรดอย่าข้ามโพสต์ แต่เลือกเว็บไซต์ที่คุณต้องการคำถามของคุณ
Scortchi - Reinstate Monica

@Scortchi โอ้พวกเขาเชื่อมโยง! ขออภัยฉันลบหนึ่งในวิทยาศาสตร์ข้อมูล
RockTheStar

โพสต์ที่น่าสนใจเกี่ยวกับ deconvolutions
hans

คำตอบ:


9

เนื่องจากไม่มีคำตอบอย่างละเอียดและทำเครื่องหมายฉันจะพยายามอย่างดีที่สุด

ก่อนอื่นเรามาทำความเข้าใจว่าแรงบันดาลใจของเลเยอร์ดังกล่าวมาจากไหน: เช่นโปรแกรมเปลี่ยนรหัสอัตโนมัติ คุณสามารถใช้ตัวแปลงรหัสอัตโนมัติแบบ Convolutional เพื่อแยก featuers ของรูปภาพในขณะที่ฝึกฝนตัวสร้างรหัสอัตโนมัติเพื่อสร้างภาพต้นฉบับขึ้นมาใหม่ (เป็นวิธีที่ไม่มีผู้ดูแล)

ตัวเข้ารหัสอัตโนมัติดังกล่าวมีสองส่วน: ตัวเข้ารหัสที่แยกคุณลักษณะจากภาพและตัวถอดรหัสที่สร้างภาพต้นฉบับขึ้นมาใหม่จากคุณสมบัติเหล่านี้ สถาปัตยกรรมของตัวเข้ารหัสและตัวถอดรหัสมักจะทำมิรเรอร์

ในตัวเข้ารหัสอัตโนมัติ convolutional ตัวเข้ารหัสทำงานร่วมกับชั้น convolution และ pooling ฉันคิดว่าคุณรู้วิธีการทำงานของเหล่านี้ ตัวถอดรหัสพยายามมิเรอร์ตัวเข้ารหัส แต่แทนที่จะ "ทำให้ทุกอย่างเล็กลง" มันมีเป้าหมายที่จะ "ทำให้ทุกอย่างใหญ่ขึ้น" เพื่อให้ตรงกับขนาดดั้งเดิมของภาพ

ตรงข้ามของชั้นความสับสนเป็นขนย้ายบิดชั้น (หรือเรียกว่าdeconvolutionแต่อย่างถูกต้องทางคณิตศาสตร์ที่พูดนี้เป็นสิ่งที่แตกต่างกัน) พวกมันทำงานร่วมกับฟิลเตอร์, เมล็ด, ก้าวอย่างเดียวกับเลเยอร์ Convolution แต่แทนที่จะทำการแมปจากพิกเซลอินพุต 3x3 เป็น 1 เอาต์พุตมันแมปจากพิกเซลอินพุต 1 พิกเซลเป็น 3x3 พิกเซล แน่นอนว่าการ backpropagation นั้นต่างกันเล็กน้อย

ตรงข้ามชั้นร่วมกันเป็นอัปแซมปลิงชั้นซึ่งในรูปแบบบริสุทธิ์ของพวกเขาเท่านั้นปรับขนาดภาพ (หรือคัดลอกพิกเซลหลายครั้งตามที่ต้องการ) เทคนิคขั้นสูงยิ่งขึ้นคือยกเลิกการติดตามซึ่งจะเปลี่ยนค่าสูงสุดของการเชื่อมโยงโดยจดจำตำแหน่งของจุดสูงสุดในเลเยอร์แม็กซ์และในเลเยอร์ที่ไม่ได้คัดลอกคัดลอกค่าไปยังตำแหน่งนี้อย่างแน่นอน หากต้องการอ้างอิงจากกระดาษ( https://arxiv.org/pdf/1311.2901v3.pdf ) กระดาษ:

ใน convnet การดำเนินการรวมกำไรสูงสุดนั้นไม่สามารถย้อนกลับได้อย่างไรก็ตามเราสามารถรับค่าผกผันโดยประมาณโดยการบันทึกตำแหน่งของ maxima ภายในแต่ละพื้นที่รวมกำไรในชุดตัวแปรสวิตช์ ใน deconvnet การดำเนินการที่ไม่ได้ใช้งานจะใช้สวิตช์เหล่านี้เพื่อวางไทปันจากเลเยอร์ด้านบนไปยังตำแหน่งที่เหมาะสมเพื่อรักษาโครงสร้างของสิ่งเร้า

สำหรับข้อมูลทางเทคนิคและบริบทเพิ่มเติมดูที่คำอธิบายเชิงลึกที่ดีสาธิตและเชิงลึก: http://deeplearning.net/software/theano/tutorial/conv_arithmetic.html

และดูที่https://www.quora.com/What-is-the-difference-between-Deconvolution-Upsampling-Unpooling-and-Convolutional-Sparse-Coding


F. Chollet (ผู้สร้าง Keras) จะโต้แย้งว่านี่เป็นเทคนิคการควบคุมตนเอง
ฮั

6

มันอาจขึ้นอยู่กับแพ็คเกจที่คุณใช้

ใน keras พวกเขาแตกต่างกัน Upsamplingถูกกำหนดไว้ที่นี่https://github.com/fchollet/keras/blob/master/keras/layers/convolutional.py ให้คุณใช้แบ็กเอนด์ tensorflow สิ่งที่เกิดขึ้นจริงคือ keras เรียกฟังก์ชันtensorflow resize_imagesซึ่งเป็นหลักคือการแก้ไขและไม่ สุวินัย.

การแปลงสัณฐานมีส่วนร่วมมากขึ้น มันกำหนดไว้ในสคริปต์หลามเดียวกับที่กล่าวข้างต้น มันเรียกฟังก์ชั่นtensorflow conv2d_transposeและมีเคอร์เนลและสามารถฝึกได้

หวังว่านี่จะช่วยได้


1

การ deconvolution ในบริบทของโครงข่ายประสาทเทียมนั้นมีความหมายเหมือนกันที่จะนำไปสู่การแปลงกลับไปมา การสลายตัวอาจมีความหมายอื่นในสาขาอื่น

ทรานซิสชั่นทรานซิสชั่นเป็นกลยุทธ์หนึ่งในการดำเนินการอื่น ๆ


ใช่ฉันเห็นด้วย. แต่ดูเหมือนว่าวิธีการอ้างอิงอธิบายพวกเขาแตกต่างกัน ลองดูวิดีโอในข้อ 2 แล้วดูที่การอ้างอิงในข้อ 1 (โดยส่วนตัวแล้วฉันจะไปหาคำอธิบายข้อที่ 1)
RockTheStar

@RockTheStar แนวคิดใดที่อธิบายแตกต่างกันไป สลับการบิดหรือการสุ่มตัวอย่าง?
Franck Dernoncourt

1
แนวคิดการยกระดับ / การแยกองค์ประกอบอธิบายไว้ในวิดีโอในข้อ 2 ประมาณสองสามนาที
RockTheStar

0

นี่เป็นภาพประกอบที่ดีพอสมควรเกี่ยวกับความแตกต่างระหว่าง 1) การแปลงรูปแบบการแปลงและ 2) การยกตัวอย่าง + การบิด https://distill.pub/2016/deconv-checkerboard/

ในขณะที่การแปลงทรานส์นั้นมีประสิทธิภาพมากขึ้นบทความนี้สนับสนุนการอัพแซมปลิง + การบิดเนื่องจากมันไม่ได้รับผลกระทบจากสิ่งประดิษฐ์กระดานหมากรุก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.