Nanont Noparat

Nanont Noparat

test

บทความทั้งหมด

All Articles

Author Category Post Filter
หลักการเลือกใช้ Database 6 ประเภท
การเลือกเครื่องมือ (tools) ที่ดีที่สุดอาจไม่ใช่เครื่องมือที่มี แต่เป็นเครื่องมือที่เหมาะสม การเลือกเครื่องมือที่ไม่เหมาะสมมาใช้งานนั้นย่อมทำให้คุณภาพงานออกมาได้ไม่ดีเท่าที่ควร หรือบางทีอาจส่งผลแย่ต่องานด้วยซ้ำ อีกทั้งบางทียังมีผลต่อความปลอดภัยต่อผู้ใช้งานอีกด้วย ในวงการ tech ก็เช่นกัน การเลือกใช้ระบบฐานข้อมูล (Database) ที่เหมาะกับ product ของเรา จำเป็นต้องผ่านการวางแผนที่ดี รอบคอบ รวมถึงรู้จักถึง tools ต่าง ๆ ที่นำมาเลือกใช้ว่าเหมาะกับ requirement หรือไม่ เนื่องจาก tools แต่ละชิ้นนั้นมีข้อดี ข้อเสีย ความเหมาะสมที่แตกต่างกันออกไปในแต่ละงาน การเลือก tools มาใช้งานผิดประเภทเช่น การนำเลื่อยมาตอกตะปู อาจส่งผลให้ตะปูไม่แน่นพอ หรือเลื่อยอาจบาดขาได้ ซึ่งการออกแบบระบบ software ก็เช่นกัน การเลือก tools ผิดประเภทนั้นย่อมมี cost ที่ตามมาทีหลัง ทั้งระยะสั้น หรือระยะยาวได้ ดังนั้นบทความนี้จะพยายามมาตีแผ่วิธีการเลือกใช้  Database ประเภทต่าง ๆ ข้อดีข้อเสียของ Database แต่ละแบบ รวมถึง use case ใดที่เหมาะกับการใช้ Database รูปแบบนั้น Key-Value Database การเก็บข้อมูลจะอยู่ในลักษณะ key กับ value โดยที่แต่ละ key นั้นจะไม่ซ้ำกัน และใช้ในการเป็น index สำหรับการเข้าถึง value เพราะฉะนั้นลักษณะของ Database ประเภทนี้จะเปรียบเสมือน Python dictionary หรือ JSON Object ขนาดใหญ่ที่สามารถเข้าถึง value ต่าง ๆ ได้ด้วยการ indexing ผ่าน key นอกจากนี้พวก Key-value Database อย่างเช่น Redis (เป็น in-memory data structure store ที่ถูกนำมาใช้เป็น Key-value Database) นั้นจะเก็บ Data อยู่ในส่วนของ RAM หรือ Cache ของ machine ทำให้ความเร็วในการทำ operations อย่าง read, write นั้นสูงกว่า Database ประเภทอื่นมาก (ความเร็วอยู่ในระดับ millisecond) อีกทั้งตัว value ยังรองรับ Data Type หลายประเภทอีกด้วย (String, List, Set, Hash, Bitmap, etc) ในเมื่อถ้ามันเร็วขนาดนี้ ทำไมไม่เอามาใช้แทนพวก MSSQL, MongoDB หรือ Database ประเภทอื่น ๆ เลยหล่ะ? เนื่องจากมันมีแค่ key กับ value ทำให้ไม่มีสามารถทำการ query, JOIN operations หรือมี Data Model ที่นอกเหนือจาก key-value ได้ ทำให้ไม่เหมาะกับ Complex Data อีกทั้งเนื่องจาก Data ถูก store อยู่ใน RAM ทำให้ไม่สามารถเก็บข้อมูลได้เยอะ เมื่อเทียบกับ disk storage ทั่วไป ข้อดี ข้อเสีย เมื่อไหร่ที่ควรใช้ Key-value Database Wide-column Database Database ประเภทนี้จะคล้ายกับการนำ Key-value Database มาปรับแต่งในส่วนของ value โดยที่ value นั้นจะ store ในส่วนที่อยู่ในลักษณะ set ของ column แทนที่จะเป็น value เดี่ยว ๆ เหมือนใน Key-value Database นอกจากนั้น Wide-column Database ก็ยังไม่มี Schema ที่ตายตัว (Schema-less) ทำให้สามารถจัดการกับ unstructured ได้ อีกทั้งยังมีระบบ fault tolerant ในตัวจากการที่เก็บข้อมูลไว้หลาย Data Node เช่น Apache H-Base ที่ operate อยู่บน Hadoop file system จะมีการเก็บข้อมูลเดียวกันไว้ 3 Data Nodes เพื่อที่ว่าหากมี Data Node อันใดอันหนึ่งเสียไป จะสามารถ recover ข้อมูลกลับมาได้ มีภาษาที่ใช้ในการ query ข้อมูลที่คล้าย SQL แต่ไม่ทรงพลังเท่า (เพราะว่า perform JOIN operation ไม่ได้) อย่าง CQL (สำหรับ Cassandra) รวมถึงยังไม่สามารถ index value นอกเหนือจาก key ของมันได้ ข้อดี ข้อเสีย เมื่อไหร่ที่ควรใช้ Wide-column Database ถึง Wide-column Database นั้นจะสามารถ scale horizontally หรือสามารถทำ write operation ที่มีปริมาณมาก ๆ ได้ แต่ก็ยังไม่เหมาะสำหรับการใช้เป็น General-purpose Database อยู่ดีแต่อาจเหมาะกับการเป็น Data Lake ที่ต้องการความสามารถในการ dump data ที่หลากหลายเข้ามาตลอดเวลา (High Write, Large variety) Document Database Document Database เป็นหนึ่งใน Database ที่นิยมใช้มากที่สุดในยุคปัจจุบัน โดยภายใน Database จะเก็บ Document ที่เป็นเซ็ตของ key-value pairs (หรือก็คือ JSON) และ Document เหล่านั้นจะถูกเก็บไว้ใน Collection (เปรียบเทียบคล้ายกับ Table ใน Relational Database Management System (RDBMS)) อีกที เพื่อทำให้ง่ายต่อการทำ Data Model Document Database นั้นจะใช้คอนเซ็ปต์ของการทำ Denormalization ซึ่งตรงกันข้ามกับการทำ Normalization table ต่าง ๆ ใน RDBMS การทำ Denormalization จะคล้ายกับการรวมหลายข้อมูลจาก table มาแล้วให้เป็นหนึ่งเดียว ทำให้มัน read ข้อมูลได้ไวมาก เมื่อเทียบกับ RDBMS ที่ต้องทำการ JOIN หลายสิบ table และมีจำนวนมากพร้อมกัน นอกจากนั้นภายในแต่ละ Collection นั้นไม่จำเป็นต้องมี Schema ที่ตายตัว (Schema-less) ทำให้มีความยืดหยุ่น และสามารถรองรับ Data ทุกประเภท หรือ Data Structure ที่ซับซ้อนได้ เช่น Embedded Document, Nested JSON อีกทั้งยังมีการ query ข้อมูลที่คล้ายกับ RDBMS เพียงแต่ JOIN ไม่ได้ แต่ความที่มันเป็น Schema-less นั้นมันก็ทำให้มี Trade-off ในเรื่องของ redundancy และ inconsistency ของข้อมูล ส่งผลให้การ write หรือ update ข้อมูลนั้นซับซ้อนยิ่งขึ้นเพราะไม่มีตัว validate schema เหมือนดั่ง RDBMS ข้อดี ข้อเสีย เมื่อไหร่ที่ควรใช้ Relational Database Management System (RDBMS) เป็นหนึ่งใน Database ที่นิยมใช้กันมากที่สุดอีกหนึ่งตัว โดยจะบริหารจัดการข้อมูลอยู่ในลักษณะของความสัมพันธ์ระหว่างข้องมูล (Relational)  ซึ่งจะเก็บข้อมูลอยู่เป็นหมวดหมู่ในลักษณะของตาราง (Table) และแต่ละตารางสามารถบรรยายความสัมพันธ์กับตารางอื่นได้ ส่งผลให้สามารถ query ข้อมูลแบบซับซ้อนได้ (เช่นการทำ JOIN operation) การเก็บข้อมูลในรูปแบบของตารางตาม Data Model ที่วางไว้ทำให้การเก็บข้อมูลมีความเป็นระเบียบเรียบร้อย นอกจากนั้น Database ยังทำหน้าที่ยืนยันว่าข้อมูลที่เข้ามานั้นจะตรงตาม Data Model ที่วางไว้เสมอ (consistency) ความเป็น Relational ลองจินตนาการภาพการผลิตสิ่งของบางอย่างจากโรงงานหนึ่งอย่างเช่น คอมพิวเตอร์ คอมพิวเตอร์นั้นเกิดจากการนำ components ต่าง ๆ เช่น RAM, DISK, CPU, POWER SUPPLY, GPU, MOTHERBOARD มาต่อกันเป็นคอมพิวเตอร์เครื่องหนึ่ง และแต่ละ component ก็จะมี Unique ID ของ Hardware ติดมาด้วย ดังนั้นการจะผลิตคอมพิวเตอร์ขึ้นมาจำนวนมาก ๆ ในโรงงานได้ อย่างมีประสิทธิภาพ จึงจำเป็นต้องมี Blueprint ที่บอกถึงส่วนประกอบของ component ส่วนต่าง ๆ รวมถึง computer เองด้วยเช่น RAM ควรมีส่วน component ย่อยอะไรบ้าง จำนวณเท่าไหร่ เช่น clock, register, speed chip ซึ่งตัว Blueprint สามารถเรียกได้ว่าเป็น Schema ที่ถูกใช้ใน RDBMS RDBMS ยังสามารถรองรับการทำ transaction เป็นข้อดีที่สุดอย่างหนึ่งของ Database ประเภทนี้ หมายความว่าถ้าหากมี query ย่อย ๆ หลาย ๆ อันที่มี relation ต่อกัน การทำ transaction จะทำให้มั่นใจได้ว่าชุดของ query ภายใน transaction นี้ต้อง success ทั้งหมด หรือถ้ามีอันใดอันหนึ่ง fail ก็จะ fail พร้อมกันทั้งหมด (Atomicity) และแต่ละ transaction จะเป็นเอกเทศต่อกันหมายความว่าถ้า transaction A มีข้อผิดพลาดบางอย่างเกิดขึ้นจะไม่ส่งผลต่อการทำ transaction B  (Isolation) เพื่อป้องกัน business logic ที่ผิดพลาด เช่น ลูกค้าซื้อสินค้า 1 ชิ้น ต้องมี query update 3 ตาราง ได้แก่ สมมติว่า query ทั้งหมดสำเร็จไปเพียงแค่สองในสามหมายความว่าทำให้อาจเกิดเหตุการณ์ที่ นอกจากนี้เมื่อ transaction ถูก submit หรือ commit ไปแล้วจะถูกเก็บรักษาไว้อย่างดี เพื่อป้องกันเวลาระบบล่ม หรือไฟดับ จะมั่นใจได้ว่าข้อมูลทุกอย่างยังอยู่ตามเดิม (Durability) โดย feature ที่กล่าวมาทั้งหมดข้างต้นได้แก่ atomicity, consistency, isolation, durability หรือที่เรียกว่า ACID operations นั่นเองซึ่งถือเป็นหนึ่งในข้อดีหลักของการเลือกใช้ RDBMS ข้อดีของความเป็น Relational ข้อเสียของความเป็น Relational เมื่อไหร่ที่ควรใช้ Relational DB Graph Database ภายใน Database นั้นจะเก็บอยู่ในลักษณะของ Node และ Edge โดยข้อมูลจะถูก store อยู่ใน Node และมีการ define relationship ของแต่ละ Node ผ่าน Edges การจะหาว่ามีนักเรียนคนใดบ้างที่ลงคอร์สเรียน English ไปบ้างนั้น จำเป็นต้องมี Lookup/Middleman Table ทีเก็บข้อมูลว่านักเรียนคนไหนลงคอร์สใดไปบ้าง (การทำ Normalization ใน RDBMS) และจำเป็นต้องการใช้ JOIN ระหว่าง Table ดังภาพด้านบน แต่ถ้าหากเป็น Graph Database นั้นมันจะ define relationship ลักษณะนี้ได้โดยไม่ต้องมี Table ที่ต้องมาเก็บ relationship ระหว่าง Data แต่หลักการของ Graph Database จะสามารถ define relationship ได้ที่ Edge โดยตรงดังภาพด้านบน ให้การเก็บข้อมูลในลักษณะนี้ บรรยายความสัมพันธ์ระหว่าง Entity ได้โดยง่าย และตรงไปตรงมา นอกจากนั้นยังหลีกเลี่ยง complex query อย่างการ JOIN หลายตารางมาก ๆ ที่เป็นปัญหาหนึ่งใน RDBMS ข้อดี ข้อเสีย เมื่อไหร่ที่ควรใช้ Graph Database Search Database จะมีลักษณะคล้าย Document Database แต่มีความต่างกันตรงที่ Document Database จะ assign index แล้วจึง insert document บน index นั้น ในขณะที่ Search Database จะทำตรงกันข้ามนั้นก็คือหลังจาก insert document เข้าไปแล้วตัว Search Database จะทำการ generate index ขึ้นมาให้จากคำสำคัญ หรือ term ต่าง ๆ (inverted index) เหมือนกับหน้า appendix ในหนังสือที่เราไว้ใช้ค้นหา Term หรือ Keyword สำคัญต่าง ๆ ว่าอยู่หน้าใดของหนังสือบ้าง ข้อดี ข้อเสีย เมื่อไหร่ที่ควรใช้ ดังนั้นหลักการนี้จึงทำให้เหมาะกับการทำ Search Engine หรือพวก Type Ahead (Auto-suggestion ตอนพิมพ์คำ) มาก ๆ เนื่องจากเป็นการใช้ search text ที่มักจะเป็น Term ต่าง ๆ ที่ store อยู่ใน inverted...
9 September 2021
Crowd-powered Data Mining
บ่อยครั้งที่การทำ Data Mining Task นั้นการประมวลผล Data โดยใช้เพียง Machine นั้นอาจไม่เพียงพอต่อลักษณะการนำ Data ไปใช้ในปัจจุบันเช่น การวิเคราะห์ความรู้สึก (Sentiment Analysis) และการจำแนกรูปภาพว่ารูปไหนคือสัตว์ชนิดใด (Image Classification) เนื่องจาก Task จำพวกนี้จำเป็นต้องใช้ความสามารถในการตระหนักรู้ของมนุษย์ (Human Cognitive Ability) มาช่วย Machine ในการประมวลผล Data เหล่านี้ให้ถูกต้องและมีประสิทธิภาพมากขึ้น และการที่จะกระจาย Data Mining Task เหล่านี้ไปหามนุษย์จำนวนมาก เพื่อให้มนุษย์ช่วยแก้ปัญหา หรือประมวลผล Data ที่ Machine ทำได้ยาก และนำข้อมูลเหล่านั้นมาใช้ประโยชน์ต่อได้ โดยหลักการนี้เรียกว่าการทำ Crowdsourcing ในปัจจุบันนี้ การทำ Crowdsourcing นั้นอยู่ใน Real-world application ทั่วไปทั้งขนาดใหญ่และเล็ก และมีจุดประสงค์ที่แตกต่างกันออกไป โดยส่วนใหญ่จะให้ผู้ใช้งานนั้นเข้ามาใช้บริการ Application จากนั้นจะบันทึกข้อมูลการใช้งาน และสามารถนำข้อมูลเหล่านั้นไปใช้ประโยชน์อย่างอื่นต่อ โดยการที่ผู้ใช้งานนั้นเข้ามาใช้ Application ด้วยแรงจูงใจบางอย่าง ยกตัวอย่างเช่น Wang – Public Crowdsourcing platform สัญชาติไทยที่ผู้ใช้งานสามารถเข้ามา annotate ข้อมูลเพื่อแลกกับเงิน Deadline Always Exists – Web Application ยอดฮิตที่อยู่ในลักษณะของแบบทดสอบ จำลองความตาย ที่ทำให้เราสามารถ Reflex ชีวิตของตัวเองได้ โดยผู้ใช้งานจะมา Contribute ข้อมูลเพื่อแลกกับอารมณ์หรือความรู้สึกที่ได้รับกลับไป ReCAPTCHA – เป็น Engine ที่ช่วยในการป้องกันเว็บไซต์จาก Bot โดยการให้ผู้ใช้งานป้อนคำตามภาพที่เห็น ซึ่งถ้าหากผู้ใช้งานเป็นมนุษย์จริง ๆ จะสามารถป้อนคำตามที่เห็นได้ไม่ยาก (เหรอ?) โดยทาง ReCAPTCHA นั้นสามารถนำข้อมูลของพฤติกรรมการพิมพ์ของผู้ใช้งานไปใช้ประโยชน์ต่อได้ Pantip – แพลตฟอร์ม Discussion Forum ที่มียอดการใช้งานเยอะที่สุดในประเทศไทย ที่สามารถให้คนมาโพส ถามตอบ ขอความช่วยเหลือ หรือปรึกษาปัญหาชีวิตได้โดยไม่หวังผลตอบแทน LinkedIn – แพลตฟอร์ม Social Network สำหรับหางานที่เป็นที่นิยมทั่วโลก โดยผู้ใช้งานจำเป็นต้องเข้ามากรอกข้อมูลต่าง ๆ ที่เป็นประโยชน์ต่อการหางาน หรือหาเงินนั่นเอง FoldIt – Game Application ที่ให้ผู้คนเข้ามาช่วย Solve puzzle ทาง Scientific Simulation ต่าง ๆ เช่น Protein Folding หลังจากนั้นเจ้าของแพลตฟอร์มสามารถนำข้อมูลบันทึกการเล่น (Replay) มาใช้ประโยชน์สำหรับการทดลองวิทยาศาสตร์​หรือการแพทย์จริง ๆ ได้ Google PageRank – แพลตฟอร์ม Search Engine ที่ไม่มีใครไม่รู้จัก โดยทาง Google จะนำข้อมูลพฤติกรรมการค้นหาจำนวนมากมาประมวลผล เพื่อทำการจัดอันดับลำดับความสำคัญของเว็บไซต์ (Page Rank) ว่าเว็บไซต์ใดควรขึ้นก่อน หรือหลังเว็บไซต์ใดเวลาที่มีผู้ใช้งานทำการค้นหา Wikipedia – แพลตฟอร์มสารานุกรมที่สามารถให้ผู้ใช้งานเข้ามา Contribute ข้อมูลที่เป็น Knowledge Base เกี่ยวกับเรื่องต่าง ๆ โดยผู้ใช้งานส่วนใหญ่นั้นเข้ามาเพื่อ Contribute ข้อมูลที่คิดว่าเป็นประโยชน์ให้โลกได้รับรู้ และสามารถนำองค์ความรู้ไปใช้ประโยชน์ หรือต่อยอดได้ โดยไม่หวังผลตอบแทน Platform ข้างต้นที่กล่าวมานั้น ต่างก็มีประเภทของแรงจูงใจ (Incentive) ที่ต่างกัน ดังนั้นคำถามคือประเภทของแรงจูงใจนั้นส่งผลต่อคุณภาพของการทำ Crowdsourcing อย่างไร ?? จากภาพจะสังเกตได้ว่า การได้รับ Incentive ที่เป็นเงินทันทีหลังจากการทำแบบทดสอบ (Immediate Payoffs) นั้น มักจะได้คะแนนดีที่สุด เมื่อเทียบกับแรงจูงใจอย่างอื่น ทั้งนี้ทั้งนั้น คะแนนที่ได้รับขึ้นอยู่กับปัจจัยหลายอย่างเช่นประเภทของผู้ใช้งาน หรือ Task Complexity ที่สูงขึ้นนั้นการที่แบบทดสอบอยู่ในรูปแบบของเกมเพื่อความเพลิดเพลิน อาจได้คะแนนเฉลี่ยที่สูงกว่าการมีเงิน (Immediate Payoffs) เป็นรางวัลก็ได้  การพัฒนา Crowdsourcing Platform หรือ Application เป็นของตัวเองนั้น นอกจากจะใช้ Cost ในการ Develop และ Maintenance ที่สูงรวมถึงการเรียก User ให้เข้ามาใช้งาน Platform เป็นจำนวนมากนั้นก็เป็นเรื่องที่ยุ่งยาก ถ้าอย่างนั้นบริษัทที่ต้องการ Data หรือ Insight จากการทำ Crowdsourcing แต่ไม่มี Platform เป็นของตนเองพอจะทำอย่างไรได้บ้าง ?? ตัวเลือกหนึ่งคือการใช้งานบริการ Public Crowdsourcing Platform Amazon Mechanical Turk (AMT) , CrowdFlower, ChinaCrowds ซึ่งโดยตัว Platform นั้นจะมี Feature สำหรับการทำ Crowdsourcing ค่อนข้างครบวงจร เพียงแต่ผู้ใช้งานจำเป็นต้องออกแบบ Task และหาผู้ทำ Task (Worker) รวมถึงออกแบบระบบ Incentive เอง โดยจะมีบทบาททั้งหมด 3 อย่างได้แก่ Requestor จะส่ง Task และ Budget ไปให้ Public Crowdsourcing Platform หลังจากนั้น Task ต่าง ๆ จะถูกประมวลผลโดย Public Crowdsourcing Platform ว่าจะส่ง Task ไปให้ Worker คนใด จากนั้นเมื่อ Worker ทำ Task เสร็จภายในเวลาที่กำหนด Crowdsourcing จะนำ Answer ของ Worker มาประมวลผลเพื่อคำนวณ Quality Score ของ Answer และ Worker จากนั้นจึงส่งผลลัพธ์ทั้งหมดกลับไปยัง Requestor เพื่อให้ Requestor นำ Data หรือ Insight ไปเพิ่มผลประกอบการให้ธุรกิจต่อไป Challenges ในการทำ Crowdsourcing Platform Data หรือ Insight ที่ได้รับมาจากการทำ Crowdsourcing นั้นบางทีอาจไม่มีคุณภาพที่ไม่เพียงพอต่อการนำไปใช้ประโยชน์ต่อดั่ง Quote ที่เคยได้ยินกันคุ้นหูอย่าง “Garbage In Garbage Out” หรือการทำ Crowdsourcing บางทีนั้นไม่คุ้มต่องบประมาณ หรือทรัพยากรที่ได้ทุ่มลงไป ดังนั้นจึงจำเป็นต้องมีการประเมิน และกำกับควบคุมตัวแปรทั้ง 3 อย่างได้แก่ Quality – เนื่องจาก Worker เป็นกลุ่มมนุษย์ที่มาจากร้อยพ่อพันแม่ มีความแตกต่างกันตั้งแต่องค์ความรู้ นิสัยส่วนตัว รสนิยม วัฒนธรรม นอกจากนั้นมนุษย์ยังมีโอกาสผิดพลาดได้อีกด้วย ทำให้ Task ที่ส่งไป Worker อาจทำผิดพลาดได้ Cost – การทำ Crowdsourcing นั้นจำเป็นต้องมี Incentive ไม่ว่าจะอยู่ในรูปของเงิน หรือแรงจูงใจบางอย่างก็ตาม ล้วนมี Cost ที่ตามมา Latency – คือเวลาที่ใช้ในการทำ Crowdsourcing ทั้งหมดซึ่งเวลานั้นเป็น Resource ที่สำคัญอย่างนึง ถ้าหากใช้เวลานานย่อมมีต้นทุนที่เพิ่มขึ้นตามมา หรืออาจทำให้ผลลัพธ์ที่ได้มานั้นเอาไปใช้ไม่ได้ดีในบางโจทย์เนื่องจาก Trend ข้อมูลมันเปลี่ยนไปแล้ว  การทำ Quality Control เนื่องจากคุณภาพ (Quality) ของ Worker นั้นไม่เท่ากันทำให้จำเป็นต้องหาทางดึงคะแนนเชิงคุณภาพ (Extract Quality Score) ของ Worker แต่ละคนมาโดยจะมี 2 กรณีหลัก ๆ ได้แก่ กรณีที่หนึ่ง การที่รู้ Ground  Truth บางอย่างอยู่แล้ว เช่น Task การแปลภาษา, Requestor สามารถตรวจคำตอบเป็นบาง Task ได้ว่า Task ใดถูกหรือผิดเพื่อคำนวณ Quality Score ของแต่ละ Worker โดยหลัก ๆ จะมีอยู่สองวิธีได้แก่ อย่างไรก็ตามทั้งสองวิธียังมีข้อเสีย หรือ Limitation บางอย่างอยู่ได้แก่ จะทำซึ่งบางอย่างที่ว่านั้นอาจ Define Absolute Ground Truth ไม่ได้เลย นอกจากนี้โจทย์ส่วนใหญ่นั้นมักจะไม่รู้ Absolute Ground Truth จริง ๆ หรือ Ground Truth อาจเปลี่ยนไปตามเวลา และยุคสมัย ดังนั้นกรณีแรกอาจเป็นเรื่องยากที่จะ Extract Quality Score ที่ accurate จากแต่ละ Worker ได้ ความโชคร้ายดันมาอยู่ที่โจทย์ส่วนใหญ่นั้นมักจะไม่รู้ Ground Truth ที่แน่นอนซึ่งอาจเป็นโจทย์ในเชิงความเห็น เชิงปรัชญา โจทย์ที่มีได้หลายคำตอบ หรือโจทย์ที่ยังไม่สามารถพิสูจน์หาความจริงได้เช่น ในมิติของการทำ Sentiment Analysis นั้นคอมเมนท์ที่มีความคลุมเคลือจำพวก “ร้านอาหารร้านนี้อร่อยนะ แต่ยังรสชาติเค็ม ๆ อยู่เล็กน้อย” ถือว่าเป็นคอมเมนท์ในเชิงบวกหรือลบกันล่ะ ?? ถ้าอย่างนั้นโจทย์ที่ Define Absolute Groundtruth ไม่ได้จะทำอย่างไรจึงจะสามารถ Extract Quality Score ออกมาจาก Worker ได้ล่ะ ? กรณีที่สอง เมื่อไม่รู้ถึง Ground Truth ใด ๆ ซึ่งวิธีที่การทำ Truth Inference หรือ Extract Quality Score นั้นมีหลายวิธี และปัจจุบันยังไม่มีวิธีที่ดีที่สุด...
1 April 2021
มาทำความรู้จักกับ การเรียนรู้แบบเสริมกำลัง (Reinforcement Learning)
เคยสงสัยมั้ยว่า AI อย่าง AlphaGo, OpenAi แต่เคยสงสัยกันมั้ยว่า AI พวกนี้รู้ได้อย่างไรว่าจะต้องตัดสินใจอย่างไร มาทำความรู้จักกับ Reinforcement Learning กัน
4 November 2020
การจำลองสถานการณ์ COVID-19 ผ่านตัวแบบเชิงคณิตศาสตร์
การระบาดของโรคโควิด (COVID-19) เป็นอีกหนึ่งวิกฤตการณ์โรคระบาดที่เป็นการแพร่ระบาดครั้งใหญ่ของโลก โดยมีจุดเริ่มต้นมาจากเมืองอู่ฮั่น ประเทศจีน โดยเริ่มจากช่วงปลายปี ค.ศ. 2019 โดยหลักการป้องกันการแพร่ระบาดหลัก ๆ คือ การลดการสัมผัสทางกายภาพของคนสู่คนให้ได้มากที่สุด เพื่อลดการแพร่กระจายของเชื้อ ไม่ว่าจะเป็นการทำงานที่บ้าน การกักตัวอยู่บ้าน การที่ผู้คนอยู่ห่างกันหลายเมตร การที่หลีกเลี่ยงชุมชนแออัด หรือสามารถเรียกได้อีกอย่างว่าการทำ Social distancing  กราฟสองเส้นแสดงถึงแสดงจำนวนผู้ติดเชื้อที่ช่วงเวลาต่าง ๆ หลังจากมีผู้ติดเชื้อคนแรก โดยกราฟสีแดงคือเทรนด์จะเกิดขึ้นเมื่อไม่มีมาตรการป้องกันใดๆ ส่วนกราฟสีฟ้าคือเทรนด์ที่จะเกิดขึ้นเมื่อมีมาตรการป้องกัน โดยบทความนี้จะอธิบายถึงโมเดลการจำลองสถานการณ์การแพร่ระบาดของไวรัสโคโรนาผ่าน SEIR model, อธิบายตัวแปรและปัจจัยต่าง ๆ ที่มีผลต่อการทำนาย รวมถึงแสดงผลการทำนายการแพร่ระบาดของไวรัสเปรียบเทียบ เมื่อมีการทำ social distancing และ ไม่มีมาตรการป้องกันใด ๆ ค่าระดับการติดเชื้อ (Reproduction Number) ค่าระดับการติดเชื้อ ([math]R_0[/math]) คือค่าเฉลี่ยที่ผู้ป่วยหนึ่งคนนั้นจะสามารถให้ผู้คนกลุ่มเสี่ยงป่วยเป็นจำนวนกี่คนในช่วงเวลาที่ยังติดเชื้ออยู่ หรือสรุปง่ายๆ ก็คือเป็นค่าที่บ่งบอกว่าไวรัสมีความสามารถการแพร่ระบาดได้มากน้อยแค่ไหน โดยการกำหนดค่าระดับการติดเชื้อ ([math]R_0[/math]) ถือเป็นเป้าหมายหลักของการศึกษาการแพร่ระบาดของไวรัส โดยถ้า ค่าระดับการติดเชื้อ ([math]R_0[/math]) < 1  จะหมายถึง โดยถ้า ค่าระดับการติดเชื้อ ([math]R_0[/math]) = 1  จะหมายถึง โดยถ้า ค่าระดับการติดเชื้อ ([math]R_0[/math]) > 1  จะหมายถึง ในปัจจุบันนั้นค่าระดับการติดเชื้อ ([math]R_0[/math]) ของโรคโควิด-19 นั้นอยู่ที่ประมาณ 2 – 3, โดยการกำหนดค่าระดับการติดเชื้อ ([math]R_0[/math]) ที่ถูกต้องได้นั้นถือเป็นปัจจัยที่สำคัญที่สุดในการทำนายโรคระบาด การที่ไวรัสค่าระดับการติดเชื้อ ([math]R_0[/math]) สูงนั้นเป็นปัจจัยที่ต้องคำนึงถึงเป็นอย่างมาก แต่ไม่ใช่เหตุที่ทำให้วิตกกังวลแต่อย่างใด ค่าระดับการติดเชื้อ ([math]R_0[/math]) นั้นเป็นค่าเฉลี่ยทำให้บางทีค่ามันดูสูงเกินกว่าปกติได้เนื่องจากหลายปัจจัย เช่นเหตุการณ์ที่เรียกว่า “Super-Spreader”  เป็นเหตุการณ์ที่ผู้ติดเชื้อได้แพร่เชื้อโรคไปสู่ผู้คนกลุ่มเสี่ยงได้เป็นจำนวนมากในคราวเดียว ส่งผลให้ค่าระดับการติดเชื้อ ([math]R_0[/math]) นั้นสูงขึ้น ดังนั้นค่าระดับการติดเชื้อ ([math]R_0[/math]) สามารถแปรเปลี่ยนได้อยู่ตลอดเวลา และการติดตามผู้ป่วยทุกเคสนั้นเป็นไปได้ยาก ทำให้การประมาณค่าระดับการติดเชื้อ ([math]R_0[/math]) นั้นซับซ้อน และเป็นไปได้ยากที่จะคาดคะเนได้อย่างถูกต้อง เพราะค่าระดับการติดเชื้อ ([math]R_0[/math]) จะเปลี่ยนไป เมื่อมีข้อมูลชุดใหม่เข้ามา เราจะนำโมเดลทางคณิตศาสตร์มาจำลองสถานการณ์การแพร่ระบาดได้อย่างไร การจำลองสถานการณ์เกี่ยวกับไวรัสผ่านโมเดลทางคณิตศาสตร์ที่จะนำมาใช้นั้นจะเป็นการจำลองการแพร่กระจายในระดับประชากรผ่านสมมติฐาน โดยจะใช้ SEIR model (Susceptible, Exposed, Infectious, Recovered) โดยโมเดลจะแบ่งประชากรออกเป็น 4 ประเภท ได้แก่ โดย SEIR model นั้น ประชากรแต่ละประเภทนั้นจะมีการเปลี่ยนสถานะอยู่ตลอดเวลา ขึ้นอยู่กับการกำหนดสมมติฐาน, ปัจจัย และอัตราในการเพิ่ม หรือลด ของประชากรแต่ละประเภท โดยสามารถแสดงออกมาเป็นแผนภูมิเบื้องต้นได้ดังภาพด้านล่าง หลังจากมีการกำหนดสมมติฐาน  รวมถึงปัจจัยเพิ่มลดของประชากรแต่ละประเภทผ่านสมการเชิงอนุพันธ์สามัญ (Ordinary Differential Equations) และจำนวนประชากรแต่ละประเภทในระบบที่ช่วงเวลาเริ่มต้นแล้ว ทางโมเดลจะคำนวณออกมาเป็นผลทำนายว่าเมื่อเวลาผ่านไปนั้น ประชากรแต่ละประเภทจะมีอัตราเพิ่ม หรือลดไปเท่าใด เพื่อที่จะได้ประเมินสถานการณ์ และออกมาตรการควบคุมได้ดียิ่งขึ้น การกำหนดสมมติฐาน และปัจจัยเพิ่มลดของประชากรแต่ละประเภทผ่านสมการเชิงอนุพันธ์สามัญ (Ordinary Differential Equations) [math]N=S+E+I+R[/math] [math]lambda (I) = frac{R_0}{D_I} x frac{I}{N} , alpha = frac{1}{D_E}[/math] และ [math]gamma = frac{1}{D_I}[/math] กลุ่มเสี่ยงที่มีโอกาศติดเชื้อได้ (Susceptible) โดยปัจจัยหลักของการที่กลุ่มเสี่ยงนั้นจะติดเชื้อ เกิดจากการที่กลุ่มเสี่ยงอยู่ใกล้ผู้ที่ติดเชื้อ ดังนั้นเมื่อมีผู้ติดเชื้อในระบบมากขึ้น รวมถึง โอกาสที่จะกลุ่มเสี่ยงจะติดเชื้อเพิ่มสูงขึ้น จะทำให้มีประชากรเปลี่ยนประเภทจากกลุ่มเสี่ยง (Susceptible) เป็น ผู้ติดเชื้อที่อยู่ในระยะฟักตัว (Exposed) มากขึ้น  [math]frac{dS}{dt} = -lambda(I)S[/math] (1) กลุ่มติดเชื้อที่อยู่ในระยะฟักตัว (Exposed) สามารถเพิ่มขึ้นในระบบจากการที่ ประชากรจากกลุ่มเสี่ยงติดเชื้อเพิ่มขึ้น และจะลดลงก็ต่อเมื่อผ่านระยะฟักตัว (Incubation period) กลายเป็นประชากรจำพวก กลุ่มที่ติดเชื้อที่สามารถแพร่เชื้อได้ (Infectious) [math]frac{dE}{dt} = lambda(I)S – alpha E[/math] (2) กลุ่มที่ติดเชื้อที่สามารถแพร่เชื้อได้ (Infectious) สามารถเพิ่มขึ้นได้ในระบบจากการที่ประชากรจากกลุ่มติดเชื้อที่อยู่ในระยะฟักตัว (Exposed) นั้นผ่านระยะการฟักตัวไปแล้ว และจะสามารถลดลงได้เมื่อผ่านระยะเวลาที่ติดเชื้อ (Infectious period) ไปแล้ว กลายเป็นประชากรกลุ่มที่รักษาจนหายแล้ว (Recovered) [math]frac{dI}{dt} = alpha E – gamma I[/math] (3) กลุ่มที่หายจากการติดเชื้อแล้ว (Recovered) สามารถเพิ่มขึ้นได้ในระบบ โดยการที่มีผู้ติดเชื้อที่รักษาจนหายแล้วในระบบมากขึ้น และจะไม่ลดลงเนื่องจากผู้ที่รักษาจนหายแล้ว จะมีภูมิต้านทานโรค ทำให้ไม่สามารถเป็นซ้ำ และไม่สามารถแพร่เชื้อได้อีก [math]frac{dR}{dt} = gamma I[/math] (4) ผลลัพธ์ที่ได้จาก SEIR model โมเดลนี้จะมีจุดเริ่มต้นจากวันที่มีเหตุการณ์ผู้ติดเชื้อคนแรกในประเทศไทย (12 มกราคม พ.ศ. 2563) โดยโมเดลนี้จะเป็นโมเดลอย่างง่าย และจะไม่มีปัจจัยการเกิด หรือการตายของประชากร รวมถึงไม่มีการเข้าออกของประชากรระหว่างประเทศ (จำนวนประชากรในระบบจะเท่าเดิมเสมอ) นอกจากนั้นจะมีการกำหนดพารามิเตอร์ต่างๆ ดังนี้ ตัวเลขอ้างอิงจาก งานวิจัยเรื่องการแพร่ระบาดของโรคโควิดในอู่ฮั่น โดยช่วงเวลาเริ่มต้นนั้นทุกคนจะถือว่าเป็นประชากรกลุ่มเสี่ยงที่สามารถติดโรคทั้งหมดหมด โดยมีจำนวนผู้ที่สามารถแพร่เชื้อเริ่มต้นเพียงคนเดียว สังเกตได้ว่าถ้าหากในสถานการณ์ปกติที่ไร้มาตรการการป้องกันเช่น  Social Distancing จะมีผู้ติดเชื้อที่พร้อมกันประมาณ 3 ล้านคน ในช่วงที่มีจำนวนผู้ป่วยสูงที่สุด ในช่วงเวลาประมาณ 170 วันหลังจากพบผู้ติดเชื้อคนแรก ซึ่งจะทำให้เกิดความสูญเสียเป็นวงกว้าง เนื่องจากระบบสาธรณสุขไม่สามารถรองรับผู้ป่วยจำนวนมากขนาดนี้พร้อมกันได้ ด้วยทรัพยากรที่มีอยู่อย่างจำกัด ผลลัพธ์ที่ได้จาก SEIR model เมื่อ add social distancing factor เมื่อเราเพิ่ม social distancing factor ลงไปใน SEIR model มันจะส่งผลให้ความรุนแรงในการแพร่ λ(I) ลดลงเนื่องจากประชากรมีการสัมผัส หรือเจอกันน้อยลงโดยเราจะแทนตัวแปรของ social distancing factor ด้วย ρ โดยจะมีค่าอยู่ระหว่าง 0 – 1 โดยถ้ามีค่าเป็น 0 จะหมายถึงประชากรทุกคนมีการเก็บตัวอยู่บ้าน และมีประสิทธิภาพในการทำ social distancing สูงมาก และ 1 จะหมายถึงเคสข้างบน คือไม่มีมาตรการป้องกันใดๆ เลย โดยจะกำหนดให้ ρ มีค่า 1 ไปจนถึงข่วงเวลาปัจจุบัน...
7 April 2020
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.