เครื่องกำเนิดไฟฟ้า

ส่วน Generator ของ GAN จะเรียนรู้ในการสร้างข้อมูลปลอมโดยรวมความคิดเห็นที่ได้รับจาก Discriminator โดยจะเรียนรู้เพื่อทําให้ตัวแยกแยะจัดประเภทเอาต์พุตเป็น "จริง"

การฝึกอบรม Generatior ต้องมีการผสานรวมระหว่าง Generator กับตัวแบ่งที่แน่นหนากว่าการฝึกอบรมตัวแบ่ง ส่วนหนึ่งของ GAN ที่ใช้ฝึก Generative มีดังนี้

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

แผนภาพ Generative Adversarial Network ที่ตรงกลางของแผนภาพคือกล่องที่มีป้ายกำกับว่า "ตัวแยกแยะ" สายไฟ 2 เส้นมายังกล่องนี้จากทางซ้าย  กิ่งด้านบนเริ่มต้นที่ด้านซ้ายบนของแผนภาพโดยมีช่องที่มีป้ายกำกับว่า "รูปภาพในโลกแห่งความเป็นจริง" ลูกศรที่นําจากทรงกระบอกนี้ไปยังกล่องที่มีป้ายกำกับว่า "ตัวอย่าง" ลูกศรจากช่องที่มีป้ายกำกับ "ตัวอย่าง" ไปยังช่อง "ตัวแยก" กิ่งด้านล่างจะส่งไปยังช่อง "ตัวแยกแยะ" โดยเริ่มจากช่องที่มีป้ายกำกับว่า "อินพุตแบบสุ่ม" รูปลูกศรที่ลากจากช่อง "อินพุตแบบสุ่ม" ไปยังช่องที่มีป้ายกำกับว่า "Generator" รูปลูกศรที่ลากจากช่อง "Generator" ไปยังช่อง "Sample" ที่ 2 ลูกศรที่นําจากช่อง "ตัวอย่าง" ไปยังช่อง "ตัวแยกแยะ" ทางด้านขวาของช่อง "ตัวแยกแยะ" จะมีลูกศร 2 เส้นที่ไปยังช่อง 2 ช่องทางด้านขวาของแผนภาพ ลูกศร 1 เส้นนําไปยังกล่องที่มีป้ายกำกับว่า "Discriminator loss" ส่วนลูกศรอีกอันจะนำไปยังช่องที่มีป้ายกำกับว่า "การสูญเสียของเครื่องยนต์" กล่องสีเหลืองที่ติดป้ายกำกับด้วยลูกศรชี้ซ้ายและคำว่า "Backpropagation" วาดอยู่รอบกล่อง "Random Input", กล่อง "Generator", กล่อง "Sample" ด้านล่าง, กล่อง "Discriminator", กล่องที่ติดป้ายกำกับว่า "จริง" และ "ปลอม" และกล่อง "Generator Loss" เพื่อระบุว่า Backpropagation ทำงานกับส่วนของระบบที่อยู่ในกล่องสีเหลือง

รูปที่ 1: การย้อนกลับในการฝึกโมเดล Generative

อินพุตแบบสุ่ม

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

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

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

การใช้ตัวแยกแยะเพื่อฝึก Generative

ในการฝึกอบรมเครือข่ายประสาท เราจะเปลี่ยนแปลงน้ำหนักของเครือข่ายเพื่อลดข้อผิดพลาดหรือการสูญเสียของเอาต์พุต อย่างไรก็ตาม ใน GAN ของเรา ตัวสร้างไม่ได้เชื่อมต่อโดยตรงกับ loss ที่เราพยายามจะส่งผล ข้อมูลของ Generator จะส่งไปยังเครือข่าย Discriminator และ Discriminator จะสร้างเอาต์พุตที่เราพยายามที่จะเปลี่ยนแปลง Loss ของ Generator จะลงโทษ Generator สำหรับการสร้างตัวอย่างที่เครือข่ายตัวแยกแยะจัดประเภทว่าเป็นของปลอม

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

ในขณะเดียวกัน เราไม่ต้องการให้ตัวแยกแยะเปลี่ยนแปลงระหว่างการฝึก Generator การพยายามยิงเป้าหมายที่เคลื่อนไหวจะทำให้ปัญหาที่ยากอยู่แล้วยากขึ้นไปอีกสำหรับเครื่องมือสร้าง

เราจึงฝึก Generator ด้วยขั้นตอนต่อไปนี้

  1. ตัวอย่างเสียงรบกวนแบบสุ่ม
  2. สร้างเอาต์พุตจากเสียงรบกวนแบบสุ่มที่บันทึกไว้
  3. รับการแยกประเภท "จริง" หรือ "ปลอม" ของตัวแยกแยะสำหรับเอาต์พุตของ Generative Adversarial Networks (GAN)
  4. คํานวณการสูญเสียจากการแยกประเภทตัวแบ่ง
  5. ย้อนกลับผ่านทั้งตัวแบ่งและตัวสร้างเพื่อรับอนุพันธ์
  6. ใช้การไล่ระดับเพื่อเปลี่ยนเฉพาะน้ำหนักของ Generator

นี่เป็นการฝึกซ้ำ 1 ครั้งของ Generator ในส่วนถัดไป เราจะดูวิธีฝึกทั้งตัวสร้างและตัวแยกแยะ