TensorFlow : มาเล่นกับ MNIST Data ด้วยวิธีแบบ Basic กันเถอะ
Data set ยอดฮิตอีกตัวอีกตัว ใช้สำหรับเรียนรู้การทำ Machine Learning ที่เกี่ยวกับรูปภาพปูทางไปสู่ CNN ต่อไป
มารู้จัก MNIST Data Set กันก่อน ถ้าเราไม่รู้จักข้อมูลเราจะแก้ไขปัญหาไม่ได้แน่นอน ข้อมูล MNIST เป็นข้อมูลรูปภาพตัวเลข 0–9 ที่เขียนด้วยมือ เพื่อใช้ทำการฝึกทำนายว่ารูปตัวเลขดังกล่าวเป็นเลขอะไร
ด้วยความที่เข้าใจได้ทั่วโลก TensorFlow เลือก Data Set ชุดนี้มาไว้ใน API เลย โดยมีจำนวนรูปสำหรับ Training 55,000 รูป รูปสำหรับ Test 10,000 รูป รูปสำหรับ Validation 5,000 รูป
รูปตัวเลขแต่ละรูปจะถูกนำมาแปลงเป็น 2D array ของ pixels ขนาด 28x28 และแทนด้วยตัวเลขตั้งแต่ 0–1 โดยสีขาวจะแทนด้วยเลข 0 และ สีดำแทนด้วยเลข 1 ส่วนในขั้นตอนการนำไปใช้ เราจะทำการ reshape array มาเป็น 28x28
จาก 1 รูป 28x28 Data set ทำการ แปลงให้เป็น 784x1 หรือ 1*784 แล้วแต่สะดวก ที่มาของเลข 784 มาจาก 28x28 = 784 เพราะต้องการที่จะจัดเรียงชุดข้อมูลให้อยู่ในรูปแบบที่สามารถอ้างอิงทีละรูปได้สะดวก 55,000 รูป จะกลายเป็น Array ขนาด (784,55000) ดังนั้นพอนึกภาพการ array ที่จะเอาไปใช้เทรนจะได้ตามรูปข้างล่างนี้ ถ้าอยากหยิบรูปลำดับที่ 0 มาใช้ก็แค่อ้างอิง array[0]
มาดูการจัดการ Array ของ Label ที่ใช้เก็บรูปตัวเลขนี้กันบ้าง สมมุติถ้าเป็นเลข 4 เราจะ label มันด้วย array : [0,0,0,0,1,0,0,0,0,0] จะเห็นว่าเลข 1 อยู่ในตำแหน่งที่ 5 เพราะเราเริ่มต้นที่เลข 0 ไล่ไปจนถึง 9 นั่นเอง ดังนั้นสุดท้ายแล้ว lable ของข้อมูล Test ชุดนี้จะแทนด้วย array ขนาด (10,55000) ถ้าจะให้เห็นภาพก็ตามด้านล่างนี้เลย
Activation Function ด้วย Softmax Regression
Softmax Regression มีชื่อเรียกกันหลายชื่อ Multinomial Regression, Polytomous Linear Regression , Multiclass Linear Regression , Multinomial Logit , Maximum Entropy Classifier จะเยอะไปไหน
ที่มา : http://it.nation.ac.th/faculty/danai/download/statistics%20talks30.pdf
งานนี้เราจะใช้ Softmax มาเป็น Activate Function เพราะ Function นี้จะให้ค่าออกมาตั้งแต่ 0 ถึง 1
Network ที่เรากำลังจะทำกันหน้าตาจะคล้ายๆด้านล่าง
จากรูป Network ได้ความว่า
จัดรูปแบบ Vectorize ซะใหม่ ให้ W และ x ในรูป vector การคูณ แล้วค่อยบวกด้วย vector b กลายร่างเป็น
ร่างสุดท้ายที่จะเอาไปใช้ใน TensorFlow
มาเริ่ม Code กันเลย ผมเลือก ใช้ colab ในการเขียนโปรแกรมนี้ครับ เพราะสะดวกที่สุดแล้วในเวลานี้
ดู code ตัวเต็มที่ : https://drive.google.com/file/d/1gRYotX_Y9RHFJN2u-TtOb7RKVTt7dTdW/view?usp=sharing
เริ่มต้นนะโม 3 จบ แล้ว import tensorflow ตามด้วย import mnist data set
ตรวจสอบความพร้อมของทั้ง train set และ test set
สุ่มหยิบตัวอย่างรูปมาดู
เปลี่ยน mode ให้เป็น gray scale โดยใส่ option cmap=’gist_gray’ เข้าไปซะ ตรวจสอบ min และ max เพื่อดูว่าข้อมูลถูก normalize มาแล้วหรอยัง
ข้อมูลพร้อม เอาไงต่อ….. จับเข้า Step ทำ neural network สิ
ทวนนะครับ Step การทำ Neural Network แบบ Basic มีนั้นตอนดังนี้
- PLACEHOLDERS
- VARIABLES
- CREATE GRAPH OPERATIONS
- LOSS FUNCTION
- OPTIMIZER
- CREATE SESSION
- EVALUATE MODEL
มาดู code กัน
หลังจากนั้นก็ run เพื่อดูผลความถูกต้อง
สุดท้ายแล้วผลออกมากดีมากนะ 91.34% ยัง ยังดีไม่พอรอดู CNN ในตอนต่อไป
บรัยยยยย
พูดคุยกันได้ที่ https://www.facebook.com/paripol.toopiroh