Machine Learning

Machine Learning

ข่าวและบทความที่เกี่ยวข้อง

All Machine Learning

PostType Filter En

บทความ

Meta Prompting: ใช้ AI ช่วยสร้างคำสั่งให้ AI ทำงานเก่งขึ้น 
ทุกวันนี้ เราใช้ AI อย่าง ChatGPT, Claude, หรือ DeepSeek ช่วยทำงานได้หลายอย่าง ไม่ว่าจะเขียนบทความ ตอบคำถาม หรือช่วยคิดวิเคราะห์ข้อมูลต่าง ๆ แต่การจะ “สั่ง” Artificial Inteligence (AI) ให้ทำงานได้ตรงใจนั้นไม่ใช่เรื่องง่าย เพราะบางที AI ก็ให้คำตอบที่ไม่ตรงตามความต้องการ ทำให้เราต้องเสียเวลาแก้คำสั่งซ้ำไปซ้ำมา ซึ่งบทความนี้ผู้เขียนจะแนะนำเทคนิค “เมตาพรอมต์ติ้ง” หรือ Meta Prompting ที่จะให้ AI มาช่วยเราสร้างและปรับปรุง “คำสั่ง” ให้ดีขึ้นไปอีก  Meta Prompting คืออะไร?  Meta Prompting เป็นเทคนิคหนึ่งในการออกแบบคำสั่ง (Prompt Engineering) โดยเราจะใช้ AI มาช่วยสร้างหรือปรับปรุงชุดคำสั่ง แทนที่เราจะต้องคิดคำสั่งเองทั้งหมด เราก็ให้ AI ช่วยคิดโครงสร้าง เนื้อหา หรือแม้แต่ปรับปรุงคำสั่งเดิม ทำให้เราทำงานที่ซับซ้อน ได้ง่ายขึ้น และปรับตัวตามสถานการณ์ต่างๆ ได้ดีขึ้นด้วย  ทำไมต้องใช้ Meta Prompting?  วิธีการของ Meta Prompting   บทความนี้จะแนะนำตัวอย่างการทำ Meta Prompting 3 วิธี ดังนี้  1. Meta-Prompting  รูปที่ 1 รูปแบบการทำงานของ Meta-Prompting [1]  หลักการการทำงาน คือ การสร้าง “คำสั่งหลัก” ที่ทำหน้าที่เหมือน “ผู้จัดการโครงการ” โดยคอยแบ่งงานย่อย ๆ ให้ “คำสั่งย่อย” ที่ทำหน้าที่เหมือน “ผู้เชี่ยวชาญ” ในแต่ละด้าน เช่น “ผู้เชี่ยวชาญด้านการตลาด”, “ผู้เชี่ยวชาญด้านการเขียนโปรแกรม” แล้วค่อยรวบรวมผลลัพธ์ สามารถอ่านรายละเอียดเพิ่มเติมได้ที่ https://arxiv.org/pdf/2401.12954   ขั้นตอนการทำงาน:  ตัวอย่างการใช้งาน:  “`  คุณคือ Meta-Expert ผู้เชี่ยวชาญด้านการวางแผนงานอีเวนต์ สามารถทำงานร่วมกับผู้เชี่ยวชาญอื่น ๆ ได้ เพื่อจัดงานเลี้ยงบริษัทให้สมบูรณ์แบบ คุณสามารถเรียกใช้ผู้เชี่ยวชาญด้านต่าง ๆ ได้แก่ “เชฟมืออาชีพ”, “นักตกแต่งสถานที่”, และ “นักวางแผนกิจกรรม”  ในการเรียกผู้เชี่ยวชาญ ให้พิมพ์ชื่อตามด้วย “:” เช่น:  เชฟมืออาชีพ: แนะนำเมนูอาหารสำหรับงานเลี้ยงบริษัท 100 คน เน้นอาหารไทย มีตัวเลือกสำหรับคนทานมังสวิรัติ และคนแพ้อาหารทะเล  นักตกแต่งสถานที่: ออกแบบการตกแต่งสำหรับงานเลี้ยงบริษัทในธีม “รื่นเริงริมทะเล” ใช้งบประมาณไม่เกิน 50,000 บาท  นักวางแผนกิจกรรม: จัดกิจกรรมสันทนาการ 3 กิจกรรมสำหรับพนักงานบริษัท เน้นกิจกรรมที่ส่งเสริมความสามัคคี และสนุกสนาน  “`  2. Learning from Contrastive Prompts  หลักการการทำงาน คือ การให้ AI เปรียบเทียบ “คำสั่งที่ดี” (ที่สามารถให้ผลลัพธ์ตรงตามความต้องการ) กับ “คำสั่งที่ไม่ดี” เพื่อเรียนรู้ว่าอะไรใช้ได้ผลและอะไรใช้ไม่ได้ผล แล้วสามารถสร้างคำสั่งใหม่ที่ดีกว่าเดิม สามารถอ่านรายละเอียดเพิ่มเติมได้ที่ https://arxiv.org/pdf/2409.15199  ขั้นตอนการทำงาน:  รูปแบบการใช้งาน  “`  โจทย์: {{ Question }}  กำหนดอินพุต: {{ Input }}  และเอาต์พุตที่คาดหวัง: {{ Output }}  อธิบายเหตุผลว่าเหตุใดอินพุตจึงสอดคล้องกับเอาต์พุตที่คาดหวัง จากนั้นใช้เหตุผลดังกล่าวสร้างพรอมต์เพื่อให้ได้เอาต์พุตที่คาดหวังจากอินพุตใดๆ ทั้งหมด 5 พรอมต์ ทำการอธิบายว่าพรอมต์ใดทำงานตามโจทย์ได้ดีที่สุด และสรุปเป็นพรอมต์ใหม่ ที่ดีขึ้นกว่าเดิม  “`  ตัวอย่างการใช้งาน  “`  โจทย์: จำแนกความรู้สึกของข้อความต่อไปนี้ว่าเป็น “บวก” หรือ “ลบ”  ข้อมูล: “หนังเรื่องนี้สนุกมาก!“  คำตอบที่ถูกต้อง: บวก  ข้อมูล: “ฉันไม่ชอบอาหารร้านนี้เลย”  คำตอบที่ถูกต้อง: ลบ  อธิบายเหตุผลว่าเหตุใดอินพุตจึงสอดคล้องกับเอาต์พุตที่คาดหวัง จากนั้นใช้เหตุผลดังกล่าวสร้างพรอมต์เพื่อให้ได้เอาต์พุตที่คาดหวังจากอินพุตใดๆ ทั้งหมด 5 พรอมต์ ทำการอธิบายว่าพรอมต์ใดทำงานตาม โจทย์ได้ดีที่สุด และสรุปเป็นพรอมต์ใหม่ ที่ดีขึ้นกว่าเดิม  “`  3. Declarative Self-improving Python (DSPy)  รูปที่ 2 ตัวอย่างการทำงานขอ DSPy [6]  หลักการการทำงาน: เป็นหนึ่งใน Python Library ที่มี Framework ที่ช่วยในการคอยปรับแต่งและพัฒนาคำสั่งให้ดีขึ้นโดยอัตโนมัติ สามารถอ่านรายละเอียดเพิ่มเติมได้ที่ https://arxiv.org/pdf/2310.03714   ขั้นตอนการทำงาน:  ตัวอย่างการใช้งาน  “`  import dspy  # กำหนด LLM ที่จะใช้ (ในตัวอย่างนี้ขอสมมติเป็น OpenAI)  lm = lm = dspy.LM(‘openai/gpt-4o-mini', api_key='YOUR_OPENAI_API_KEY')  dspy.settings.configure(lm=lm)  # กำหนด signature บอกว่า input คืออะไร (text) และ output คืออะไร (sentiment)  class SentimentAnalysis(dspy.Signature):      text = dspy.InputField(desc=”The text to analyze”)      sentiment = dspy.OutputField(desc=”Either ‘positive' or ‘negative'”)  # สร้าง module ที่ใช้ signature นี้ และมี dspy.Predict เพื่อเรียกใช้ LLM  class AnalyzeSentiment(dspy.Module):      def __init__(self):          super().__init__()          self.classify = dspy.Predict(SentimentAnalysis)      def forward(self, text):          pred = self.classify(text=text)          return pred  # สร้างตัวอย่างข้อมูล (input, output)  trainset...
17 March 2025

บทความ

ปฏิวัติวงการ NLP: ทำไมการถ่ายทอดการเรียนรู้ (Transfer learning) จึงเป็นก้าวสำคัญของการประมวลผลภาษา
“การถ่ายทอดการเรียนรู้ (Transfer learning)” หลายคนอาจเคยได้ยินมาบ้างเกี่ยวกับการถ่ายทอดการเรียนรู้ในคอมพิวเตอร์กับงานด้านภาพหรือวิดีโอ แต่รู้หรือไม่ว่า การถ่ายทอดการเรียนรู้ก็สามารถประยุกต์ใช้กับงานด้านภาษาได้เช่นกัน ในช่วงหลายปีที่ผ่านมา มนุษย์มีความสามารถในการคาดการณ์สิ่งต่าง ๆ ได้ดียิ่งขึ้นโดยอาศัยเทคโนโลยีที่เรียกว่า การเรียนรู้ของเครื่อง (Machine learning) หลักการทำงานของเทคโนโลยีดังกล่าวคือการเรียนรู้และทำความเข้าใจข้อมูลที่ได้รับ และสร้างเป็นแบบจำลองที่มีประสิทธิภาพ การเรียนรู้ของแบบจำลองในปัจจุบันส่วนใหญ่เป็นงานเฉพาะด้าน เช่น การเรียนรู้เพื่อสร้างแบบจำลองสำหรับการจัดประเภทรูปภาพ การเรียนรู้เพื่อสร้างแบบจำลองสำหรับการคาดการณ์ล่วงหน้า ซึ่งแบบจำลองที่ถูกสร้างสำหรับงานเฉพาะด้านจะมีประสิทธิภาพที่สูงกับงานนั้น ๆ แต่ในทางกลับกัน แบบจำลองเหล่านั้น อาจเกิดข้อผิดพลาดได้ง่ายกับเงื่อนไข หรือข้อมูลที่ไม่เคยพบมาก่อน ในความเป็นจริง ข้อมูลที่ถูกนำมาให้แบบจำลองเรียนรู้อาจไม่สมบูรณ์ หรือไม่สามารถใช้งานได้ทันทีเหมือนแบบฝึกหัดที่ครูสอนในห้องเรียน ข้อมูลจริงมีโอกาสเกิดทั้ง ความผิดพลาด ความซับซ้อน และมีจำนวนที่น้อย ยกตัวอย่างเช่น ข้อมูลภาพถ่ายความร้อนในห้องน้ำสำหรับแบบจำลองการตรวจจับการล้ม[1] ซึ่งภาพถ่ายความร้อนในห้องน้ำสำหรับการตรวจจับการล้มนั้นเป็นข้อมูลที่เก็บได้ยาก เนื่องจากการล้มในห้องน้ำไม่ได้เกิดขึ้นบ่อย จึงทำให้ข้อมูลที่เก็บได้มีจำนวนน้อย อาจส่งผลให้แบบจำลองที่ถูกเรียนรู้จากข้อมูลดังกล่าวไม่สามารถคาดการณ์สิ่งต่าง ๆ ได้ดีพอ การถ่ายทอดการเรียนรู้จึงถูกนำมาใช้เพื่อแก้ไขปัญหาดังกล่าว โดยมีหลักการทำงานคือ การถ่ายทอดการเรียนรู้จากแบบจำลองหนึ่งไปยังอีกแบบจำลองหนึ่งดังภาพที่ 1 การถ่ายทอดการเรียนรู้ นิยมนำไปประยุกต์ใช้กับงานทางด้าน คอมพิวเตอร์วิทัศน์ (Computer Vision) เช่น การประมวลผลภาพ หรือวิดีโอ เพื่อให้คอมพิวเตอร์สามารถเข้าใจทัศนียภาพ หรือจำแนกวัตถุต่าง ๆ เนื่องจากแบบจำลองสำหรับงานด้านนี้มีพารามิเตอร์เป็นจำนวนมาก ซึ่งจำเป็นต้องใช้ชุดข้อมูลขนาดใหญ่ในการเรียนรู้ของแบบจำลอง โดยอาจใช้เวลาหลายวัน หรือหลายสัปดาห์ในการเรียนรู้ เพื่อให้แบบจำลองสามารถคาดการณ์สิ่งต่าง ๆ ออกมาได้ดียิ่งขึ้น ซึ่งการเรียนรู้แบบจำลองนั้นเป็นความท้าทายอย่างหนึ่งของผู้ที่สนใจในด้านนี้ จึงมีการจัดการแข่งขันที่มากมายในแต่ละปีเพื่อสร้างแบบจำลองที่ดีที่สุด ตัวอย่างเช่น การแข่งขัน ImageNet Large Scale Visual Recognition Challenge (ILSVRC) ที่จัดขึ้นเป็นประจำทุกปี เพื่อเชิญชวนให้นักวิจัยจากทุกมุมโลกมาเข้าร่วม และแข่งกันกันแสดงศักยภาพแบบจำลองของตนเอง ซึ่งทีม Visual Geometry Group (VGG)  ได้รับรางวัลรองชนะเลิศอันดับ 1 ในปี ค.ศ. 2014 และมีชื่อเสียงมากในวงการนี้ แบบจำลองที่น่าสนใจของ VGG มีชื่อว่า VGG-16 ซึ่งมีการใช้ Convolution network เป็นโครงสร้างหลัก  แบบจำลองดังกล่าวสามารถตรวจจับองค์ประกอบของรูปภาพได้ (ขอบ รูปแบบ สไตล์ และอื่นๆ) สถาปัตยกรรมของแบบจำลอง VGG-16 ค่อนข้างซับซ้อน มีเลเยอร์ที่หลากหลายและพารามิเตอร์จำนวนมาก ซึ่งผลลัพธ์ที่ได้แสดงให้เห็นว่า ชั้นประมวลผลที่ซ่อนอยู่ (Hidden layers) ของแบบจำลองสามารถตรวจจับองค์ประกอบในงานแต่ละงานได้ดี แนวคิดการถ่ายทอดการเรียนรู้ กล่าวคือ เลเยอร์ระหว่างกลางภายในแบบจำลองถือเป็นความรู้ทั่วไปที่แบบจำลองได้รับการฝึกอบรม ถ้ามองในมุมของแบบจำลอง VGG-16 ความรู้นั้นคือองค์ประกอบที่เกี่ยวกับภาพ เราสามารถใช้มันเป็นเครื่องมือสร้างแบบจำลองที่มีประสิทธิภาพ ซึ่งสามารถทำได้โดยการนำแบบจำลองที่ผ่านการเรียนรู้แล้ว มาประยุกต์ใช้กับแบบจำลองใหม่ โดยเปลี่ยนเป้าหมายหรือวัตถุประสงค์ของแบบจำลองตามที่ต้องการ ข้อมูลที่นำมาใช้สำหรับการเรียนรู้แบบจำลองใหม่จะมีลักษณะที่แตกต่างออกไปจากแบบจำลองเดิม จึงจำเป็นต้องเรียนรู้ใหม่อีกครั้ง โดยการเรียนรู้ของแบบจำลองครั้งนี้จะใช้ระยะเวลาที่สั้นขึ้น นอกเหนือจากการเรียนรู้แบบจำลองที่เร็วขึ้นแล้ว การถ่ายทอดการเรียนรู้ยังเป็นสิ่งที่น่าสนใจเป็นพิเศษเช่นกัน การถ่ายทอดการเรียนรู้ทำให้ใช้ข้อมูลที่มีการกำกับ (Label) น้อยลง เมื่อเทียบกับชุดข้อมูลขนาดใหญ่ที่ถูกใช้ในการเรียนรู้แบบจำลองตั้งต้น ซึ่งข้อมูลที่มีการกำกับเป็นข้อมูลที่หายากและมีมูลค่าสูง ดังนั้นการถ่ายทอดการเรียนรู้เพื่อสร้างแบบจำลองที่มีคุณภาพโดยไม่ต้องใช้ข้อมูลขนาดใหญ่จึงเป็นที่นิยม การถ่ายทอดการเรียนรู้ในงานด้านภาษา (Transfer Learning in Natural Language Processing, NLP) ความก้าวหน้าในการเรียนรู้เชิงลึกสำหรับ NLP นั้นเติบโตน้อยกว่างานในด้าน Computer vision เนื่องจากคอมพิวเตอร์สามารถเรียนรู้ ขอบภาพ วงกลม สี่เหลี่ยม รูปร่างที่ปรากฏ ว่ามีลักษณะเป็นอย่างไร แล้วนำความรู้นี้ไปทำสิ่งต่าง ๆ แต่ในงานด้านภาษาไม่ได้ตรงไปตรงมาเหมือนงานด้านรูปภาพ ความพยายามแรกเริ่มที่ได้รับความนิยมในการถ่ายทอดการเรียนรู้ของ NLP คือการทำแบบจำลอง word embedding ตัวอย่างเช่น Word2Vec [2] และ Glove [3]  ที่นิยมใช้กันอย่างแพร่หลาย การแปลงคำให้เป็นตัวเลขหรือเวกเตอร์นี้ อาศัยบริบทแวดล้อมของคำนั้นๆ เพื่อสร้างการแทนค่าเชิงตัวเลข โดยคำที่มีความหมายใกล้เคียงกันจะมีค่าเวกเตอร์ที่ใกล้เคียงกันด้วย จากบทความ Word2Vec [2] แสดงให้เห็นว่าแบบจำลองสามารถเรียนรู้ความสัมพันธ์ระหว่างชื่อประเทศกับชื่อเมืองหลวงของประเทศได้อย่างแม่นยำ สิ่งนี้ทำให้ Word2Vec ได้รับการยอมรับอย่างกว้างขวางในวงการ NLP นอกจากนี้ ยังเปิดทางให้มีการพัฒนาวิธีการแทนค่า (representation) ของคำ ตัวอักษร และเอกสารที่มีประสิทธิภาพมากขึ้นต่อไป การถ่ายทอดการเรียนรู้ใน NLP นั้นมีข้อจำกัด คือการจัดการกับภาษาที่ต่างกัน เช่น แบบจำลองที่ได้รับการเรียนรู้ด้วยภาษาอังกฤษ จะไม่สามารถที่จะนำไปใช้กับภาษาอื่น ๆ เนื่องจากรูปแบบไวยากรณ์ของแต่ละภาษามีความแตกต่างกัน เมื่อปี 2018 Howard และ Ruder ได้นำเสนอแบบจำลอง Universal Language Model Fine-tuning (ULMFiT) [4] เพื่อเป็นแนวทางในการถ่ายทอดการเรียนรู้สำหรับ NLP แนวคิดหลักของแบบจำลองนี้มาจากแบบจำลองภาษา ซึ่งเป็นแบบจำลองที่สามารถคาดการณ์คำถัดไปโดยพิจารณาจากคำที่มีอยู่ เปรียบเสมือนการใช้โทรศัพท์มือถือรุ่นใหม่ ๆ ที่มีการคาดการณ์คำถัดไปให้ผู้ใช้งานในขณะที่ผู้ใช้งานกำลังพิมพ์ข้อความ ถ้าผลลัพธ์ที่ได้จาการคาดการณ์คำถัดไปของแบบจำลอง NLP ถูกต้อง นั่นหมายความว่า แบบจำลองได้เรียนรู้ และทำความเข้าใจเกี่ยวกับโครงสร้างภาษาเป็นอย่างดี ดังนั้นความรู้ดังกล่าวจึงเป็นจุดเริ่มต้น ในการเรียนรู้แบบจำลองงานอื่น ๆ ที่กำหนดขึ้นเอง ULMFiT ได้ถูกพัฒนาโดยใช้โครงสร้าง ASGD Weight-Dropped LSTM (AWD-LSTM) [5]  ซึ่งเป็นหนึ่งในแบบจำลองภาษาที่ได้รับความนิยม และถูกใช้อ้างอิงในเอกสารต่าง ๆ อีกมาก อีกทั้งยังเป็น LSTM ที่ดีที่สุดสำหรับการสร้างแบบจำลองภาษาในปัจจุบัน เมื่อแบบจำลองได้เรียนรู้รูปแบบภาษา มันสามารถนำไปประยุกต์ใช้กับงานอื่น ๆ ได้ แต่การนำไปใช้จริงยังคงต้องการปรับแต่งแบบจำลองเพื่อให้เหมาะสมกับงาน โดยเริ่มจากการฝึกอบรมรูปแบบภาษาสำหรับงานที่ใช้ หลังจากนั้นจึงฝึกอบรมสำหรับการทำงานจริง เช่น การฝึกอบรมให้แบบจำลองการจำแนกประเภท จากภาพที่ 4 การทำงานของ ULMFiT แบ่งออกเป็น 3 ขั้นตอนหลัก ได้แก่ LM pre-training คือการฝึกอบรม ULMFiT สำหรับรูปแบบภาษาทั่วไป ผลลัพธ์ที่ได้ คือแบบจำลองได้รับการเรียนรู้คุณสมบัติทั่วไปของภาษานั้น นอกจากนั้น การ pre-training จะมีประสิทธิภาพยิ่งขึ้นโดยเฉพาะข้อมูลที่มีขนาดเล็ก หรือกลาง LM fine-tuning นั้น เป็น การฝึกอบรม ULMFiT สำหรับรูปแบบภาษาเฉพาะ ผลลัพธ์ที่ได้ คือแบบจำลองที่มีรูปแบบที่เหมาะสม เพื่อใช้กับงานที่มีเป้าหมายแบบเฉพาะเจาะจง Classifier Fine-Tuning จะเป็นการฝึกอบรม ULMFiT สำหรับงานนั้น จากการทดสอบประสิทธิภาพในบทความ ULMFiT [4] พบว่าการใช้รูปแบบภาษาที่ได้รับการฝึกอบรมมาก่อน ทำให้การสร้างแบบจำลองจำแนกประเภทใช้ข้อมูลน้อยลง เช่น ผลลัพธ์จากการวิเคราะห์ IMDb ด้วยข้อมูลเพียง 100 ข้อมูล (เส้นสีเขียว) สามารถลดอัตราการผิดพลาดของแบบจำลองได้เทียบเท่ากับแบบจำลองที่ได้รับการฝึกอบรมด้วยข้อมูล 20,000 ข้อมูล (เส้นสีน้ำเงิน) ดังแสดงในรูปภาพที่ 5 และทั้งหมดนี้คือภาพรวมของการถ่ายทอดการเรียนรู้ที่สามารถนำไปใช้ในด้านการประมวลผลภาษา ความก้าวหน้าที่ได้รับจาก ULMFiT ได้ส่งเสริมการวิจัยในการถ่ายทอดการเรียนรู้สำหรับ...
8 August 2024

บทความ

จาก Log สู่ข้อมูลเชิงลึก: พลังของ Log Parser ขจัดปัญหา Log ยุ่งเหยิง วิเคราะห์ข้อมูลรวดเร็ว
Log เป็นข้อมูลที่ได้มาจากระบบคอมพิวเตอร์ ซึ่งทำหน้าที่ในการบันทึกรายละเอียดข้อมูลการทำงานต่าง ๆ ของระบบ ช่วยให้ผู้พัฒนาและผู้ดูแลระบบสามารถเข้าใจการทำงานของระบบ วิเคราะห์พฤติกรรมที่ผิดปกติและสามารถแก้ไขได้อย่างทันท่วงที ในระบบที่มีขนาดใหญ่ขึ้นทำให้ปริมาณของ Log นั้นเพิ่มตามไปด้วย การอ่านข้อมูล Log ทั้งหมดด้วยตนเองจึงทำได้ยาก Log parser จึงเข้ามาช่วยแก้ปัญหาตรงนี้ โดย Log parser นั้นจะทำให้ข้อมูล Log ที่ไม่มีโครงสร้างชัดเจน กลายเป็น Log template ที่มีโครงสร้างมากขึ้นกว่าเดิมได้ การสร้าง Log จากในระบบคอมพิวเตอร์นั้น จำเป็นต้องมี Template ที่มนุษย์เขียนให้ เช่น “Sending <*> quality objects” จะเห็นได้ว่า Template ดังกล่าวมีช่องว่าง (Placeholder) ที่ด้วยสัญลักษณ์ “<*>” ให้คอมพิวเตอร์สามารถเติมค่าต่าง ๆ ที่เรียกกว่า Parameter ลงไปได้ ซึ่งจาก Template ดังกล่าวสามารถสร้างเป็น Log ได้หลายรูปแบบดังนี้ จะเห็นได้ว่าจาก Template เพียงอันเดียว สามารถสร้าง Log ที่แตกต่างกันได้จำนวนนับไม่ถ้วน  การทำงานของ Log parser นั้นเสมือนกันการทำย้อนกลับจากสิ่งที่กล่าวไปข้างต้น Log parser จะทำหน้าที่แยก Parameter และ Template ออกจากกัน ทำให้การวิเคราะห์ Template ที่มีจำนวนไม่มากนักนั้นทำได้ง่ายกว่า Log parser approaches  การทำ Log parser นั้นสามารถทำได้หลายวิธี ซึ่งสามารถแบ่งได้ตามยุคสมัยดังนี้ Rule-based pattern matching เนื่องจากในบางครั้ง Parameter ของ Log มักจะมีลักษณะที่ตายตัว เช่น IP, Email, ตัวเลข, เวลา เป็นต้น ทำให้เราสามารถเขียนเป็นกฏในการแยก Paremeter ในแต่ละรูปแบบออกมาได้ โดยการใช้ Regular Expressions (Regex) เช่น ข้อดี ข้อเสีย Heuristic-based             ในกรณีที่ข้อมูล Log เริ่มมีขนาดใหญ่ขึ้น การทำ Rule-based pattern matching จึงเริ่มทำได้ยาก แต่อย่างไรก็ตามข้อมูล Log ที่มาจาก Template เดียวกันนั้น ถ้านำมาเปรียบเทียบกันในระดับคำต่อคำนั้น จะพบว่าในบางส่วนจะมีตัวอักษรที่เหมือนกัน 100% ซึ่งส่วนนั้นจะมาจาก Template ที่เรากำหนดไว้ตั้งแต่ต้น และอีกส่วนที่ไม่เหมือนกันจะเป็น Parameter ที่ถูกใส่เข้าไปใน Template เพื่อใช้สร้าง Log             ด้วยแนวคิด Heurictic นี้ถ้าเราสามารถแยกได้ว่า Log ใดอยู่ Template เดียวกันได้อย่างแม่นยำ จะได้สามารถแยกส่วนที่เป็น Template กับ Parameter ออกจากกันได้อย่างง่ายดาย ทำให้มี Algorithm จำนวนมากถูกสร้างขึ้นมาโดยมีพื้นฐานจากแนวคิดดังกล่าว เช่น Drain, Prefix-graph  Drain Drain (He et al., 2017) เป็น Algorithm ในการ Parse log โดยใช้ต้นไม้ความลึกคงที่ (Fixed depth tree) ซึ่งโครงสร้างของต้นไม้จะใช้เพื่อค่อยแยกแต่ละ Template ออกจากกัน จากที่แสดงในรูปที่ 1 จะเห็นว่า Template ของ Log จะถูกเก็บอยู่ที่ใบ (Leaf node) ของต้นไม้ แม้ว่าในแต่ละใบอาจจะมีมากกว่าหนึ่ง Template แต่การใช้โครงสร้างดังกล่าวเป็นการลดจำนวน Template ที่จำเป็นต้องคำนึงในแต่ละรอบการวิเคราะห์ Log ได้ การ Parse log โดยใช้ Drain นั้นจะเริ่มที่ราก (Root node) ของต้นไม้ จากนั้นเดินทางตามทิศทางของกิ่งต้นไม้ที่ตรงตามเงื่อนไขของ Log ที่มีไปเรื่อยๆ จนกว่าจะถึงใบ หลังจากนั้นจะเป็นการค้นหาต่อว่า Log ใหม่ที่ถูกใส่เข้ามานั้นมีความคล้ายกับ Template ใดที่อยู่ในใบนั้นมากที่สุด ซึ่งสามารถแบ่งเป็น 2 กรณี ข้อดี ข้อเสีย Machine-learning-based             ในบางกรณีการใช้กฏทั่วไปอาจจะไม่ครอบคลุมข้อมูล Log ที่เกิดขึ้น และวิธีแบบ Heuristic อาจจะยังไม่ได้รับมือกับ Log ที่มีความซับซ้อนสูงได้ การใช้โมเดลที่ผ่านการเรียนรู้จากข้อมูล Log จำนวนมากจึงเป็นอีกแนวทางหนึ่งที่ทำได้ ข้อสังเกตของการใช้ Machine learning คือ จำเป็นต้องมีชุดข้อมูลสำหรับสอนโมเดล ในกรณี Log นั้นอาจจะมีจำนวนข้อมูลมากก็จริง แต่ก็ไม่มีการกำกับข้อมูลว่า Log นั้นอยู่ใน Template ใด และด้วยจำนวนข้อมูลที่มหาศาลทำให้การสร้างชุดข้อมูลนั้นอาจทำได้ยาก ดังนั้นวิธีการใช้ Machine learning ที่จะกล่าวต่อไปนี้ทั้งหมดจะเป็นวิธีที่ไม่จำเป็นต้องใช้ชุดข้อมูลที่มีการกำกับแล้ว หรือใช้เพียงเล็กน้อยเท่านั้น LogStamp LogStamp (Tao et al. 2022) เป็นโมเดลที่สามารถเรียนรู้ได้เองโดยไม่จำเป็นต้องกำกับข้อมูล ซึ่งการทำงานของ LogStamp นั้นเป็นไปดังรูปที่ 2 เริ่มจาก Historical logs หรือคือข้อมูล Log ที่มีอยู่ โดยไม่มีการกำกับข้อมูล ข้อมูลดังกล่าวจะถูกนำไปหา Sentence embedding และ Word embedding ผ่านการใช้ Bidirectional Encoder Representations from Transformers (BERT) ซึ่งเป็นโมเดลทางภาษาที่ใช้กันอย่างแพร่หลายมากในช่วงปี 2018 ซึ่งการหา Embedding นั้นเหมือนเป็นการวิเคราะห์ความหมายของ Log โดยใช้โมเดลทางภาษา ผลลัพธ์ที่ได้จะเป็น Vector ที่สามารถนำมาคำนวนทางคณิตศาสตร์ได้ ซึ่ง Sentence embedding ที่ได้ออกมานั้นจะเป็นความหมายถึง Log ในระดับประโยค ซึ่งจะถูกนำไปใช้ในการจับกลุ่ม (Clustering) กลุ่มที่ได้นั้นจะถูกตีความว่าเป็น Template ของ Log ดังกล่าวทันที ซึ่ง Log ที่อยู่ในกลุ่มเดียวกัน ก็คือเกิดมาจาก Template...
25 March 2024

บทความ

การปรับค่าความน่าจะเป็นเพื่อความเชื่อถือในการทำนาย Probability Calibration
ในบางครั้งการสร้างโมเดลทำนาย เราไม่ได้สนใจเพียงแค่ว่าสิ่งทีทำนายออกมาจะเป็น class อะไร แต่สนใจไปถึงโอกาสหรือความน่าจะเป็นของผลการทำนายเพื่อจะเอาไปคำนวณ risk หรือ expected value อื่น ๆ ต่อไป เชื่อว่าชาว data sci หลาย ๆ คน ถ้าอยากได้ผลการทำนายเป็น probability จะต้องเคยใช้ method .predict_proba ของ scikit learn อย่างแน่นอน แต่รู้หรือไม่ว่าจริง ๆ แล้ว prob ที่ได้จาก model บางประเภทนั้น มันไม่ตรงกับความเป็นจริง เช่น random forest ที่ใช้ probability เป็นสัดส่วนของจำนวน tree ที่ทำนาย class นั้น ๆ ออกมาต่อจำนวน tree ทั้งหมด ซึ่งจะแตกต่างจากโมเดลที่พยายามเรียนรู้และปรับค่า prob โดยตรงจากข้อมูลอย่าง neural network หรือ logistic regression หรือที่ปัญหาที่เรากำลังทำอยู่อาจจะ imbalance และซึ่งเราอาจะมีการ under, upsampling ระหว่างทำก็อาจจะทำให้โมเดลให้ค่า prob ได้ไม่ตรงกับความเป็นจริงเช่นเดียวกัน Reliability Curve แล้วที่บอกว่า prob มันไม่ตรง มันดูยังไง ก่อนอื่นเลย เราจะแนะนำให้ทุกท่านรู้จักกับกราฟนึงที่ชื่อว่า reliability curve (หรือ calibration curve) ซึ่งถ้าเอาโดยย่อมันคือการเทียบเลยว่า prob ที่โมเดลทำนายกับ prob ที่เกิดจริงใน test set ตรงกันรึเปล่า โดยที่ reliability curve วิธีทำมันก็ง่าย ๆ ดังแสดงในขั้นตอนด้านล่าง หรือที่จริงถ้าใช้ sklearn ก็เรียก function sklearn.calibration.calibration_curve ได้เลย โดยที่ถ้าหาก probability ที่โมเดลเราทำนายออกมามันตรงกับความจริง กราฟควรจะเป็นเส้นตรงตามแนวเส้นทแยงมุม แต่ถ้าโมเดลมันให้ prob ไม่ตรงเส้นมันก็จะไม่ค่อยอยู่ตรงเส้นทแยงมุมเท่าไหร่ ตัวอย่างดังรูปด้านล่าง โดยสรุปก็คือโมเดลที่สร้างเส้นนี้มักจะทายค่าแบบกลาง ๆ เช่น ระหว่าง 0.4-0.6 แต่จะไม่ค่อยมั่นใจแบบทาย prob ที่ 0 หรือ 1 เลย How to Measure The Preciseness of Probability โดยวิธีการวัดว่าโมเดลเราให้ prob ได้เพี้ยนมากน้อยเท่าไหร่สามารถวัดได้ด้วย Brier score ดังสูตรด้านล่าง ซึ่งมันก็เป็นแค่การลบ โดยถ้าหาก Brier score มีค่ามากแสดงว่าโมเดลเราเพี้ยนเยอะ [latexpage] $BS = \frac{1}{n} \sum_{i=1}^{n} (\hat{p}(y_i) – y_i)^2$ โดยตัวแปร Calibration Method โดยที่เราสามารถปรับ probability ให้ตรงกับความเป็นจริงได้ด้วยการทำ probability calibration นั่นเอง โดยการทำ probability calibration นั้นจะนับว่าเป็นการทำ post processing หรือเป็นกระบวนการที่เกิดขึ้นหลังจากเรา train AI model เรียบร้อยแล้ว ซึ่งการทำ probability calibration นั้นควรจะทำบน validation set เนื่องจากว่าบน training set นั้นมีโอกาสที่ model เราจะ overconfidence อยู่แล้ว เพราะมันเคยเห็นคำตอบมาก่อนหน้าแล้ว โดยที่การทำ probability calibration นั้นจะมี algorithm อยู่หลายอันด้วยกัน แต่ในบทความนี้จะยกตัวอย่างสองวิธี ได้แก่ platt scaling และ isonotic regression Platt Scaling ใช้เมื่อกราฟ reliability curve ของโมเดลหน้าตาเหมือน sigmoid function (เส้นสี xxx ในภาพที่ xxx ด้านบน) ซึ่งโดยตั้งต้นแล้วตัวมันเองก็ถูกคิดค้นขึ้นมาเพื่อ map ระหว่างผลลัพธ์ของโมเดล SVM (ที่มีค่าระหว่าง -inf ไปถึง +inf) ไปเป็น probability (ที่มีค่าระหว่าง 0 ถึง 1) ซึ่งถ้าเราคุ้นเคยกับการใช้งานแบบนี้มาก่อนจะนึกได้ว่าที่จริงมันคือ sigmoid function เลยนี่นา ซึ่งถ้าพูดให้ถูกตัว Platt scaling มันเหมือน sigmoid function ที่เป็นสามารถเรียนรู้จากข้อมูลได้ โดยจะเห็นได้ว่าสมการของมันจะมีหน้าตาที่คล้าย sigmoid function พอสมควร $P(y = 1 | f) = \frac{1}{1 + \exp(Af + B)}$ โดยจากสมการนั้น โดยข้อดีของ Platt Scaling นั้นคือมันใช้ข้อมูลที่น้อย (น้อยกว่า isotonic regression ที่จะกล่าวถึงต่อไป) ก็สามารถให้ผลลัพธ์การ calibrate ที่ดีได้ แต่ข้อเสียคือไม่ค่อย flexible กล่าวคือจะทำงานได้ดีกับโมเดลที่ให้ probability บน reliability curve แบบ sigmoid เท่านั้น Isotonic Regression ในส่วนของ Isotonic Regression นั้นค่อนข้างจะ flexible กว่าตัวของ Platt Scaling ตรงที่สามารถทำงานบน reliability curve แบบใดก็ได้ แต่ก็ต้องแลกมาด้วยการใช้ข้อมูลจำนวนที่มากกว่าในการ fit ตัวมัน (มี dataset สำหรับ calibrate probability มากกว่า 1,000 จุด) โดยตัวมันเองจะมี function เหมือนขั้นบันได ที่จะค่อย ๆ ปรับความยาวแต่ละขั้น และไล่ขึ้นไปให้ map...
21 March 2024

บทความ

ความตื่นตัวของหุ่นยนต์ที่ปรึกษาด้านการเงิน
ใครที่อยากลงทุน แต่ไม่รู้จะเริ่มยังไง ไม่ต้องกังวลอีกต่อไปเพราะตอนนี้เรามี Robo-Advisor หรือ A.I. ที่จะมาทำหน้าที่เป็นที่ปรึกษาด้านการลงทุน
13 October 2023

บทความ

Richemont ใช้เทคโนโลยี AI อย่างไรเพื่อยกระดับการบริการลูกค้าให้ดีขึ้น
ลองมาดูว่าบริษัทแบรนด์หรูสัญชาติสวิสที่ใหญ่ที่สุดอย่าง Richemont นำเทคโนโลยี AI เข้ามาช่วยดูแลลูกค้าอย่างไร
3 March 2023

บทความ

Quantitative Hedge Fund สร้างผลตอบแทนเหนือตลาด จากข้อมูลมหาศาลได้อย่างไร?
หลาย ๆ ท่านที่สนใจด้านการลงทุน คงจะรู้จักหลักการลงทุนอย่าง Value Investing (VI) ซึ่งเป็นหลักการลงทุนที่นักลงทุนที่ประสบความสำเร็จระดับโลก อย่าง Warren Buffet, Peter Lynch, Charlie Munger และอื่น ๆ อีกหลายท่าน ยึดถือ ปฏิบัติ และ เผยแพร่ต่อสาธารณะชน  มาเป็นระยะเวลายาวนานหลายสิบปี หลักการลงทุนที่ดูแสนเรียบง่ายนี้ มักจะเน้นไปที่การศึกษา ทำความเข้าใจ และประเมินมูลค่าธุรกิจ (หุ้น) ผ่านการประเมินปัจจัยเชิงคุณภาพต่าง ๆ เช่น ความได้เปรียบในการแข่งขัน การเข้ามาของคู่แข่งรายใหม่ อำนาจต่อรองของบริษัท พฤติกรรมของผู้บริโภค ประกอบกับการประเมินปัจจัยเชิงปริมาณ เช่น รายได้ และกำไรในอนาคตของกิจการ ซึ่งจะสะท้อนการเติบโตของกำไรในอนาคต เพื่อนำมาใช้ประกอบการตัดสินใจในการลงทุน ซึ่งล้วนต้องอาศัยการศึกษาวิจัย วิเคราะห์ข้อมูลปริมาณมาก เพื่อทำความเข้าใจสินทรัพย์นั้น ๆ รายตัวอย่างละเอียด Quant Fund ใช้กลยุทธ์อะไร วิธีการดังกล่าวนี้ แตกต่างอย่างสิ้นเชิงกับกับที่ Quant Fund (Quantitative Hedge Fund) อย่าง Renaissance Technologies, Citadel, Two Sigma และอื่น ๆ เลือกใช้ ซึ่งจะเน้นไปที่การสร้าง และใช้อัลกอริทึม เพื่อทำการตัดสินใจ ซื้อขาย หลักทรัพย์ต่าง ๆ โดยอัตโนมัติ ตามกลยุทธ์ต่าง ๆ ยกตัวอย่างเช่น จากตัวอย่างทั้งสามวิธีข้างต้น จะเห็นได้ว่า หลักการในการลงทุน และตัดสินใจซื้อขายหลักทรัพย์ ของ Quant Fund นั้นล้วนต้องเริ่มต้นจากข้อมูลปริมาณมหาศาล ไม่ว่าจะเป็นข้อมูลทั่ว ๆ ไปเกี่ยวกับ ราคาหลักทรัพย์ และปริมาณการซื้อ ขาย ย้อนหลังหลายสิบปี, ข้อมูลปัจจัยพื้นฐานของบริษัท และกลุ่มธุรกิจ อุตสาหกรรมต่าง ๆ , ข้อมูลตัวเลขดัชนีชี้วัดเศรษฐกิจมหภาค เช่น GDP, อัตราเงินเฟ้อ, อัตราดอกเบี้ย เป็นต้น รวมทั้งยังใช้ ข้อมูลอื่น ๆ ที่กองทุนทั่วไป มักไม่ได้ให้ความสำคัญ เช่น ข้อมูลภาพถ่ายจากดาวเทียม/ภาพถ่ายทางอากาศ ซึ่งจะถูกนำมาประมวลผล เพื่อตรวจเช็ค และติดตามการเคลื่อนไหวของกิจกรรมทางเศรษฐกิจ เช่น การดำเนินงานของบริษัท ห้างร้าน หรือการเพาะปลูก เก็บเกี่ยว สินค้าโภคภัณฑ์ ต่าง ๆ หรือ ข้อมูลการสัญจรทางถนน เพื่อวัดระดับกิจกรรมทางเศรษฐกิจ และการขนส่ง เป็นต้น Quantitative Trading มีวิธีการอย่างไร ข้อมูลมหาศาลเหล่านี้ จำเป็นต้องถูกจัดการด้วยเทคนิคทางวิทยาศาสตร์ข้อมูล เช่น การทำความสะอาด หรือ การจัดการข้อมูลที่ผิดปกติ ซึ่งหากไม่ได้รับการจัดการ อาจส่งผลต่อประสิทธิภาพของโมเดล จากนั้นจึงทำการเตรียมความพร้อมข้อมูลก่อนที่จะนำข้อมูลเหล่านี้ ไปใช้ประกอบกลยุทธ์ต่าง ๆ เพื่อสร้างโมเดลหาสัญญาณซื้อ ขาย จากชุดข้อมูลที่มี และสร้างระบบอัลกอริทึมซื้อขายหลักทรัพย์ ซึ่งจะต้องผ่านการ Backtesting หรือการทดสอบระบบซื้อขาย ด้วยชุดข้อมูลในอดีตย้อนหลังหลายปี เพื่อตรวจสอบประสิทธิภาพของกลยุทธ์ที่ใช้ ด้วยตัวชี้วัดต่าง ๆ เช่น Quant Fund ประยุกต์ใช้วิทยาศาสตร์ข้อมูลอย่างไร เช่นเดียวกับหลักการในวิทยาศาสตร์ข้อมูล เราจำเป็นต้องแบ่งชุดข้อมูลที่ใช้สร้างโมเดลการซื้อขาย ออกเป็น training set, validation set, และ test set โดยจะทำการสอนโมเดลด้วย training set หลังจากนั้นจึงทำ hyper-parameter tuning และทำการคัดเลือกโมเดลโดยใช้ validation set สุดท้ายจึงทำการทดสอบโมเดลด้วย test set ซึ่งเป็นข้อมูลที่โมเดลไม่เคยเจอมาก่อน หลังจากได้โมเดลที่ยอดเยี่ยมแล้ว จะเป็นการนำโมเดลที่ได้มาสร้างโปรแกรมซื้อขายหลักทรัพย์ โดยขั้นตอนนี้ เรื่องของความเร็วของการประมวลผลโปรแกรม และความเร็วในการเชื่อมต่อ และดำเนินการซื้อขาย จะมีผลอย่างมาก หลังจากนั้นจะเป็นเรื่องของการติดตามการทำงานของโมเดล และเพิ่มประสิทธิภาพการทำงานของโมเดล ให้มีผลตอบแทนที่สูงขึ้น และลดความเสี่ยงจากปัจจัยต่าง ๆ ไม่ว่าจะมาจากตัวกลยุทธ์ที่ใช้ จากวิกฤตในตลาด หรือจากตัวโปรแกรมซื้อขายที่สร้างขึ้นมา บทส่งท้าย จะเห็นได้ว่าหลักการในวิทยาศาสตร์ข้อมูล นอกจากจะสามารถนำมาประยุกต์ใช้ในธุรกิจต่าง ๆ เพื่อสร้างความเข้าใจเชิงลึก หรือสร้างโมเดลที่ตอบโจทย์มากมายได้แล้ว เมื่อนำมาประยุกต์ใช้ในโลกของการลงทุน สามารถสร้างผลตอบแทนเหนือตลาด ได้เป็นระยะเวลายาวนาน โดยตัวอย่างที่โด่งดังที่สุด คงหนีไม่พ้น The Medallion Fund ซึ่งบริหารโดย Renaissance Technologies ที่สามารถสร้างผลตอบแทนทบต้นต่อปี สูงถึง 71.8% (ก่อนหักค่าบริหารกองทุน) ระหว่างปี 1994 ถึงปี 2014 โดยความน่าสนใจของ Renaissance Technologies คือเป็น Hedge Fund ที่ประกอบไปด้วย นักคณิตศาสตร์ และนักวิทยาศาสตร์จำนวนมาก โดยที่พนักงานส่วนใหญ่ ไม่ได้มีพื้นฐานมาจากสายการเงิน เหมือนกองทุนทั่ว ๆ ไป บทความโดย ปิ่นพงศ์ สุขแก้วตรวจทานและปรับปรุงโดย ดวงใจ จิตคงชื่น
6 February 2023

บทความ

ประวัติและหลักการของเครือข่ายประสาทเทียม (Artificial Neural Networks - ANNs)
ประวัติและหลักการทำงานของ Neural Network เริ่มจากโมเดล Perceptron จากนั้นจึงเพิ่ม layer เข้าไปให้กลายเป็น Multilayer Perceptron โดยสามารถเชื่อมต่อ layer ได้หลายวิธี แต่ละวิธีมีชื่อเรียกต่างกันจึงเรียกรวม ๆ ว่า Artificial Neural Network
3 February 2023

บทความ

Machine Learning Security: ความปลอดภัยของการเรียนรู้ของเครื่อง
Machine Learning Security เป็นหลักการป้องกันการโจมตีแบบจำลองการเรียนรู้ของเครื่องระหว่างที่ถูกนำไปใช้งานจริง
19 January 2023
PDPA Icon

We use cookies to optimize your browsing experience and improve our website’s performance. Learn more at our Privacy Policy and adjust your cookie settings at Settings

Privacy Preferences

You can choose your cookie settings by turning on/off each type of cookie as needed, except for necessary cookies.

Accept all
Manage Consent Preferences
  • Strictly Necessary Cookies
    Always Active

    This type of cookie is essential for providing services on the website of the Personal Data Protection Committee Office, allowing you to access various parts of the site. It also helps remember information you have previously provided through the website. Disabling this type of cookie will result in your inability to use key services of the Personal Data Protection Committee Office that require cookies to function.
    Cookies Details

  • Performance Cookies

    This type of cookie helps the Big Data Institute (Public Organization) understand user interactions with its website services, including which pages or areas of the site are most popular, as well as analyze other related data. The Big Data Institute (Public Organization) also uses this information to improve website performance and gain a better understanding of user behavior. Although the data collected by these cookies is non-identifiable and used solely for statistical analysis, disabling them will prevent the Big Data Institute (Public Organization) from knowing the number of website visitors and from evaluating the quality of its services.

  • Functional Cookies

    This type of cookie enables the Big Data Institute (Public Organization)’s website to remember the choices you have made and deliver enhanced features and content tailored to your usage. For example, it can remember your username or changes you have made to font sizes or other customizable settings on the page. Disabling these cookies may result in the website not functioning properly.

  • Targeting Cookies

    "This type of cookie helps the Big Data Institute (Public Organization) understand user interactions with its website services, including which pages or areas of the site are most popular, as well as analyze other related data. The Big Data Institute (Public Organization) also uses this information to improve website performance and gain a better understanding of user behavior. Although the data collected by these cookies is non-identifiable and used solely for statistical analysis, disabling them will prevent the Big Data Institute (Public Organization) from knowing the number of website visitors and from evaluating the quality of its services.

Save settings
This site is registered on wpml.org as a development site. Switch to a production site key to remove this banner.