กราฟการคำนวณแบบไดนามิกคืออะไร?


19

กรอบงานอย่างPyTorchและ TensorFlow ผ่านTensorFlow Foldรองรับกราฟการคำนวณแบบไดนามิกและได้รับความสนใจจากนักวิทยาศาสตร์ด้านข้อมูล

อย่างไรก็ตามดูเหมือนว่าจะไม่มีทรัพยากรที่จะช่วยในการทำความเข้าใจกราฟการคำนวณแบบไดนามิก

ข้อได้เปรียบของกราฟการคำนวณแบบไดนามิกดูเหมือนจะรวมถึงความสามารถในการปรับให้เข้ากับปริมาณที่แตกต่างกันในข้อมูลอินพุต ดูเหมือนว่าอาจมีการเลือกจำนวนชั้นโดยอัตโนมัติจำนวนเซลล์ประสาทในแต่ละชั้นฟังก์ชั่นการเปิดใช้งานและพารามิเตอร์ NN อื่น ๆ ขึ้นอยู่กับแต่ละอินสแตนซ์ชุดอินพุตในระหว่างการฝึกอบรม นี่เป็นลักษณะที่ถูกต้องหรือไม่?

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

คำตอบ:


8

คำตอบสั้น ๆ สองข้อ

คำตอบสั้น ๆ จากมุมมองทางทฤษฎีคือ ...

กราฟการคำนวณแบบไดนามิกเป็นระบบที่ไม่แน่นอนที่แสดงเป็นกราฟโดยตรงของการไหลของข้อมูลระหว่างการดำเนินการ มันสามารถมองเห็นเป็นรูปร่างที่มีข้อความที่เชื่อมต่อโดยลูกศรโดยจุดยอด (รูปร่าง) แสดงถึงการดำเนินการกับข้อมูลที่ไหลไปตามขอบ (ลูกศร)

โปรดทราบว่ากราฟดังกล่าวจะกำหนดการพึ่งพาในการไหลของข้อมูล แต่ไม่จำเป็นต้องเป็นคำสั่งชั่วคราวของการใช้งานของการดำเนินงานซึ่งอาจกลายเป็นคลุมเครือในการเก็บรักษาของรัฐในจุดยอดหรือรอบในกราฟโดยไม่มีกลไกเพิ่มเติม

คำตอบสั้น ๆ จากมุมมองการพัฒนาแอปพลิเคชันคือ ...

เฟรมเวิร์กกราฟการคำนวณแบบไดนามิกเป็นระบบของไลบรารีอินเทอร์เฟซและส่วนประกอบที่ให้ความยืดหยุ่นโปรแกรมเวลาทำงานที่อำนวยความสะดวกในการสร้างและปรับเปลี่ยนระบบโดยการเชื่อมต่อระบบปฏิบัติการที่แน่นอน

PyTorch Framework

PyTorch เป็นการรวมกันของเฟรมเวิร์ก Torch กับภาษา Python และการจัดโครงสร้างข้อมูล คบเพลิงแข่งขันกับ Theano, TensorFlow และกรอบการสร้างระบบคำนวณแบบไดนามิกอื่น ๆ


———   แนวทางเพิ่มเติมเพื่อความเข้าใจ   ———

โครงสร้างการคำนวณโดยพลการของเทนเซอร์แบบไม่ต่อเนื่องโดยพลการ

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

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

จุดอ้างอิงเพื่อทำความเข้าใจแนวคิดการคำนวณแบบไดนามิก

กราฟการคำนวณแบบไดนามิกไม่ใช่แนวคิดใหม่โดยเฉพาะแม้ว่าคำศัพท์จะค่อนข้างใหม่ ความสนใจใน DCGs ในหมู่นักวิทยาศาสตร์คอมพิวเตอร์ไม่ใช่เรื่องใหม่เท่ากับคำว่า Data Scientist อย่างไรก็ตามคำถามอย่างถูกต้องระบุว่ามีทรัพยากรที่เป็นลายลักษณ์อักษรอยู่น้อยมาก (นอกเหนือจากตัวอย่างโค้ด) ซึ่งสามารถเรียนรู้แนวคิดโดยรวมเกี่ยวกับการเกิดและการใช้งานของพวกเขา

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

ในกรณีของ DCG รูปแบบการออกแบบคอมโพสิตและซุ้มมีส่วนเกี่ยวข้องเพื่ออำนวยความสะดวกในการดำเนินการเทนเซอร์แบบแยกส่วนแบบ plug-and-play ที่สามารถรวมเข้าด้วยกันในรูปแบบเพื่อสร้างระบบ

การรวมกันของรูปแบบการออกแบบเพื่อสร้างระบบเป็นจริงที่เป็นนามธรรมซอฟต์แวร์ที่คล้ายกับความคิดที่รุนแรงที่นำไปสู่การเกิดขึ้นของสถาปัตยกรรม Von Neumann ซึ่งเป็นศูนย์กลางของคอมพิวเตอร์ส่วนใหญ่ในปัจจุบัน ผลงานของฟอนนอยมันน์ต่อการเกิดขึ้นของคอมพิวเตอร์คือความคิดในการอนุญาตให้ใช้อัลกอริธึมที่มีตรรกะแบบบูลีนเลขคณิตและการแตกแขนงเพื่อแสดงและเก็บเป็นข้อมูล - โปรแกรม

ผู้เบิกทางอื่นของ DCGs คือเอ็นจิ้นการแสดงออก เอ็นจิ้นนิพจน์สามารถทำได้ง่ายเหมือนเอนจิ้นเลขคณิตและมีความซับซ้อนเท่ากับแอปพลิเคชั่นเช่น Mathematica เอ็นจินกฎมีลักษณะคล้าย DCG เล็กน้อยยกเว้นว่าเอ็นจินกฎนั้นมีการประกาศและกฎเมตาดาต้าสำหรับเอ็นจินกฎจะทำงานกับการประกาศเหล่านั้น

โปรแกรมจัดการโปรแกรม

สิ่งเหล่านี้มีเหมือนกันกับ DCGs คือการไหลของข้อมูลและการดำเนินงานที่จะใช้สามารถกำหนดได้ในเวลาทำงาน เช่นเดียวกับ DCGs ห้องสมุดซอฟต์แวร์และแอพพลิเคชั่นเหล่านี้บางส่วนมี API หรือกลไกอื่น ๆ ที่อนุญาตให้มีการใช้งานในรายละเอียดการทำงาน เป็นหลักความคิดของโปรแกรมที่อนุญาตการจัดการของโปรแกรมอื่น

จุดอ้างอิงอื่นสำหรับการทำความเข้าใจหลักการนี้ในระดับดั้งเดิมคือคำสั่ง switch-case ที่มีในภาษาคอมพิวเตอร์บางภาษา มันเป็นโครงสร้างซอร์สโค้ดที่โปรแกรมเมอร์ต้องการแสดงออกว่า "เราไม่แน่ใจว่าต้องทำอะไร แต่ค่าของตัวแปรนี้จะบอกรูปแบบการดำเนินการแบบเรียลไทม์ว่าจะทำอย่างไรจากชุดของความเป็นไปได้"

คำสั่ง switch-case เป็นนามธรรมที่ขยายแนวคิดของการชะลอการตัดสินใจเกี่ยวกับทิศทางของการคำนวณจนกระทั่งเวลารัน เป็นเวอร์ชันซอฟต์แวร์ของสิ่งที่ทำในหน่วยควบคุมของ CPU ร่วมสมัยและส่วนขยายของแนวคิดในการชะลอรายละเอียดอัลกอริทึมบางอย่าง ตารางของ functors (function pointers) ใน C หรือ polymorphism ใน C ++, Java หรือ Python เป็นตัวอย่างดั้งเดิมอื่น ๆ

การคำนวณแบบไดนามิกใช้เวลาที่เป็นนามธรรมต่อไป ส่วนใหญ่จะไม่ตรงตามข้อกำหนดการคำนวณและความสัมพันธ์ระหว่างเวลาทั้งหมด ลักษณะทั่วไปที่ครอบคลุมนี้จะขยายความเป็นไปได้ของการปรับเปลี่ยนการทำงานในขณะใช้งาน

การแสดงกราฟโดยตรงของการคำนวณ

นั่นคือสิ่งที่โมเดลการคำนวณแบบไดนามิกคือ ตอนนี้สำหรับส่วนกราฟ

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

โชคดีที่อัลกอริทึมใดก็ได้ จำกัด ขอบเขตสามารถถูกแสดงเป็นกราฟโดยตรงของการพึ่งพาระหว่างการดำเนินการที่ระบุ ในกราฟดังกล่าวจุดยอด (มักแสดงเป็นโหนดของรูปร่างต่าง ๆ เมื่อแสดง) แสดงการดำเนินการกับข้อมูลและขอบ (มักแสดงเป็นลูกศรเมื่อแสดง) เป็นการแสดงข้อมูลดิจิตอลที่เกิดจากการดำเนินการบางอย่าง (หรืออินพุตของระบบ) และการดำเนินการอื่น ๆ (หรือเอาท์พุทของระบบ) ขึ้นอยู่กับ

โปรดทราบว่ากราฟกำกับไม่ได้เป็นอัลกอริธึม (ในการระบุลำดับการดำเนินการที่แม่นยำ) หรือการประกาศ (ในข้อมูลนั้นสามารถจัดเก็บและวนรอบอย่างชัดเจนกิ่งก้านฟังก์ชั่นและโมดูลอาจถูกกำหนดและซ้อนกัน)

กรอบและกราฟ Dynamic Computational กราฟเหล่านี้ส่วนใหญ่อนุญาตให้ส่วนประกอบทำการคำนวณบนอินพุตคอมโพเนนต์ที่สนับสนุนการเรียนรู้ของเครื่อง จุดยอดในกราฟกำกับสามารถจำลองแบบของเซลล์ประสาทเพื่อสร้างโครงข่ายประสาทหรือส่วนประกอบที่รองรับแคลคูลัสต่างกัน กรอบเหล่านี้นำเสนอความเป็นไปได้ของการสร้างที่สามารถใช้สำหรับการเรียนรู้ลึกในความหมายทั่วไปมากขึ้น

ในบริบทของประวัติคอมพิวเตอร์

อีกครั้งไม่มีอะไรพูดถึงตอนนี้เป็นเรื่องใหม่สำหรับวิทยาการคอมพิวเตอร์ LISP อนุญาตให้ schematics การคำนวณได้รับการแก้ไขโดยอัลกอริทึมอื่น และขนาดและความกว้างของสัญญาณอินพุตทั่วไปถูกสร้างขึ้นในอินเทอร์เฟซแบบ plug-and-play และโปรโตคอลที่ยาวนาน แนวคิดของกรอบการเรียนรู้ย้อนกลับไปในช่วงกลางศตวรรษที่ยี่สิบเหมือนกันเช่นกัน

สิ่งใหม่และได้รับความนิยมคือการรวมคุณสมบัติเฉพาะและชุดคำศัพท์ที่เกี่ยวข้องการรวมคำศัพท์ที่มีอยู่สำหรับแต่ละคุณสมบัตินำไปสู่ฐานที่กว้างขึ้นเพื่อความเข้าใจโดยผู้ที่ศึกษาและทำงานในอุตสาหกรรมซอฟต์แวร์แล้ว .

  • API (อินเตอร์เฟส) รสชาติร่วมสมัย
  • การวางแนววัตถุ
  • การสนับสนุนเทนเซอร์แบบแยก
  • กราฟกำกับที่เป็นนามธรรม
  • การทำงานร่วมกันกับภาษาและแพ็คเกจยอดนิยมที่รองรับข้อมูลขนาดใหญ่การขุดข้อมูลการเรียนรู้ของเครื่องและการวิเคราะห์ทางสถิติ
  • สนับสนุนการสร้างโครงข่ายประสาทเทียมโดยพลการและเป็นระบบ
  • ความเป็นไปได้ของการปรับโครงสร้างเครือข่ายประสาทแบบไดนามิก (ซึ่งอำนวยความสะดวกในการทดลองเกี่ยวกับพลาสติกปั้น)

เฟรมเวิร์กจำนวนมากเหล่านี้รองรับความสามารถในการปรับตัวเพื่อเปลี่ยนมิติข้อมูลเข้า (จำนวนมิติและช่วงของแต่ละมิติ)

ความคล้ายคลึงกับต้นไม้สัญลักษณ์นามธรรมในคอมไพเลอร์

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

การไหลของข้อมูลเป็นเพียงชุดของการพึ่งพาระหว่างการดำเนินการซึ่งจะต้องมีอยู่ใน AST สำหรับ AST เพื่อใช้ในการสร้างคำสั่งการดำเนินการในแอสเซมเบลอร์หรือรหัสเครื่องจักรที่ตามขั้นตอนวิธีที่ระบุในซอร์สโค้ดอย่างแม่นยำ

เฟรมเวิร์กกราฟการคำนวณแบบไดนามิกซึ่งแตกต่างจากคำสั่ง switch-case หรือโมเดล AST ในคอมไพเลอร์สามารถปรับเปลี่ยนแบบเรียลไทม์, ปรับ, ปรับแต่ง (เช่นในกรณีของตาข่ายพลาสติกเทียม), inverted, เปลี่ยนแปลงโดยเทนเซอร์, decimated, ดัดแปลงเพื่อเพิ่มหรือลบ เอนโทรปีกลายพันธุ์ตามชุดของกฎหรือแปลเป็นรูปแบบอนุพันธ์ พวกเขาสามารถเก็บไว้เป็นไฟล์หรือสตรีมแล้วดึงจากพวกเขา

นี่เป็นแนวคิดที่ไม่สำคัญสำหรับโปรแกรมเมอร์ LISP หรือผู้ที่เข้าใจธรรมชาติของคำแนะนำของ John von Neumann ในการจัดเก็บข้อมูลการปฏิบัติงานเป็นข้อมูล ในความหมายนี้โปรแกรมจะส่งกระแสข้อมูลไปยังผู้สอนผ่านคอมไพเลอร์และระบบปฏิบัติการซึ่งเป็นระบบการคำนวณแบบไดนามิกที่ใช้ในวงจรดิจิตอล VLSI

บรรลุมิติและความสามารถในการปรับตัว

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

ต้องกำหนดส่วนต่อประสานระหว่าง DCG และส่วนประกอบอื่น ๆ ของระบบโดยรวม แต่ส่วนต่อประสานเหล่านี้อาจมีมิติข้อมูลแบบไดนามิกหรือตัวเลขในตัว มันเป็นเรื่องของนามธรรม

ตัวอย่างเช่นประเภทวัตถุเทนเซอร์ไม่ต่อเนื่องนำเสนออินเทอร์เฟซซอฟต์แวร์ที่เฉพาะเจาะจง แต่เทนเซอร์เป็นแนวคิดทางคณิตศาสตร์แบบไดนามิกซึ่งสามารถใช้อินเตอร์เฟซทั่วไป เมตริกซ์ที่ไม่ต่อเนื่องอาจเป็นสเกลาร์เวกเตอร์เมทริกซ์คิวบ์หรือไฮเปอร์คิวบ์และช่วงของตัวแปรตามสำหรับแต่ละมิติอาจเป็นตัวแปร

อาจเป็นได้ว่าปริมาณของโหนดในเลเยอร์ของระบบที่กำหนดไว้ใน Dynamic Computational Graph สามารถเป็นฟังก์ชันของจำนวนอินพุตของชนิดเฉพาะและสามารถคำนวณเวลาที่เลื่อนออกไปได้

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

อะไรคือคุณสมบัติของกรอบการทำงานเพื่อสนับสนุนกราฟการคำนวณแบบไดนามิก

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

หากข้อมูลจำเพาะของอัลกอริทึมไม่ได้ถูกเลื่อนออกไปจนกว่าจะถึงเวลารันไทม์ แต่ถูกรวบรวมไว้ในไฟล์ปฏิบัติการที่ออกแบบมาสำหรับระบบปฏิบัติการเฉพาะโดยมีความยืดหยุ่นแบบดั้งเดิมที่ให้บริการโดยภาษาระดับต่ำเช่น if-then-else, switch-case, polymorphism ฟังก์ชั่นและสตริงความยาวผันแปรมันถือเป็นอัลกอริทึมแบบคงที่

หากการดำเนินการการพึ่งพาระหว่างกันการไหลของข้อมูลมิติของข้อมูลภายในการไหลและความสามารถในการปรับตัวของระบบกับการป้อนค่าตัวเลขและมิติเป็นตัวแปรทั้งหมดในเวลาทำงานในวิธีการสร้างระบบการปรับตัวสูง ดังนั้นอัลกอริทึมจึงเป็นแบบไดนามิกในรูปแบบเหล่านี้

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

ควรใช้กราฟการคำนวณแบบไดนามิกเมื่อใด

ข้อดีและข้อเสียของ DCG นั้นเป็นปัญหาเฉพาะทั้งหมด หากคุณตรวจสอบแนวคิดการเขียนโปรแกรมแบบไดนามิกต่างๆด้านบนและอื่น ๆ ที่อาจเชื่อมโยงกับพวกเขาอย่างใกล้ชิดในวรรณกรรมที่เกี่ยวข้องมันจะกลายเป็นที่ชัดเจนว่าคุณต้องการกราฟการคำนวณแบบไดนามิกหรือไม่

โดยทั่วไปหากคุณต้องการแสดงรูปแบบการคำนวณแบบสุ่มและเปลี่ยนแปลงเพื่ออำนวยความสะดวกในการใช้งานระบบการเรียนรู้ลึกระบบการจัดการทางคณิตศาสตร์ระบบการปรับตัวหรือโครงสร้างซอฟต์แวร์ที่มีความยืดหยุ่นและซับซ้อนอื่น ๆ ที่เชื่อมโยงกระบวนทัศน์ DCG ได้ดี ของแนวคิดโดยใช้เฟรมเวิร์กกราฟ Computatonal กราฟเป็นขั้นตอนแรกที่ดีในการกำหนดสถาปัตยกรรมซอฟต์แวร์ของคุณสำหรับการแก้ปัญหา

ไม่ใช่ซอฟต์แวร์การเรียนรู้ทั้งหมดที่ใช้ DCG แต่มักจะเป็นตัวเลือกที่ดีเมื่อการจัดการอย่างเป็นระบบและต่อเนื่องของโครงสร้างการคำนวณโดยพลการนั้นเป็นข้อกำหนดของเวลาทำงาน


" PyTorch เป็นการรวมกันของเฟรมเวิร์ก Torch สำหรับภาษา Python " - ฉันคิดว่าคำสั่งนี้อาจตีความผิดเนื่องจาก " PyTorch เป็นไลบรารีของ wrapper สำหรับ Framework Torch สำหรับภาษา Python " ซึ่งจะเป็นข้อความเท็จ คุณควรจะเรียบเรียงมันใหม่
nbro

"ด้วยกรอบ Dynamic Computational Graph ซึ่งแตกต่างจากคำสั่ง switch-case หรือโมเดล AST ระดับกลางในคอมไพเลอร์เราสามารถจัดการการดำเนินการ " ... " แปลพวกเขา " - คุณหมายถึงอะไรโดย "การแปล"
nbro

1

ในระยะสั้นกราฟการคำนวณแบบไดนามิกสามารถแก้ปัญหาบางอย่างที่คงที่ไม่สามารถหรือไม่มีประสิทธิภาพเนื่องจากไม่อนุญาตให้มีการฝึกอบรมเป็นชุด

โดยเฉพาะอย่างยิ่งการฝึกอบรมเครือข่ายประสาทที่ทันสมัยมักจะทำแบบแบตช์เช่นการประมวลผลข้อมูลมากกว่าหนึ่งครั้ง นักวิจัยบางคนเลือกขนาดแบทช์เช่น 32, 128 ในขณะที่บางคนใช้ขนาดแบทช์มากกว่า 10,000 การฝึกอบรมอินสแตนซ์เดี่ยวมักจะช้ามากเพราะไม่สามารถได้รับประโยชน์จากการขนานของฮาร์ดแวร์

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

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


0

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

แต่เครือข่ายประสาทบางแห่งอาจมีกราฟการคำนวณที่แตกต่างกันสำหรับแต่ละอินพุต สิ่งนี้ทำให้เกิดปัญหาบางอย่าง (ความยากในการแบตช์, การสร้างกราฟมีราคาแพง) และด้วยเหตุนี้เครือข่ายเหล่านี้จึงใช้งานยาก

กระดาษที่คุณเชื่อมโยงเอาชนะปัญหานี้โดยเสนอวิธีการที่สามารถแบทช์กราฟการคำนวณจำนวนมากเป็นหนึ่งเดียว จากนั้นเราสามารถทำเทคนิค NN ตามปกติของเรา

ประโยชน์คือการเร่งความเร็วซึ่งจูงใจนักวิจัยให้สำรวจโครงสร้างที่แตกต่างและมีความคิดสร้างสรรค์มากขึ้น

ข้อได้เปรียบของกราฟการคำนวณแบบไดนามิกดูเหมือนจะรวมถึงความสามารถในการปรับให้เข้ากับปริมาณที่แตกต่างกันในข้อมูลอินพุต ดูเหมือนว่าอาจมีการเลือกจำนวนชั้นโดยอัตโนมัติจำนวนเซลล์ประสาทในแต่ละชั้นฟังก์ชั่นการเปิดใช้งานและพารามิเตอร์ NN อื่น ๆ ขึ้นอยู่กับแต่ละอินสแตนซ์ชุดอินพุตในระหว่างการฝึกอบรม นี่เป็นลักษณะที่ถูกต้องหรือไม่?

สิ่งนี้ไม่ถูกต้อง


0

กราฟการคำนวณแบบไดนามิกเป็น CGs ที่ได้รับการแก้ไขเพียงอย่างเดียวพร้อมด้วยระดับนามธรรมที่สูงขึ้น คำว่า 'ไดนามิก' อธิบายทุกอย่าง: ข้อมูลไหลผ่านกราฟอย่างไรขึ้นอยู่กับโครงสร้างอินพุตเช่นโครงสร้าง DCG นั้นไม่แน่นอนและไม่คงที่ แอปพลิเคชั่นที่สำคัญอย่างหนึ่งของมันคือ NLP Neural Networks

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