Layer-Sequential Unit-Variance Initialization (LSUV) คืออะไร แตกต่างกับ Kaiming อย่างไร ในการ Initialize Deep Neural Network – ConvNet ep.6

จากใน ep ก่อน เราได้เรียนรู้การสร้าง ConvNet ขึ้นมาจากหลายส่วนประกอบด้วยกัน และเมื่อสร้างโมเดลขึ้นมาแล้ว ก่อนเทรนเราจำเป็นต้อง Initialize Parameter (Weight, Bias) ต่าง ๆ ด้วยค่าที่เหมาะสม ใน ep ที่แล้ว เราใช้ Kaiming Initalization

แล้วถ้าโมเดลเราเกิดซับซ้อนขึ้นเรื่อย ๆ ล่ะ เช่น มีการเปลี่ยน Activaiton Function, มี Skip Connection, มีหลาย Input, เพิ่ม BatchNorm แบบต่าง ๆ, etc. จะทำอย่างไร

Continue reading “Layer-Sequential Unit-Variance Initialization (LSUV) คืออะไร แตกต่างกับ Kaiming อย่างไร ในการ Initialize Deep Neural Network – ConvNet ep.6”

BatchNorm คืออะไร สอน Batch Normalization เทรน Machine Learning โมเดล Deep Convolutional Neural Network – ConvNet ep.5

จากใน ep ก่อน ที่เราได้เรียนรู้การทำ Normalization ข้อมูล Input ให้มี Mean=0, Std=1 เท่ากันในทุก Feature ว่ามีประโยชน์ในการเทรน Machine Learning อย่างไร คำถามก็คือ แล้วทำไมเราไม่ทำแบบเดียวกันใน Hidden Layer ของ Deep Neural Network ในขณะที่เราเทรนโมเดล Deep Learning ด้วยล่ะ

Continue reading “BatchNorm คืออะไร สอน Batch Normalization เทรน Machine Learning โมเดล Deep Convolutional Neural Network – ConvNet ep.5”

Coordinate Reference System (CRS) คืออะไร Map Projection คืออะไร สอน GeoPandas แปลง CRS ข้อมูลภูมิศาสตร์ GeoData – GeoSpatial ep.2

แผนที่ที่เราใช้กันอยู่ทุกวันนี้ คือการฉายภาพของพื้นผิวโลกลงบนพื้นที่ 2 มิติ เหมือนแผ่นกระดาษ แต่โลกของเราจริง ๆ แล้วเป็นทรงกลม 3 มิติ เหมือนผลส้ม

ดังนั้นเราจึงต้องมีวิธีการเรียกว่า Map Projection เพื่อ Render พื้นผิวโค้ง 3 มิติ แปลงให้เป็นพื้นผิวเรียบ 2 มิติ เนื่องจากเป็นการแปลง 3 มิติเป็น 2 มิติ จะต้องมีข้อมูลสูญหายไป แล้ว Projection แบบไหนที่ดีที่สุด เราจะเลือก Projection อย่างไร

Continue reading “Coordinate Reference System (CRS) คืออะไร Map Projection คืออะไร สอน GeoPandas แปลง CRS ข้อมูลภูมิศาสตร์ GeoData – GeoSpatial ep.2”

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

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

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

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

ตัวอย่างการใช้ 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 แต่ก็ยังมีปัญหาอื่น ๆ อยู่ในช่วงแรก ๆ แล้วเราจะแก้ปัญหานี้อย่างไร

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

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 แล้วเราจะแก้ปัญหานี้อย่างไรดี

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

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 แล้วเราจะแก้ปัญหานี้อย่างไรดี

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

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 ของเราได้อย่างไร

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

PyTorch 1.3 ออกแล้ว

PyTorch เป็น Machine Learning Library ที่ได้รับความนิยมอย่างต่อเนื่องในหมู่นักวิจัย ตอนนี้ได้ออกเวอร์ชัน 1.3 แล้ว มีฟีเจอร์ใหม่ ๆ เช่น 8-bit Integer Eager Mode Quantization, สนับสนุนอุปกรณ์ Mobile iOS และ Android, สนับสนุน TPU และ Cloud, อนุญาตให้ตั้งชื่อ Tensor, Detectron2, การเข้ารหัส Tensor เพื่อความปลอดภัย สำหรับข้อมูลส่วนตัว, etc.

Continue reading “PyTorch 1.3 ออกแล้ว”

เปรียบเทียบ TensorFlow vs PyTorch ในปี 2019 ว่า Machine Learning Framework ไหน เป็นที่นิยมมากกว่ากัน

สงคราม Machine Learning Framework ระหว่าง TensorFlow และ PyTorch ที่ระอุขึ้น ตั้งแต่มีกระแส Deep Learning ในปี 2012 ล่าสุดใครจะเป็นผู้ชนะ Framework จะได้รับความนิยมมากกว่ากัน

Continue reading “เปรียบเทียบ TensorFlow vs PyTorch ในปี 2019 ว่า Machine Learning Framework ไหน เป็นที่นิยมมากกว่ากัน”