คอร์ส Neural Networks and Deep Learning Course1 จากอาจารย์คนดัง Andrew Ng’s

TLDR; คอร์สนี้เป็นคอร์สแรกสุดของซีรีย์ Deep Learning deep Specialization ของ Deeplearning.AI ของอาจารย์ Andrew Ng

คอร์สจะแบ่งออกเป็น 4 สัปดาห์ แต่ละสัปดาห์ประกอบด้วย สองส่วน คือส่วนของ Lecture และ ส่วนของ Programming ใน Lecture จะมีความยาวสัปดาห์ละประมาณชั่วโมงกว่าๆจนถึงเกือบสองชั่วโมง ในแต่ละสัปดาห์ก็จะแบ่งเป็นคลิปวีดีโอย่อยๆคลิปละ 3-12 นาที เนื้อหาในส่วนของคอร์สนี้จะประกอบไปด้วย Basic ของ Neural Network มีครอบคลุมและเข้าใจได้ง่ายค่อยเป็นค่อยไปค่อยสร้างความเข้าใจทีละเสตปมีการวางโครงสร้างเนื้อหาไว้ดีมากครับค่อยๆประกอบเรื่องที่เรียนเข้าด้วยกัน เสียงอาจารย์น่าฟัง(ส่วนตัว) แนะนำคอร์สนี้อย่างมากสำหรับมือใหม่(ถ้ารู้คอนเสป ML มาบ้างจะดีมาก)ครับ

  • Week 1 ภาพรวมของ Neural Network
  • Week 2 องค์ประกอบของ Neural Networkและอธิบายคอนเสปของ Logistic, Cost function, Gradient Descent, Derivatives, Vectorization เป็นต้น
  • Week 3 ประกอบองค์ประกอบเหล่านั้นเป็น Shallow Neural Network คอนเสปของ Activation Function, Backprop(กระดูกสันหลังแห่ง Deep learning)
  • Week 4 ก็ทำให้มัน Deep สมชื่อนั่นแหละครับ โดยเอา Shallow ด้านบนมาวางเป็น L Layer และอธิบายอีกรอบ

สำหรับมือใหม่ด้าน Machine Learning ก็สามารถเรียนได้ครับแต่จะพบว่าคอร์สนี้ยากซักหน่อยเพราะอาจารย์แกจะ Refer ถึงเทคนิคใน Machine Learning บ้าง ถ้าไม่เคยรู้มาก่อนเลยก็จะงงๆหน่อย

สำหรับคนที่รู้จัก ML มาบ้างแล้วก็เรียนได้เลยครับสนุกดี

สำหรับมือกลางๆเรื่อง Neural Network ก็เรียนได้พืนฐานจะได้แน่นขึ้นครับ

สำหรับมือเก๋า ถ้ามีเวลาก็ลองดูได้ครับแต่คงไม่ได้อะไรใหม่หรอกนะครับเพราะคอร์สนี้ทำเพื่อ Intro to Neural Network เลยไม่ได้ลึกอะไรมากนัก(รูปประกอบมาจากคอร์สอาจารย์ Ng เองทั้งหมดนะครับ)

ตัวคอร์สสามารถเข้าเรียนได้ที่

https://www.coursera.org/learn/neural-networks-deep-learning

Neural Networks and Deep Learning เป็นคอร์สแรกในชุด specialization Deep Learning ของ DeepLearning.ai ที่ประกอบไปได้ด้วย

  1. Neural Networks and Deep Learning คอร์สนี้
  2. Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
  3. Structuring Machine Learning Projects
  4. Convolutional Neural Networks
  5. Sequence Models

Week 1 ภาพรวม

สัปดาห์แรกจะเป็นการ Introduction สู่ Neural Network ประกอบด้วย อะไรคือ Neural Network อธิบายคอนเสปอย่าง Linear Regression และ Logistic Regression (คร่าวๆ)จากนั้นจึงนำเสนอของเป็น Node ของ neural ที่ชื่อ Perceptron อาจารย์จะยกตัวอย่างที่าเข้าใจได้ง่ายอย่าง House Price Prediction ว่าด้วย ขนาดบ้าน(Size) ต่อราคาบ้าน (Price) มาเป็นข้อมูลในการยกตัวอย่าง

จากนั้นอาจารย์จะอธิบายคอนเสปของ Supervised Learning อะไรคือ Input อะไรคือ Output และ Task ไหนเหมาะกับ Neural Network ประเภทไหน เช่น ทำนายราคาบ้าน(Regression) ทำนายว่าลูกค้าจะกดหรือไม่กดโฆษณา(Classification) เป็น Task ที่ใช้ Standard Neural Network, ถ้าเป็น Task ประเภทรู้จำรูปภาพก็จะเหมาะกับ Convolutional Neural Networks, ถ้าเป็นข้อมูลที่เป็น Series เช่น เสียง หรือ แปลภาษา ที่จะมีคอนเสปเกี่ยวซีเคว้นท์ของเวลาเข้ามาเกี่ยวข้องก็จะเป็นงานของ Recurrent Neural Network เป็นต้น

ต่อมาอาจารย์จะอธิบายว่าทำไม Neural Network ที่วางสภาปัตย์ให้เป็น Deep Learning ถึงชนะอัลกอริทึ่ม Shallow อย่างอื่น คำตอบก็คือ Data นั่นเองครับ ในยุคใหม่ของเรานี้ Big Data มีส่วนสำคัญมากในโลกธุรกิจ ซึ่งเมื่อเรรามีดาต้ามาก การหาความสัมพันธ์ในเชิง Combination of Probability ด้วยการ Represent แบบโครงข่ายประสาทจึงเอาชนะ Shallow Algorithm ไปได้อย่างสวยงาม

เป็นอันจบการ Introduction ของสัปดาห์แรกครับ

Week 2 องค์ประกอบของ Neural Network

ในสัปดาห์ที่สองนี้อาจารย์จะเริ่มลงรายละเอียดขั้นโครงสร้างของ Neural Network ซึ่งก็แน่นอนว่ามันต้องเป็น Logistic Regression อยู่แล้ว อธิบายคอนเสป Yhat = Sigmoid(W.T(x)+b) ซึ่งคือพื้นฐานของนิวรอนนั่นเอง จาก Linear มาเป็น Nonlinear ด้วย Sigmoid เพื่อหาเป็น Probability

อธิบายคอนเสปของ Cost Function ซึ่งเป็นตัวชี้วัดว่าอัลกอริทึ่มของเรานั้นทำงานได้ดีหรือร้ายอย่างไร จากนั้นไปพูดถึง Gradient Descent หรือมันก็คือ Cost Function ที่มองเป็น Universe จากนั้นอธิบายคอนเสปของการหาพื้นที่ Optimum สำหรังอัลกอริทึ่มด้วยการปรับ J(w,b) หรือพารามิเตอร์สำหรับ w(Weight) แล b(Bias) เพื่อลด Error ให้มากที่สุดนั่นเอง

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

จากนั้นอาจารย์จะอธิบายถึง Computation Graph ว่าคืออะไร และสำคัญอย่างไร(ถึงอาจารย์จะยังไม่ได้พูดตรงนี้แต่ผมขอเสริมไว้หน่อยกว่า การคำนวณของ ANN มันแยกเป็นโหนดมากมายมหาศาลเพราะฉะนั้นการComputation Graph แบ่งแยกการคำนวณออกแบบนี้จึงสำคัญและเป็นที่มาให้เราไปรันโมเดลเหล่านี้ใน GPU นั่นเอง) และหลังจากนั้นก็จะมีอธิบายคอนเสปของการใช้ถั่วงอกปีศาจ Derivatives ในการทำงานในรูปแบบของ Computation Graph ว่า J จะเปลี่ยนแปลงขึ้นกับการเปลี่ยนแปลงของโหนดก่อนหน้า v และ v ก็จะเปลี่ยนแปลงขึ้นกับ โหนดก่อนหน้า u และ อินพุด a เป็นต้น

และก่อนจบก็จะอธิบายโดยยกตัวอย่างของ Logistic Regression และการเขียน Pseudo code ในการอัพเดตค่าของตัวแปรทีละตัวๆ

จากนั้นจะเข้ามาในส่วนของ Python และคอนเสปของการทำ Vectorization เนื่องจากการอัพเดตตัวแปรทีละตัวต่อการวนรอบนั้นจะกินเวลามหาศาลจึงมีคอนเสปของการทำมันเป็น Vector ขึ้นมาเพื่อแก้ปัญหาในการคำนวณรูปแบบนี้

จากนั้นก็มีการพูดถึงการ Vectorization และการเปรีบยเทียบระยะเวลาการคำนวณใน Python ทั้งแบบ NonVectorization และ Vectorization มาเทียบกัน และอธิบายต่อเวลานำไปใช้ในการคำนวณใน Logistic regression

ปิดท้าย อาจารย์จะพูดถึงคอนสเปของการ Broadcast ในภาษา Python และพูดถึงการใช้งานในภาษาไฟธันทั้งทฎษีและปฎิบัติ เช่นการใช่ .T เพื่อ transpose หรือ np.dot เพื่อการโปรดักส์ ซึ่งสำหรับคนที่ใช้งานพวกนี้บ่อยๆแล้วก็อาจจะง่วงนอนได้เหมือนกัน (ฮา)

ปิดท้ายด้วยการอธิบายวิธีการใช้ Ipython notebook เล็กน้อย การ รันเซล การเพิ่มเซลพวกนี้ครับ เป็นอันจบสัปดาห์ที่สองไปอย่างสวยงามได้ความรู้ครับ

แต่เดี๋ยวก่อน ยังมี Optional ให้เรียนรู้เพิ่ม คืออันนี้จะดูหรือไม่ดูก็ได้นะครับ ถ้าดูไม่รู้เรื่องก็ไม่เป็นไรแต่มันจะเพิ่มรายละเอียดให้สำหรับผู้ต้องการเก็บรายละเอียดจริงๆก็ดูไปเถอะครับ เป็นการอธิบาย Cost Function ของ Logistic Regression ภาคทษฎษีอย่างละเอียด ทำไมสมการ y log yhat – (1-y) log(1-yhat) มัน make sense เมื่อค่า y เป็น Binary 1, 0 นั่นเอง

เอาล่ะครับจบบริบูรณ์อีกสัปดสห์ไปแล้ว(ไม่นับส่วนของโปรแกรมมิ่งแอสไซน์เม้นนะครับ)

Week 3 ให้มันเป็น Neural Networkkkk (ร้องทำนอง Sticker ให้มันเป็นสีชมพู ของพี่ตูน ฮา)

อาทิตย์นี้เราจะได้เอาคอมโพเน้นส่วนต่างๆที่เรียนกันไว้ในอาทิตย์ที่แล้วมาประกอบเป็นโครงสร้าง Neural Network แล้วครับ เริ่มจากอธิบายว่าจริงๆแล้วว Neural Network มันคืออะไรกันแน่ มันก็คือการรวมกลุ่มกันของ Logistic Aka Perceptron หลายๆโหนดที่ถูกวางสถาปัตยกรรมไว้นั่นเอง

จากนั้นเราจะได้ดูถึงการ Represent ของ Neural Network ว่ามัน Represent ข้อมูลที่เข้ามาอย่างไร โดยข้อมูลแต่ละ Input X ละเข้าไปในแต่ละโหนดนั้นจะถูก Represent ด้วยโหนด w ที่ต่างกันนั่นเอง ทำให้แต่ละ โหนดของมันจึงมีความหมายต่างกันแม้จะมี Input เข้าไปเท่ากันแต่การนำเสนอของแต่ละ Input นั้นจะไม่เท่ากันในแต่ล่ะโหนดคำนวณ

จากที่ได้เกริ่นไว้ด้านบนต่อมา อาจารย์ก็จะพามาแกะดูแต่ละ Perceptron กันเลยว่ามีขั้นตอนอะไรบ้าง ก็มีสองขั้นตอนครับ คือรับอินพุดเข้ามา z = W.T(x) + b (กระบวนการเดียวกับ Linear Regression Input ถูกโยนเข้ามาโดยมีน้ำหนัก w ต่างกันในแต่ละโหนดคำนวน Perceptron ) เมื่อได้ดังนั้นแล้วก็จะถูกส่งไปยังกระบวนการต่อไปคือการทำให้ Linear เป็น Nonlinear ก็คือ a = Sigmoid(Z) โดยใช้สมการอย่าง Sigmoid เพื่อให้เป็น Nonlinear นั่นแหละครับ

จากนั้นก็กลับมาที่การเขียน Pseudo code แปลงการอัพเดตแบบ For Loop มาทำเป็น Vectorization ของ Neural Network ครับ และ ต่อมาก็จะมีอธิบายละเอียดหน่อยเชิงทฎษีว่าทำงานอย่างไร ทำไมมันถึงทำงานได้เร็วกว่าแบบลูปอัพเดตทีละตัว

และมาถึงจุดสำคัญ หรือ Turning Point อีกจุดหนึงของวงการ คือ Activation Function นั่นเอง เมื่อกล่าวถึงการทำ Nonlinear แบบ Sigmoid กันมาซักพักแล้วซึ่งจริงๆมันก็ค่อนข้างจะ Old School ไปนานแล้ว อาจารย์ก็จะเริ่มกล่าวถึงข้อเสียของการการทำเป็น Nonlinear ของ Sigmoid ว่าคืออะไรบ้าง จากนั้นอาจารย์จะเริ่มแนะนำสมการตัวอื่นเช่น Tanh(เริ่มจาก -1 ไปถึง 1), Relu(น้อยกว่าจุดที่กำหนดให้เป็น 0 นอกนั้นก็เป็น linear ยาวไปเลย) และ Leaky Relu(เหมือน Relu แต่แทนที่จะเป็น 0 เราจะกำหนดให้มัน Leak ออกมาอีกด้านเล็กน้อย) จากนั้นก็อธิบายว่าทำไมเราต้องทำให้มันเป็น Nonlinear ด้วย Activation Function ด้วย สำหรับคำแนะนำเรื่อง Activation อาจารย์เสนอให้ลองทดลองดูว่าอะไรทำงานได้ดีที่สุดครับ โดยส่วนใหญ่ก็ใช้ Relu ใน Layer ต่างๆนั่นแหละครับ ยกเว้น Output ถ้าเป็น Classification ก็ใช้ Sigmoid ได้ (ใช้ Softmax ก็ได้นะ)

จากนี้แหละครับคือปัญหาของ Activation อย่าง Sigmoid หรือ Tanh เมื่ออาจารย์มา Derivative ถั่วงอกปีศาจกับ Activation Function แล้วเราจะเห็นว่าถ้าค่าที่ได้จาก Activation Function นั้นมีค่ามากกล่าวคือ input ที่เข้าไปในโหนดคำนวณของ Sigmoid หรือ Tanh มีค่ามากๆหรือมีค่าน้อยมากๆมันจะทำให้ค่าที่ได้เข้าใกล้ 1 หรีอ 0 ในกรณีของ Sigmoid และ เข้าใกล้ -1 และ 1 ในกรณีของ Tanh ทำให้ Slope ที่เราต้องการหามันมีความชันน้อยเกินไปก่อให้เกิดปัญหาการเรียนรู้เวลานำไปคำนวนเพื่ออัพเดต weight ได้

จากนั้นปัญหาก็ถูกปรับปรุงแก้ไขด้วย Relu หรือ Leaky Relu จะเห็นว่าสองสมการนี้ทำการคำนวณได้ไม่ยากซึ่งจะทำให้เร็วกว่าแล้วยังสามารถหาความชันได้ตลอดเวลาอีกด้วย ไม่ต้องกลัวปัญหาของ Sigmoid และ Tanh

  • ขอนอกเรื่องนิดหนึง เกี่ยวกับเรื่องนี้ผมเคยฟัง Youtuber Data Scientist คนดังคุณ Siraj เคยออกมาบอกว่า ห้ามใช้ Sigmoid Tanh ให้ใช้ Relu เท่านั้น ผมคงเห็นด้วยไม่ได้จริงๆครับ เพราะในบาง Task ของบาง Architecture ที่มัน “จำเป็น” ต้องอาศัยค่าที่เป็น – หรีอ ต้องการ Range มันให้เป็น Probability จะทำอย่างไรล่ะครับ Relu มันไม่มีนะ มันก็ต้องใช้พวกนี้แหละครับ อย่าง LSTM มันก็มีที่ต้องใช้ Tanh Sigmoid ไม่ใช่ว่าจะตัดทิ้งไปเฉยๆเลยเพราะเห็นตัวอื่นดีกว่ากับบาง Task ผมชอบคุณ Siraj นะครับแต่อันนี้คงเห็นด้วยไม่ได้!!!

จากนั้นอาจารย์จะนำเราไปคำนวณ Gradient Descent ของ Neural Network ว่ามันคำนวณคอสฟังชั่นอย่างไร จากนั้นอาจารย์จะนำเราไปเขียน Pseudo code การคำนวณ Derivative ของ Forwardprop และ Backporp ครับ

จากนั้นก็มีเรื่องของทฎษี Backpropagation ที่เป็น Optional คือจะเรียนก็ได้หรือไม่เรียนก็ได้ ซึ่งผมล่ะไม่เข้าใจอาจารย์เหมือนกันว่าทำไมให้เป็น Optional ในเมื่อ Neural Network ตั้งอยู่บนหลักของการเรียนรู้ที่เป็น Backpropagation ฉะนั้นพื้นฐานของมันเราจึงข้ามไม่ได้ โดยรวมๆมันก็คือการคำนวณ Error ของโหนดสุดท้าย(Loss)ที่เอาต์พุดแล้วจะนำมาปรับ Weight ข้างหน้าใช่ไหมครับ แต่ไอ่การทำแบบนั้นเนี่ย โหนดตัวก่อนหน้ามันก็มีค่าเท่าไหร่ มันก็จะขึ้นกับตัวก่อนหน้าๆๆของมันอีกทีไปเรื่อยๆ เราจึงต้องคำนวณมันย้อนกลับให้กฎ Chain Rule ว่า Error นั้นๆเป็นผลมาจาก Weight ก่อนหน้านั้นเท่าไหร่ไปเรื่อยๆครับนี่คือหัวใจของการเรียนที่เป็นสันหลังของ Neural Network

ผมแนะนำอย่างแรงว่าต้องเรียนอันนี้ครับ มันสำคัญมากๆแล้วล่ะไอ่การเรียนรู้แล้วปรับค่าย้อนกลับอันนี้ มันจะสำคัญไปจนมีการเปลี่ยนแปลงเชิงโครงสร้างเมื่อ Lab อาจจะของอาจารย์ Hinton เองหรือ Lab อื่นๆสามารถคิดค้นวิธีการเรียนรู้มาทดแทนมันได้และเมื่อนั้นโครงข่ายประสาทจะเกิดความเปลี่ยนแปลงเชิงโครงสร้างอย่างมีนัยยะสำคัญยิ่งกว่าการเกิดของ CNN หรือ Capnets ซะอีก

สุดท้ายก่อนจะจบอาทิตย์นี้ ก็จะพูดถึงในเรื่องความสำคัญของการ Initialization Weight ว่ามันสำคัญอย่างไรกับการเรียนรู้ ลองนึภาพว่า Weight ทั้งหมดมีค่าเท่ากันแต่เริ่มสิ่ครับ ทุกโหนด Perceptorn จะ Represent ค่า Input เท่ากันหมดเลย ถ้ามันเท่ากันหมดค่า Error ก็เหมือนกันหมด แล้วเราจะไม่ได้ประโยชน์อะไรกับการ Design โครงสร้าง Deep learning เลย แล้วมันมีวิธีไหนบ้างล่ะ Initialization Weight เนี่ย ในคอร์สนี้ยังคงไม่บอกรายละเอียดนะครับ จริงๆมันก็มีหลายวิธีการอยู่เหมือนกัน(หลายอย่างอาจารย์จะพูดถึงในคอร์สหน้า) แต่อันนี้อาจารย์แกจะชี้ให้เห็นถึงความสำคัญของการทำ Initialization Weight เป็นการจบอาทิตย์นี้ไปอย่างสมบูรณ์(แน่นอนไม่นับ Programming)

Week 4 ให้มันลึกสุดใจเริ่มวางโครงสร้างให้มัน Deep

เริ่มต้นด้วยการดูภาพรวมเช่นเคย แค่ไหนถึงเรียกว่า Deep ล่ะ จากที่เราเรียนมาแล้ว

  1. ไอ่เจ้า Logistic มันก็คือ 1 Perceptorn ดีๆนี่เองหรือจะเรียกได้ว่า 1 Layer Neural Network(เอาจริงๆเจ้านี่มันก็ไม่ได้สร้างโครงข่ายกับใครตามชื่อมันหรอก นอกจากการสร้างกับ Input)
  2. ต่อมาเมื่อเราวาง Hidden Layer เป็นโหนด Perceptorn ซัก 1 ชั้น มาคั่นไว้ระหว่างโหนด Perceptorn Output 1 Layer เราเรียกมันว่า 2 Layer Neural Network
  3. ถ้าเราวาง Hidden Layer ไว้อีกชั้นล่ะ ก็เป็น 2 Layer Neural Network ครับ
  4. แต่ถ้าวางไว้หลายชั้นตั้งแต่ 5-6 ชั้นไปจนถึง L ชัั้น อันนี้เราเริ่มเรียกมันว่า Deep Learning แล้วครับ

จากนั้นเราก็จะมาถึงส่วนของการดีไฟน์ตัวแปรเอาไว้ใช้เรียกกันหลังจากนี้

คราวนี้อาจารย์ก็จะนำเรามายกตัวอย่างให้เราดูว่า Neural Network ที่มัน Deep หน่ะมันทำ Forwardprop กันอย่างไร อันที่จริงมันก็เหมือนวีคที่แล้วที่อาจารย์แกได้สอนไปนั่นแหละครับ แค่คราวนี้จะยกตัวอย่างเป็น L layer แทนเพราะคราวนี้มันจะลึกแล้วเราคงจะเขียน Layer กำกับไม่ได้ตลอดนั่นเอง พร้อมด้วยการ Implement Pseudo Code เป็น Vectorization เช่นเคย

จากนั้นเราก็จะมาดูกันในเรื่อง Matrix Dimension ครับ ว่าในแต่ละชั้น ตัวแปรต่างๆต้องมี Dimension อย่างไร เช่นที่ เลเยอร์แรก ถ้าเรามี Node Perceptron 3 โหนด และมี Input 2 ตัว เราต้องมี Weight ที่มี Dimension เป็น 3*2 ถ้าโหนดของ Layer ต่อมาเป็น 5 โหนด ชั้นต่อมาก็ต้องมี Dimension เป็น 5*3 นั่นเองครับ

จากนี้เราจะมาถึงในส่วนของการ Representation ของ Deepnets แล้วครับ ผมได้พูดอยู่เสมอว่าการทำ Neural Network มันก็คือการหา Combination ของ Probability ในแต่ละ Layer มารวมกันนั่นเอง โดยมันจะเป็นการรวมจากพื้นตัวอินพุด เช่นถ้าเป็นรูปแมว ชั้นแรกๆมันก็จะรวมกันของอินพุดแต่ละตัวชั้นนี้เราอาจจะเห็นการรวมกันที่ไม่สื่อความหมายมากนัก แต่ในชั้นต่อๆมามันจะเอาชั้นแรกๆมาหา Combination ของ Probability เรื่อยๆจนเริ่มดูออก ในชั้นท้ายๆเราอาจจะเห็นว่า ในชั้นที่ สมมุติว่าชั้นที่ 50 ตัว Perceptron ตัวที่ 1มันเป็นการรวมกันของแต่ละเลเยอร์ที่ Representation ถึงความเป็น หู ของแมวตัวนั้น หรือ อีกตัวหนึงอาจเป็นการ Representation ในส่วนของหาง แมว เป็นต้นครับ พิมพ์ติดลม ลืมไปว่าในคลาสนี้อาจารย์เค้ายกตัวอย่างเป็นหน้าคนนะครับ ฮา

ต่อมาเป็นส่วนของ Building Blocks ครับ อาจารย์จะนำเสนอการคำนวนของแต่ละ Layer ออกมาเป็น Blocks แล้สอธิบายว่าแต่ละ Block ตัวแปรไหนบ้างที่โฟลวเข้าไปในโปรเสจของอีก Blocks เช่น w และ b ของ Layer 1 ไหนไปเข้า Relu จากนั้นก็เข้าไปหา w และ b ของ Layer 2 และไหลต่อๆไปจนจบโปรเสจ จากนั้นก็จะเขียน Blocks การไหลกลับเป็น backprop ว่าเราต้องทำการ Derivative ตัวไหนเพื่อกลับไปอัพเดตค่าตั้งแต่ต้น

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

สุดท้ายนี้ อาจารย์ก็จะพามาดูครับว่า อะไรล่ะที่เป็น Parameter และ อะไรเป็น Hyperparameter บ้าง

  • Parameter พารามิเตอร์ที่ใช้ในโครงข่ายที่มันปรับค่าเรียนรู้ได้ก็เช่นพวก น้ำหนัก w, ไบแอส b เป็นต้น
  • Hyperparameter ก็คือ พารามิเตอร์ที่เราต้องมานั่งปรับมานั่งดีไซน์เองครับ ประกอบไปด้วย จำนวนรอบ iterations, จำนวน Hidden Layer, จำนวน Hidden Unit(โหนดคำนวณ Perceptron), วิธีการเดินใน Gradients Descents, Mini Bach, Momentum ของ Loss เป็นต้น

ก่อนจบก็จะมีคำแนะนำเล็กน้อยเช่นเรื่องของ Learning Rate เป็นต้น และอธิบายว่าแล้วมันไปเกี่ยวอะไรกับสมองของมนุษย์จริงๆบ้างล่ะ ความจริงแล้ว Neural Network เป็นแค่การเลียนแบบแต่ไม่ได้มีการทำงานเหมือนสมองดังที่เราเข้าใจกันนักหรอกครับ มนุษย์เรายังจัดว่ารู้น้อยอยู่ในเรื่องเครื่องคำนวณที่ทรงพลังที่สุดในจักรวาลเท่าที่เรารู้มา และมันกินพลังงานแค่ 20 wat คือสมองของเรานี่เองมันเป็นอะไรที่เรายังไม่เข้าใจจริงๆว่าทำงานอย่างไรกันแน่ ฉะนั้นเส้นทางแห่งการผจญภัยเพื่อค้นหาการคำนวณของมนุษย์ชาติเรายังอีกไกลครับ

และก็เป็นอันจบไปแล้วนะครับสำหรับคอร์สแรกของอาจารย์ Ng ถ้ามีโอกาสและเวลา ผมจะพยายามเขียนคอร์สอื่นๆอีก 4 คอร์สมาลงอีกนะครับ ส่วนตัวผมค่อนข้างชอบเรียนรู้มาก ปรกติความรู้ส่วนใหญ่ก็หาจาก MOOC นี่แหละครับ จริงๆเรียนจบไปแล้วก็เกิน 10 คอร์สเหมือนกัน ไว้ผมจะคัดมา Review หรือ Stigmatization แบบนี้อีกแล้วกันนะครับ แต่สถานีหน้าในเวลาของผมก็ขอไปศึกษาศาสตร์ที่ผมสนใจมายาวนานอย่างฟิสิกห์ก่อน(ซึ่งตัวผมคิดว่ามีประโยชน์กับ AI) ถ้าจบแล้วอาจจะรีวิวทิ้งไว้อีกทีครับ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s