สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Tutorial Machine Learning

MT001 Artificial Intelligence MT002 Machine Learning MT003 8 Fun Machine Learning Projects For Beginner MT004 Optimization MT005 Mathematical Optimization MT006 Top 20 Python Machine Learning Open Source Projects MT101 Introduction to Neural Networks MT102 Introduction to Deep Learning with TensorFlow MT103 Installing TensorFlow for Deep Learning MT104 TensorFlow Creating the Neural Network Model MT105 TensorFlow How the Network will run

Introduction to Neural Networks

หมายเหตุ: บทความนี้เป็นส่วนหนึ่งของ "บทความชุด Article with Machine Translation" ซึ่งเป็นการแปลบทความจากต้นฉบับภาษาต่างประเทศด้วย Machine translation ดังนั้นจึงมีข้อผิดพลาดอยู่หลายจุด ขอให้ผู้อ่านโปรดใช้วิจารณญาณในการอ่าน ทาง EPT ไม่ขอรับประกันว่าข้อมูลที่ท่านได้อ่านเป็นข้อมูลที่ถูกต้อง และไม่ขอรับผิดชอบความเสียหายใด ๆ ที่เกิดต่อผู้อ่านทั้งทางร่างกาย จิตใจ ทรัพย์สิน ฯลฯ นะครับ

บทนำเครือข่ายประสาท

ยินดีต้อนรับสู่บทความใหม่ในชุดการเรียนการสอน Machine Learning : เรียนรู้ให้ลึกขึ้นกับเครือข่ายประสาทเทียม และ TensorFlow

อภิธานศัพท์

  1. Neural Network (NN) : เครือข่ายประสาท คำนี้ใช้แทนเครื่อข่าวประสาททั้งที่อยู่ในสมองเราและอยู่ใน Computer ที่เรียกว่า Artificial Neural Network นั้นแหละเพราะว่าโดยปกติก็จะใช้ปะปนกันระหว่าง ANN และ NN
  2. Artificail Neural Network (ANN) : ก็คือ เครือข่ายประสาทเทียมนั้นเอง
  3. Support Vector Machine (SVM) : เป็น Algorithm หนึ่งใช้ในงานด้าน Machine Learning มานานในยุคที่ผมเรียนอยู่ SVM เป็นหัวข้องานวิจัยที่ใช้ประยุกติได้หลากหลาย ทำได้ทั้งปัญหา Classification และปัญหา Regression แต่คนนิยมใช้กับ Classification มากกว่า 
  4. Linearity : ความเป็นเชิงเส้น ในอดีตปัญหา Classification ที่ไม่มีความเป็น Linearity จะไม่สามารถใช้ SVM ได้ ต้องใช้ Kernel ช่วย
  5. Kernel : แกนของ SVM ทำให้แก้ปัญหาที่ไม่เป็น Linearity ได้ แต่การหา Kernel ต้องใช้มนุษย์ช่วยอย่างมาก เรียกว่า Feature Engineering ทำให้ทำงานได้ช้าและผลไม่ค่อยดีเท่าไร Deep Neural Network พยายามแก้ปัญหา การใช้ Feature Engineering โดยให้ Machine เรียนรู้เองทั้งหมด ซึ่งต้องอาศัยข้อมูลที่มากพอและ เครื่องที่แรงพอมารัน

ประวัติของ Neural Network โดยย่อ

เครือข่ายประสาทเทียมเป็น ระบบ Algorithm ที่ได้รับแรงบันดาลใจมาจากเครือข่ายประสาทที่อยู่ในสมอง ของคุณ (เครือข่ายประสาทชีวภาพ) ในยุคเริ่มแรก Artificial Neural Network เป็นงานวิจัยที่เกิดจากการผ่าสมองของสิ่งมีชีวิตแล้วศึกษาการทำงานของระบบประสาทที่อยู่ภายใน

เครือข่ายประสาทเทียมที่ผมจะอ้างถึงตอนนี้ แท้ที่จริงแล้วไม่ใช่คอนเซ็ปต์ใหม่อะไรเลย ไอเดียนี้เริ่มมีมาตั้งแต่ปี 1940 แล้ว แต่มีสิ่งที่ทำให้มันกลับมาอยู่ในความสนใจของสาธารณะชนและนักวิจัยอีกครั้งก็คือประสิทธิภาพของมันนั้นเอง เมื่อเปรียบเทียบกับ อัลกอริทึมอย่างเครื่องเวคเตอร์สนับสนุน (Support Vector machine) (SVM) แล้ว Algorithm อย่าง เครือข่ายประสาทเทียมได้รับความนิยมมาก จนถึงกลางยุค 90 เมื่อ SVM ถูกเอามาเพิ่มความสามารถใหม่ๆ (เทคนิคของ SVM เช่นกันถูกคิดขึ้นมานานแล้วก่อนที่มันจะ ถูกนำไปใช้จริง) อย่างเช่นเทคนิค "Kernel" ทำให้ SVM มีความสามารถในการทำงานร่วมกับชุดข้อมูลที่ไม่สามารถแยกได้เป็นแบบเชิงเส้น (ไม่มีความเป็น linearity ) ด้วยKernelนี้ เครื่องจักรเว็กเตอร์สนับสนุน (Support Vector Machine) จึงมีการพัฒนาไปด้านหน้าอีกครั้งอย่างมาก โดยทิ้งห่าง Neural Network ไว้ด้านหลังและจนเกือบจะทำให้ Neural Network ไม่มีอะไรน่าสนใจ เพราะว่าผลลัพท์ทางการปฏิบัติของ Neural Network ค่อนข้างกากกว่า SVM เป็นอย่างมาก จนกระทั่งปี 2011 ที่เครือ ข่ายประสาทเทียมเชิงลึก (Deep Neural Network) เริ่มที่จะมีผลลัพธ์ดีกว่า เครื่องเวคเตอร์สนับสนุน SVM โดยการใช้เทคนิคใหม่นี้ทำให้ Deep Neural Network มีความพร้อมใช้งานกับชุดข้อมูลที่ขนาดใหญ่ขึ้น และคอมพิวเตอร์ที่มีประสิทธิภาพมากขึ้น (ก่อนหน้าที่จะมี Technic ที่เรียกว่า Deep Neural Network นี้ การใช้ Neural Network กับ ข้อมูลขนาดใหญ่ขึ้นไม่ได้ทำให้ประสิทธิภาพของ Network แต่อย่างใด)

นี่เป็นเหตุผลที่ว่าทำไมหากคุณมีแผนที่จะเรียนรู้เรื่องต่างๆของสาขาของ Machine Learning การเข้าใจโมเดลอันอื่นๆเป็นเรื่องที่ค่อนข้างจะสำคัญ ในการแก้ไขและเปลี่ยน แปลง Model ในแบบใหม่ๆ ซึ่งในตอนนี้เรามีคอมพิวเตอร์ที่สามารถใช้งานเครือข่ายประสาทเทียมได้อย่างแท้จริง เรามีสถานการณ์ที่ค่อนข้างน่าสนใจเนื่องจากผู้คนได้ ขบคิดเรื่องนี้มานานหลายทศวรรษแล้ว มันไม่ใช่เรื่องแปลกใหม่อะไรถ้าใครจะทำงานวิจัยและตีพิมพ์มันออกมาในสาขาของ Deep Neural Network และพบว่ามี คนทำงานวิจัยแบบนั้นอยู่แล้ว

โมเดลของเครือข่ายประสาทเป็นคอนเซ็ปต์ที่ง่ายมากๆ ไอเดียก็คือการเลียนแบบ เซลล์ประสาท (Perceptron) และในเซลล์ประสาท โดยพื้นฐานคุณจะมี dendrites (รับข้อมูลกระแสไฟฟ้าจาก Node อื่น ), nucleus  , axon (ปล่อย output) และ terminal axon (ปล่อย output ไปยัง Node อื่นๆ)

ต่อไป สำหรับเครือข่าย คุณจำเป็นที่จะต้องมีเซลล์ประสาท 2 ตัว เซลล์ประสาท จะส่งต่อข้อมูลผ่านทาง synapse ระหว่าง dendrites ของอันหนึ่งกับ terminal axon ของอีกอันหนึ่ง

ด้วยเหตุนี้ นี่คือวิธีการทำงานของเซลล์ประสาทที่นักประสาทวิทยาศึกษามา ตอนนี้นักวิทยาศาสตร์คอมพิวเตอร์เข้ามาทำงานต่อ จากความคิดดังกล่าว ดังนั้น เราจะเสนอโมเดลของเซลล์ ประสาทเทียมที่มีหน้าตาเหมือน :

เป็นอันเสร็จสิ้น หลังจากนั้นเพื่อให้เซลล์ประสาทของคุณวาดติดกันได้เยอะๆ โดยทั่วไปแม้ว่าเราจะวาดสิ่งที่ ง่ายกว่าด้านบนและถ้าคุณลอง google ภาพเครือข่ายประสาทคุณอาจจะเห็นบางอย่าง เช่น : 

วงกลม คือ เซลล์ประสาทหรือ nodes และใน node ก็จะมีการทำงานกับข้อมูล และเส้นเชื่อมต่อพวกมันจะมีน้ำหนัก (weight) แต่ละคอลัมน์เป็นชั้น (Layer) ชั้นแรกของข้อมูลของคุณ คือเลเยอร์ข้อมูลเข้า (input layer) จากนั้นยกเว้นกรณีที่ผลลัพธ์ของคุณเป็นข้อมูลขาเข้าเลย คุณมีเลเยอร์ที่ซ่อนอยู่ (Hidden Layer ) อย่างน้อยหนึ่งLayer ถ้าคุณมีเลเยอร์ที่ถูกซ่อน 1 อัน ดังนั้น คุณจะมีเครือข่ายประสาทเทียมแบบปกติคือไม่ใช่ Deep Neural Network ถ้าคุณเลือกที่จะมีเลเยอร์ที่ซ่อน(Hidden Layer) อยู่มากมายคุณจะมีเครือข่ายประสาทเทียมที่เชิงลึก(Deep Neural Network ) ง่ายไหม? อย่างน้อยๆ ก็ในแนวคิดนั้นเอง  ดังนั้นด้วยโมเดลนี้ คุณมีข้อมูล input คุณทำการน้ำหนัก (weight)มัน และส่งมัน ผ่านไปยังการทำงานในเซลล์ประสาท การทำงานในเซลล์ประสาท คือ ฟังก์ชั่น(Function) และเกณฑ์(Threshold) ซึ่งเรียกว่า Activation Function โดยทั่วไปแล้วก็คือผลรวมของค่าทั้งหมด หลังจากการน้ำหนักด้านบนหรือด้านล่างของค่าที่กำหนด ถ้าเป็นเช่นนั้น คุณจะส่งสัญญาณ (1) ออกหรือถ้าไม่มีอะไรถูกตาม Threshold ก็ Output (0) นั่นคือน้ำหนักและส่งผ่าน ไปยังเซลล์ประสาทต่อไปและการทำงานประเภทเดียวกันจะถูกเรียกใช้ในการที่จำคำนวณนี้

เพราะน้ำหนักที่พวกเขาสุ่มในการเริ่มต้น และมีเอกลักษณ์เฉพาะสำหรับแต่ละ อินพุทไปยัง node/เซลล์ประสาท ใน “feed forward” ดั้งเดิม (ชนิดที่เบสิคที่สุด ของคุณ) เครือข่ายประสาท , คุณมีการส่งผ่านข้อมูลผ่านทางเครือข่ายที่คุณได้ สร้างขึ้นและคุณก็เปรียบเทียบผลลัพธ์กับสิ่งที่คุณหวังว่าผลลัพธ์จะใช้ข้อมูล ตัวอย่างของคุณ จากตรงนี้ คุณจำเป็นที่จะต้องปรับน้ำหนักเพื่อช่วยให้คุณได้รับ output ที่ตรงกับ output ที่คุณตั้งใจเอาไว้ การกระทำการส่งข้อมูลผ่านเครือข่าย ประสาทเทียมเรียกว่าเครือข่ายประสาทเทียมแบบส่งกำลัง (feed forward neural network) ข้อมูลของเราไปจากอินพุตไปจนถึงเลเยอร์ตามลำดับจากนั้นจะส่งออก เมื่อเราถอยหลังและเริ่มปรับน้ำหนักเพื่อลดการสูญเสีย/ค่าใช้จ่ายนี้ เรียกว่าการ เผยแพร่กลับ 

นี่เป็นปัญหาการ optimization ใหม่ เรียกคืนเครื่องเวกเตอร์สนับสนุนปัญหาการ optimization จากบทเรียนไม่กี่แบบที่ผ่านมาและวิธีการที่เราอธิบายว่าเป็นปัญหา การ optimization ที่เพิ่มขึ้นออกมาที่ดี ถึงแม้ว่าเราจะมีตัวแปร 2 อัน ปัญหาการ optimization ของพวกเราเป็นรูปร่างของถ้วยที่สมบูรณ์แบบ ดังนั้น เราจะต้องรู้ ทั้งคู่เมื่อเรามาถึงการ optimization และยังใช้ขั้นตอนที่ยิ่งใหญ่เพื่อที่จะทำให้การ ดำเนินการนั้นมันถูกต้อง ด้วยเครือข่ายประสาท นี่ไม่ใช่กรณีในทางปฏิบัติ จริงๆคุณกำลังมองหาสิ่งอื่นๆอีก เช่น มีตัวแปรนับแสนหรือหลายล้านตัวขึ้นไป วิธีแก้ปัญหาเดิมคือการใช้การไล่ระดับสีไล่ระดับแบบสุ่ม แต่มีตัวเลือกอื่นๆ เช่น AdaGrad และ Adam Optimizer โดยไม่คำนึงว่างานนี้เป็นงานที่ต้องคำนวณ ขนาดใหญ่ 

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

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

สำหรับงานจำแนกประเภทที่เรียบง่ายเครือข่ายประสาทมีความใกล้เคียงกับ สมรรถนะของอัลกอริทึมแบบอื่น ๆ แม้แต่บางอย่างเช่น K เพื่อนบ้านที่ใกล้ เคียงที่สุด ความงามที่แท้จริงในโครงข่ายประสาทมีข้อมูลที่ใหญ่กว่ามากและคำถาม ที่ซับซ้อนมากขึ้นซึ่งทั้งสองแบบนี้ทำให้โมเดล machine learning อื่นๆ รู้สึกอับอาย ตัวอย่างเช่นปัจจุบันเครือข่ายประสาทสามารถทำสิ่งต่างๆเช่นตอบคำถาม : 

Jack อายุ 12 ปี Jane อายุ 10 ปี  Kate อายุมากกว่า Jane แต่เด็กกว่า Jack แล้ว Kate อายุเท่าไหร่? 

คำตอบ คือ 11 และรูปแบบการเรียนรู้ลึกๆ สามารถคิดออกได้โดยที่คุณไม่ได้สอน มันเกี่ยวกับวิธีทำตรรกะส่วนหนึ่ง คุณเพียงแค่ส่งข้อมูลดิบเข้าไปซึ่งอาจเป็นคำหรือ ตัวอักษร    เครือข่ายประสาทจะทำส่วนที่เหลือ และคุณจำเป็นที่จะต้องใช้ตัวอย่าง เป็นล้าน ผมหมายถึงประมาณครึ่งพันล้านเพื่อความถูกต้องในอุดมคติ 

คุณจะได้รับตัวอย่างเป็นล้านๆจากสิ่งนี้ได้จากที่ไหน? คุณมีตัวเลือกบางอย่าง ตัวเลือกหนึ่งด้วยข้อมูลภาพ คือ ImageNet ซึ่งทำงานได้เหมือน wordnet ใน องค์กรของสิ่งต่างๆ  หากคุณไม่คุ้นเคยคุณสามารถกระตุ้นไปรอบๆเพื่อให้ได้ แนวคิด ทุกๆอย่างที่นี่ฟรี ต่อไปสำหรับข้อมูลข้อความ จุดหยุดแรกๆควรจะ เป็นบางสิ่งที่เหมือนกับ wikipedia data dumps นี่เป็นประโยชน์สำหรับงาน การเรียนรู้ที่ลึกซึ้งมากขึ้น ไม่มากนักสำหรับข้อมูลที่ติดฉลากถัดไปสำหรับข้อมูล ข้อความที่มากขึ้น ทำไมคุณถึง ไม่ไปหาเว็บไซต์ที่รวบรวมข้อมูลและวิเคราะห์ ข้อมูลสำหรับคุณอยู่แล้ว? ถ้าสิ่งนี้มันฟังดูน่าสนุก ไปดูที่ CommonCrawl ชุดข้อมูลนี้ไม่ใช่เรื่องตลก อย่างไรก็ตาม petabytes ของมันก็มีค่าของข้อมูล สำหรับสิ่งนี้ ผมไม่ได้รู้ทั้งหมด อีกตัวเลือกหนึ่ง คือ บางสิ่งบางอย่างที่เหมือน Tatoeba ซึ่งมีทั้งฉลากและแม้แต่การแปลบางอย่าง ซึ่งค่อนข้างที่จะมีประโยชน์ เมื่ออันอื่นๆทั้งหมดล้มเหลว คุณสามารถลองสร้าง ชุดข้อมูลของคุณเองได้ แต่ ความต้องการของขนาดค่อนข้างท้าทาย นอกจากนี้คุณ สามารถถามได้ตลอดเวลา ในประสบการณ์ของผม มันมีชุดข้อมูลสำหรับบางสิ่งบางอย่าง คุณจะต้องหามัน หลายๆครั้ง Google ทำให้คุณล้มเหลวเมื่อพยายามหาชุดข้อมูล แต่ผู้คนสามารถ ช่วยคุณได้ ในขณะนี้คุณอาจลองถามใน Machine Learning subreddit อาจเป็นไป ได้ว่า 90% ของสิ่งที่เกิดขึ้นมีเครือข่ายประสาทเทียมเกี่ยวข้องอยู่ด้วยและทุกคน จำเป็นที่จะต้องรู้เกี่ยวกับชุดข้อมูลขนาดใหญ่

ตอนนี้ ทำไมบริษัทต่างๆเช่น Facebook และ Google จึงมีขนาดใหญ่มากใน AI และเครือข่ายประสาทเทียม โดยเฉพาะอย่างยิ่ง พวกเขามีปริมาณข้อมูลที่จำเป็น ต้องทำเพื่อทำสิ่งที่น่าสนใจบางอย่าง

ตอนนี้เราออกจากทางนั้นได้แล้ว เราจะมีวิธีการที่เราจะได้ทำงานเกี่ยวกับเครือข่าย ประสาทเทียมอย่างไร? เรากำลังจะใช้ TensorFlow ซึ่งเป็นแพคเกจใหม่ที่ค่อนข้าง ใหม่จาก Google ซึ่งยังอยู่ในช่วงเบต้าในขณะที่เขียนข้อมูลนี้ มีชุดอื่นๆ ที่ใช้ สำหรับ Learning Machine เช่น Theano หรือ Torch แต่มันทำงานในทิศทาง เดียวกัน เราจำเป็นที่จะต้องเลือกอย่างหนึ่ง ผมเลือก Tensorflow  ในการเรียน การสอนอันถัดไป เราจะต้องติดตั้ง Tensorflow ถ้าคุณติดตั้ง Tensorflow เรียบร้อยแล้ว คุณสามารถข้ามการเรียนการสอนอันต่อไปได้เลย (ใช้แถบนำทาง ด้านข้างหรือเพียงคลิกไปที่ ถัดไป ให้เลื่อนไปที่ด้านล่างแล้วคลิกถัดไปอีกครั้ง)

There exists 1 quiz/question(s) for this tutorial. [https://pythonprogramming. net/+=1/] for access to these, video downloads, and no ads.

การเรียนการสอนถัดไป : https://pythonprogramming.net/installing-tensorflow-machine-learning-tutorial/?completed=/neural-networks-machine-learning-tutorial/
 

References :

https://pythonprogramming.net/neural-networks-machine-learning-tutorial/

 



บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

C Article


C++ Article


Java Article


C#.NET Article


VB.NET Article


Python Article


Golang Article


JavaScript Article


Perl Article


Lua Article


Rust Article


Article


Python


Python Numpy


Python Machine Learning



แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา