โครงข่ายประสาทเทียม: การแก้ปัญหา วิถีสมองของมนุษย์

ส่วนที่ 2/3: ข้อมูลเบื้องต้นเกี่ยวกับ AI, ML และตอนนี้คือ Deep Learning

ในบทความก่อนหน้านี้ ฉันได้กล่าวถึงความอัศจรรย์มากมายเกี่ยวกับวิธีการทำงานของสมองของเรา รวมถึงความที่สมองของเราสามารถอ่านตัวเลขที่เขียนด้วยลายมือได้อย่างง่ายดายเพียงใด:

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

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

เรารักษาสภาพที่เป็นอยู่จนกระทั่งมีคนคิดว่า "เฮ้ ถ้าเราเลียนแบบกระบวนการคิดของสมองมนุษย์ล่ะ?"

และเช่นเดียวกัน แนวคิดเรื่องโครงข่ายประสาทเทียมก็ถือกำเนิดขึ้น

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

หลักการสำคัญเบื้องหลังโครงข่ายประสาทเทียมคือการจำลองสิ่งนี้เพื่อให้ได้ผลลัพธ์ที่คล้ายคลึงกัน เราแสวงหาแรงบันดาลใจจากชีววิทยาของเราเพื่อสร้างเทคนิค AI/ML ที่ดีขึ้น

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

นี่คือโครงข่ายประสาทเทียม:

โครงข่ายประสาทเทียมนี้ใช้เพื่อระบุรูปภาพของตัวเลขที่เขียนด้วยลายมือเป็นตัวเลขที่เป็นตัวแทน มันมี 4 ชั้นให้ทำ ชั้นที่ 1 เรียกว่า ชั้นอินพุต ชั้นที่ 2 และ 3 เรียกว่า ชั้นซ่อนเร้น และชั้นที่ 4 เรียกว่า ชั้นเอาท์พุต

อินพุตของเราจะมีลักษณะดังนี้:

นี่คือรูปภาพตัวเลขขนาด 28x28 พิกเซล วัตถุประสงค์ของโครงข่ายประสาทเทียมคือการระบุสิ่งนี้ให้เป็น 7 อย่างถูกต้อง

เอาล่ะ เราป้อนมันเข้าไปในโครงข่ายประสาทเทียม ตอนนี้อะไร?

เลเยอร์แรกประกอบด้วยเซลล์ประสาท 784 เซลล์ ซึ่งสอดคล้องกับแต่ละพิกเซลที่พบในภาพ เซลล์ประสาทแต่ละอันมีค่าระหว่าง 0 ถึง 1 ซึ่งแสดงถึงค่าระดับสีเทาของแต่ละพิกเซล ค่านี้เรียกว่าการเปิดใช้งาน

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

เลเยอร์ที่ซ่อนอยู่นั้นเป็นสิ่งที่ใช้เวทย์มนตร์ได้จริงๆ

การตั้งค่าปิด: การรับจากอินพุตไปยังเอาต์พุต

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

การเปิดใช้งานบนเลเยอร์ที่สองจะขึ้นอยู่กับ 3 สิ่ง:

  • การเปิดใช้งานชั้นแรก
  • น้ำหนัก
  • อคติ

ตุ้มน้ำหนัก

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

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

จากความช่วยเหลือของตัวอย่างข้างต้น จะเห็นได้ชัดว่าน้ำหนักบอกเราว่าการเชื่อมต่อแต่ละอย่างมีความสำคัญมากเพียงใด

ดังนั้น ในการคำนวณการกระตุ้นการทำงานของเซลล์ประสาทในชั้นที่สอง อันดับแรกเราจะพิจารณาการเปิดใช้งานของชั้นแรกและน้ำหนักด้วย เราคำนวณผลรวมถ่วงน้ำหนักของการเปิดใช้งานในเลเยอร์แรก (เช่น ΣWₙAₙ)

อคติ

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

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

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

สิ่งที่เราต้องการทำที่นี่คือ "บีบอัด" ค่าให้อยู่ในช่วง 0 และ 1 ในการดำเนินการดังกล่าว เราอาจใช้ฟังก์ชันที่แตกต่างกัน เช่น ฟังก์ชัน sigmoid หรือ ReLu

การเปิดใช้งานครั้งสุดท้ายของเราจะเป็น:

สิ่งสำคัญที่ควรทราบก็คือ ในตอนแรก น้ำหนักและความลำเอียงจะใช้กับค่าสุ่ม

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

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

ไม่ได้หมายความว่าผลลัพธ์สุดท้ายจะถูกต้อง...

โครงข่ายประสาทเทียมเรียนรู้อย่างไร

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

เราป้อนรูปภาพจำนวน 1,000 ภาพให้กับโครงข่ายประสาทเทียมด้วยป้ายกำกับ (จำนวนที่สอดคล้องกัน) และจะปรับน้ำหนักและอคติตามความคิดเห็นที่ได้รับ

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

เพื่อประเมินว่าโมเดลทำงานได้ดีเพียงใด เรากำหนด ฟังก์ชันต้นทุน

ฟังก์ชันต้นทุนเป็นหลักวิธีการพูดว่า "คุณห่วย คุณช่างโง่เขลา ahh machine" เป็นการประเมินประสิทธิภาพของโมเดล และความแตกต่างในมูลค่าของมันบอกเรามากมายเกี่ยวกับการปรับปรุงของมัน

มีหลายวิธีที่ใช้ในการกำหนดฟังก์ชันต้นทุน แต่วิธีหนึ่งที่ใช้บ่อยที่สุดคือ Mean Squared Error (MSE) ในวิธีนี้ เราจะเปรียบเทียบค่าของมูลค่าการเปิดใช้งานจริงกับมูลค่าการเปิดใช้งานที่ถูกต้อง/ที่คาดไว้

C(w,b)=
Σ(มูลค่าการเปิดใช้งานจริง — มูลค่าการเปิดใช้งานที่คาดหวัง/ถูกต้อง)²/n

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

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

เราสามารถเริ่มต้นด้วยการจินตนาการว่า C เป็นฟังก์ชันของตัวแปร 2 ตัว

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

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

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

ในกรณีนั้น เราจะหาค่านี้แล้วก้าวไปในทิศทางนั้นแล้วทำซ้ำ สิ่งนี้เรียกว่า การไล่ระดับสี

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

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

Backpropagation เป็นอัลกอริธึมที่ใช้การไล่ระดับสีเพื่อปรับน้ำหนักอย่างละเอียดเพื่อลดฟังก์ชันต้นทุนให้เหลือน้อยที่สุดในท้องถิ่น

ตามชื่อที่แสดง ที่นี่ เราทำงานแบบย้อนกลับ เราเริ่มต้นด้วยเลเยอร์เอาท์พุตและดูแต่ละโหนด เราติดตามช่องว่างระหว่างค่าที่คาดหวังและมูลค่าจริง — จดการปรับปรุงที่เราต้องการเห็นในโหนดเอาต์พุต โดยพื้นฐานแล้วจะแปลเป็นการปรับเปลี่ยนน้ำหนัก อคติ และการเปิดใช้งานเลเยอร์ก่อนหน้า ทำให้เราเห็นรายการการเปลี่ยนแปลงที่เราต้องการในเลเยอร์ (n-1)

เราทำซ้ำขั้นตอนเดียวกันโดยเลื่อนถอยหลังจากชั้นที่ 3 ไปเป็นชั้นที่ 2 ดำเนินการหลายตัวอย่างและนำค่าเฉลี่ยมา ค่านี้เป็นสัดส่วนกับการไล่ระดับลง

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

สวัสดี 👋 ฉันชื่อราเนีย นักเคลื่อนไหวอายุ 16 ปีจาก Knowledge Society ฉันเป็นนักวิจัยด้านอาหารในอนาคตที่เน้นเกษตรกรรมไร้เซลล์ ปัจจุบัน ฉันกำลังเริ่มสนใจการใช้ปัญญาประดิษฐ์เพื่อการศึกษา ฉันพร้อมเสมอที่จะเรียนรู้ เติบโต และสร้างแรงบันดาลใจ ฉันชอบที่จะเชื่อมต่อ ติดต่อฉันทางโซเชียลมีเดียและมาเป็นเพื่อนกันเถอะ!