โครงข่ายระบบประสาทเทียม: ฟังก์ชันการเปิดใช้งาน

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

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

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

เราสามารถใช้หลักการเดียวกันนี้กับโครงข่ายประสาทของเรา เรามาดูโมเดลของเราอีกครั้งกัน จากแบบฝึกหัด 2 ก่อนหน้านี้ แต่ครั้งนี้ แสดงผลค่าของแต่ละโหนดก่อน เราจะใช้ฟังก์ชัน sigmoid ก่อน

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

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

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

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

ฟังก์ชันทางคณิตศาสตร์ 3 รายการที่มักใช้เป็นฟังก์ชันเปิดใช้งานคือ sigmoid, tanh และ ReLU

ฟังก์ชัน sigmoid (ที่กล่าวถึงข้างต้น) จะเปลี่ยนรูปแบบต่อไปนี้กับอินพุต $x$ โดยสร้างค่าเอาต์พุตระหว่าง 0 ถึง 1

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

ต่อไปนี้คือพล็อตของฟังก์ชันนี้

วันที่ รูปที่ 4 พล็อตฟังก์ชันซิกมอยด์ เป็นเส้นโค้งรูปตัว S ที่
      เข้าใกล้แกน x อย่างไม่เป็นธรรมชาติเมื่อ x เข้าใกล้จุดลบ
      ค่าอนันต์ และ 1 เมื่อ x เข้าใกล้ค่าอนันต์
รูปที่ 4 พล็อตฟังก์ชัน sigmoid

ฟังก์ชัน tanh (ย่อมาจาก "ไฮเปอร์โบลิก แทนเจนต์") จะแปลงอินพุต $x$ เป็น จะให้ค่าเอาต์พุตระหว่าง –1 ถึง 1

\[F(x)=tanh(x)\]

ต่อไปนี้คือพล็อตของฟังก์ชันนี้

วันที่ รูปที่ 5 พล็อตฟังก์ชัน Tanh: เล็กน้อย
      เส้นโค้งรูปตัว S ที่ชันกว่าฟังก์ชันซิกมอยด์ ซึ่งไม่มีความหมาย
      ใกล้ -1 เมื่อ x เข้าใกล้อินฟินิตี้ลบ และ 1 เมื่อ x เข้าใกล้
      ไม่รู้จบ
รูปที่ 5 พล็อตฟังก์ชัน Tanh

ฟังก์ชันเปิดใช้งานหน่วยเชิงเส้นแบบแผ่นพับ (หรือ ReLU สำหรับ (แบบย่อ) แปลงผลลัพธ์โดยใช้อัลกอริทึมต่อไปนี้

  • หากค่าที่ป้อน $x$ น้อยกว่า 0 ให้แสดงค่า 0
  • หากค่าอินพุต $x$ มากกว่าหรือเท่ากับ 0 ให้แสดงค่าอินพุต

ReLU สามารถแสดงด้วยคณิตศาสตร์โดยใช้ฟังก์ชัน max() ดังนี้

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

ต่อไปนี้คือพล็อตของฟังก์ชันนี้

วันที่ รูปที่ 6 พล็อตของฟังก์ชัน ReLU: เส้นแนวนอน
      ตามแกน x จากอินฟินิตี้ลบจนถึง 0 ซึ่งจะกลายเป็นเส้นทแยงมุม
      ขึ้นและไปทางขวา โดยมีความชัน 1 (y=x) จาก 0 ถึงค่าอนันต์
รูปที่ 6 พล็อตฟังก์ชัน ReLU

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

ฟังก์ชันการเปิดใช้งานอื่นๆ

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

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

Keras มอบการสนับสนุนที่พร้อมใช้งานทันทีสำหรับ ฟังก์ชันการเปิดใช้งาน อย่างไรก็ดี เรายังคงแนะนำให้คุณเริ่มต้นด้วย ReLU

สรุป

วิดีโอต่อไปนี้จะแสดงสรุปของทุกสิ่งที่คุณได้เรียนรู้จนถึงตอนนี้ เกี่ยวกับวิธีการสร้างโครงข่ายประสาท

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

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

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