[Reinforcement Learning 101] ตะลุยคาสิโนด้วย RL: Muti-Armed Bandit (2)- UCB1

จากบทความที่แล้ว เราได้พาไปดูการกำหนดปัญหา การไปเล่น Slot machine ที่คาสิโนของเราและได้หาวิธีการประเมินโอกาสชนะของเครื่อง Slot machine ด้วยวิธีการ Epsilon greedy มาแล้วและได้เปรียบเทียบผลลัพธ์ดู นับว่าทำงานได้ดีประมาณหนึง เอาเข้าจริงๆวิธีการนั้นก็ไม่ได้เป็นอะไรมากไปกว่าการคำนวณ mean ของแต่ละเครื่องผ่านการเล่น Slot machine แต่ละรอบๆเสริมด้วยวิธีการสุ่มเล่นเครื่อง Slot machine บ้างเป็นครั้งคราวเท่านั้นเอง วันนี้เราจะมาดูสมการคณิตศาสตร์ที่ซับซ้อนขึ้นมาอีกนิดหนึง(นิดเดียว) UCB1 ตัวนี้ก็ใช้ในการประเมิน mean ตัวหนึงทำหน้าที่เหมือน Epsilon greedy แต่วิธีการทำนั้นต่างกัน เนื่องจากเราจะแก้ปัญหาเดิม ก่อนอื่นผมขอนำ โอกาสในการชนะของ Slot machine มาแปะกันอีกครั้งนะครับ ​เครื่องที่ 1 มี win rate 10% ต่อการเล่นแต่ละครั้ง เครื่องที่ 2 มี win rate 20% ต่อการเล่นแต่ละครั้ง เครื่องที่ 3 มี win rate 50%…

[Reinforcement Learning 101] ตะลุยคาสิโนด้วย RL: Muti-Armed Bandit (1)- Epsilon Greedy

วันนี้เรามาพูดถึงโมเดลเบื้องต้นของ Reinforcement Learning กันบ้างครับ โดยเราจะเริ่มตั้งแต่แบบเบื้องต้นกันครับ จุดประสงค์ของการไป Casino สมมุติว่าเราไป Casino​ เป้าหมายของเราคืออะไร ก็คงไม่หาเงินจากการเล่นพันให้มากที่สุด แล้วเราเดินไปเล่นเครื่องเล่น Slot Machine ที่ในห้องนั้นมีอยู่ 3 เครื่อง โอกาสชนะ(win rate)ในแต่ละเครื่องไม่เท่ากัน​แต่เราน่ะไม่รู้หรอกว่าเครื่องไหนมี win rate เท่าไหร่บ้าง สมมุติอีกว่าเครื่อง Slot Machine ของ Casino นี้เมื่อเราเข้าไปเล่นแต่ละครั้ง ถ้าชนะเราจะได้เงิน 1 เหรียญ ถ้าแพ้ก็จะได้ 0 เหรียญ  แต่ละเครื่องมี win rate ไม่เท่ากันดังนี้ ​เครื่องที่ 1 มี win rate 10% ต่อการเล่นแต่ละครั้ง เครื่องที่ 2 มี win rate 20% ต่อการเล่นแต่ละครั้ง เครื่องที่ 3 มี win rate 50%…

Decision Tree in Stock market

Decision Tree หรือ ต้นไม้การตัดสินใจ เป็นอีกหนึ่งอัลกอริทึ่มที่ได้รับความสนใจกันอย่างแพร่หลาย เนื่องจากสามารถเข้าใจ และ มองเห็นภาพได้ง่าย ก่อนจะลงไปในรายละเอียดกัน ขอยกตัวอย่างต้นไม้การตัดสินใจในปัญหาทั่วๆ ไป มาให้ดูกันซักหนึ่งตัวอย่างก่อนนะคะ ตัวอย่าง Decision Tree Decision Tree สำหรับการพิจารณาให้เงินกู้ จากรูปด้านบนเป็นตัวอย่าง Decision Tree ง่ายๆ ที่ใช้ในการพิจารณา อนุมัติเงินกู้ (Loan) หรือ ไม่อนุมัติ (No Loan) การสร้างต้นไม้ด้านบน ก็จะเริ่มมาจากการวิเคราะห์ข้อมูลการอนุมัติเงินกู้ในอดีตในรูปของตาราง และทำการคำนวณหาจุดตัดข้อมูลที่ดีที่สุด เพื่อนำมาใช้ในการสร้างเงื่อนไข หรือ โหนด (nodes) เพื่อใช้ในการสร้าง Tree การเลือกโหนดก็จะมีการคำนวณค่าทางคณิตศาสตร์โหนดไหน ถ้าทำการเลือกแล้วจะทำหน้าที่ในการแบ่งข้อมูลได้ดีที่สุด ค่าที่ใช้ในการคำนวณ มีหลายแบบ ตัวอย่างเช่น ค่า Information gain เป็นต้น ในบทความนี้จะไม่ของลงรายละเอียดในการคำนวณนะคะ เนื่องจากเป้าหมายของบทความคือ การนำ Decision Tree มาประยุกต์ใช้กับการเทรด จึงอยากจะขอเน้นในด้านการนำมาประยุกต์ใช้แล้วได้ผลลัพธ์เป็นอย่างไรมากกว่าค่ะ Decision…

ตัวอย่างการใช้ ARIMA ในการทำนายค่า GDP ของประเทศไทย พร้อม source code (2)

ทความนี้เราจะมาว่ากันต่อในเรื่องของการทำนายข้อมูล Time Series ด้วย ARIMA กันค่ะ โดยบทความนี้เป็นบทความที่ 3 ของบทความชุด “ARIMA เท่าที่เข้าใจ” ซึ่งได้เขียนไปแล้ว 2 ตอนด้วยกัน สามารถอ่านได้ตามลิงก์ด้านล่าง เมื่ออ่านครบทั้ง 3 บทความนี้ ก็น่าจะสามารถนำ ARIMA ไปประยุกต์ใช้ในการทำนายข้อมูลประเภทต่างๆ ได้อย่างไม่ยากแล้วค่ะ บทความชุด “ARIMA เท่าที่เข้าใจ” 1) ARIMA เท่าที่เข้าใจ อธิบายการทำงานของ ARIMA model จากประสบการณ์ใช้งานของเรา link 2) ตัวอย่างการใช้ ARIMA ในการทำนายค่า GDP ของประเทศไทย พร้อม source code ตอนที่ 1 link ต่อกันเลยนะคะ หลังจากบทความที่แล้ว เราได้เตรียมข้อมูลที่เป็น “Stationary” ไว้เรียบร้อย พร้อมสำหรับ “การทำนาย” แล้ว ในบทความนี้ เราจะนำเอาข้อมูลนั้นมาเริ่มทำการทำนาย…

ตัวอย่างการใช้ ARIMA ในการทำนายค่า GDP ของประเทศไทย พร้อม source code (1)

จากบทความที่แล้ว ตามลิงก์ด้านล่าง link เราได้พูดถึง Basic of ARIMA เอาไว้ ซึ่งถึงแม้ว่าตัวโมเดลจะไม่ได้ถูกออกแบบมาโดยเฉพาะสำหรับการทำนายมากนัก แต่ก็เป็นโมเดล Time-series ที่สามารถนำมาประยุกต์ใช้ในการทำนายข้อมูลได้ ดังนั้น วันนี้เราจึงได้นำตัวอย่างการประยุกต์ใช้ ARIMA พื้นฐานในการทำนายอย่างง่ายมาให้ดูกัน โดยตัวอย่างนี้ใช้ จะเป็นข้อมูล GDP ของประเทศไทย ดังนี้ Data: GDP of Thailand during (1960 – 2017) File name: GDP_Thailand.csv 1) มาดูข้อมูลดิบกันก่อน ก่อนอื่นมาโหลดข้อมูล และ เนื่องจากข้อมูลของเราเรียงจากปีปัจจุบันไปยังอดีต แต่เพื่อให้ง่ายต่อความเข้าใจ จากนั้น เราจะได้พล็อตดูแนวโน้มข้อมูลกันต่อไป 1.1) Import libraries ที่จำเป็น import pandas as pdimport matplotlib.pyplot as pltimport numpy as np 1.2) อ่านข้อมูล และ ตั้งชื่อ คอลัมน์ว่า…

​Pattern Recognition with Hidden Markov Model

ในหัวข้อนี้ เราจะมาพูดถึงการทำนาย Sequential data โดยตรง ซึ่งพูดง่ายๆ ก็คือ การทำนายข้อมูลที่เป็น “ลำดับ” นั่นเองโ ดยปัญหาที่นำมาใช้ในเรื่องนี้จะต้องเป็นปัญหาที่ ข้อมูลมีลักษณะที่เป็นลำดับจากในอดีตจนถึงปัจจะบัน ซึ่งเราต้องการจะนำข้อมูลเหล่านั้นมาทำนายอนาคต ตัวอย่างเช่น Weather in consecutive days (สภาพอากาศในวันต่อๆไป) Words in a natural language text (คำในระบบภาษาธรรมชาติ) Stock prices in consecutive days (ราคาหุ้นในวันต่อๆ ไป) *** ผลที่เราคาดหวังจากการทำงานที่ได้มาจากระบบในลักษณะนี้จะเป็น การค้นพบ Patterns หรือ “รูปแบบของข้อมูล” ซึ่งลำดับของข้อมูลในอดีตมีผลต่อการทำนายข้อมูลในอนาคตเป็นทอดๆ กันไป เช่น “วันฝนตก” มักจะตามมาหลังจาก “วันฝนตก” หรือ “วันแดดออก” มักจะมาจาก “วันแดดออก แล้ว วันฝนตก” เช่นเดียวกับราคาหุ้น เราอาจจะค้นพบว่า “ราคาหุ้นขยับขึ้น” มักจะตามมาจาก…

Before the birth of GAN, there was a story of IAN

วันนี้ผมได้ไปอ่านเจอคำตอบของ Ian Goodfellow ผู้โด่งดังจากการคิดค้นโมเดลโคตร Hot อย่าง Generative Adversarial Networks(GAN) ที่ตอบคำถามที่ว่า “เข้ามาในวงการ Machine Learning กันได้อย่างไร” ใน Quora มา และเห็นว่ามันมีประโยชน์แล้สนุกดีเลยเอามาแปล+เรียบเรียง+หาResource ที่เจ้าตัวเค้าแนะนำมาให้อ่านกันครับ สมัยไฮสคูลIanเค้ามีความสนใจหลากหลาย ไม่ได้เกี่ยวกับ AI ซะเท่าไหร่ เช่น พยายามสร้างภาษาขึ้นใช้เอง อยากเขียน literature บลาๆ หลังจากจบมัธยมIanได้ตัดสินใจ”เลือก”Stanford เพราะค้ารู้ว่าตัวเค้ามีความสนใจหลากหลายเรื่องเกินไป ยังไม่สามารถเลือก Major ได้ และ Stanford เปิดโอกาสให้เขาเลือกคณะได้หลังจากเข้าเรียนไปแล้ว และไม่ต้องเรียนติดต่อกัน 4 ปีจบได้(สามารถหยุดระหว่างนั้น) ปีแรกก็เหมือนเราๆ(ที่เรียนสายคอมพ์) ได้เริ่มเขียนโปรแกรม C++ เจอบั๊กปวดหัวเหมือนปุถุชนทั่วไป 555+ ซักพักก็เริ่มสนใจเรื่อง Psychology และ Cognitive science ก็เริ่มไปศึกษาแต่ก็ไม่ได้อะไรกลับมามากนัก การมาเรียนมหาลัยเหมือนกับเสียเวลาไปนั่งเรียน+ผลาญเงินพ่อแม่เปล่าๆ Ian จึงตัดสินใจหยุดเรียนไปสก๊อตแลนกับเพื่อนสองคน เริ่มที่จะหาทางทำงานกัน แต่สรุปว่าเหลว…

Neural Style Transfer พาอาจารย์ Stephen Hawking ไปอวกาศกันดีกว่า

ในวัน 14 มีนาคม 2561 ซึ่งตรงกับวัน Pi และ วันเกิดของ Albert Einsteinที่ผ่านมานี้ โลกเราได้สูญเสียบุคลากรที่มีคุณูประกาศต่อโลกยิ่งอย่าง ศ. Stephen Hawking ไปอย่างไม่มีวันกลับแม้จะใช้ชีวิตทั้งชีวิตทำงานกับเรื่องของ ฟิสิกห์จักรวาลแต่ตลอดชีวิต ศ. Hawking ท่านอยากไปอวกาศซักครั้ง เคยได้ไปใกล้เคียงสุดก็แค่ ขึ้นเครื่อง Boeing 727 ไปจำลองสภาพไร้แรงโน้มถ่วงเมื่อปี 2007ทั้งนี้ทั้งนั้น ศ. Hawking ได้เคยบอกไว้ว่า “การไปอวกาศ คือความปรารถนาที่ยังไม่ถูกเติมเต็ม” น่าเสียดายที่วันนี้ท่านได้จากเราไปโดยไม่มีวันกลับแล้ว แต่เราสามารถพาท่านอย่างน้อยก็ในรูปภาพไปอวกาศได้เ้วย Style Transfer ซึ่งเป็นเทคนิคของ Deep Convolution Neural Network เพื่อทำการวาดรูป ศ. Stephen Hawking ด้วย Style กาแลคซี่กันเถอะ Style Transfer คืออะไร พูดง่ายๆก็คือการนำเอารูปภาพที่เราต้องการเปลี่ยน Style ของรูป มาใส่ Style หรือรูปภาพอีกรูปของศิลปินที่เราชื่นชอบ…

​สรุป Andrew Ng’s “Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization” Course2 แบบสรุปทั้งคอร์ส!

วันนี้ผมจะสรุปคอร์สของอาจารย์ Andrew Ng ตามความเข้าใจของตัวเอง อาจจะไม่เป๊ะตามที่อาจารย์สอนนะครับ บางครั้งผมก็อธิบายไปตามความเข้าใจของตัวเอง เหมือนกับบทความเหล่านี้เป็นการ take note ไว้อ่านเล่นของผมเอง แต่คิดว่าเอามาลงก็อาจจะมีประโยชน์กับผู้สนใจบ้างละมั้งครับ ฮา TLDR; คอร์สนี้เป็นคอร์สที่สองของซีรีย์ Deep Learning deep Specialization ของ Deeplearning.AI ของอาจารย์ Andrew Ng ครับ คอร์สจะแบ่งออกเป็น 3 สัปดาห์ แต่ละสัปดาห์ประกอบด้วย สองส่วน คือส่วนของ Lecture และ ส่วนของ Programming ใน Lecture จะมีความยาวสัปดาห์ละประมาณชั่วโมงกว่าๆจนถึงเกือบสองชั่วโมง ในแต่ละสัปดาห์ก็จะแบ่งเป็นคลิปวีดีโอย่อยๆคลิปละ 3-12 นาทีเหมือนกับคอร์สที่แล้ว เนื้อหาในส่วนของคอร์สนี้เป็นการเสริมรายละเอียดจากคอร์สที่แล้วครับ คอร์สที่แล้วเป็นการสอนเบสิกของ Neural Network ใช่ไหม๊ครับ แต่มันยังใีรายละเอียดอีกมากมายที่อาจารย์แกยังไม่ได้ลง แน่นอนว่าอัลกอริทึ่ม Deep Neural Network นั้นทรงพลังมากก็จริง แต่มันยังมี Hyperparameter หรือ พารามิเตอร์ที่เราต้องมานั่งปรับมานั่งดีไซน์เองอีกหลายตัวครับ…

คอร์ส Neural Networks and Deep Learning Course1 จากอาจารย์คนดัง Andrew Ng’s

TLDR; คอร์สนี้เป็นคอร์สแรกสุดของซีรีย์ Deep Learning deep Specialization ของ Deeplearning.AI ของอาจารย์ Andrew Ng คอร์สจะแบ่งออกเป็น 4 สัปดาห์ แต่ละสัปดาห์ประกอบด้วย สองส่วน คือส่วนของ Lecture และ ส่วนของ Programming ใน Lecture จะมีความยาวสัปดาห์ละประมาณชั่วโมงกว่าๆจนถึงเกือบสองชั่วโมง ในแต่ละสัปดาห์ก็จะแบ่งเป็นคลิปวีดีโอย่อยๆคลิปละ 3-12 นาที เนื้อหาในส่วนของคอร์สนี้จะประกอบไปด้วย Basic ของ Neural Network มีครอบคลุมและเข้าใจได้ง่ายค่อยเป็นค่อยไปค่อยสร้างความเข้าใจทีละเสตปมีการวางโครงสร้างเนื้อหาไว้ดีมากครับค่อยๆประกอบเรื่องที่เรียนเข้าด้วยกัน เสียงอาจารย์น่าฟัง(ส่วนตัว) แนะนำคอร์สนี้อย่างมากสำหรับมือใหม่(ถ้ารู้คอนเสป ML มาบ้างจะดีมาก)ครับ Week 1 ภาพรวมของ Neural Network Week 2 องค์ประกอบของ Neural Networkและอธิบายคอนเสปของ Logistic, Cost function, Gradient Descent, Derivatives, Vectorization เป็นต้น…

เปิดม่าน Deep Learning (2) : มาทำความรู้จักกับเจ้า Learning rate กัน

เราได้จบบทความที่แล้วเอาไว้ที่ปัญหาที่ perceptron หรือ neuron มีความ sensitive ต่อข้อมูลสอนมากเกินไป จนเกิดปัญหาในลักษณะของ overfitting กับข้อมูลสอน ดังรูป จากรูป เป็นการทำงานของนิวรอนแบบไม่มีค่า Learning Rate จะเห็นได้ชัดเจนว่าในการสอนนิวรอนครั้งที่ 1 ด้วยข้อมูลสอน input 1 นิวรอนปรับตัวอยู่ใกล้กับข้อมูลสอนนั้นมาก (ค่าคำตอบที่ได้ค่อนข้างจะเฉพาะเจาะกับข้อมูลนี้มาก) ต่อมาเราจึงทำการสอนด้วย input 2 เราจะเห็นว่านิวรอนปรับตัวอย่างเร็วเข้าหา input 2 โดยแทบจะลืมการสอนในครั้งแรกไปเลย กลายเป็นค่าคำตอบเปลี่ยนไปเฉพาะเจาะกับกับ input 2 แทน ปัญหาในลักษณะนี้อันตรายมาก เนื่องจากคำตอบของนิวรอนในลักษณะนี้ ทำให้ข้อมูลที่เข้ามาใหม่มีโอกาสเกิดการผิดพลาดได้สูง ดังรูป จากรูปจะเห็นได้ว่า ถ้าเส้นคำตอบมีค่าเฉพาะเจาะจงกับข้อมูล input 1 มาเกินไป ข้อมูล class 0 (Benign = ปกติ) ที่เข้ามาภายหลัง (วงกลมสีเขียวอ่อน) มีโอกาสจะถูกทำนายผิดเป็น class 1 (Malignant =…

เปิดม่าน Deep Learning (1) : รู้จักเจ้าจิ๋ว Perceptron ส่วนประกอบหลักของระบบ Neural Network

บทความนี้ก็จะขอเกาะกระแส Neural Network กันหน่อยค่ะ เนื่องจาก Neural Network หรือ ที่เราเรียกกันง่ายๆ ว่า “นิวรอลเน็ต” ช่วงนี้มาแรงมากๆ คิดๆ แล้วก็ไม่น่าเชื่อนะคะ ว่า นิวรอลเน็ต ที่หลายๆ คนเคยมองว่าเป็นอัลกอริทึมที่หยุดพัฒนาไปแล้ว ซึ่งคนในวงการคอมพิวเตอร์เคยพูดติดตลกกันว่า นิวรอลเน็ตน่ะเป็นอัลกอริทึ่มตายแล้ว! แต่แล้ววันนี้ เจ้านิวรอลเน็ตได้กลับมาเป็นกระแสขึ้นมาอีกครั้ง ซึ่งก็คงจะปฏิเสธไม่ได้เลยว่าจะต้องตบรางวัลให้กับเจ้าตัว Deep Leaning “AlphaGo” ตัวเก่งจาก Google ที่สามารถเอาชนะแชมป์โลกในการแข่งขันเกมส์ Go มาได้อย่างสวยงาม น่าชื่นชมจริงๆ ค่ะ เคยคิดกันมั้ยคะ ว่า AlphaGo ใช้เทคนิคพิเศษอะไรถึงเอาชนะสมองอันซับซ้อนของมนุษย์ได้ จริงๆ ก็มีหลายปัจจัยนะคะ แต่ปัจจัยที่น่าชื่นชมที่สุดในความคิดของผู้เขียน ก็คือ “ความสามารถในการเรียนรู้จากสถานการณ์แวดล้อม” หรือ ที่รู้จักกันในชื่อ Reinforcement Learning ซึ่งถ้าใครติดตามข่าวกันมา การจะสร้าง AlphaGo นี้ต้องมีการทดลองแข่งขันกับมนุษย์ในหลายต่อหลายรอบ และเจ้า AlphaGo ก็แพ้มนุษย์ซะหลายรอบซะด้วยในช่วงแรกๆ!!! แต่เมื่อผ่านการแข่งขันไปได้จำนวนหนึ่ง เจ้า…