พล็อตแผนที่ Interactive Map วิเคราะห์แผ่นดินไหว Earthquake ประเทศญี่ปุ่น รอยต่อเปลือกโลกภาคพื้นทวีป Tectonic Plate Boundary ด้วย Folium – GeoSpatial ep.3

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

Geospatial Data คืออะไร สอน GeoPandas วาดแผนที่ข้อมูลภูมิศาสตร์ ใน Google Colab ดึง Geographic Dataset จาก Kaggle – GeoSpatial ep.1

ใน ep นี้ เราจะมาเรียนรู้เกี่ยวกับ Geospatial Data ข้อมูลภูมิศาสตร์ หรือ ข้อมูลที่มีพิกัดตำแหน่งบนแผนที่บนโลกใบนี้ติดมาด้วย รวมถึงวิธีการ Wrangle ข้อมูล และการทำ Visualize ข้อมูล ออกมาเป็นภาพให้คนทั่วไปเข้าใจได้ง่าย ข้อมูลทางภูมิศาสตร์ช่วยให้เราตัดสินใจ ตอบคำถาม แก้ปัญหาต่าง ๆ ที่เกิดขึ้นบนโลกแห่งความเป็นจริงได้ดีมากขึ้น

ตัวอย่างการใช้ PyTorch Hook วิเคราะห์ Mean, Standard Deviation, Histogram ของ Activation Map ปรับปรุงการเทรน Deep Learning ด้วย GeneralReLU – ConvNet ep.3

จากใน ep ที่แล้วเราได้เรียนรู้การใช้งาน PyTorch Hook ใน ep นี้เราจะมา Refactor โค้ดสร้าง Class ขึ้นมาจัดการ Hook และใช้ Hook สถิติ ที่ลึกมากขึ้น เราจะวิเคราะห์กราฟ Mean, Std และ Histogram จะเห็นว่าค่อนข้าง Converge เร็ว ไม่เกิด Vanishing Gradient เนื่องจาก PyTorch ได้แก้ปัญหาไปแล้วด้วย Kaiming Initialization แต่ก็ยังมีปัญหาอื่น ๆ อยู่ในช่วงแรก ๆ แล้วเราจะแก้ปัญหานี้อย่างไร

PyTorch Hook คืออะไร สอน PyTorch Hook เจาะลึก Activation Map, Gradient ภายใน Deep Convolutional Neural Network – ConvNet ep.2

จากใน ep ก่อน ๆ ที่เราได้นำ Callback มาประยุกต์ใช้ใน Training Loop เพื่อช่วยให้การเทรนมีความยืดหยุ่น แต่ติดข้อจำกัดว่าเราไม่สามารถเข้าถึงข้อมูลภายในโมเดล Deep Neural Network ในแต่ละ Layer ได้ เนื่องจากการสร้างโมเดลของเราเป็นการเรียกใช้ API ภาษา Python ของ PyTorch แล้วเราจะแก้ปัญหานี้อย่างไรดี

Convolutional Neural Network คืออะไร ภาษาไทย ตัวอย่างการทำงาน CNN, ConvNet กับชุดข้อมูล MNIST – ConvNet ep.1

ใน ep ที่แล้ว Neural Network ep.13 ที่เราได้สร้างโมเดล Deep Neural Network ที่ใช้ Linear Layer + ReLU Activation Function เราได้สร้าง Training Loop ที่มีความ Flexible จาก Callback ทำให้เราสามารถ Schedule Hyperparameter ได้ตามต้องการ แต่ไม่ว่าจะเทรนอย่างไร เราก็จำแนก MNIST ได้ Accuracy สูงสุดแค่ 97% เท่านั้น เนื่องจากข้อจำกัดของ Model Architecture แล้วเราจะแก้ปัญหานี้อย่างไรดี

Schedule Hyperparameter ในการเทรน Machine Learning เทรนโมเดล Deep Neural Network ด้วย Learning Rate ไม่คงที่ One Cycle – Neural Network ep.13

หลังจากที่ใน ep ก่อน เราได้ใช้ LR_Find Callback หา Learning Rate ที่ดีที่สุดได้แล้ว แล้วเราจะนำมาใช้อย่างไร Learning Rate ถือว่าเป็นหนึ่งใน Hyperparameter ที่สำคัญที่สุดในการเทรน Machine Learning มีแนวคิดจากหลากหลาย Paper ที่ว่า ในแต่ละ State ของการเทรน Deep Neural Network นั้นต้องการ Hyperparameter ต่างกันไป แล้วเราจะ Schedule Hyperparameter ของเราได้อย่างไร

จัดการหมวดหมู่เล็ก ๆ ยิบย่อย รวมข้อมูลหมวดหมู่ Category เล็ก ๆ เป็นหมวดหมู่ Other ก่อนป้อนเทรน Machine Learning – Preprocessing ep.4

ในหลาย ๆ Dataset เราจะพบว่าข้อมูลแบบ Category มีการแตกยิบย่อยมากเกินไป เช่น บาง Category มีแค่ 1 หรือ 2 Record เท่านั้น หรือ Category เล็ก จำนวน Record แตกต่างกับ Category ใหญ่ ๆ หลายร้อย หลายพันเท่า ข้อมูล Category เล็ก ๆ ยิบย่อยเหล่านี้ อาจจะไม่ได้ช่วยโมเดล Machine Learning ในการเรียนรู้ก็ได้ ทางแก้คือ เราจะ Group รวม Category เล็ก ๆ เหล่านั้นรวมออกมาเป็น Category ใหม่ ตั้งชื่อว่า Other

การประยุกต์ใช้ Callback เพิ่มความยืดหยุดให้ Training Loop รองรับการเทรนด้วย Algorithm ซับซ้อนขึ้น – Neural Network ep.10

จาก ep ก่อน ๆ เราจะได้ Training Loop ที่สามารถเทรน Neural Network ได้อย่างถูกต้อง สมบูรณ์ ได้ผลลัพธ์เป็นที่หน้าพอใจ แต่ถ้าเราต้องการเพิ่มเติม Logic การเทรนที่ซับซ้อนยิ่งขึ้น เราจะต้องแก้โค้ดนี้ แทรกตามบรรทัดต่าง ๆ เช่น ก่อนเริ่มเทรน, ก่อนเริ่ม Epoch, หลังจากจบ 1 Epoch, etc. ข้อเสียของการแทรกโค้ดแบบนี้ คือ ทำให้โค้ดใน Loop นี้ก็จะบวมขึ้นเรื่อย ๆ ส่งผลให้มีปัญหาในการ Maintain แล้วเราจะแก้ปัญหานี้อย่างไรดี

Debug โปรแกรมภาษา Python บน Jupyter Notebook ด้วย %debug, set_trace – Jupyter Notebook ep.6

วิธีที่ง่ายที่สุดในการ Debug โปรแกรมด้วย Jupyter Notebook คือการใช้ Magic Command %debug เมื่อใดก็ตามที่เราเจอ Error ให้เราสร้าง cell ขึ้นมาใหม่ แล้วพิมพ์ว่า %debug แล้วสั่งรัน ระบบจะเปิด command line

Refactor โค้ด Neural Network สร้าง DataBunch และ Learner ปรับปรุง Training Loop – Neural Network ep.9

ใน ep ที่แล้วเราได้ Neural Network และ Training Loop ที่ทำงานได้ดีพอสมควร มีการวัดผล Metrics กับข้อมูลใน Validation Set เพื่อให้แน่ใจว่าโมเดลทำงานได้ถูกต้องกับข้อมูลที่ไม่เคยเห็นมาก่อน แต่โค้ด Training Loop ของเรายังมีความซับซ้อนเกินไป ใช้ Parameter จากภายนอกถึง 6 ตัว ซึ่งมากเกินไป ทำให้ยากต่อการต่อยอดเทรนในอัลกอริทึมที่ซับซ้อนยิ่งขึ้น แล้วเราจะแก้ไขอย่างไร