https://youtu.be/pnSBZ6TEVjY?list=PLQVvvaa0QuDfKTOs3Keq_kaG2P55YRn5v
ยินดีต้อนรับสู่บทที่ 2 ของDeep Learning ของ Neural Network และ TensorFlow และเป็นบทที่ 44 ของชุดการเรียนการสอน machine learning
ใน Tutorial เราจะครอบคลุมเรื่องเบสิคของ TensorFlow ว่าคืออะไรและ จะเริ่มต้นใช้งานมันยังไง
Libraries เช่น TensorFlow และ Theano ไม่ใช่ Libraries สำหรับ Deep Learning ทั่วๆไป พวกมันเป็น librariesที่สร้างขึ้นมาอย่างเฉพาะสำหรับ Deep Learning เลย จริงๆแล้วพวกมัน เป็น libraries เพื่อการคำนวณทางคณิตศาสตร์ เหมือนแบบที่ Numpy เป็น อย่างไรก็ตามความแตกต่างก็คือ package อย่าง TensorFlow ทำให้เราสามารถดำเนินการทางคณิตศาสตร์แบบ machine learning โดยเฉพาะได้เช่น อนุพันธ์ในทางคณิตศาสตร์ใหญ่ๆที่มีประสิทธิภาพอย่างมากได้ เราสามารถกระจาย Distributed การคำนวนนี้ไปยัง CPU cores , GPU cores , หรือแม้แต่หลายๆอุปกรณ์อย่าง multiple GPUs ของในเครื่องของคุณได้อย่าง ง่ายดาย แต่นั่นไม่ใช่ทั้งหมด! เรายังสามารถกระจายการคำนวณผ่านเครือข่าย แบบกระจายของคอมพิวเตอร์ด้วย TensorFlow ได้ ดังนั้น ในขณะที่ TensorFlow กำลังถูกใช้งานเป็นหลักด้าน machine learning ตอนนี้ จริงๆแล้วมันสามารถนำ ไปใช้ในสาขาอื่นๆด้วยเพราะจริงๆแล้วมันเป็น library สำหับการคำนวนบน อาร์เรย์ที่ใหญ่มาก
อะไร คือ tensor ? มาถึงจุดนี้ในชุด machine learning เราจะทำงานด้วย vectors (numpy arrays) เป็นหลักและ tensor สามารถเป็น vector ได้ อย่างง่ายที่สุด tensor เป็นวัตถุ array-like และอย่างที่คุณเห็น array สามารถรองรับ matrix , vector และจริงๆแล้วแม้แต่สเกลาร์ของคุณได้
Ranking
0- Tensor ---> scalar value (a single value)
1-Tensor ---> Vector (a array of value)
2-Tensor ---> Matrix (a table of value)
3-Tensor ---> Cube
n-Tensor ---> now you get the idea.
ในจุดนี้ เราต้องการที่จะแปลงปัญหาทาง machine learning ของเราไปยัง functions บน tensors ซึ่งทุกๆปัญหาทาง ML (Machine Learning ) สามารถแปลงไปเป็นปัญหาบน Tensor ได้(ให้ผู้อ่านพิารณาดูว่าจริงไหม )
พิจารณาเรื่องเครือข่ายประสาท เครือข่ายประสาทเทียมแบ่งมันไปเป็นอะไร ได้บ้าง?
เรามีข้อมูล (X) , น้ำหนัก (w) และเกณฑ์ (ค่า Threshold ) (t) สิ่งเหล่านี้เป็น tensors ใช่มั้ย? X จะ เป็นชุดของข้อมูล (array) ดังนั้น มันเป็น tensor น้ำหนัก ก็เป็น array ของค่าน้ำ หนักเช่นกัน ดังนั้น พวกมันก็เป็น tensors เหมือนกัน เกณฑ์ล่ะ? ก็เหมือนกับน้ำหนักนั่นแหละ ดังนั้น เครือข่ายประสาทของเราเป็น ฟังก์ชั่นของ X,w, และ t, หรือ f(X,w,t) ดังนั้น เราได้ตั้งค่าทั้งหมดแล้วและ สามารถใช้ TensorFlow ได้แล้ว แต่ใช้ยังไงล่ะ?
TensorFlow อย่างแรก ทำงานโดยการกำหนดค่าและอธิบายโมเดลของเราในรูป แบบของนามธรรมและเมื่อทุกอย่างพร้อม เรา run มันในเซสชั่น Description ของโมเดลในแง่ของ TensorFlow คือ อะไรที่รู้จักกันในชื่อเรียกว่า “กราฟการ คำนวณ (Computational Graph)” ขออนุญาตแสดงให้เห็นด้วยตัวอย่างง่ายๆ อย่างแรกเลย มาสร้างกราฟกัน :
ดังนั้น เรามีค่าบางอย่าง ตอนนี้เราสามารถทำสิ่งต่างๆด้วยค่าเหล่านั้นได้ เช่น การคูณ :
สังเกตว่า output ยังคงเป็น tensor นามธรรมอยู่ ไม่มีการคำนวณจริงๆที่ถูกรัน เฉพาะอันที่ระบบได้สร้างขึ้นเท่านั้น การดำเนินการแต่ละตัวหรือ "op," ในกราฟการ คำนวณของเรา คือ "node" ในกราฟ
เพื่อดูผลลัพธ์จริงๆ เราจำเป็นที่จะต้องรัน session โดยปกติแล้ว คุณสร้างกราฟ เป็นอย่างแรก แล้วคุณก็ทำการ "launch" กราฟ :
เรายังสามารถกำหนด output จาก session ไปเป็นตัวแปรได้อีกด้วย :
เมื่อคุณทำเสร็จแล้วด้วย session คุณจำเป็นที่จะต้องปิดมัน เพื่อที่จะทำให้แหล่ง ข้อมูลที่คุณเคยใช้งานมันอิสระขึ้น :
หลังจากที่ปิดแล้ว คุณยังคงสามารถอ้างอิงถึงตัวแปร output นั้นได้ แต่คุณจะไม่ สามารถทำบางสิ่งบางอย่างแบบนี้ได้ :
…ซึ่งมันจะเปลี่ยนไปเป็นข้อผิดพลาดได้ ตัวเลือกอีกอันที่คุณมี คือ นำคำประกาศ Python's with ไปใช้งาน :
ถ้าของคุณมันไม่คล้ายกับอะไรที่เป็นแบบนี้ โดยปกติแล้ว มันจะใช้ session สำหรับ block ของ code ตามคำประกาศ และจะปิด session เมื่อเสร็จแล้วโดยอัตโนมัติ วิธี การของมันก็เหมือนกับตอนที่มันทำงาน ถ้าคุณเปิดไฟล์ด้วยคำประกาศ with
คุณยังสามารถใช้ TensorFlow บนอุปกรณ์หลายๆตัวได้อีกด้วยและแม้แต่เครื่อง กระจายหลายเครื่องอีกด้วย ตัวอย่างสำหรับการรันการคำนวณบางอย่างบน GPU ที่เฉพาะเจาะจง จะเป็นอะไรแบบนี้ :
โค้ดจาก : TensorFlow docs ตัว tf.matmul คือ เมทริกซ์ฟังก์ชันการคูณ
โค้ดด้านบนสามารถรันการคำนวณบนระบบ GPU ที่ 2 ถ้าคุณได้ติดตั้งเวอร์ชั่น CPU กับผมแล้วนี่ไม่ได้เป็นตัวเลือก แต่คุณควรจะตระหนักถึงความเป็นไปได้ ในบรรทัด เวอร์ชั่น GPU ของ TensorFlow ต้องการ CUDA เพื่อที่จะให้เป็นการ set up ที่เหมาะสม (พร้อมกับต้องใช้ CUDA ที่เปิดใช้งาน GPU ด้วย) ผมมี CUDA ที่เปิดใช้งาน GPUs อยู่นิดหน่อย และต้องการที่จะครอบคลุมการใช้งาน ของพวกเขาด้วยเช่นกัน แต่นั่นไม่ใช่สำหรับวันนี้!
ตอนนี้เรามีความรู้พื้นฐานของ TensorFlow แล้ว ผมอยากจะแนะนำให้คุณลงลึก ไปอีกในเรื่องของการสร้างเครือข่ายประสาทแบบลึกซึ้งในการเรียนการสอนต่อไป ถ้าคุณจำเป็นที่จะต้องติดตั้ง TensorFlow การดำเนินการการติดตั้งเป็นอะไรที่ง่าย มากๆถ้าคุณใช้ Mac หรือ Linux บน Windows ก็ไม่ได้ยากอะไรขนาดนั้น การเรียนการสอนต่อไปไม่ได้จำเป็นมากนัก มันคือการให้เราติดตั้ง TensorFlow บนเครื่อง Windows เท่านั้นเอง
การเรียนการสอนต่อไป :
References :
Tag ที่น่าสนใจ: deep_learning tensorflow neural_network machine_learning tensor computational_graph tensors_in_tensorflow data_processing distributed_computing machine_translation
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM