เครือข่ายระบบประสาท: โครงสร้าง

หากคุณจําได้จากหน่วยฟีเจอร์ครอส ปัญหาการแยกประเภทต่อไปนี้จะไม่เป็นเชิงเส้น

โครงเรื่องคาร์ทีเซียน แกน x แบบดั้งเดิมมีป้ายกํากับเป็น 'x1' แกน Y แบบดั้งเดิมมีป้ายกํากับเป็น 'x2' จุดสีน้ําเงินอยู่บนพื้นที่สี่ทิศตะวันตกเฉียงเหนือและตะวันออกเฉียงใต้ จุดสีเหลืองคือหนึ่งในสี่ส่วนของทิศตะวันตกเฉียงใต้และตะวันออกเฉียงเหนือ

รูปที่ 1 โจทย์การจัดประเภทที่ไม่ใช่แบบเชิงเส้น

"NonDNS" หมายความว่าคุณไม่สามารถคาดการณ์ป้ายกํากับด้วยโมเดลของฟอร์มได้อย่างแม่นยํา \(b + w_1x_1 + w_2x_2\) ก่อนหน้านี้ เราพูดถึงไม้กางเขนฟีเจอร์ ว่าเป็นวิธีการหนึ่งที่เป็นไปได้ในการประมาณปัญหาที่ไม่ใช่แบบเชิงเส้น

ตอนนี้ ให้พิจารณาชุดข้อมูลต่อไปนี้

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

รูปที่ 2 โจทย์การจัดประเภทที่ไม่ใช่แบบเชิงเส้นที่ยากขึ้น

ชุดข้อมูลที่แสดงในรูปที่ 2 จะแก้ด้วยรูปแบบเชิงเส้นไม่ได้

หากต้องการดูว่าโครงข่ายระบบประสาทเทียมจะช่วยแก้ปัญหาที่ไม่เกี่ยวข้องกับเส้นตรงได้อย่างไร เรามาเริ่มต้นด้วยการแสดงรูปแบบเชิงเส้นเป็นกราฟกัน

วงกลมสีน้ําเงิน 3 วงในแถวที่เชื่อมต่อกันด้วยลูกศรเป็นวงกลมสีเขียว

รูปที่ 3 รูปแบบเชิงเส้นเป็นกราฟ

วงกลมสีฟ้าแต่ละวงแสดงถึงฟีเจอร์อินพุต และวงกลมสีเขียวหมายถึงผลรวมของอินพุตที่ถ่วงน้ําหนัก

เราจะเปลี่ยนรูปแบบนี้เพื่อปรับปรุงความสามารถในการจัดการปัญหาที่ไม่ใช่แบบเชิงเส้นได้อย่างไร

เลเยอร์ที่ซ่อนอยู่

ในรูปแบบที่แสดงในกราฟต่อไปนี้ เราได้เพิ่ม"ซ่อนเลเยอร์" ของค่ากลาง โหนดสีเหลืองแต่ละโหนดในเลเยอร์ที่ซ่อนอยู่คือผลรวมที่ถ่วงน้ําหนักของค่าโหนดอินพุตสีน้ําเงิน เอาต์พุตคือผลรวมที่ถ่วงน้ําหนักของโหนดสีเหลือง

วงกลมสีน้ําเงิน 3 วงในแถวที่ติดป้ายกํากับ

รูปที่ 4 กราฟของโมเดล 2 ชั้น

โมเดลนี้เป็นแบบเชิงเส้นหรือไม่ ใช่ เอาต์พุตยังคงเป็นอินพุตเชิงเส้นของอินพุต

ในรูปแบบที่แสดงโดยกราฟต่อไปนี้ เราได้เพิ่ม ผลรวมของน้ําหนักที่ถ่วงน้ําหนักชั้นที่ 2 ที่ซ่อนอยู่

วงกลมสีน้ําเงิน 3 วงในแถวที่ติดป้ายกํากับ

รูปที่ 5 กราฟของโมเดล 3 ชั้น

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

ฟังก์ชันการเปิดใช้งาน

ในการประมาณปัญหาที่ไม่ใช่แบบเชิงเส้น เราแนะนําเนื้อหาที่ไม่เป็นเชิงเส้นโดยตรง เราสามารถวางโหนดเลเยอร์ที่ซ่อนอยู่แต่ละรายการผ่านฟังก์ชันที่ไม่ใช่เชิงเส้น

ในรูปแบบที่แสดงโดยกราฟต่อไปนี้ ค่าของแต่ละโหนดในเลเยอร์ที่ซ่อนอยู่ 1 จะถูกเปลี่ยนรูปแบบโดยฟังก์ชันที่ไม่ใช่เชิงเส้นก่อนที่จะส่งต่อไปยังผลรวมของการถ่วงน้ําหนักของเลเยอร์ถัดไป ฟังก์ชันที่ไม่ใช่เชิงเส้นเรียกว่า ฟังก์ชันการเปิดใช้งาน

เหมือนกันกับภาพก่อนหน้า ยกเว้นแถววงกลมสีชมพูที่ติดป้ายกํากับ 'เลเยอร์การเปลี่ยนรูปแบบเชิงเส้น&#39 ได้ถูกเพิ่มไว้ระหว่างเลเยอร์ที่ซ่อนอยู่ทั้งสองชั้น

รูปที่ 6 กราฟของโมเดล 3 ชั้นที่มีฟังก์ชันการเปิดใช้งาน

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

ฟังก์ชันการเปิดใช้งานทั่วไป

ฟังก์ชันการเปิดใช้งาน sigmoid ต่อไปนี้จะแปลงผลรวมแบบถ่วงน้ําหนักเป็นค่าระหว่าง 0 ถึง 1

$$F(x)=\frac{1} {1+e^{-x}}$$

โครงเรื่องมีดังนี้

ฟังก์ชัน Sigmoid

รูปที่ 7 ฟังก์ชันการเปิดใช้งาน Sigmoid

ฟังก์ชันการเปิดใช้งานหน่วยเชิงเส้นแบบคงที่ต่อไปนี้ (หรือเรียกสั้นๆ ว่า ReLU) มักทํางานได้ดีกว่าฟังก์ชันการทํางานที่ราบรื่น เช่น sigmoid และในขณะเดียวกันก็คํานวณได้ง่ายกว่า

$$F(x)=max(0,x)$$

ความเหนือกว่าของ ReLU อิงจากผลการศึกษาเชิงผลลัพธ์ซึ่งอาจเกิดขึ้นโดย ReLU และมีช่วงการตอบสนองที่เป็นประโยชน์มากขึ้น การตอบสนองของ Sigmoid' ลดลงอย่างรวดเร็วในทั้งสองฝั่ง

ฟังก์ชันการเปิดใช้งาน ReLU

รูปที่ 8 ฟังก์ชันการเปิดใช้งาน ReLU

ในความเป็นจริง ฟังก์ชันทางคณิตศาสตร์ก็ทําหน้าที่เป็นฟังก์ชันเปิดใช้งานได้เช่นกัน สมมติว่า \(\sigma\) เป็นฟังก์ชันเปิดใช้งาน (Relu, Sigmoid หรืออะไรก็ตาม) ดังนั้น ค่าของโหนดในเครือข่ายจึงกําหนดโดยสูตรต่อไปนี้

$$\sigma(\boldsymbol w \cdot \boldsymbol x+b)$$

TensorFlow ให้การสนับสนุนแบบพร้อมใช้งานทันทีสําหรับฟังก์ชันการเปิดใช้งานมากมาย คุณดูฟังก์ชันการเปิดใช้งานเหล่านี้ได้ใน รายการ Wrapper สําหรับการดําเนินการของโครงข่ายระบบประสาทพื้นฐานของ TensorFlow&#39 อย่างไรก็ตาม เรายังคงแนะนําให้คุณเริ่มต้นด้วย ReLU

สรุป

ตอนนี้โมเดลของเรามีคอมโพเนนต์มาตรฐานทั้งหมดที่ผู้คนมักจะพูดถึง เมื่อพูดว่า "quot;โครงข่ายระบบประสาทเทียม":

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

ข้อควรระวัง: โครงข่ายประสาทไม่ได้มีคุณภาพดีกว่าไม้กางเขนเสมอไป แต่โครงข่ายประสาทมีทางเลือกที่ยืดหยุ่นซึ่งใช้งานได้ดีในหลายๆ กรณี