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

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

วงกลมสีน้ำเงิน 3 วงเรียงต่อกันด้วยลูกศร โดยเป็นวงกลมสีเขียวด้านบน

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

วงกลมสีน้ำเงินแต่ละวงกลมแสดงถึงคุณลักษณะการป้อนข้อมูล และวงกลมสีเขียวแสดงถึง ผลรวมถ่วงน้ำหนักของอินพุต

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

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

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

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

รูปที่ 4 กราฟของโมเดล 2 เลเยอร์

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

ในรูปแบบที่แสดงเป็นกราฟต่อไปนี้ เราได้เพิ่มแท็ก ของผลรวมถ่วงน้ำหนัก

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

รูปที่ 5 กราฟของโมเดล 3 เลเยอร์

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

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

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

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

เหมือนกับรูปก่อนหน้า ยกเว้นแถววงกลมสีชมพูที่มีป้ายกำกับว่า "Non-Linear Transformation Layer" อยู่ระหว่างเลเยอร์ที่ซ่อนอยู่ 2 เลเยอร์

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

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

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

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

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

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

ฟังก์ชันซิกมอยด์

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

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

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

ความเหนือกว่าของ ReLU นั้นอิงตามการค้นพบเชิงประจักษ์ ซึ่งอาจเกิดจาก ReLU มีการตอบสนองที่เป็นประโยชน์มากขึ้น การตอบสนองของซิกมอยด์ตก ดับได้อย่างรวดเร็วทั้ง 2 ฝั่ง

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

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

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

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

สรุป

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

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

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