การเรียนรู้เชิงลึกด้วย Keras - การเรียนรู้เชิงลึก
ดังที่ได้กล่าวไว้ในบทนำการเรียนรู้เชิงลึกเป็นกระบวนการฝึกเครือข่ายประสาทเทียมที่มีข้อมูลจำนวนมาก เมื่อผ่านการฝึกอบรมแล้วเครือข่ายจะสามารถคาดเดาข้อมูลที่มองไม่เห็นได้ ก่อนที่ฉันจะอธิบายเพิ่มเติมว่าการเรียนรู้เชิงลึกคืออะไรให้เราอ่านคำศัพท์บางคำที่ใช้ในการฝึกอบรมเครือข่ายประสาทเทียมอย่างรวดเร็ว
โครงข่ายประสาท
แนวคิดของโครงข่ายประสาทเทียมได้มาจากโครงข่ายประสาทในสมองของเรา โครงข่ายประสาทเทียมโดยทั่วไปประกอบด้วยสามชั้น - อินพุตเอาต์พุตและเลเยอร์ที่ซ่อนอยู่ดังแสดงในภาพด้านล่าง
เรียกอีกอย่างว่าไฟล์ shallowโครงข่ายประสาทเนื่องจากมีเพียงชั้นเดียวที่ซ่อนอยู่ คุณเพิ่มเลเยอร์ที่ซ่อนอยู่ในสถาปัตยกรรมข้างต้นเพื่อสร้างสถาปัตยกรรมที่ซับซ้อนมากขึ้น
เครือข่ายระดับลึก
แผนภาพต่อไปนี้แสดงเครือข่ายระดับลึกซึ่งประกอบด้วยเลเยอร์ที่ซ่อนอยู่สี่ชั้นชั้นอินพุตและชั้นเอาต์พุต
เมื่อเพิ่มจำนวนเลเยอร์ที่ซ่อนอยู่ในเครือข่ายการฝึกอบรมจึงมีความซับซ้อนมากขึ้นในแง่ของทรัพยากรที่จำเป็นและเวลาที่ใช้ในการฝึกอบรมเครือข่ายอย่างเต็มที่
การฝึกอบรมเครือข่าย
หลังจากที่คุณกำหนดสถาปัตยกรรมเครือข่ายแล้วคุณจะฝึกมันเพื่อทำการคาดคะเนบางประเภท การฝึกอบรมเครือข่ายเป็นกระบวนการในการหาน้ำหนักที่เหมาะสมสำหรับแต่ละลิงค์ในเครือข่าย ในระหว่างการฝึกอบรมข้อมูลจะไหลจากชั้นอินพุตไปยังเอาต์พุตผ่านชั้นต่างๆที่ซ่อนอยู่ เนื่องจากข้อมูลเคลื่อนที่ไปในทิศทางเดียวเสมอจากอินพุตไปยังเอาต์พุตเราจึงเรียกเครือข่ายนี้ว่า Feed-forward Network และเราเรียกการแพร่กระจายข้อมูลว่า Forward Propagation
ฟังก์ชั่นการเปิดใช้งาน
ในแต่ละเลเยอร์เราคำนวณผลรวมของอินพุตที่ถ่วงน้ำหนักและป้อนไปยังฟังก์ชันการเปิดใช้งาน ฟังก์ชันการเปิดใช้งานนำความไม่เป็นเชิงเส้นมาสู่เครือข่าย มันเป็นเพียงฟังก์ชันทางคณิตศาสตร์บางอย่างที่แยกผลลัพธ์ออก ฟังก์ชันการกระตุ้นที่ใช้บ่อยที่สุด ได้แก่ sigmoid, hyperbolic, tangent (tanh), ReLU และ Softmax
Backpropagation
Backpropagation เป็นอัลกอริทึมสำหรับการเรียนรู้ภายใต้การดูแล ใน Backpropagation ข้อผิดพลาดจะแพร่กระจายย้อนกลับจากเอาต์พุตไปยังเลเยอร์อินพุต ด้วยฟังก์ชันข้อผิดพลาดเราจะคำนวณการไล่ระดับสีของฟังก์ชันข้อผิดพลาดตามน้ำหนักที่กำหนดในการเชื่อมต่อแต่ละครั้ง การคำนวณการไล่ระดับสีจะดำเนินการย้อนกลับผ่านเครือข่าย การไล่ระดับสีของชั้นสุดท้ายของน้ำหนักจะถูกคำนวณก่อนและการไล่ระดับสีของน้ำหนักชั้นแรกจะถูกคำนวณเป็นอันดับสุดท้าย
ในแต่ละเลเยอร์การคำนวณบางส่วนของการไล่ระดับสีจะถูกใช้ซ้ำในการคำนวณการไล่ระดับสีสำหรับเลเยอร์ก่อนหน้า สิ่งนี้เรียกว่า Gradient Descent
ในบทช่วยสอนตามโครงการนี้คุณจะกำหนดโครงข่ายประสาทส่วนลึกแบบฟีดฟอร์เวิร์ดและฝึกด้วยเทคนิคการย้อนกลับและการไล่ระดับสี โชคดีที่ Keras ให้ API ระดับสูงทั้งหมดแก่เราสำหรับการกำหนดสถาปัตยกรรมเครือข่ายและฝึกอบรมโดยใช้การไล่ระดับสี ต่อไปคุณจะได้เรียนรู้วิธีการทำใน Keras
ระบบจดจำตัวเลขที่เขียนด้วยลายมือ
ในโครงการขนาดเล็กนี้คุณจะใช้เทคนิคที่อธิบายไว้ก่อนหน้านี้ คุณจะสร้างเครือข่ายประสาทเทียมในการเรียนรู้เชิงลึกซึ่งจะได้รับการฝึกฝนให้รู้จักตัวเลขที่เขียนด้วยลายมือ ในโครงการแมชชีนเลิร์นนิงความท้าทายแรกคือการรวบรวมข้อมูล โดยเฉพาะอย่างยิ่งสำหรับเครือข่ายการเรียนรู้เชิงลึกคุณต้องมีข้อมูลมหาศาล โชคดีสำหรับปัญหาที่เรากำลังพยายามแก้ไขมีคนสร้างชุดข้อมูลสำหรับการฝึกอบรมไว้แล้ว สิ่งนี้เรียกว่า mnist ซึ่งเป็นส่วนหนึ่งของไลบรารี Keras ชุดข้อมูลประกอบด้วยภาพตัวเลข 28x28 พิกเซลจำนวนมากที่เขียนด้วยลายมือ คุณจะฝึกโมเดลของคุณในส่วนหลักของชุดข้อมูลนี้และข้อมูลที่เหลือจะถูกใช้เพื่อตรวจสอบโมเดลที่ได้รับการฝึกฝนของคุณ
คำอธิบายโครงการ
mnistชุดข้อมูลประกอบด้วยภาพตัวเลขที่เขียนด้วยลายมือ 70000 ภาพ มีการจำลองภาพตัวอย่างบางส่วนที่นี่เพื่อเป็นข้อมูลอ้างอิงของคุณ
แต่ละภาพมีขนาด 28 x 28 พิกเซลทำให้มีระดับสีเทาทั้งหมด 768 พิกเซล พิกเซลส่วนใหญ่มีแนวโน้มเป็นสีดำในขณะที่มีเพียงไม่กี่พิกเซลเท่านั้นที่เป็นสีขาว เราจะใส่การกระจายของพิกเซลเหล่านี้ในอาร์เรย์หรือเวกเตอร์ ตัวอย่างเช่นการกระจายของพิกเซลสำหรับรูปภาพทั่วไปของตัวเลข 4 และ 5 จะแสดงในรูปด้านล่าง
แต่ละภาพมีขนาด 28 x 28 พิกเซลทำให้มีระดับสีเทาทั้งหมด 768 พิกเซล พิกเซลส่วนใหญ่มีแนวโน้มเป็นสีดำในขณะที่มีเพียงไม่กี่พิกเซลเท่านั้นที่เป็นสีขาว เราจะใส่การกระจายของพิกเซลเหล่านี้ในอาร์เรย์หรือเวกเตอร์ ตัวอย่างเช่นการกระจายของพิกเซลสำหรับรูปภาพทั่วไปของตัวเลข 4 และ 5 จะแสดงในรูปด้านล่าง
คุณจะเห็นได้อย่างชัดเจนว่าการกระจายของพิกเซล (โดยเฉพาะพิกเซลที่พุ่งเข้าหาโทนสีขาว) นั้นแตกต่างกันซึ่งทำให้ตัวเลขที่แสดงนั้นแตกต่างกัน เราจะป้อนการกระจาย 784 พิกเซลนี้ไปยังเครือข่ายของเราเป็นข้อมูลป้อนเข้า ผลลัพธ์ของเครือข่ายจะประกอบด้วย 10 หมวดหมู่ที่แสดงตัวเลขระหว่าง 0 ถึง 9
เครือข่ายของเราจะประกอบด้วย 4 ชั้น - ชั้นอินพุตหนึ่งชั้น, ชั้นเอาท์พุทหนึ่งชั้นและชั้นที่ซ่อนอยู่สองชั้น แต่ละเลเยอร์ที่ซ่อนอยู่จะมี 512 โหนด แต่ละชั้นเชื่อมต่อกับเลเยอร์ถัดไปอย่างเต็มที่ เมื่อเราฝึกอบรมเครือข่ายเราจะคำนวณน้ำหนักสำหรับการเชื่อมต่อแต่ละครั้ง เราฝึกอบรมเครือข่ายโดยใช้ backpropagation และการไล่ระดับสีที่เราพูดถึงก่อนหน้านี้