<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									ThAI Keras Forum - Recent Topics				            </title>
            <link>https://thaikeras.com/community/</link>
            <description>ThAI Keras Discussion Board</description>
            <language>en-US</language>
            <lastBuildDate>Fri, 03 Apr 2026 22:01:40 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>Image-Matching : เรียนแนวคิดและภาคปฏิบัติ ที่ Kaggle</title>
                        <link>https://thaikeras.com/community/%e0%b9%80%e0%b8%81%e0%b8%b5%e0%b9%88%e0%b8%a2%e0%b8%a7%e0%b8%81%e0%b8%b1%e0%b8%9a-kaggle/image-matching-%e0%b9%80%e0%b8%a3%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b9%81%e0%b8%99%e0%b8%a7%e0%b8%84%e0%b8%b4%e0%b8%94%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b8%a0%e0%b8%b2%e0%b8%84%e0%b8%9b%e0%b8%8f%e0%b8%b4/</link>
                        <pubDate>Mon, 28 Apr 2025 09:03:26 +0000</pubDate>
                        <description><![CDATA[เราอธิบายภาพรวมของปัญหาสำคัญใน computer vision ที่จำเป็นต้องใช้ เทคนิค Image Matching ในรูปที่ 1-5 ถ้าเพื่อนๆ สนใจที่จะเรียนรู้เรื่อง image matching ในช่วง 3 เดือนนี้ (เมษายน พฤษภาคม มิถุนาย...]]></description>
                        <content:encoded><![CDATA[<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">เราอธิบายภาพรวมของปัญหาสำคัญใน computer vision ที่จำเป็นต้องใช้ เทคนิค Image Matching ในรูปที่ 1-5 ถ้าเพื่อนๆ สนใจที่จะเรียนรู้เรื่อง image matching ในช่วง 3 เดือนนี้ (เมษายน พฤษภาคม มิถุนายน) ตอนนี้เป็นโอกาสดีที่ทาง Kaggle และ Czech Technical University (CTU) จากกรุงปราก ได้ร่วมกันจัดการแข่งขัน</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">Image Matching 2024</div>
<div dir="auto"><span class="html-span xdj266r x11i5rnm xat24cr x1mh8g0r xexx8yu x4uap5 x18d9i69 xkhd6sd x1hl2dhg x16tdsg8 x1vvkbs"><a class="x1i10hfl xjbqb8w x1ejq31n xd10rxx x1sy0etr x17r0tee x972fbf xcfux6l x1qhh985 xm0m39n x9f619 x1ypdohk xt0psk2 xe8uvvx xdj266r x11i5rnm xat24cr x1mh8g0r xexx8yu x4uap5 x18d9i69 xkhd6sd x16tdsg8 x1hl2dhg xggy1nq x1a2a7pz xkrqix3 x1sur9pj x1fey0fg x1s688f" role="link" href="https://www.kaggle.com/competitions/image-matching-challenge-2024?fbclid=IwZXh0bgNhZW0CMTAAYnJpZBExQVR1YjN2SzJxY0U5emVraQEeVDn2j6nO6ymVzeoNEwdSqvd9Bsbl1ouvfL5iiqK66RD9UmT0R-oXVxTl83k_aem_s2GWcf8yr8Z0HF3-lT65RQ" target="_blank" rel="nofollow noopener noreferrer">https://www.kaggle.com/comp.../image-matching-challenge-2024</a></span></div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">ซึ่งเป้าหมายสูงสุดคือการทำ Structural from Motion (SfM)</div>
</div>
<div dir="auto"> </div>
<div dir="auto"><a href="https://web.facebook.com/thaikeras/posts/pfbid02nEfnhn7SVfH8R7TRh76FuAyvsKbypNyDnE6gTS1VguyD7EA5iWgqeLQzQHZscX6Wl" target="_blank" rel="noopener">บทความอยู่ใน facebook post ของเราที่นี่ครับ</a></div>]]></content:encoded>
						                            <category domain="https://thaikeras.com/community/"></category>                        <dc:creator>The Neural Engineer</dc:creator>
                        <guid isPermaLink="true">https://thaikeras.com/community/%e0%b9%80%e0%b8%81%e0%b8%b5%e0%b9%88%e0%b8%a2%e0%b8%a7%e0%b8%81%e0%b8%b1%e0%b8%9a-kaggle/image-matching-%e0%b9%80%e0%b8%a3%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b9%81%e0%b8%99%e0%b8%a7%e0%b8%84%e0%b8%b4%e0%b8%94%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b8%a0%e0%b8%b2%e0%b8%84%e0%b8%9b%e0%b8%8f%e0%b8%b4/</guid>
                    </item>
				                    <item>
                        <title>ThaiAGI Series เพื่อความเข้าใจ AI อย่างลึกซึ้ง</title>
                        <link>https://thaikeras.com/community/main-forum/thaiagi-series-%e0%b9%80%e0%b8%9e%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1%e0%b9%80%e0%b8%82%e0%b9%89%e0%b8%b2%e0%b9%83%e0%b8%88-ai-%e0%b8%ad%e0%b8%a2%e0%b9%88%e0%b8%b2%e0%b8%87/</link>
                        <pubDate>Mon, 28 Apr 2025 08:38:55 +0000</pubDate>
                        <description><![CDATA[ก่อนอื่นเราต้องรู้ก่อนว่าการศึกษา AI ให้เชี่ยวชาญมีหลายระดับ และเราต้องตั้งเป้าให้เหมาะสมกับเป้าหมายของเราเอง

5 วิถีแห่งความเชี่ยวชาญ AI Expertise ที่คุณต้องรู้
ThaiAGI - February 2025
...]]></description>
                        <content:encoded><![CDATA[<p>ก่อนอื่นเราต้องรู้ก่อนว่าการศึกษา AI ให้เชี่ยวชาญมีหลายระดับ และเราต้องตั้งเป้าให้เหมาะสมกับเป้าหมายของเราเอง</p>
<p>https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0bd6e20-284a-4364-86cf-078a8e87c024_1223x683.png</p>
<div class="xdj266r x11i5rnm xat24cr x1mh8g0r x1vvkbs x126k92a">
<div dir="auto"><span style="font-size: 18pt"><a href="https://thaiagi.substack.com/p/5-ai-expertise" target="_blank" rel="noopener">5 วิถีแห่งความเชี่ยวชาญ AI Expertise ที่คุณต้องรู้</a></span></div>
<div dir="auto"><span class="html-span xdj266r x11i5rnm xat24cr x1mh8g0r xexx8yu x4uap5 x18d9i69 xkhd6sd x1hl2dhg x16tdsg8 x1vvkbs"></span>ThaiAGI - February 2025</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto"> </div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">การพัฒนาเพื่อให้ตัวเองเป็นผู้เชี่ยวชาญในยุคใหม่ของ AGI นี้ เราควรตั้งเป้าเรียนรู้อะไร? โดยทั่วไปอาจมีคำแนะนำหลายแบบจากผู้รู้หลายท่าน เช่น</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">- ฝึกตั้งคำถาม <span class="html-span xexx8yu x4uap5 x18d9i69 xkhd6sd x1hl2dhg x16tdsg8 x1vvkbs x3nfvp2 x1j61x8r x1fcty0u xdj266r xat24cr xgzva0m xhhsvwb xxymvpz xlup9mm x1kky2od"><img class="xz74otr x168nmei x13lgxp2 x5pf9jr xo71vjh" src="https://static.xx.fbcdn.net/images/emoji.php/v9/taa/1/16/1f64b_200d_2640.png" alt="🙋‍♀️" width="16" height="16" /></span>พูดคุยกับโมเดล AI ให้ได้คำตอบดีที่สุด (Prompting)</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">- เขียนโปรแกรมครอบโมเดล AI <span class="html-span xexx8yu x4uap5 x18d9i69 xkhd6sd x1hl2dhg x16tdsg8 x1vvkbs x3nfvp2 x1j61x8r x1fcty0u xdj266r xat24cr xgzva0m xhhsvwb xxymvpz xlup9mm x1kky2od"><img class="xz74otr x168nmei x13lgxp2 x5pf9jr xo71vjh" src="https://static.xx.fbcdn.net/images/emoji.php/v9/tc9/1/16/1f9d1_200d_1f4bb.png" alt="🧑‍💻" width="16" height="16" /></span> ให้ทำงาน routine หรือ งานหลากหลายได้สะดวก (Agentic AI)</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">- ศึกษาโมเดล AI อย่างลึกซึ้ง <span class="html-span xexx8yu x4uap5 x18d9i69 xkhd6sd x1hl2dhg x16tdsg8 x1vvkbs x3nfvp2 x1j61x8r x1fcty0u xdj266r xat24cr xgzva0m xhhsvwb xxymvpz xlup9mm x1kky2od"><img class="xz74otr x168nmei x13lgxp2 x5pf9jr xo71vjh" src="https://static.xx.fbcdn.net/images/emoji.php/v9/tdd/1/16/1f9d0.png" alt="🧐" width="16" height="16" /></span> ทั้งในแง่สมการคณิตศาสตร์ และการเขียนโปรแกรมสร้างมันขึ้นมา</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">แท้จริงแล้ว ทุกแนวทางก็ถือเป็นวิถีที่จะทำให้เราเป็นผู้เชี่ยวชาญด้าน AI เพียงแต่ขึ้นอยู่กับว่างานหลักที่เราต้องใช้งาน AI อยู่ในรูปแบบไหน และเราเองปรารถนาที่จะไปลึกแค่ไหน</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">จึงเป็นที่มาของบทความนี้ ที่จะแบ่งการพัฒนาความรู้ด้าน AI เป็น 5 วิถี เพื่อให้เป็นผู้เชี่ยวชาญเรื่อง AI ในแบบที่เหมาะสมกับตัวคุณเอง</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">5 วิถีนี้จริงๆ แล้วเรียงจากง่ายไปยาก เราจึงสามารถมองได้อีกแบบเป็น “บันได 5 ขั้น” หรือ “5 Levels of AI Expertise” ก็ได้ครับ</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">Level <span class="html-span xexx8yu x4uap5 x18d9i69 xkhd6sd x1hl2dhg x16tdsg8 x1vvkbs x3nfvp2 x1j61x8r x1fcty0u xdj266r xat24cr xgzva0m xhhsvwb xxymvpz xlup9mm x1kky2od"><img class="xz74otr x168nmei x13lgxp2 x5pf9jr xo71vjh" src="https://static.xx.fbcdn.net/images/emoji.php/v9/t7a/1/16/31_20e3.png" alt="1️⃣" width="16" height="16" /></span></div>
<div dir="auto">ระดับผู้ใช้งาน (User Level) : สำหรับงานส่วนตัวและธุรกิจทั่วไป ต้องเชี่ยวชาญเรื่อง Prompting และติดตามเรียนรู้ tools และ technology ใหม่ๆ สม่ำเสมอ เพื่อให้ได้คำตอบจาก AI ที่สมบูรณ์ มีเหตุผล ตรงตามความต้องการมากที่สุด</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">Level <span class="html-span xexx8yu x4uap5 x18d9i69 xkhd6sd x1hl2dhg x16tdsg8 x1vvkbs x3nfvp2 x1j61x8r x1fcty0u xdj266r xat24cr xgzva0m xhhsvwb xxymvpz xlup9mm x1kky2od"><img class="xz74otr x168nmei x13lgxp2 x5pf9jr xo71vjh" src="https://static.xx.fbcdn.net/images/emoji.php/v9/t99/1/16/32_20e3.png" alt="2️⃣" width="16" height="16" /></span></div>
<div dir="auto">ระดับโปรแกรมเมอร์ (Programmer Level): สำหรับการนำ AI ไปต่อยอดสร้าง Applications หรือการใช้งาน AI กับปัญหาที่มีความซับซ้อนมากขึ้น โดยปัญหาเหล่านี้ต้องมีการปรึกษา AI ซ้ำหลายรอบ (iterations) หรือมีการตรวจหรือพัฒนาคำตอบ ต้องมุ่งเน้น Agentic Programming เพื่อให้การติดต่อ AI หลายรอบนี้ทำได้อย่างง่ายและประสิทธิภาพสูง</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">Level <span class="html-span xexx8yu x4uap5 x18d9i69 xkhd6sd x1hl2dhg x16tdsg8 x1vvkbs x3nfvp2 x1j61x8r x1fcty0u xdj266r xat24cr xgzva0m xhhsvwb xxymvpz xlup9mm x1kky2od"><img class="xz74otr x168nmei x13lgxp2 x5pf9jr xo71vjh" src="https://static.xx.fbcdn.net/images/emoji.php/v9/tb8/1/16/33_20e3.png" alt="3️⃣" width="16" height="16" /></span></div>
<div dir="auto">ระดับนักพัฒนา (Developer Level): สำหรับบริษัท นักวิจัย นักวิทยาศาสตร์ วิศวกรด้าน AI ที่จริงจังและต้องการปรับเปลี่ยนพฤติกรรมและความรู้ของ AI อย่างมีนัยสำคัญ การนำ AI ไปช่วยเหลือในงานผลิตภัณฑ์เฉพาะทาง เช่น ออกแบบโมเลกุลยา เป็นต้น ควรต้องศึกษา AI Fundamental อย่างลึกซึ้ง เนื่องจากต้องมีการออกแบบโปรแกรมการสอน และข้อมูลสอน AI ให้ถูกต้อง</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">(การแข่งขันเขียนโปรแกรมบน Kaggle ขั้นเริ่มต้นจนถึงเหรียญทองแดง จะอยู่ราวๆ ขั้นนี้)</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">Level <span class="html-span xexx8yu x4uap5 x18d9i69 xkhd6sd x1hl2dhg x16tdsg8 x1vvkbs x3nfvp2 x1j61x8r x1fcty0u xdj266r xat24cr xgzva0m xhhsvwb xxymvpz xlup9mm x1kky2od"><img class="xz74otr x168nmei x13lgxp2 x5pf9jr xo71vjh" src="https://static.xx.fbcdn.net/images/emoji.php/v9/td7/1/16/34_20e3.png" alt="4️⃣" width="16" height="16" /></span></div>
<div dir="auto">ระดับนักพัฒนาขั้นสูง (Advanced Level): สำหรับองค์กรขนาดใหญ่ ที่ไม่เพียงต้องการปรับความรู้และพฤติกรรมของ AI แต่ยังต้องการรีดเค้นให้ AI มีประสิทธิภาพสูงที่สุด (แม่นยำ เร็ว และประหยัดที่สุด) ต้องเรียนรู้ตลอดเวลาเพื่อประยุกต์ใช้เทคนิคขั้นสูง และดัดแปลงงานวิจัยใหม่ๆ ที่ได้รับการพิสูจน์และยอมรับในวงกว้าง โดยอาจต้องมีการแก้ ดัดแปลงโค้ด จาก OpenSource อย่างมีนัยสำคัญ</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">(การแข่งขันเขียนโปรแกรมบน Kaggle ชิงระดับเหรียญทองหรือเหรียญเงิน น่าจะอยู่ในขั้นนี้)</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">Level <span class="html-span xexx8yu x4uap5 x18d9i69 xkhd6sd x1hl2dhg x16tdsg8 x1vvkbs x3nfvp2 x1j61x8r x1fcty0u xdj266r xat24cr xgzva0m xhhsvwb xxymvpz xlup9mm x1kky2od"><img class="xz74otr x168nmei x13lgxp2 x5pf9jr xo71vjh" src="https://static.xx.fbcdn.net/images/emoji.php/v9/tf6/1/16/35_20e3.png" alt="5️⃣" width="16" height="16" /></span></div>
<div dir="auto">ระดับดาราในวงการ (Star Level) : หรืออาจเรียกว่า นักวิจัยระดับโลก สำหรับนักวิจัยที่อยู่ในวงการและมีส่วนร่วมในการขับเคลื่อนทิศทางด้วยการคิดค้นนวัตกรรม AI ในระดับสากล ต้องมีพื้นฐาน Level 3 และ 4 อย่างแข็งแรง รวมทั้งเข้าใจงานวิจัยในงานประชุมวิชาการด้าน AI ที่ดีที่สุด เช่น ICLR, NIPS หรือ ICML อย่างลึกซึ้งทั้งภาคทฤษฎี สมการคณิตศาสตร์ และการ Implementation</div>
</div>
<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a">
<div dir="auto">ยังมีอ่านรายละเอียดในแต่ละ Level (อีกมาก) ในบทความฉบับเต็ม ติดตามอ่านได้ในรูปแบบ magazine ที่นี่คร้าบ: <span class="html-span xdj266r x11i5rnm xat24cr x1mh8g0r xexx8yu x4uap5 x18d9i69 xkhd6sd x1hl2dhg x16tdsg8 x1vvkbs"><a class="x1i10hfl xjbqb8w x1ejq31n xd10rxx x1sy0etr x17r0tee x972fbf xcfux6l x1qhh985 xm0m39n x9f619 x1ypdohk xt0psk2 xe8uvvx xdj266r x11i5rnm xat24cr x1mh8g0r xexx8yu x4uap5 x18d9i69 xkhd6sd x16tdsg8 x1hl2dhg xggy1nq x1a2a7pz xkrqix3 x1sur9pj x1fey0fg x1s688f" role="link" href="https://l.facebook.com/l.php?u=https%3A%2F%2Fthaiagi.substack.com%2Fp%2F5-ai-expertise%3Ffbclid%3DIwZXh0bgNhZW0CMTAAYnJpZBExQVR1YjN2SzJxY0U5emVraQEew_PXVV-ldpm6ygaryXoqqleKRTIOOVYP4TliThA0ozL-z3Dx-dXe8UwrwVk_aem_7YL9CsuydCbMg1_ywAnxRw&amp;h=AT2mZz0cIViT36B4J2I3-mAbwmQq4eiPRJd4khCZipzcUH3B-G9lWLvBoVf47IP3NU111AwS3rJHl5DeYteI456uBV-M2LpKH1FRlKRmdB9RlGCVur83TiiOSJxSrmJV-HNvQo-wQ74edep5cw&amp;__tn__=-UK-y-R&amp;c=AT0dlbkQWrUM2KoHx3PW2wvWfalEddvm7UY3LNDcrMc6SEOpS8mi7HjtOLPX6u6VpmS05_L1EeiRZ2Nm4jWjl-DTDuaC2fLn8unOdvC6tgdSL8aQ79jtkIVoIp_NsYvQUKGS3Ep8FpOsa1Grot8vBzHINecfY8w7jwUWFNdIfOlVgFELg7pD7ozfeo1l4KgjX2CnoDegWfi9joeUeaVMGLPsNuWnxOSd95CFiotRaXEknAkwpIj1" target="_blank" rel="nofollow noopener noreferrer">https://thaiagi.substack.com/p/5-ai-expertise</a></span></div>
</div>]]></content:encoded>
						                            <category domain="https://thaikeras.com/community/"></category>                        <dc:creator>The Neural Engineer</dc:creator>
                        <guid isPermaLink="true">https://thaikeras.com/community/main-forum/thaiagi-series-%e0%b9%80%e0%b8%9e%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1%e0%b9%80%e0%b8%82%e0%b9%89%e0%b8%b2%e0%b9%83%e0%b8%88-ai-%e0%b8%ad%e0%b8%a2%e0%b9%88%e0%b8%b2%e0%b8%87/</guid>
                    </item>
				                    <item>
                        <title>AI and Business</title>
                        <link>https://thaikeras.com/community/main-forum/ai-and-business/</link>
                        <pubDate>Tue, 31 Jan 2023 10:09:01 +0000</pubDate>
                        <description><![CDATA[จัดระเบียบ ประมวลผลเอกสารทั้งหลายด้วย Document AI(บทความนี้ถอดมาจากต้นฉบับ)เอกสารกองพะเนินที่ต้องมีคนนั่งอ่าน จัดระเบียบ ยังมีอยู่ในบริษัทส่วนใหญ่ ถึงแม้เราจะเข้าสู่โลกยุค Digital แล้วก็ตามถ...]]></description>
                        <content:encoded><![CDATA[<p><span style="text-decoration: underline;font-size: 18pt"><strong>จัดระเบียบ ประมวลผลเอกสารทั้งหลายด้วย Document AI</strong></span><br /><span>(บทความนี้ถอดมาจากต้นฉบับ </span><a class="x1fey0fg xmper1u x1edh9d7" href="https://huggingface.co/blog/document-ai"><span>https://huggingface.co/blog/document-ai</span></a><span> )</span><br /><br /><span>เอกสารกองพะเนินที่ต้องมีคนนั่งอ่าน จัดระเบียบ ยังมีอยู่ในบริษัทส่วนใหญ่ ถึงแม้เราจะเข้าสู่โลกยุค Digital แล้วก็ตาม</span><br /><br /><span>ถ้ามีใครสักคนมานั่งพิมพ์เอกสารเหล่านี้ลงคอมพิวเตอร์ แล้วจัดระเบียบให้เรียบร้อย สามารถ "search" หาเอกสารต่างๆ ได้เหมือนกับเรา search google คงจะดีมิใช่น้อย</span><br /><br /><span>นั่นจึงเป็นที่มาของ Document AI ที่พยายามจะมาช่วยจัดการงานถึกๆ บางส่วนนี้ให้กับคุณ</span><br /><br /><span>ปัจจุบัน Document AI อาจจำแนกได้เป็น 6 ประเภทได้แก่</span><br /><span> 1) OCR</span><br /><span> 2) Document Image Classification</span><br /><span> 3) Layout Analysis</span><br /><span> 4) Document Parsing</span><br /><span> 5) Table detection, extraction &amp; recognition</span><br /><span> 6) Document Q&amp;A</span><br /><br /><span>----</span></p>
<p><br /><span> 1) OCR (Optical Character Recognition) หรือการอ่านตัวหนังสือ (ลายมือหรือตัวพิมพ์) จากรูปภาพ นั้นเป็นงานที่พัฒนากันมาหลายสิบปีและมีโมเดลดีๆ ให้ใช้มากมาย ยกตัวอย่างเช่น EasyOCR  หรือ TransformerOCR  โมเดล OCR บางครั้งต้องนำมาใช้ก่อนจะนำไปเข้า Document AI ประเภทอื่นๆ </span><br /><br /><span>---</span><br /><br /><span> 2) Document Classification หรือ การจำแนกประเภทเอกสารต่างๆ เช่น เอกสารเป็นบันทึก เป็นจดหมายราชการ หรือเป็น email เป็นต้น </span><br /><span> </span><br /><span>วิธีการที่ง่ายที่สุดในการทำ Doc Classification คือนำเอกสารต่างๆ เข้า OCR ก่อนที่จะฝึกและจำแนกด้วย Text Model เช่น BERT เป็นต้น</span><br /><span> </span><br /><span> อย่างไรก็ดี "รูปแบบการจัดเรียง" หรือ layout ของเอกสารเหล่านี้ มักมีเอกลักษณ์เฉพาะตัว (ดูรูปที่ 1 และหัวข้อถัดไป) ดังนั้นถ้าเรานำการจัดเรียง หรือ layout มาพิจารณาด้วย (นอกจากข้อความจาก OCR) จะทำให้การ classification ง่ายขึ้นอย่างมาก จึงเป็นที่มาของโมเดลเช่น LayoutLM, LayoutLMv2 และ LayoutLMv3  เป็นต้น</span><br /><span> </span></p>
<p><img src="https://i.imgur.com/Zs11GfM.png" /></p>
<p><br /><span> ใน dataset มาตรฐาน OCR+BERT นั้นทำทำความแม่นยำ 89% ในขณะที่ LayoutLM3 นั้นแม่นยำถึง 95% จากการใช้ Layout</span><br /><br /><span>----</span><br /><br /><span> 3) Layout Analysis : การวิเคราะห์ layout คือการจำแนกแต่ละบล็อกของเอกสาร (ดูรูปที่ 2) เช่น บล็อกตาราง บล็อกรูปภาพ หรือบล็อกข้อความ รวมทั้งตำแหน่งของแต่ละบล็อก เป็นต้น</span></p>
<p><img src="https://i.imgur.com/hXUCh5u.png" /></p>
<p><br /><span> งาน layout analysis นี้สามารถมองเป็นงาน image object detection ได้ดังแสดงในรูปที่ 2 ซึ่งจะทำให้ได้คลาสและตำแหน่งของบล็อกที่ต้องการ</span><br /><span> </span><br /><span> สามารถใช้งาน LayoutLMv3 จัดการงานนี้ได้ครับ</span><br /><br /><span>---</span><br /><br /><span> 4) Document Parsing : คือขั้นต่อจาก Layout Analysis นั่นคือนอกจากจะ detect แต่ละบล็อกได้อย่างถูกต้องแล้ว ยังสามารถดึงข้อมูลในบล็อกแต่ละประเภทได้อย่างเหมาะสมอีกด้วย ลองใช้โมเดล Donut  หรือ ErnieLayout  ได้ครับ</span><br /><br /><span>---</span><br /><br /><span> 5) Table Detection, Extraction and Recognition : งานดึงข้อมูลจาก Table อาจต้องใช้โมเดลอื่นที่มีความแม่นยำมากกว่าโมเดล Document Parsing ทั่วไป โมเดล Table Transformers  ถูกออกแบบมาเพื่องานนี้โดยเฉพาะครับ </span><br /><br /><span>---</span><br /><br /><span> 6) Document Q&amp;A : ขั้นถัดไปของ Document AI คือไม่ใช่แค่บันทึกข้อมูลในเอกสารลงคอมพิวเตอร์อย่างถูกต้องเท่านั้น แต่เรายังสามารถถามคำถามต่างๆ เกี่ยวกับเอกสารเหล่านั้นได้ โดยเป็นคำถามภาษามนุษย์ ไม่ใช่ภาษาคอมพิวเตอร์เช่น SQL ดูตัวอย่างในรูปที่ 3 ครับ</span></p>
<p><img src="https://i.imgur.com/GcqTHEv.png" /></p>
<p><br /><span>โมเดลเช่น Donut  สามารถจัดการงานเหล่านี้ได้และลองเล่นได้ที่นี่ครับ </span><a class="x1fey0fg xmper1u x1edh9d7" href="https://huggingface.co/spaces/impira/docquery"><span>https://huggingface.co/spaces/impira/docquery</span></a><br /><span> </span><br /><span>---</span><br /><span> </span><br /><span>เพิ่มเติม 1. โมเดลเช่น LayoutLM เวอร์ชั่นต่างๆ ไม่อนุญาตให้นำไปใช้งานได้แบบ commercial ก่อนจะใช้งานโมเดลเหล่านี้ในทาง commercial ให้ตรวจสอบ licence ดีๆ</span><br /><br /><span>เพิ่มเติม 2. ในการสร้าง Database ของ Document เหล่านี้เพื่อ query ในการใช้งานในอนาคต เราสามารถใช้โมเดลใดก็ได้ข้างบน ประมวลผล Document ให้เปลี่ยนเป็นรูป Vector และสามารถสร้าง Vector Fast Query System เช่น FAISS  ในการค้นข้อมูลได้ครับ</span><br /><br /><span>.</span><br /><br /><span>เพิ่มเติม 3 : ดูตัวอย่าง notebook การใช้งานโมเดลต่างๆ ได้ที่นี่ครับ</span><br /><br /><a class="x1fey0fg xmper1u x1edh9d7" href="https://github.com/NielsRogge/Transformers-Tutorials"><span>https://github.com/NielsRogge/Transformers-Tutorials</span></a><br /><br /><br /><span style="text-decoration: underline"><strong>อ้างอิง</strong></span></p>
<p><br /><span> EasyOCR : </span><a class="x1fey0fg xmper1u x1edh9d7" href="https://huggingface.co/spaces/tomofi/EasyOCR"><span>https://huggingface.co/spaces/tomofi/EasyOCR</span></a></p>
<p><br /><span> Transformer OCR : </span><a class="x1fey0fg xmper1u x1edh9d7" href="https://huggingface.co/docs/transformers/model_doc/trocr"><span>https://huggingface.co/docs/transformers/model_doc/trocr</span></a></p>
<p><br /><span> LayoutLMv3 : </span><a class="x1fey0fg xmper1u x1edh9d7" href="https://huggingface.co/docs/transformers/main/en/model_doc/layoutlmv3"><span>https://huggingface.co/docs/transformers/main/en/model_doc/layoutlmv3</span></a></p>
<p><br /><span> Donut : </span><a class="x1fey0fg xmper1u x1edh9d7" href="https://huggingface.co/docs/transformers/model_doc/donut"><span>https://huggingface.co/docs/transformers/model_doc/donut</span></a></p>
<p><br /><span> ErnieLayout : </span><a class="x1fey0fg xmper1u x1edh9d7" href="https://huggingface.co/spaces/PaddlePaddle/ERNIE-Layout"><span>https://huggingface.co/spaces/PaddlePaddle/ERNIE-Layout</span></a></p>
<p><br /><span> Table Transformers : </span><a class="x1fey0fg xmper1u x1edh9d7" href="https://huggingface.co/docs/transformers/main/en/model_doc/table-transformer"><span>https://huggingface.co/docs/transformers/main/en/model_doc/table-transformer</span></a></p>
<p><br /><span> FAISS : </span><a class="x1fey0fg xmper1u x1edh9d7" href="https://github.com/facebookresearch/faiss"><span>https://github.com/facebookresearch/faiss</span></a></p>]]></content:encoded>
						                            <category domain="https://thaikeras.com/community/"></category>                        <dc:creator>The Neural Engineer</dc:creator>
                        <guid isPermaLink="true">https://thaikeras.com/community/main-forum/ai-and-business/</guid>
                    </item>
				                    <item>
                        <title>All about Segmentation</title>
                        <link>https://thaikeras.com/community/main-forum/all-about-segmentation/</link>
                        <pubDate>Thu, 26 Jan 2023 06:32:26 +0000</pubDate>
                        <description><![CDATA[หลากหลายบริษัทต้องการทำ AI หรือ Machine Learning ไปประยุกต์ใช้ใน business cases ของตน ทว่าประเด็นนึงที่ต้องตระหนักก็คือโมเดล AI หรือ Machine Learning ส่วนใหญ่นั้นต้องการ &quot;กระบวนการทำ labels&quot;...]]></description>
                        <content:encoded><![CDATA[<div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xdj266r x126k92a"><div dir="auto">หลากหลายบริษัทต้องการทำ AI หรือ Machine Learning ไปประยุกต์ใช้ใน business cases ของตน ทว่าประเด็นนึงที่ต้องตระหนักก็คือโมเดล AI หรือ Machine Learning ส่วนใหญ่นั้นต้องการ "กระบวนการทำ labels" ที่ต้องใช้คนมาระบุประเภทหรือชนิดของข้อมูลใน business cases นั้นๆ ซึ่งกระบวนการทำ labels นี้กินเวลาและค่าใช้จ่ายมาก</div></div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">โชคยังดีที่ทิศทางใหม่ของการพัฒนาโมเดล AI ให้ความสำคัญกับ "few-shots" (เรียนรู้จากการสอนไม่กี่ครั้ง) รวมทั้ง "zero-shot" (เรียนรู้โดยไม่ต้องสอน -- ใช้เทคนิคดึงข้อมูลต่างๆ ที่มนุษย์บันทึกไว้ในอินเตอร์เน็ตมาใช้แทนการสอน)</div></div><div dir="auto"> </div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">ตัวอย่างสำคัญของโมเดลประเภท zero-shot คือ CLIP จาก OpenAI ในปี 2021 ที่สามารถจำแนกรูปภาพต่างๆ ได้อย่างมหัศจรรย์ รวมทั้งยังมีจุดเด่นมากกว่าโมเดลมาตรฐานทั่วไป เพราะเข้าใจรูปถ่ายมุมแปลกๆ หรือกระทั่งรูปอื่นๆ ที่ไม่ใช่รูปถ่ายได้อย่างดีอีกด้วย (โมเดลมาตรฐานมักถูกสอนจากรูปถ่ายมุมปกติเป็นหลัก ทำให้จำแนกรูปมุมมองแปลก หรือรูปประเภทอื่นๆ เช่นรูปวาดแทบไม่ได้เลย)</div></div><div dir="auto"> </div><div dir="auto"><img src="https://i.imgur.com/UH8MO50.jpg" /></div><div dir="auto"> </div><div class="x11i5rnm xat24cr x1mh8g0r x1vvkbs xtlvy1s x126k92a"><div dir="auto">ล่าสุด NVIDIA ที่่ได้แรงบันดาลใจจาก CLIP ได้เผยแพร่โมเดล zero-shot semantic segmentation (ดูรูปแนบ) ชื่อว่า "GroupViT" ที่สามารถจำแนกประเภทของวัตถุใน "ระดับ pixels" ซึ่งน่าจะเป็นประโยชน์กับ business cases หลากหลาย และยังแสดงให้เห็นว่า language models มาช่วยขยายความสามารถ vision models ได้อย่างยอดเยี่ยม</div><div dir="auto"> </div></div><div dir="auto">github: <a class="x1fey0fg xmper1u x1edh9d7" href="https://github.com/xvjiarui/GroupViT">https://github.com/xvjiarui/GroupViT</a><br /><br />demo: <a class="x1fey0fg xmper1u x1edh9d7" href="https://huggingface.co/spaces/xvjiarui/GroupViT">https://huggingface.co/spaces/xvjiarui/GroupViT</a><br /><br />colab notebook: <a class="x1fey0fg xmper1u x1edh9d7" href="https://colab.research.google.com/github/xvjiarui/GroupViT/blob/master/demo/GroupViT_hf_inference_notebook.ipynb">https://colab.research.google.com/github/xvjiarui/GroupViT/blob/master/demo/GroupViT_hf_inference_notebook.ipynb</a></div><div dir="auto"> </div><div dir="auto"> </div>]]></content:encoded>
						                            <category domain="https://thaikeras.com/community/"></category>                        <dc:creator>The Neural Engineer</dc:creator>
                        <guid isPermaLink="true">https://thaikeras.com/community/main-forum/all-about-segmentation/</guid>
                    </item>
				                    <item>
                        <title>4square</title>
                        <link>https://thaikeras.com/community/%e0%b9%80%e0%b8%81%e0%b8%b5%e0%b9%88%e0%b8%a2%e0%b8%a7%e0%b8%81%e0%b8%b1%e0%b8%9a-kaggle/4square/</link>
                        <pubDate>Sat, 30 Jul 2022 07:58:57 +0000</pubDate>
                        <description><![CDATA[Kaggle มือวางอันดับสี่ของโลก &quot;Psi&quot; Philipp Singer มาเปิดเผยวิธีที่ใช้ ที่ทำให้ได้ Solo Gold ตำแหน่งลำดับที่ 3 ของการแข่งขัน FourSquare &quot;Location Matching&quot; ซึ่งเป็นการแข่งขันสำหรับ Data Scien...]]></description>
                        <content:encoded><![CDATA[<p>Kaggle มือวางอันดับสี่ของโลก "Psi" Philipp Singer มาเปิดเผยวิธีที่ใช้ ที่ทำให้ได้ Solo Gold ตำแหน่งลำดับที่ 3 ของการแข่งขัน FourSquare "Location Matching" ซึ่งเป็นการแข่งขันสำหรับ Data Scientists ทั่วโลกบน Kaggle</p><p>https://youtu.be/1muUIOAFo_U</p><p>ThaiKeras &amp; Kaggle เคยเล่าถึงการแข่งขัน FourSquare "Location Matching" คร่าวๆ ในช่วงครึ่งหลังของคลิปนี้ครับ</p><p>https://m.facebook.com/story.php?story_fbid=pfbid0DzeWff2m8zuQBDLebSonz61favYmXz1rJ47hBQCmuH6dSJEyKgCdwE3pVugR5vFBl&amp;id=331602087754478</p>]]></content:encoded>
						                            <category domain="https://thaikeras.com/community/"></category>                        <dc:creator>The Neural Engineer</dc:creator>
                        <guid isPermaLink="true">https://thaikeras.com/community/%e0%b9%80%e0%b8%81%e0%b8%b5%e0%b9%88%e0%b8%a2%e0%b8%a7%e0%b8%81%e0%b8%b1%e0%b8%9a-kaggle/4square/</guid>
                    </item>
				                    <item>
                        <title>Graph Neural Networks (GNNs) สำหรับผู้เริ่มต้น อย่างละเอียด</title>
                        <link>https://thaikeras.com/community/main-forum/graph-neural-networks-gnns/</link>
                        <pubDate>Thu, 13 Jan 2022 05:30:42 +0000</pubDate>
                        <description><![CDATA[Graph Neural Networks สำหรับผู้เริ่มต้น (tutorial อธิบายแนวคิดเบื้องต้นอย่างละเอียด)ThaiKeras and Kaggle - 9 Jan 2022 สวัสดีครับ ถ้าถามถึงโมเดล Deep Learning ที่คนส่วนใหญ่ใช้งานมากที่สุด รวม...]]></description>
                        <content:encoded><![CDATA[<p><span style="text-decoration: underline;font-size: 24pt"><strong>Graph Neural Networks สำหรับผู้เริ่มต้น (tutorial อธิบายแนวคิดเบื้องต้นอย่างละเอียด)</strong></span></p><p><em>ThaiKeras and Kaggle - 9 Jan 2022</em></p><p> </p><p>สวัสดีครับ ถ้าถามถึงโมเดล Deep Learning ที่คนส่วนใหญ่ใช้งานมากที่สุด รวมทั้งให้ประสิทธิภาพความแม่นยำสูงสุด เชื่อว่า Convolution Neural Networks (CNNs) และ Transformers น่าจะเป็น 2 โมเดลที่พวกเรานึกถึงเป็นอันดับแรก เนื่องจากสองโมเดลนี้ใช้งานได้กับประเภท Data ที่พบกันได้มากที่สุด เช่น รูปภาพ วิดิโอ ข้อความ และเสียง (Image, Video, Text และ Speech) เป็นต้น</p><p>อย่างไรก็ดียังมีข้อมูลอีกหลายประเภทที่มีโครงสร้างเฉพาะ ทำให้ CNNs หรือ Transformers ไม่สามารถใช้ประโยชน์จากโครงสร้างเฉพาะนั้นได้ในประโยชน์สูงสุด เช่น</p><ul><li>ข้อมูล Social Media เช่น Pinterest ที่มี data อยู่สองประเภทคือ "Pin" (รูปภาพ) และ "Board" (คอลเลคชั่นของรูปภาพ) โดยแต่ละ Pin อยู่ได้หลายบอร์ด และแต่ละบอร์ดมีได้หลาย Pins ตามรูปที่ 1 และเราต้องการให้โมเดลทำนายความสัมพันธ์ระหว่าง Pin และ Board <p><img src="https://i.ibb.co/gZC11QC/1-pinterest.png" /></p></li></ul><p>สังเกตว่าปัญหานี้ input จะประกอบไปด้วยรูป pin หลายๆ รูปเชื่อมโยงกัน ซึ่งต่างจากกรณีใช้งานของ CNNs ปกติ ที่มักใช้ทำนายคุณสมบัติของรูปภาพ หรือ Pin ทีละรูป</p><ul><li>ข้อมูลทางเคมี เช่น ปัญหาการคิดค้น "ยา" ประเภทใหม่ (Drug Discovery) โดยตัวยานั้นแท้จริงแล้วคือ "โมเลกุล" ของอะตอมต่างๆ ทางเคมีที่มาอยู่รวมกันด้วยพันธะทางเคมีต่างๆ ซึ่ง Transformers หรือ CNNs ไม่สามารถนำโครงสร้างของ "พันธะ" เหล่านั้นมาคำนวนในโมเดลได้โดยตรง ดูรูปที่ 2<p><img src="https://i.ibb.co/CzQVy33/2-molecule.png" /></p></li><li>ข้อมูลทางชีววิทยา เช่น สายสตริง RNA ซึ่งประกอบไปด้วยตัวอักษร A G U C ซึ่งในการโมเดลและทำนายคุณสมบัติของ RNA นั้นเราอาจจะมองว่า RNA เป็น string ธรรมดาเรียงต่อกัน และใช้โมเดลเช่น Recurrent Neural Networks (RNNs) หรือ Transformers ก็ได้ ทว่าแท้จริงแล้วสายสตริง RNA นั้นมี "รูปร่าง" การขดตัวเฉพาะตัวอยู่ ดังแสดงในรูปที่ 3 และข้อมูลที่จุดที่แต่ละตัวอักษรสัมผัสกันนั้น ไม่สามารถป้อนให้ RNNs หรือ Transformers ตรงๆ ได้</li></ul><p><img src="https://i.ibb.co/RQjRLrj/3-rna.png" /></p><p> </p><p>ตัวอย่างทั้ง 3 และข้อมูลที่เจอใน applications อื่นอีกมากมายนั้นสามารถ represent ได้ด้วย "กราฟ" ทางคณิตศาสตร์ ซึ่งประกอบไปด้วยเซ็ตของ Nodes และเซ็ตของ Edges โดย edge ก็คือเส้นเชื่อมระหว่าง 2 nodes ใดๆ ในกราฟ ซึ่งจะเห็นได้ว่าไม่ว่าจะเป็น พันธะเคมี การเชื่อมระหว่าง Pin/Board หรือตัวอักษรที่ติดกันในสาย RNA สามารถโมเดลด้วย edge ในกราฟได้</p><p>นั่นคือในปัญหาดังกล่าว เราสามารถระบุ input ให้อยู่ในรูปกราฟได้นั่นเอง ดังนั้นจึงเป็นจุดกำเนิดโมเดล deep learning ประเภทใหม่ที่สามารถรับกราฟเป็น input เพื่อทำนายในสิ่งที่เราสนใจได้ ซึ่งโมเดลที่ว่านั้นก็คือ Graph Neural Networks (GNNs) นั่นเอง</p><p>(ทบทวนทฤษฎีกราฟที่นี่ <a href="https://en.wikipedia.org/wiki/Graph_theory">https://en.wikipedia.org/wiki/Graph_theory</a> )</p><p> </p><p>.</p><p> </p><p><span style="text-decoration: underline"><strong>Graph Neural Networks (GNNs)</strong></span></p><p>GNN ก็คือโมเดล neural network ที่รับกราฟเป็น input และ output เป็นคำทำนาย ซึ่งโดยปกติทำนายได้ 3 รูปแบบ คือ Graph prediction, node prediction และ edge prediction เช่น</p><ul><li>Graph prediction ใน Drug Discovery : ทำนายว่า "กราฟ" ของโมเลกุลนั้นสามารถทำหน้าที่เป็น "ยา" (ฆ่าเชื้อ หรือยับยั้งเชื้อ ฯลฯ) ได้ดีหรือไม่ ดังแสดงในรูปที่ 4</li><li>Node prediction ใน RNA string : ทำนายว่าแต่ละโหนดในกราฟของ RNA นั้น "ทนทาน" ต่อความร้อนในมากแค่ไหน (ทำนายทุกโหนดในกราฟ)</li><li>Edge prediction ใน Pinterest : ทำนายว่า Pin ใหม่ที่ user เพิ่ง upload เข้ามาควรจะถูก recommend ใน board ใดหรือไม่ (มี edge เชื่อมระหว่างโหนด pin และโหนด board หรือไม่)</li></ul><p>https://i.ibb.co/kmW6cyh/4-drug-prediction.png</p><p>.</p><p> </p><p><span style="text-decoration: underline"><strong>ว่าด้วยเรื่องการระบุ input ให้อยู่ในรูปกราฟ</strong></span></p><p>ใน CNNs หรือ Transformers , inputs นั้นจะอยู่ในรูปของ vectors หรือ matrix หรือ tensor ขึ้นกับจำนวนมิติของ input เช่น image 1 รูปอาจเป็น 3D tensor ขนาด 512x512x3 ส่วน texts อาจเป็น sequence of vectors (หรือ matrix = 2D tensor) อาทิ เช่น 2,048 x 500,000 โดย 2048 คือจำนวน "คำ" สูงสุดในข้อความและ 500,000 คือ 1-hot vector ที่ระบุ vocabulary หรือคำศัพท์ทั้งหมดที่โมเดลรู้จัก เป็นต้น</p><p> </p><p>เมื่อ input เราเป็นกราฟนั้น ตามนิยาม inputs ก็มักจะประกอบไปด้วย input สองส่วน นั่นคือ node-input และ edge-input นั่นเอง ดั่งแสดงในรูปที่ 5</p><p>นั่นคือเรา represent Graph G = (X, A) โดย X แทน vectors ทั้งหมดของทุกโหนดในกราฟ ,  ส่วน A ระบุ edges ในกราฟ</p><p> </p><p>ในรูปที่ 5 แสดงกรณีเรามี input 3 กราฟ ซึ่งแทนด้วย G_1สีส้ม G_2เขียว G_3น้ำเงินตามลำดับ</p><p>https://i.ibb.co/7RmLcBM/5-graph-representation.png</p><p>สังเกตกราฟ G_1 สีส้ม</p><ul><li>X_1 ก็คือ matrix ที่แต่ละแถวประกอบไปด้วย vector ของแต่ละโหนด</li><li>A_1 คือ Adjacency-matrix หรือ Edges-matrix ที่ระบุว่าโหนดใดเชื่อมต่ออยู่กับโหนดใด เช่น ในตัวอย่างนี้มีโหนดทั้งหมด 5 โหนดแทนด้วย x0, x1, x2, x3, x4 สังเกตจากสีได้ว่า A_1 ระบุว่า node x_0 เชื่อมกับ x_1 และ x_3 เป็นต้น โดย A_i อาจเป็น 0/1 หรืออาจเป็น real number ซึ่งแสดง weight ของ edge ก็ได้</li></ul><p> </p><p>.</p><p> </p><p>ในการเขียนโค้ดเช่น keras  เนื่องจากกราฟนั้นแทนด้ย 2 input tensors, แทนที่เราจะเรียก model.fit(X,y) ตามปกติเหมือนโมเดลอื่นๆ</p><p>เราก็จะต้องเตรียม 2 inputs X,A และเรียกใช้งานแบบนี้ครับ</p><p>model.fit(, y)</p><p>(โค้ด keras ในบทความหน้า)</p><p>.</p><p> </p><p>ในปัญหา drug discovery นั้น 1 กราฟแทนด้วย 1 โมเลกุลของยาที่เราต้องการทดสอบ ทำนองเดียวกันกับปัญหา RNA ที่ 1 กราฟแทนด้วย 1 RNA string</p><p>ในปัญหา Pinterest's edge prediction ที่อธิบายข้างต้นนั้น การออกแบบกราฟอาจจะไม่ชัดเจนเท่า 2 ปัญหาข้างต้น โดยในทางปฏิบัติเราอาจจัดหมวดหมู่ category ของรูปภาพตาม popular tags โดยอาจจะเจาะจง 10,000 tags ที่ได้รับความนิยมสูงที่สุด  และแทนให้แต่ละ tag คือ 1 กราฟ</p><p>โดยแต่ละ กราฟ นั้นก็จะมี pin และ board ทั้งหมดที่ถูก tag นั้นๆ อยู่ในกราฟ ซึ่งในกรณี pinterest นั้นแต่ละกราฟจะมีขนาดใหญ่มหึมา เนื่องจากแต่ละกราฟอาจประกอบไปด้วยรูป pin ถึงหลักแสน หลักล้าน หรือมากกว่า</p><p> </p><p>.</p><p> </p><p><span style="text-decoration: underline"><strong>เรา represent node-input ในรูป vector ได้อย่างไร?</strong></span></p><p>ในกรณีของโมเลกุลและ RNA นั้นเราสามารถใช้ one-hot vector เพื่อระบุว่าแต่ละโหนดเป็น โมเลกุล/RNA-base ประเภทใด และเรียนรู้ embedding vector ของ 1-hot vector นั้นๆ อีกที (ใช้ tf.keras.layers.Embedding )</p><p> </p><p>ส่วนตัวอย่าง Pinterest ซึ่งแต่ละกราฟประกอบไปด้วยโหนดซึ่งแทนด้วยรูปภาพ pin หลักล้านรูป และโมเดล GNN ต้องรับ input นี้เข้าไปเพื่อทำนายนั้น</p><p>อาจทำให้สงสัยว่าจะเป็นไปได้ในทางปฏิบัติหรือ เพราะในกรณี CNNs ปกตินั้นแค่รับ input ด้วยภาพขนาด 1 batch นั้นในแต่ละ batch ก็มักจะมีขนาดหลักร้อยหรือหลักพันเท่านั้น สำหรับ GPU ที่มีหน่วยความจำมาตรฐานขนาด 16GB-32GB</p><p> </p><p>ในกรณีของ Pinterest และ GNN นั้นแต่ละรูปไม่จำเป็นต้อง input ด้วย raw image (เช่น ขนาด 512x512x3) แต่อาจจะเป็น processed vector หรือ image vector ที่ผ่านโมเดล Neural Networks อื่นมาก่อนแล้ว เช่นเป็น Pooling output ของ EfficientNet-B0 ซึ่งเป็น vector ขนาด 1280x1 เป็นต้น</p><p> </p><p>(ยิ่งไปกว่านั้น ในกรณีนี้ Pinterest ยังออกแบบ Graph sampling หรือการสุ่ม sub-graph เพียงบางส่วนขึ้นมาทำนายเพื่อประหยัดขนาดของข้อมูลได้อีก ดูรายละเอียดได้ที่ Pinterest blog : <a href="https://medium.com/pinterest-engineering/pinsage-a-new-graph-convolutional-neural-network-for-web-scale-recommender-systems-88795a107f48">https://medium.com/pinterest-engineering/pinsage-a-new-graph-convolutional-neural-network-for-web-scale-recommender-systems-88795a107f48</a> )</p><p>.</p><p> </p><p><span style="text-decoration: underline"><strong>Message passing ใน GNN</strong></span></p><p>หัวใจของโมเดล Deep Learning เช่น CNNs หรือ Transformers ก็คือการเปลี่ยน input ที่อยู่ในรูปแบบดั้งเดิม (raw) เปลี่ยนให้เป็นเวกเตอร์ทางคณิตศาสตร์ (เรียก embedding vector) เช่น EfficientNet เปลี่ยนรูปภาพ 512x512x3 ให้เป็น 1280x1  หรือ BERT Transformers เปลี่ยน 1-hot vector ของ "คำศัพท์" แต่ละคำเป็น 768x1 เป็นต้น</p><p> </p><p>โดยการเปลี่ยนข้อมูล input จาก raw ให้เป็นเวกเตอร์นั้นถ้าพูดกันในภาพรวมจะผ่าน 2 กระบวนการดังนี้ (ดูรูปที่ 6)</p><p>https://i.ibb.co/0mX3jw5/6-deep-layers.png</p><p> นำ input เข้า non-linear transformation เมื่อได้ output แล้วก็นำ output นั้นไปเข้า non-linear transformation บล็อกถัดไป ทำอย่างนี้ต่อเนื่องหลายๆ ครั้ง (หลายๆ บล็อคสี่เหลี่ยมในรูปที่ 6) ซึ่งใน Deep Learning นั้น แต่ละ transformation block ก็คือ Neural Network layer นั่นเอง และการทำ transformation ต่อเนื่องหลายรอบนี้เอง ที่เป็นที่มาของคำว่า "Deep" (ลึก) เพราะ Neural network ที่เอา layers มาต่อกันนับสิบหรือร้อย layer เปรียบเปรยได้กับสมการที่มีความยาว หรือ "ความลึก" มากนั่นเอง</p><p> </p><p> ตรงนี้สำคัญมาก -- ในแต่ละ transformation layer นั้น แต่ละโมเดลจะออก "กระบวนการ process input-ย่อย" ที่แตกต่างกัน -- หมายเหตุ input-ย่อย ของรูปภาพคือจุด pixel, หรือ input-ย่อยของข้อความก็คือ "แต่ละคำในข้อความ" เป็นต้น ส่วน input-ย่อยของกราฟ ก็คือโหนดนั่นเอง -- โดยทุกโมเดลที่เรารู้จักกันดีจะมีแนวคิดในการ process input-ย่อยด้วยแนวคิดที่เรียกว่า "Message Passing" หรือ "การกระจาย information จาก input-ย่อยหนึ่ง ไปยังอีก input-ย่อยหนึ่ง" ที่ต่างกันออกไป ดูรูปที่ 7 และรูปที่ 8 เช่น</p><ol><li style="list-style-type: none"><ol><li>ใน CNN นั้น message passing ระหว่าง pixel นึงไปยังอีก pixel จะผ่านกระบวนการที่เรียกว่า convolution นั่นคือ, pixel นึงจะรับ information ( information ที่ส่งผ่านกันนิยมเรียกว่า "message") จาก pixel รอบข้าง</li><li>ใน RNN นั้น message passing จะทำจากคำที่อยู่ติดกัน ส่งไปยังคำถัดไปเรื่อยๆ (ถ้าเป็น bi-directional ก็คือส่ง message ทั้งจากคำด้านหน้า และคำด้านหลัง)</li><li>ใน Transformer นั้น message passing จะเป็นแบบ "fully connected" นั่นคือ ทุกๆ "input-ย่อย" (เช่น คำแต่ละคำในข้อความ) ก็จะกระจาย information หรือ message ไปให้ทุกๆ input-ย่อย นั่นคือคำอื่นๆ ทั้งหมด</li></ol></li></ol><p> </p><p>การออกแบบ message-passing นี้ส่งผลอย่างมีนัยสำคัญกับประสิทธิภาพของแต่ละโมเดล โดยจะดีหรือไม่ขึ้นอยู่กับประเภทของข้อมูล input เช่น message passing ของ Transformer นั้นเหมาะสมกับข้อมูลข้อความ มากกว่า message-passing ของ RNN มาก เพราะ information นั้นสามารถกระจายถึงกันได้อย่างเหมาะสม (ตัวอย่างเช่นคำว่า "it" ในข้อความเช่น "Dog is a very good friend of mine. I love it." โยงกับคำว่า "Dog" ซึ่งมีตำแหน่งอยู่ 10 คำก่อนหน้า "it"</p><p>โดย RNN นั้น message จาก 10 คำก่อนหน้าจะไม่ส่งมาถึงคำปัจจุบันโดยตรงได้เหมือน transformer) นั่นทำให้ปัจจุบันโมเดล transformer นั้นมาทดแทน RNN ไปแทบจะสิ้นเชิง</p><p> </p><p>ทว่าใน input ที่เป็นรูปภาพนั้น การกระจายข้อมูล local message passing ของ CNN ที่เน้นกระจายข้อมูลจาก pixel ใกล้ๆ กัน ก็ยังมีประสิทธิภาพดีกว่าของ Transformer ที่กระจายข้อมูลจากทุกจุดในภาพไปยังจุดอื่นๆ อีกทั้งหมดในภาพ เป็นต้น</p><p> </p><p> </p><p>https://i.ibb.co/T4HHqN8/7-cnn-gcn-convolution.png</p><p><em>รูปที่ 7</em></p><p><em>ซ้าย - message passing ใน convolution ของ CNN จะทำผ่าน pixel รอบข้าง</em></p><p><em>ขวา - message passing ของ GNN จะกระทำผ่านโหนดรอบข้าง ซึ่งพยายามทำให้ใกล้เคียงกับแนวคิดของ convolution นั่นเอง</em></p><p> </p><p><img src="https://i.ibb.co/ChhPSpB/8-rnn-trans-message-passing.jpg" /></p><p><em>รูปที่ 8 บน message passing ของ RNN จะทำจากคำที่อยู่ติดกัน</em></p><p><em>ล่าง message passing ของ transformer จะส่งจากทุกๆ คำไปยังทุกๆ คำ (ซึ่งพบว่าเหมาะสมกับ input ที่เป็นข้อความมากกว่า RNN)</em></p><p> </p><p> </p><p>สำหรับ GNN นั้นโมเดลก็จะประกอบไปด้วย neural network layers หลาย layers เช่นเดียวกันกับโมเดลอื่นๆ ส่วน message passing ในกราฟนั้นโมเดลส่วนใหญ่จะออกแบบให้ส่ง information หรือ message ผ่าน "edges" ในกราฟ ดังแสดงในรูปที่ 7 ครับ ซึ่งการกระจายข้อมูลแบบนี้สามารถแปลงเป็น programming code ได้อย่างง่ายดาย และถือได้ว่ามีการใช้ "โครงสร้างของกราฟ" ที่เราเกริ่นในตอนต้นของบทความได้อย่างเหมาะสม ซึ่งเราจะดูโค้ดกันในบทความหน้า</p><p> </p><p>สำหรับแนวคิดการออกแบบ GNN ก็น่าจะมีราวๆ นี้นะครับ ซึ่งบทความนี้พยายามอธิบายให้ง่ายที่สุดแบบบ้านๆ  จึงอาจจะไม่เป็นทางการบ้าง ทว่าเพื่อนๆ สามารถศึกษาแนวคิด GNN "อย่างจริงจัง" เพิ่มเติมได้จากแหล่งอ้างอิง 2 ที่นี่นะครับ</p><p> </p><ul><li>Intro to graph neural networks (ML Tech Talks) : <a href="https://youtu.be/8owQBFAHw7E">https://youtu.be/8owQBFAHw7E</a></li><li>รวม GNN architecture :  <a href="https://theaisummer.com/gnn-architectures/">https://theaisummer.com/gnn-architectures/</a></li></ul><p> </p><p>ในคราวหน้าเราจะมาศึกษา GNNs ที่มาตรฐานที่สุดคือ Graph Convolution Networks (GCNs) และ Graph Attention Networks (GATs) พร้อม Keras code และ Keras library ที่ชื่อ Spektral กัน</p>]]></content:encoded>
						                            <category domain="https://thaikeras.com/community/"></category>                        <dc:creator>The Neural Engineer</dc:creator>
                        <guid isPermaLink="true">https://thaikeras.com/community/main-forum/graph-neural-networks-gnns/</guid>
                    </item>
				                    <item>
                        <title>DataScience x CryptoCurrency</title>
                        <link>https://thaikeras.com/community/%e0%b9%80%e0%b8%81%e0%b8%b5%e0%b9%88%e0%b8%a2%e0%b8%a7%e0%b8%81%e0%b8%b1%e0%b8%9a-kaggle/datascience-x-cryptocurrency/</link>
                        <pubDate>Sun, 07 Nov 2021 00:57:53 +0000</pubDate>
                        <description><![CDATA[Data Science x Cryptocurrency สำหรับผู้ที่สนใจ Data Science และ Cryptocurrency สัปดาห์นี้มีการแข่งขันใหม่บน Kaggle เพื่อทำนายราคาเหรียญ Cryptocurrencies 14 ชนิด และมีเงินรางวัลมากกว่า 4 ล้าน...]]></description>
                        <content:encoded><![CDATA[<p><img src="https://i.ibb.co/rwtrZk5/g-crypto.png" /></p><div class="_1mf _1mj" data-offset-key="7leuk-0-0"><strong><span style="font-size: 24pt" data-offset-key="7leuk-0-0">Data Science x Cryptocurrency</span></strong></div><div data-offset-key="7leuk-0-0"> </div><div class="" data-block="true" data-editor="thaf" data-offset-key="bg1n1-0-0"><div class="_1mf _1mj" data-offset-key="bg1n1-0-0"><span data-offset-key="bg1n1-0-0">สำหรับผู้ที่สนใจ Data Science และ Cryptocurrency สัปดาห์นี้มีการแข่งขันใหม่บน Kaggle เพื่อทำนายราคาเหรียญ Cryptocurrencies 14 ชนิด และมีเงินรางวัลมากกว่า 4 ล้านบาท สำหรับผู้ชนะ 10 อันดับแรก กำหนดเวลา 3 เดือน</span></div></div><div class="" data-block="true" data-editor="thaf" data-offset-key="1at1-0-0"><div class="_1mf _1mj" data-offset-key="1at1-0-0"><span data-offset-key="1at1-0-0"> </span></div></div><div class="" data-block="true" data-editor="thaf" data-offset-key="5qi2p-0-0"><div class="_1mf _1mj" data-offset-key="5qi2p-0-0"><span data-offset-key="5qi2p-0-0">รายละเอียดคร่าวๆ ของการแข่งขันคือต้องทำนายราคาของเหรียญ 14 ชนิดได้แก่ Bitcoin, Bitcoin Cash, Ethereum, Ethereum Classic, Binance Coin, Dogecoin, Cardano, EOS.IO, Litecoin, Monero, TRON, Stellar, IOTA และ Maker</span></div></div><div class="" data-block="true" data-editor="thaf" data-offset-key="a8jk7-0-0"><div class="_1mf _1mj" data-offset-key="a8jk7-0-0"><span data-offset-key="a8jk7-0-0"> </span></div></div><div class="" data-block="true" data-editor="thaf" data-offset-key="85qg2-0-0"><div class="_1mf _1mj" data-offset-key="85qg2-0-0"><span data-offset-key="85qg2-0-0">ข้อมูลที่ Kaggle เตรียมให้จะเป็น High-frequency trading data ย้อนหลังไปจนถึงปี 2018 เพื่อใช้สร้างโมเดล โดยมีกำหนดเวลา 3 เดือนจนถึง เช้าวันที่ 2 กุมภาพันธ์ 2565 โดยการวัดผลจะใช้ Pearson Correlation Coefficient แบบมี weighted ซึ่งดูวิธีการวัดได้ที่นี่ครับ <a href="https://www.kaggle.com/cstein06/tutorial-to-the-g-research-crypto-competition" target="true">www.kaggle.com/cstein06/tutorial-to-the-g-research-crypto-competition</a></span></div></div><div class="" data-block="true" data-editor="thaf" data-offset-key="66b5q-0-0"><div class="_1mf _1mj" data-offset-key="66b5q-0-0"><span data-offset-key="66b5q-0-0"> </span></div></div><div class="" data-block="true" data-editor="thaf" data-offset-key="akfli-0-0"><div class="_1mf _1mj" data-offset-key="akfli-0-0"><span data-offset-key="akfli-0-0">หลังจากครบกำหนดเวลาแล้ว จะให้โมเดลรันทำนายราคาสินทรัพย์ทั้ง 14 ไปอีก 3 เดือนและจะประกาศผลผู้ชนะเลิศวันที่ 3 พฤษภาคมครับ โดยรายละเอียดอื่นๆ ทั้งหมดดูได้ที่นี่ครับผม</span></div></div><div class="" data-block="true" data-editor="thaf" data-offset-key="67v5v-0-0"><div class="_1mf _1mj" data-offset-key="67v5v-0-0"><span class="py34i1dx"><span data-offset-key="67v5v-0-0">https://www.kaggle.com/c/g-research-crypto-forecasting/overview/description</span></span></div></div><div class="" data-block="true" data-editor="thaf" data-offset-key="dqhel-0-0"><div class="_1mf _1mj" data-offset-key="dqhel-0-0"><span data-offset-key="dqhel-0-0"> </span></div></div><div class="" data-block="true" data-editor="thaf" data-offset-key="2fsjd-0-0"><div class="_1mf _1mj" data-offset-key="2fsjd-0-0"><span data-offset-key="2fsjd-0-0">ในการแข่งขันทั้งหมดบน Kaggle ผู้เข้าแข่งขันจะได้รับการสนับสนุน Cloud Machine คุณภาพสูง โดยเป็น TPU v3 จำนวนสัปดาห์ละ 20 ชั่วโมง และ GPU P100 สัปดาห์ละไม่ต่ำกว่า 30 ชั่วโมง ฟรีครับ ดูรายละเอียดเกี่ยวกับ Kaggle เพิ่มเติมได้ที่กระทู้ปักหมุดในเพจนะครับ</span></div></div>]]></content:encoded>
						                            <category domain="https://thaikeras.com/community/"></category>                        <dc:creator>The Neural Engineer</dc:creator>
                        <guid isPermaLink="true">https://thaikeras.com/community/%e0%b9%80%e0%b8%81%e0%b8%b5%e0%b9%88%e0%b8%a2%e0%b8%a7%e0%b8%81%e0%b8%b1%e0%b8%9a-kaggle/datascience-x-cryptocurrency/</guid>
                    </item>
				                    <item>
                        <title>เริ่มต้นเขียน Game AI แบบ Turn-based Strategy ง่ายๆ บน Kaggle</title>
                        <link>https://thaikeras.com/community/%e0%b9%80%e0%b8%81%e0%b8%b5%e0%b9%88%e0%b8%a2%e0%b8%a7%e0%b8%81%e0%b8%b1%e0%b8%9a-kaggle/lux-competition/</link>
                        <pubDate>Fri, 15 Oct 2021 12:19:08 +0000</pubDate>
                        <description><![CDATA[เริ่มต้นเขียน Game AI แบบ Turn-based Strategy ง่ายๆ บน Kaggle (Lux Competition ตอนที่ 1)ThAIKeras and Kaggle 15 ตุลาคม 2021  การเขียน AI เพื่อวางแผนบนเกมส์ เช่น StarCraft และ Civilization หร...]]></description>
                        <content:encoded><![CDATA[<div class="" data-block="true" data-editor="e9hum" data-offset-key="b3rkc-0-0"><div class="_1mf _1mj" data-offset-key="b3rkc-0-0"><span style="text-decoration: underline;font-size: 24pt"><strong>เริ่มต้นเขียน Game AI แบบ Turn-based Strategy ง่ายๆ บน Kaggle </strong></span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="aakm6-0-0"><div class="_1mf _1mj" data-offset-key="aakm6-0-0"><span style="text-decoration: underline;font-size: 24pt"><strong>(Lux Competition ตอนที่ 1)</strong></span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="ftls-0-0"><div class="_1mf _1mj" data-offset-key="ftls-0-0"><em>ThAIKeras and Kaggle 15 ตุลาคม 2021</em></div></div><div data-offset-key="ftls-0-0"> </div><div data-offset-key="ftls-0-0"><img src="https://i.ibb.co/KV162tC/lux1-1.png" /></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="945f8-0-0"><div class="_1mf _1mj" data-offset-key="945f8-0-0"><span data-offset-key="945f8-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="caq3i-0-0"><div class="_1mf _1mj" data-offset-key="caq3i-0-0"><span data-offset-key="caq3i-0-0">การเขียน AI เพื่อวางแผนบนเกมส์ เช่น StarCraft และ Civilization หรือ AI ที่จำลองการใช้ชีวิตบนโลกเสมือนแบบ The Sims </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="cufm-0-0"><div class="_1mf _1mj" data-offset-key="cufm-0-0"><span data-offset-key="cufm-0-0">จะยิ่งสำคัญและน่าตื่นเต้นขึ้นเรื่อยๆ เมื่อเรากำลังเข้าสู่ยุค Metaverse ด้วยเทคโนโลยี VR และ AR (ดูคลิปสั้นแนะนำ </span><span class="py34i1dx"><span data-offset-key="cufm-1-0">https://youtu.be/c0G4SZ70vMY</span></span><span data-offset-key="cufm-2-0"> )</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="eqh6i-0-0"><div class="_1mf _1mj" data-offset-key="eqh6i-0-0"><span data-offset-key="eqh6i-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="2209d-0-0"><div class="_1mf _1mj" data-offset-key="2209d-0-0"><span data-offset-key="2209d-0-0">นั่นจึงทำให้ Game หรือ Bot AI ที่ใช้ชีวิตใน Virtual Environment เป็นหัวข้อที่น่าสนใจไม่แพ้หัวข้อ AI อื่นๆ ที่ร้อนแรงเช่น Deep Learning หรือ Data Science ทีเดียวครับ</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="2658f-0-0"><div class="_1mf _1mj" data-offset-key="2658f-0-0"><span data-offset-key="2658f-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="27c5q-0-0"><div class="_1mf _1mj" data-offset-key="27c5q-0-0"><span data-offset-key="27c5q-0-0">บทความนี้จะเป็นบทความแรกที่จะแนะนำเพื่อนๆ ให้ลองฝึกเขียน Agent/Bot AI บน Kaggle.com ที่ได้เตรียม Environments ใช้งานง่ายและ Hardware/Software ที่จำเป็นทั้งหมดให้เราแล้วในเบื้องหลัง ดังนั้นเราเพียงแค่ใช้ Browser ในการเขียนเท่านั้น โดยไม่มีค่าใช้จ่ายใดๆ (สำหรับผู้ที่ยังไม่รู้จัก Kaggle.com สามารถดูรายละเอียดได้ที่กระทู้ปักหมุดในเพจ @ThaiKeras and Kaggle)</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="2eucs-0-0"><div class="_1mf _1mj" data-offset-key="2eucs-0-0"><span data-offset-key="2eucs-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="8dmtv-0-0"><div class="_1mf _1mj" data-offset-key="8dmtv-0-0"><span data-offset-key="8dmtv-0-0">โดยเราจะหัดเขียนผ่านเกมส์ Turn-based Strategy เล็กๆ ที่ชื่อว่า Lux ซึ่งเป็นเกมส์ที่ผู้เล่นต้องวางแผนและผลัดกันควบคุม units ของตัวเอง ในทำนองเดียวกับเกมส์ Civilization เพียงแต่กติกา กฎต่างๆ นั้นเข้าใจง่ายกว่า Civilization มากๆ ทำให้เหมาะสำหรับ ผู้เริ่มต้น </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="9hn4o-0-0"><div class="_1mf _1mj" data-offset-key="9hn4o-0-0"><span data-offset-key="9hn4o-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="8jkov-0-0"><div class="_1mf _1mj" data-offset-key="8jkov-0-0"><span data-offset-key="8jkov-0-0">อย่างไรก็ดี กติกายังมีความซับซ้อนในระดับที่ท้าทาย โปรแกรมเมอร์เก่งๆ ทั่วโลกให้เข้ามาพัฒนา Bot แข่งกันบน game นี้ครับ โดย Kaggle นั้นได้จัดให้เป็นการแข่งขันชิงรางวัล 10,000 USD ที่ทุกคนในโลกสามารถเข้าร่วมได้ในชื่อว่า Lux Competition ( </span><span class="py34i1dx"><span data-offset-key="8jkov-1-0">https://www.kaggle.com/c/lux-ai-2021/overview</span></span><span data-offset-key="8jkov-2-0"> )</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="5ji0e-0-0"><div class="_1mf _1mj" data-offset-key="5ji0e-0-0"><span data-offset-key="5ji0e-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="5o7f7-0-0"><div class="_1mf _1mj" data-offset-key="5o7f7-0-0"><span data-offset-key="5o7f7-0-0">โดยการแข่งขันนี้มีเวลาทั้งหมด 4 เดือน ณ วันที่เขียนบทความนี้ (15 ตค. 2564) ก็ยังเหลือเวลาอีกเกือบ 2 เดือน ซึ่งเพียงพอเลยทีเดียวครับ</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="akd2l-0-0"><div class="_1mf _1mj" data-offset-key="akd2l-0-0"><span data-offset-key="akd2l-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="61k5t-0-0"><div class="_1mf _1mj" data-offset-key="61k5t-0-0"><span data-offset-key="61k5t-0-0">กล่าวโดยสรุป การแข่งขันนี้เหมาะกับทั้งผู้เริ่มต้นฝึกเขียน Bot Game AI บน Environment ที่เรียบง่าย หรือกระทั่งโปรแกรมเมอร์มือ</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="a73sm-0-0"><div class="_1mf _1mj" data-offset-key="a73sm-0-0"><span data-offset-key="a73sm-0-0">อาชีพที่จะได้แข่งกับมืออาชีพด้วยกันเอง ซึ่งการเริ่มต้น เราต้องศึกษาเรื่องดังต่อไปนี้ และจะทยอยเขียนบทความให้ครอบคลุมครับ</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="52ou9-0-0"><div class="_1mf _1mj" data-offset-key="52ou9-0-0"><span data-offset-key="52ou9-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="fq3v2-0-0"><div class="_1mf _1mj" data-offset-key="fq3v2-0-0"><span data-offset-key="fq3v2-0-0"> 1) กติกาของ (1.1) เกมส์ และ (1.2) การแข่งขันระหว่างโปรแกรมเมอร์ด้วยกัน</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="ae40a-0-0"><div class="_1mf _1mj" data-offset-key="ae40a-0-0"><span data-offset-key="ae40a-0-0"> 2) Interface ของ Game Environment -- นั่นคือ เราจะบังคับ หรือควบคุม units ต่างๆ ของเราเองด้วยคำสั่งอะไรได้บ้าง และส่งคำสั่งเหล่านั้นให้ Environment ของเกมส์ทราบได้อย่างไร</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="5gjns-0-0"><div class="_1mf _1mj" data-offset-key="5gjns-0-0"><span data-offset-key="5gjns-0-0"> 3) แนวคิดในการเขียน Agent/Bot ใน Game AI เบื้องต้น ด้วย Rule-based</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="8pr7i-0-0"><div class="_1mf _1mj" data-offset-key="8pr7i-0-0"><span data-offset-key="8pr7i-0-0"> 4) การเขียนโปรแกรมขั้นสูง (4.1) เรียนรู้ Bot ของ Top-player อัตโนมัติด้วย Game Scraping + Imitation Learning และ</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="bg94s-0-0"><div class="_1mf _1mj" data-offset-key="bg94s-0-0"><span data-offset-key="bg94s-0-0"> (4.2) ให้ Bot เรียนรู้ด้วยตัวเองทั้งหมดตั้งแต่แรกเริ่มด้วย Reinforcement Learning</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="ckorp-0-0"><div class="_1mf _1mj" data-offset-key="ckorp-0-0"> </div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="b4hmb-0-0"><div class="_1mf _1mj" data-offset-key="b4hmb-0-0"><span data-offset-key="b4hmb-0-0">จะเห็นว่าการเข้าร่วม Lux Competition นี้ เราจะได้เรียนรู้ ความรู้หลากหลายมาก ไม่ว่าจะเป็นการเขียน Bot/Agent บน Virtual Environment ซึ่งจะเป็นอนาคตของเทคโนโลยีโลกในยุค Metaverse รวมทั้งมีโอกาสเรียนรู้เทคนิค Machine Learning ขั้นสูงคือ Imitation Learning และ Reinforcement Learning ด้วยครับ</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="9voct-0-0"><div class="_1mf _1mj" data-offset-key="9voct-0-0"><span data-offset-key="9voct-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="ck8ip-0-0"><div class="_1mf _1mj" data-offset-key="ck8ip-0-0"><span data-offset-key="ck8ip-0-0">** หมายเหตุ **</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="a6mcr-0-0"><div class="_1mf _1mj" data-offset-key="a6mcr-0-0"><span data-offset-key="a6mcr-0-0"> 1) คำว่า Bot หรือ Game AI ในศัพท์เฉพาะในวงการนี้มักจะเรียกว่า Agent ได้เช่นกัน ดังเช่น ถ้าเราเข้าไปอ่านข้อมูลเพิ่มใน Kaggle ก็จะเจอคำว่า Agent บ่อยๆ ซึ่งก็หมายถึงตัว Bot ที่เราเขียนขึ้นเพื่อเล่นเกมส์นี้นั่นเองครับ</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="4mla4-0-0"><div class="_1mf _1mj" data-offset-key="4mla4-0-0"><span data-offset-key="4mla4-0-0"> 2) คำว่า "Game/Virtual Environment" นั้น หมายถึงระบบควบคุมหลัก ของสิ่งต่างๆ ในเกมส์ ที่คอย simulate ผลลัพธ์ที่เกิดขึ้นจากการกระทำ (actions) ของ Bot/Agent ต่างๆ เช่น เมื่อ Agent ส่งคำสั่ง "เดินไปข้างหน้า" ไปยัง Environment เมื่อได้รับคำขอ Environment ก็จะเช็คว่าการเดินไปข้างหน้าของ unit นั้นๆ ทำได้หรือไม่ ถ้าทำได้ Environment ก็จะเคลื่อนที่ unit นั้นไปข้างหน้า แต่ถ้าทำไม่ได้ unit นั้นก็จะอยู่กับที่โดย Environment ก็จะส่ง Error message กลับมาให้ Agent ครับ</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="2inhb-0-0"><div class="_1mf _1mj" data-offset-key="2inhb-0-0"> </div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="fhcar-0-0"><div class="_1mf _1mj" data-offset-key="fhcar-0-0"><span data-offset-key="fhcar-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="74c79-0-0"><div class="_1mf _1mj" data-offset-key="74c79-0-0"><span data-offset-key="74c79-0-0">โดยในบทความแรกนี้จะขอว่าเฉพาะเรื่องของกติกากันก่อนนะครับ</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="3pscl-0-0"><div class="_1mf _1mj" data-offset-key="3pscl-0-0"><span data-offset-key="3pscl-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="9sv9b-0-0"><div class="_1mf _1mj" data-offset-key="9sv9b-0-0"><span data-offset-key="9sv9b-0-0">.</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="16gbj-0-0"><div class="_1mf _1mj" data-offset-key="16gbj-0-0"><span data-offset-key="16gbj-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="8b80a-0-0"><div class="_1mf _1mj" data-offset-key="8b80a-0-0"><span style="text-decoration: underline"><strong>กติกาของเกมส์ Lux</strong></span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="ur3j-0-0"><div class="_1mf _1mj" data-offset-key="ur3j-0-0"> </div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="ckmnm-0-0"><div class="_1mf _1mj" data-offset-key="ckmnm-0-0"><span data-offset-key="ckmnm-0-0">ในที่นี่อธิบายเพื่อให้เข้าใจแนวคิดภาพรวมของเกมส์ ส่วนกติกาแบบละเอียดสามารถอ่านได้ที่นี่ครับ : </span><span class="py34i1dx"><span data-offset-key="ckmnm-1-0">https://www.kaggle.com/c/lux-ai-2021/overview/lux-ai-specifications</span></span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="b3i5k-0-0"><div class="_1mf _1mj" data-offset-key="b3i5k-0-0"><span data-offset-key="b3i5k-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="dkakj-0-0"><div class="_1mf _1mj" data-offset-key="dkakj-0-0"><span data-offset-key="dkakj-0-0">ภาพรวมในเกมส์ Lux จะเป็นการแข่งขันกันของผู้เล่น 2 คน (หรือ Bots/Agents 2 ตัว) เล่นกันอยู่ใน map ที่สุ่มขนาด 12x12 ไปจนถึง 32x32 โดยใน map นั้นจะมีทรัพยากรต่างๆ กระจายอยู่คือ ไม้ ถ่านหิน และแร่ยูเรเนียม (เรียงจากพลังงานน้อยไปมาก) และจะเล่นกันทั้งหมด 360 turns โดยจะสลับเป็นกลางวัน 30 turns กลางคืน 10 turns รวมเป็น 1 cycle ดังนั้น 360 turns ก็จะมี 9 cycles</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="5drh4-0-0"><div class="_1mf _1mj" data-offset-key="5drh4-0-0"><span data-offset-key="5drh4-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="db7ls-0-0"><div class="_1mf _1mj" data-offset-key="db7ls-0-0"><span data-offset-key="db7ls-0-0">โดยจุดเริ่มต้นแต่ละผู้เล่นจะมี 1 เมือง 1 คนงาน (worker) และแต้มงานวิจัย=0 โดยคนงานสามารถเคลื่อนที่ไปเก็บทรัพยากรได้ และสร้างเมืองใหม่ได้ ส่วนเมืองก็จะสร้างคนงานขึ้นมาใหม่ได้ (แต่ต้องไม่เกินจำนวนเมืองที่มีอยู่) หรือเพิ่มแต้มงานวิจัยได้ 1 หน่วย </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="ansr4-0-0"><div class="_1mf _1mj" data-offset-key="ansr4-0-0"><span data-offset-key="ansr4-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="4ep24-0-0"><div class="_1mf _1mj" data-offset-key="4ep24-0-0"><span data-offset-key="4ep24-0-0">เมื่อคนงานขนทรัพยากรไปเก็บยังเมืองของตัวเอง ทรัพยากรจะถูกเปลี่ยนเป็น "พลังงานในเมือง" (fuel) เพื่อใช้ในยามค่ำคืน โดยในตอนกลางวันทั้งเมืองและผู้เล่นจะสามารถอยู่ได้โดยไม่ต้องอาศัยพลังงาน fuel ทว่าเมื่อถึง "กลางคืน" ทั้งผู้เล่นและเมืองจำเป็นต้องใช้พลังงาน</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="feg6u-0-0"><div class="_1mf _1mj" data-offset-key="feg6u-0-0"><span data-offset-key="feg6u-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="ccgb8-0-0"><div class="_1mf _1mj" data-offset-key="ccgb8-0-0"><span data-offset-key="ccgb8-0-0">เมื่อ fuel หมดเมื่อไร คนงานหรือเมืองที่ไม่มี fuel แล้วจะ "ตาย" หรือหายไปจากเกมส์ทันที ดังนั้นในช่วง "กลางวัน" คนงานมีหน้าที่ตักตวงทรัพยากรให้มากที่สุดเพื่อปกป้อง "เมืองที่สำคัญ" เอาไว้ โดยอาจปล่อยให้เมือง "ไม่สำคัญ" ตายไปได้</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="alfjr-0-0"><div class="_1mf _1mj" data-offset-key="alfjr-0-0"><span data-offset-key="alfjr-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="28ddm-0-0"><div class="_1mf _1mj" data-offset-key="28ddm-0-0"><span data-offset-key="28ddm-0-0">เป้าหมายของเกมส์นี้คือ "การเหลือเมืองให้อยู่รอดมากที่สุด" หลัง 360 turns โดยผู้ที่เหลือเมืองมากที่สุดจะเป็นผู้ชนะในเกมส์</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="ffs80-0-0"><div class="_1mf _1mj" data-offset-key="ffs80-0-0"><span data-offset-key="ffs80-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="1u0i9-0-0"><div class="_1mf _1mj" data-offset-key="1u0i9-0-0"><span data-offset-key="1u0i9-0-0">การเก็บและใช้ทรัพยากรมีหลักการต่อไปนี้</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="43q3d-0-0"><div class="_1mf _1mj" data-offset-key="43q3d-0-0"><span data-offset-key="43q3d-0-0"> - คนงานสามารถเก็บทรัพยากรที่อยู่รอบตัวได้สูงสุด 5 ช่องใน 1 turn นั่นคือ กลาง ซ้าย ขวา บน ล่าง</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="ba53b-0-0"><div class="_1mf _1mj" data-offset-key="ba53b-0-0"><span data-offset-key="ba53b-0-0"> - ถ้ามีไม้รอบตัว เก็บไม้ได้ turn ละ 20 หน่วย ต่อ 1 ช่อง</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="b98be-0-0"><div class="_1mf _1mj" data-offset-key="b98be-0-0"><span data-offset-key="b98be-0-0"> - ถ้ามีถ่านหินรอบตัว เก็บถ่านหินได้ turn ละ 5 หน่วย ต่อ 1 ช่อง</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="eersa-0-0"><div class="_1mf _1mj" data-offset-key="eersa-0-0"><span data-offset-key="eersa-0-0"> - ถ้ามียูเรเนียมรอบตัว เก็บถ่านหินได้ turn ละ 2 หน่วย ต่อ 1 ช่อง</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="bmpnd-0-0"><div class="_1mf _1mj" data-offset-key="bmpnd-0-0"><span data-offset-key="bmpnd-0-0"> - ไม้ ถ่านหิน และยูเรเนียม 1 หน่วยถ้าเก็บเข้าเมืองแล้วสามารถ "เปลี่ยน" เป็น "พลังงาน fuel" ในเมืองได้ 1, 10 และ 40 หน่วยตามลำดับ</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="12re6-0-0"><div class="_1mf _1mj" data-offset-key="12re6-0-0"><span data-offset-key="12re6-0-0"> - โดยการเก็บทรัพยากรขั้นสูงคือ ถ่านหิน และยูเรเนียมนั้นผู้เล่นจะต้องพัฒนาแต้มงานวิจัยให้ถึง 50 และ 200 ก่อนตามลำดับ</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="6691r-0-0"><div class="_1mf _1mj" data-offset-key="6691r-0-0"><span data-offset-key="6691r-0-0"> - ในกลางคืน 1 turn, คนงานใช้พลังงาน 4 หน่วย ส่วนเมืองเดี่ยวใช้พลังงาน 23 หน่วย ถ้าเป็นเมืองใหญ่ที่สร้างติดกันจะมีการประหยัดการใช้พลังงานตั้งแต่ 5-20 หน่วยซึ่งดูสูตรได้ในลิงก์กติกาด้านบน</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="43gs4-0-0"><div class="_1mf _1mj" data-offset-key="43gs4-0-0"><span data-offset-key="43gs4-0-0"> - กลางวันไม่จำเป็นต้องใช้ fuel</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="3f4fu-0-0"><div class="_1mf _1mj" data-offset-key="3f4fu-0-0"><span data-offset-key="3f4fu-0-0"> - คนงานเก็บ resource รวมกันทุกชนิดรวมกันได้ไม่เกิน 100 หน่วย</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="70apk-0-0"><div class="_1mf _1mj" data-offset-key="70apk-0-0"> </div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="f8b6j-0-0"><div class="_1mf _1mj" data-offset-key="f8b6j-0-0"><span data-offset-key="f8b6j-0-0">Action ในแต่ละ turn</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="4llv5-0-0"><div class="_1mf _1mj" data-offset-key="4llv5-0-0"><span data-offset-key="4llv5-0-0"> - คนงานเก็บทรัพยากรได้ทุก turn ถ้ามีทรัพยากรรอบตัว</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="bgaka-0-0"><div class="_1mf _1mj" data-offset-key="bgaka-0-0"><span data-offset-key="bgaka-0-0"> - ในกลางวันคนงานเมื่อเดิน 1 ช่องต้องหยุดรอ (cool down) 1 turn ส่วนในกลางคืนต้องหยุดรอ 3 turns</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="8ksgk-0-0"><div class="_1mf _1mj" data-offset-key="8ksgk-0-0"><span data-offset-key="8ksgk-0-0"> - เมืองเมื่อสร้างคนงาน 1 คนหรือคิดค้น 1 research point แล้วต้องหยุดรอ (cooldown) 10 turns</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="1ptko-0-0"><div class="_1mf _1mj" data-offset-key="1ptko-0-0"><span data-offset-key="1ptko-0-0"> - ในแต่ละ turn เราต้องส่งคำสั่งของทุก units (คนงานทั้งหมด และเมืองทั้งหมด) ที่ไม่ต้องหยุดรอ พร้อมๆ กัน</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="m0pj-0-0"><div class="_1mf _1mj" data-offset-key="m0pj-0-0"><span data-offset-key="m0pj-0-0"> - เราจะเห็นข้อมูลทั้งหมด units / ทรัพยากร / actions ของผู้เล่นอีกฝั่งด้วย สามารถนำมาปรับใช้ในกลยุทธ turn ถัดไปได้</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="1r66a-0-0"><div class="_1mf _1mj" data-offset-key="1r66a-0-0"><span data-offset-key="1r66a-0-0">.</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="sfc-0-0"><div class="_1mf _1mj" data-offset-key="sfc-0-0"><span data-offset-key="sfc-0-0">จริงๆ ในเกมส์ยังมีสิ่งอื่นๆ อีกนั่นคือ รถขนส่ง Cart และถนน Road แต่ว่าไม่ค่อยมีคนใช้งาน (แม้แต่ top players ในปัจจุบัน) และเราไม่กล่าวถึงเพื่อไม่ให้ทำความเข้าใจยากจนเกินไปครับ สามารถดูกฎเพิ่มเติมเกี่ยวกับ Cart และ Road ได้ในกฏฉบับเต็มในลิงก์ด้านบน</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="6gaii-0-0"><div class="_1mf _1mj" data-offset-key="6gaii-0-0"><span data-offset-key="6gaii-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="3lhmo-0-0"><div class="_1mf _1mj" data-offset-key="3lhmo-0-0"><span data-offset-key="3lhmo-0-0">.</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="b2jat-0-0"><div class="_1mf _1mj" data-offset-key="b2jat-0-0"><span data-offset-key="b2jat-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="3j3t5-0-0"><div class="_1mf _1mj" data-offset-key="3j3t5-0-0"><span style="text-decoration: underline"><strong>กติกาของการแข่งขัน Lux Competition ระหว่างโปรแกรมเมอร์ทั่วโลกบน Kaggle</strong></span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="5glvr-0-0"><div class="_1mf _1mj" data-offset-key="5glvr-0-0"><span data-offset-key="5glvr-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="2e8fd-0-0"><div class="_1mf _1mj" data-offset-key="2e8fd-0-0"><span data-offset-key="2e8fd-0-0"> - ผู้เล่นแต่ละทีมสามารถส่ง Bots/Agents ลงแข่งได้วันละไม่เกิน 5 Agents</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="8scmf-0-0"><div class="_1mf _1mj" data-offset-key="8scmf-0-0"><span data-offset-key="8scmf-0-0"> - สามารถเขียน Bot ได้หลายภาษาไม่ว่าจะเป็น Python, Javascript, C++ และอื่นๆ อีกมาก แต่ผู้เล่นส่วนใหญ่จะแชร์ code python </span><span class="py34i1dx"><span data-offset-key="8scmf-1-0">https://www.kaggle.com/c/lux-ai-2021/code</span></span><span data-offset-key="8scmf-2-0"> ซึ่งเราสามารถนำมาต่อยอดได้เลย</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="fgi5u-0-0"><div class="_1mf _1mj" data-offset-key="fgi5u-0-0"><span data-offset-key="fgi5u-0-0"> - เมื่อเราส่ง Bot แล้ว Kaggle จะให้ Bot เราแข่งกับตัวเอง เพื่อทดสอบว่ามี Bug หรือไม่ ถ้าผ่านแล้วคะแนน Bot จะเริ่มต้นที่ 600 คะแนน</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="di2b3-0-0"><div class="_1mf _1mj" data-offset-key="di2b3-0-0"><span data-offset-key="di2b3-0-0"> - Bot ที่ส่งจะถูกแข่งและเก็บคะแนนไปเรื่อยๆ จนจบการแข่งขันคือกลางเดือนธันวาคม โดยจะสุ่มสู้กับ Bot ที่มีคะแนนใกล้เคียงกับ Bot เราไปเรื่อยๆ</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="45t8q-0-0"><div class="_1mf _1mj" data-offset-key="45t8q-0-0"><span data-offset-key="45t8q-0-0"> - วันแรกที่เรา submit, Bot ตัวนั้นจะถูกสุ่มแข่งมากเป็นพิเศษเพื่อให้ feedback กับผู้เล่นให้เร็วที่สุด และถูกสุ่มน้อยลงเรื่อยๆ ในวันหลังๆ (เพราะว่ามี Bot หลายแสนหรือล้านตัวอยู่ เลยไม่สามารถให้ทุกตัวสู้กันทั้งหมดได้)</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="b2dpk-0-0"><div class="_1mf _1mj" data-offset-key="b2dpk-0-0"><span data-offset-key="b2dpk-0-0"> - โดยเมื่อ Bot แพ้ก็จะถูกหักคะแนน และถ้าชนะก็จะถูกเพิ่มคะแนน นั่นคือ "คะแนนของ Bot" แต่ละตัว จะเปลี่ยนแปลงเรื่อยๆ ไม่คงที่ทุกๆ วัน แต่จะลู่เข้าค่าเฉลี่ยความสามารถที่แท้จริงของ Bot ตัวนั้นๆ โดย Kaggle จะมี algorithm ที่คำนวนคะแนนที่บวกเพิ่มและลด โดยยิ่งเวลาผ่านไปคะแนนที่บวกเพิ่มหรือลดลงจะมีขนาดน้อยลงเรื่อยๆ เมื่อ Kaggle Algorithm มั่นใจทางสถิติในความสามารถของ Bot เรา</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="2rvrh-0-0"><div class="_1mf _1mj" data-offset-key="2rvrh-0-0"><span data-offset-key="2rvrh-0-0"> - ณ วันที่เขียนบทความ 15 ตค นั้น Top players จะมีคะแนนในช่วง 1600-1800</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="fc832-0-0"><div class="_1mf _1mj" data-offset-key="fc832-0-0"><span data-offset-key="fc832-0-0"> - วันสุดท้ายที่จะส่ง Bots/Agents ลงแข่งได้คือวันที่ 6 ธันวาคม และหลังจากนั้น Bots ทุกตัวจะทำการสุ่มแข่งขันไปเรื่อยๆ เพื่อหาผู้ชนะเลิศในวันที่ 20 ธันวาคม (เช้าวันที่ 21ธันวา เมืองไทย)</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="19aj-0-0"><div class="_1mf _1mj" data-offset-key="19aj-0-0"><span data-offset-key="19aj-0-0"> - เราสามารถดู Replay การแข่งขันของ top-players ทั้งหมดย้อนหลังได้ เพื่อเรียนรู้และนำมาปรับกลยุทธของเราได้</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="cec3c-0-0"><div class="_1mf _1mj" data-offset-key="cec3c-0-0"><span data-offset-key="cec3c-0-0"> - อนุญาตให้สามารถดูด (scrape) Replays ทั้งหมดของ top-players เพื่อนำมา "เลียนแบบ" หรือ "เรียนรู้" ผ่าน Deep Learning ได้ โดยกลยุทธนี้เรียกว่า Imitation Learning ซึ่งมีผู้แชร์โค้ดให้เพื่อนๆ เรียนรู้และต่อยอดได้ทันที ซึ่งเป็นเสน่ห์ของการแข่งขันและเรียนรู้บน Kaggle โดย code นี้ทำคะแนนได้อย่างน้อย 1300 คะแนน นับว่าเก่งพอตัว</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="6t2oh-0-0"><div class="_1mf _1mj" data-offset-key="6t2oh-0-0"><span data-offset-key="6t2oh-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="38d4t-0-0"><div class="_1mf _1mj" data-offset-key="38d4t-0-0"><span data-offset-key="38d4t-0-0">.</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="b6pu5-0-0"><div class="_1mf _1mj" data-offset-key="b6pu5-0-0"><span data-offset-key="b6pu5-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="c3sd8-0-0"><div class="_1mf _1mj" data-offset-key="c3sd8-0-0"><span style="text-decoration: underline"><strong>เริ่มต้นเขียนโปรแกรม</strong></span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="euslj-0-0"><div class="_1mf _1mj" data-offset-key="euslj-0-0"><span data-offset-key="euslj-0-0">มาถึงตรงนี้เพื่อนๆ หลายๆ คนอาจจะอยากเริ่มลองเขียน Bot ลงแข่งในเกมส์กันแล้ว ถ้าไม่อยากรอบทความตอนถัดไปของเรา </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="1dm6u-0-0"><div class="_1mf _1mj" data-offset-key="1dm6u-0-0"><span data-offset-key="1dm6u-0-0">ก็สามารถศึกษาเริ่มต้นด้วยตัวเองได้ง่ายๆ เลยครับ :)</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="btl5k-0-0"><div class="_1mf _1mj" data-offset-key="btl5k-0-0"><span data-offset-key="btl5k-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="5crnt-0-0"><div class="_1mf _1mj" data-offset-key="5crnt-0-0"><span data-offset-key="5crnt-0-0"> - Basic notebook ที่สอนรับข้อมูลจาก Environment และ functions ง่ายๆ เพื่อหาทรัพยากร และเคลื่อนที่ไปมา</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="8irua-0-0"><pre class="_1mf _1mj" data-offset-key="8irua-0-0"><span class="py34i1dx"><span data-offset-key="8irua-0-0">https://www.kaggle.com/stonet2000/lux-ai-season-1-jupyter-notebook-tutorial</span></span></pre></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="ftd5i-0-0"><div class="_1mf _1mj" data-offset-key="ftd5i-0-0"><span data-offset-key="ftd5i-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="31ris-0-0"><div class="_1mf _1mj" data-offset-key="31ris-0-0"><span data-offset-key="31ris-0-0"> - เขียน Agent/Bot โดยใช้ Rule based</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="fsu2c-0-0"><pre class="_1mf _1mj" data-offset-key="fsu2c-0-0"><span class="py34i1dx"><span data-offset-key="fsu2c-1-0">https://www.kaggle.com/lightmk/rule-based-agents-for-beginners</span></span></pre></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="bpl42-0-0"><div class="_1mf _1mj" data-offset-key="bpl42-0-0"><span data-offset-key="bpl42-0-0"> ดูเพิ่มเติมที่ </span><span class="py34i1dx"><span data-offset-key="bpl42-1-0">https://www.kaggle.com/c/lux-ai-2021/discussion/274436</span></span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="5mq3g-0-0"><div class="_1mf _1mj" data-offset-key="5mq3g-0-0"> </div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="c31f2-0-0"><div class="_1mf _1mj" data-offset-key="c31f2-0-0"><span data-offset-key="c31f2-0-0"> - Imitation Learning ที่ใช้ Deep Learning เลียนแบบ Top Player โดยตรง</span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="45h2h-0-0"><pre class="_1mf _1mj" data-offset-key="45h2h-0-0"><span class="py34i1dx"><span data-offset-key="8irua-0-0">www.kaggle.com/shoheiazuma/lux-ai-imitation-learning-keras<br /></span></span></pre></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="dsb26-0-0"><div class="_1mf _1mj" data-offset-key="dsb26-0-0"><span data-offset-key="dsb26-0-0"> </span></div></div><div class="" data-block="true" data-editor="e9hum" data-offset-key="4jo3p-0-0"><div class="_1mf _1mj" data-offset-key="4jo3p-0-0"><span data-offset-key="4jo3p-0-0">แล้วเจอกันบทความหน้าหรือเจอกันในสนามแข่งครับผม</span></div></div>]]></content:encoded>
						                            <category domain="https://thaikeras.com/community/"></category>                        <dc:creator>The Neural Engineer</dc:creator>
                        <guid isPermaLink="true">https://thaikeras.com/community/%e0%b9%80%e0%b8%81%e0%b8%b5%e0%b9%88%e0%b8%a2%e0%b8%a7%e0%b8%81%e0%b8%b1%e0%b8%9a-kaggle/lux-competition/</guid>
                    </item>
				                    <item>
                        <title>MLB Player Digital Engagement Forecasting ทำนายความป้อปปูล่าห์ของนักเบสบอลในลีกอเมริการายวัน</title>
                        <link>https://thaikeras.com/community/%e0%b9%80%e0%b8%81%e0%b8%b5%e0%b9%88%e0%b8%a2%e0%b8%a7%e0%b8%81%e0%b8%b1%e0%b8%9a-kaggle/mlb-player-digital-engagement-forecasting/</link>
                        <pubDate>Fri, 17 Sep 2021 13:09:10 +0000</pubDate>
                        <description><![CDATA[นัมโดซานเมืองไทย FB: @Lai Shih Chieh กลับมาแชร์ผลงานใหม่บน Kaggle กับงาน&quot;Major League Baseball Digital Engagement Forecasting&quot;ซึ่งก็คือการทำนายความป้อปปูล่าห์ของนักเบสบอลในลีกอเมริการายวัน เ...]]></description>
                        <content:encoded><![CDATA[<div class="kvgmc6g5 cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">นัมโดซานเมืองไทย FB: @Lai Shih Chieh กลับมาแชร์ผลงานใหม่บน Kaggle กับงาน</div><div dir="auto"><span style="text-decoration: underline;font-size: 18pt"><strong>"Major League Baseball Digital Engagement Forecasting"</strong></span></div><div dir="auto">ซึ่งก็คือ<span style="text-decoration: underline">การทำนายความป้อปปูล่าห์ของนักเบสบอลในลีกอเมริการายวัน</span> เพื่อที่จะได้จัดเตรียมสินค้าของนักกีฬายอดนิยมในแต่ละวันไว้ล่วงหน้า</div><div dir="auto">ซึ่งเป็นโจทย์ที่ท้าทายและน่าสนใจมากๆ ครับ</div></div><div dir="auto"> </div><div dir="auto">ดูการแข่งขันได้ที่</div><div class="kvgmc6g5 cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">https://www.kaggle.com/c/mlb-player-digital-engagement-forecasting</div><div dir="auto"><span style="text-decoration: underline"><strong>ที่มาบทความ</strong></span> https://www.facebook.com/permalink.php?story_fbid=241712581295399&amp;id=107941428005849</div></div><div dir="auto">(<span style="text-decoration: underline"><strong>เพจ machine learning กับทาร์ซาน</strong></span>)</div><div dir="auto"> </div><div dir="auto"><div class="kvgmc6g5 cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">สวัสดีครับ กลับมาอีกครั้งกับ EP6. เมื่อผมอยากเป็นนัมโดซาน!!</div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ขอโทษที่หายไปนาน <span class="pq6dq46d tbxw36s4 knj5qynh kvgmc6g5 ditlmg2l oygrvhab nvdbi5me sf5mxxl7 gl3lb2sf hhz5lgdu"><img src="https://static.xx.fbcdn.net/images/emoji.php/v9/t80/1/16/1f64f.png" alt="🙏" width="16" height="16" /></span> จริงๆ ผมก็แข่ง kaggle เรื่อยมา แต่ผลการแข่งพึ่งจะประกาศเนื่องจากใช้ข้อมูล live จริง 1 เดือน หลังจากส่ง code ไป ก็เลยยังไม่ได้มาเขียนแชร์ประสบการณ์</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ต้องบอกเลยว่ารายการนี้เป็นการแข่งที่ค่อนข้างสนุก ชุดข้อมูลเป็นอะไรที่น่าสนใจมาก และผมก็ได้เรียนรู้อะไรเยอะมาก ก็เลยอยากจะมาแชร์ให้ทุกคนได้อ่านกัน</div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">รายการที่ผมจะมาแชร์ในวันนี้ก็คือ MLB Player Digital Engagement Forecasting <span class="pq6dq46d tbxw36s4 knj5qynh kvgmc6g5 ditlmg2l oygrvhab nvdbi5me sf5mxxl7 gl3lb2sf hhz5lgdu"><img src="https://static.xx.fbcdn.net/images/emoji.php/v9/t30/1/16/26be.png" alt="⚾" width="16" height="16" /></span> แค่หัวข้อก็น่าสนใจแล้วใช่มั๊ยครับ?</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">โจทย์การแข่งครั้งนี้ง่ายมาก คือเราต้องการ predict คะแนน digital engagement (scale 0-100) ของผู้เล่นที่แข่งขันใน MLB ในแต่ละวัน ซึ่งอันนี้สามารถจัดอยู่ในประเภท tabular problem (ซึ่งไม่ใช่สิ่งที่ผมถนัด เพราะนี่เป็นการแข่งครั้งที่ 2 ของผมสำหรับโจทย์ tabular <span class="pq6dq46d tbxw36s4 knj5qynh kvgmc6g5 ditlmg2l oygrvhab nvdbi5me sf5mxxl7 gl3lb2sf hhz5lgdu"><img src="https://static.xx.fbcdn.net/images/emoji.php/v9/t53/1/16/1f605.png" alt="😅" width="16" height="16" /></span>)</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ผมขออธิบายนิดนึงให้เข้าใจ เพราะเราจะเห็นภาพมากยิ่งขึ้น MLB คือ major league baseball ลีคการแข่งขันเบสบอลของอเมริกา ซึ่งทางผู้จัดได้เก็บข้อมูลของผู้เล่น, สถิติการแข่งขันในในแต่ละเกมส์, ข้อมูลทีม, รางวัลที่ผู้แข่งได้รับ ฯลฯ <span class="pq6dq46d tbxw36s4 knj5qynh kvgmc6g5 ditlmg2l oygrvhab nvdbi5me sf5mxxl7 gl3lb2sf hhz5lgdu"><img src="https://static.xx.fbcdn.net/images/emoji.php/v9/t1/1/16/1f4c8.png" alt="📈" width="16" height="16" /></span></div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">สิ่งที่ผู้จัดต้องการก็คือ ให้เราคาดเดาว่าจะมี digital engagement สกอร์ 0-100 ของแต่ละผู้เล่นในแต่ละวันเท่าไร โดยที่อิงข้อมูลจากวันก่อนหน้า เช่น สมมุติข้อมูลของวันที่ 10 ก็จะให้เรา predict คะแนนของวันที่ 11 อาจจะฟังดูเหมือนง่าย แต่จริงๆ นั้นแฝงด้วยความยาก ความซับซ้อนที่ผู้จัดได้ซ่อนไว้</div><div dir="auto"> </div><div dir="auto">หลายคนอาจจะสงสัยว่า ทางผู้จัดได้ประโยชน์อะไร ประโยชน์มหาศาลเลย ลองนึกง่ายๆ ว่าสมมุติว่า โรนัลโด้ยิง hat-trick ได้ แน่นอนผลตอบรับในวันต่อไปจาก engagement จะต้องสูงมาก ทำให้แมนยูสามารถที่จะเตรียมความพร้อมสต็อกสินค้าที่เกี่ยวกับของโรนัลโด้เพิ่มขึ้น หรือแม้กระทั่งอัพโฆณาที่เกี่ยวกับโรนัลโด้ เพื่อเพิ่มยอด revenue เอาง่ายๆ คือเพิ่มยอด revenue ให้กับบริษัท หรือ partners ไม่ว่าจะเป็น online <span class="pq6dq46d tbxw36s4 knj5qynh kvgmc6g5 ditlmg2l oygrvhab nvdbi5me sf5mxxl7 gl3lb2sf hhz5lgdu"><img src="https://static.xx.fbcdn.net/images/emoji.php/v9/taa/1/16/1f310.png" alt="🌐" width="16" height="16" /></span> and offline channels <span class="pq6dq46d tbxw36s4 knj5qynh kvgmc6g5 ditlmg2l oygrvhab nvdbi5me sf5mxxl7 gl3lb2sf hhz5lgdu"><img src="https://static.xx.fbcdn.net/images/emoji.php/v9/ta9/1/16/1f3ec.png" alt="🏬" width="16" height="16" /></span></div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">เหมือนอย่างเช่นทุกครั้ง ผมจะอธิบายความยากของการแข่งขันครั้งนี้</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">• กีฬาเบสบอลนั้นค่อนข้างซับซ้อน ตำแหน่งของผู้เล่น สถิติผู้เล่นที่มีมากกว่า 50 รายการ ฤดูการแข่งขันที่แยกออกเป็นหลายช่วงๆ ฯลฯ ผมพอรู้เรื่องกฎการเล่นเบสบอลอยู่บ้าง แต่ไม่ได้รู้เรื่องสถิติเฉพาะของผู้เล่นแต่ละตำแหน่ง ทำให้ต้องทำความเข้าใจข้อมูลอยู่นานเพื่อทำ feature engineering</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">• ข้อมูลนั้นถูกสเกลให้เป็น 0-100 ในแต่ละวันโดยที่เราไม่รู้ว่าสเกลยังไง ซึ่งอันนี้คือความยากที่ทำให้เกิดค่า error ในการ prediction ที่สูงมาก หลายคนอาจจะไม่เห็นภาพ โดยปกติแล้วเวลาที่เราทำ forecasting เราจะอิงจากสถิติเดิม pattern เพื่อทำการ predict แต่อันนี้คือ สถิติหรือ pattern <span class="pq6dq46d tbxw36s4 knj5qynh kvgmc6g5 ditlmg2l oygrvhab nvdbi5me sf5mxxl7 gl3lb2sf hhz5lgdu"><img src="https://static.xx.fbcdn.net/images/emoji.php/v9/t82/1/16/1f4c9.png" alt="📉" width="16" height="16" /></span> เดิมไม่ได้แปลว่า predict จะเท่าเดิม เพราะมันขึ้นอยู่กับผู้เล่นคนอื่นด้วยในวันนั้น ใครที่ได้คะแนนเยอะสุด ก็จะถูกสเกลให้เป็น 100 ส่วนใครที่ได้น้อยสุดก็เป็น 0 ซึ่งเราไม่สามารถรู้ได้ว่าเค้ามีหลักการณ์สเกลยังไง (standardisation) ซึ่งผมเองได้พยายามลองทำหลายวิธีเพื่อแก้ปัญหานี้ เช่นเอาผู้เล่นที่ได้คะแนนสูงสุด น้อยสุด มาทำ min max scale ซึ่งก็ได้ผลไม่ดี เนื่องจากถ้าเรา predict min or max คาดเคลื่อน ทุกอย่างคือพัง แถมการทำแบบนี้ถ้ามี outliers คือจบ ซึ่งก็ได้ลองใช้ scale แบบอื่นไม่ว่าจะเป็น standard scaler, standard scaler, quantile scaler etc. ก็ล้วนแต่ให้ผลแย่ จริงๆ ถ้าผู้ไม่ทำการสเกล target ในแต่ละวัน ผลที่ได้น่าจะดีกว่านี้ หรือให้ predict rank ก็น่าจะให้ผลที่ถูกต้องกว่า</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">• Digital engagement ที่ให้ predict มี 4 targets แต่ไมได้บอกว่ามาจากไหน อาจจะเป็น twitter, Instagram, facebook, website, app หรืออะไรก็ได้ ซึ่งแต่ละ target มี correlation กับ feature แต่ละอันที่แตกต่างๆกัน</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">มาถึงเรื่องการเทรน model เราบ้าง เนื่องจากการแข่งขันเป็น tabular problem แน่นอน model ที่ใช้กันเยอะๆ ในการแข่ง kaggle ก็จะเป็นพวก LGBM, NN, Catboost, XGBoost แต่จะต้องใช้เป็น regressor เพราะเป็น regression problem</div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ต้องเกริ่นก่อนเลยว่าผมมีเวลาประมาณเดือนนิดๆ สำหรับการแข่งขันครั้งนี้ และเสียเวลา 3 อาทิตย์ในการทำ feature engineer, clean data โดยไม่มีการเทรนดาต้า พึ่งมาเทรนก่อน deadline 2 อาทิตย์ ซึ่งต้องบอกเลยผิดพลาดมากๆ <span class="pq6dq46d tbxw36s4 knj5qynh kvgmc6g5 ditlmg2l oygrvhab nvdbi5me sf5mxxl7 gl3lb2sf hhz5lgdu"><img src="https://static.xx.fbcdn.net/images/emoji.php/v9/t40/1/16/1f62d.png" alt="😭" width="16" height="16" /></span> เพราะทำให้ผมรู้ปัญหาของโมเดลช้าไป มีเวลาปรับโมเดลน้อยมาก</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">• เคล็ดลับการแข่งขันครั้งนี้อยู่ที่ validation strategy การการเลือกช่วงมาเทรนดาต้ามากกว่า features เพราะผลกระทบต่อ CV นั้นสูงกว่ามาก ข้อมูลที่ผู้จัดให้มาในรอบแรกก็คือ 2018-2021 เดือน 4 ในรอบแรก ก่อนจะอัพเดลข้อมูลให้ถึง กลางเดือน 7 ก่อนเดดไลน์อาทิตย์นึง MLB นั้นมีการแบ่งฤดูกาลการแข่งขันออกเป็นสามช่วงหลักก็คือ pre season (มีนา-เมษา), regular season (เมษา-สิงหา), post season (กันยา – ตุลา) แต่ข้อมูล test คือเดือนสิงหาคมปีนี้ ซึ่งอยู่ในช่วง regular season ดังนั้นถ้าเราตัดข้อมูลนอกช่วงนี้ออก pre-season, post-season ก็จะทำให้คะแนนทั้ง cv and lb ดีขึ้น ความยากต่อมาก็คือ split fold ในการเทรนและ validate ยังไง จะใช้ groupkfold หรือว่าเทรนทั้งหมดแล้วใช้ holdout เดือนล่าสุดเป็น validation set ซึ่งผมก็ต้องได้ลองเล่นหลายๆ strategy ก่อนที่จะใช้ ensemble ของ validate เป็นข้อมูลปีล่าสุดของแต่ละเดือนใน regular season แน่นอนว่าแบบนี้จะให้ model ที่ stable กว่า แต่ก็อาจจะไม่ดีที่สุด เพราะเหมือนเรากระจายความเสี่ยงออกไปในหลายๆเดือนที่ validate ถ้าเดือนที่ทดสอบคล้ายเดือนใดเดือนนึงใน training แล้วเราใช้เดือนนั้นเป็น validate เราก็จะได้คะแนนที่ดีมากๆ (ซึ่งมันคือการ overfit ข้อมูลนั่นเอง)</div><div dir="auto">ก็ต้องบอกว่า ผมเลือก submission 2 อัน (อันนึง overfit ไปยังเดือนล่าสุด 7 หวังว่าคะแนนผู้เล่นเดือน 8 จะคล้ายเดือน 7 เพราะในทางทฤษฎี มันก็มีความเป็นไปได้อยู่ที่ฟอร์มการเล่นของผู้เล่น จะคล้ายกันในเดือนต่อไป submission อีกอันก็คือ stable model (validate months 5,6,7) ซึ่งผล final แบบ stable model ให้ผลที่ดีกว่า ผมอยากฝากไว้ให้กับน้องๆ เวลาที่ทำโมเดล ห้ามมองข้าม validation strategy</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">• Feature engineering ซึ่งต้องบอกเลยว่า features ที่ผมลองทำมีเกือบ 300 features ซึ่งมีประโยชน์จริงๆ น้อยมากทั้งที่ ใช้จริงๆ ประมาณ 100 ตอนที่ผมทำ features ก็ได้พบว่ามันมีค่า correlation ต่อ targets สูงมากๆ แต่พอเอามาเทรนจริงๆ กับมีผลน้อยมากกับ CV 0.001-0.003 ปัญหาคือโมเดลรู้ว่า features สำคัญแต่ไม่สามารถที่จะ convert ออกมาเป็นตัวเลข prediction ได้ดีเพราะโจทย์มันเป็น regression ทีนี้จะแก้ปัญหายังไง ซึ่งก็มีคนใช้ descriptive statistics ของ targets แต่ละผู้เล่น ซึ่งผมได้ใช้เวลานานมากในการลองเล่นและพยายามที่จะทำให้ไม่เกิด overfit กับเทรนนิ่งดาต้า จนสุดท้ายได้ descriptive statistics ที่ให้ผลที่ค่อนข้างดี improve CV มากกว่า 0.1 ต่อ target และไม่ overfit ดาต้าจนเกินไป</div><div dir="auto">เคล็ดลับก็คือแยก descriptive stats ตามปี, แยกตามวันที่ลงแข่งและตำแหน่งที่ลง (เพราะผู้เล่นสามารถเป็นทั้ง pitcher batter ในเกมส์เดียวกันได้ หรือว่าวันนั้นแข่ง 2 เกมส์ เกมส์นึงเป็น pitcher อีกเกมส์เป็น batter). ส่วน features อื่นๆ ที่ทำแล้วมีประโยชน์ก็พวก award, player แบ่งเป็น tier, เพิ่ม stats สำหรับ pitcher, batter โดยทำ feature engineering ฯลฯ</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">• Feature lags จริงๆ อันนี้คือ key สำคัญมากในการแข่งขันครั้งนี้ แต่ก็แลกมากับความเสี่ยง เพราะว่าข้อมูลที่ผู้จัดให้คือถึงกลางเดือน 7 แล้วเริ่มทดสอบเดือน 8 มี gap ของดาต้า 2 อาทิตย์ หลายคนอาจจะไม่เข้าใจว่า feature lags คืออะไร เนื่องจากเป็นเหตุการณ์ที่เป็น Time series นั้นมีโอกาสเกิดเหตุการณ์ lag เกิดขึ้น เช่นอาจจะ lag 3, 5, 7, 10, 14 วัน แล้วลองคิดดูว่า ถ้าข้อมูลขาดหายไป มันก็จะทำให้ feature lag ของเรานั้นคาดเคลื่อนไปทั้งหมด ในเคสนี้ก็คือวันแรกที่ predict ไม่มีดาต้าก่อนหน้านั้น 2 อาทิตย์ทำให้วันหลังๆคาดเคลื่อนไปหมด หลายคนอาจจะถามว่าแล้วทำยังไง จริงๆๆ ผู้จัดก็ไม่ได้ใจร้ายขนาดนั้น เพราะเราสามารถที่จะเทรนดาต้า real time ได้หมายความว่า เราจะไม่ได้ load weight มา predict แต่เทรนดาต้าสดเลย ซึ่งจะมีดาต้าครบทั้งเดือนกรกฎ แต่ความเสี่ยงก็คือถ้าโค้ดรันไม่ได้ หรือมี bug คะแนนเราก็จะ 0 ทันที ซึ่งผมเลือกที่จะไม่ใช้ เพราะตอนที่เขียนโค้ด ทำ feature lags แล้วเจอ bug เยอะมากๆ ทำให้ local กับ submission ได้ค่าไม่ตรงกัน เลยเลือกที่จะไม่เสี่ยง (แทบจะทุกคนใน Top 50 ทำ feature lags กันทั้งหมด)</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">จริงๆ ผมเจอความลับของการแข่งครั้งนี้ แต่ไม่สามารถหาวิธีทำได้ จนกระทั่งจบการแข่งขันแล้วอ่าน solutions ของคนอื่นถึงรู้ว่าเค้าไขความลับของโจทย์นี้ยังไง</div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ปัญหานั้นมาจากโจทย์ของผู้จัดก็คือ predict วันต่อไป โดยใน code submission เราจะได้ข้อมูล feed เข้ามาทีละวันแล้วทำการ predict คำตอบของวันต่อไป แต่ในความเป็นจริงแล้ว engagement ของผู้เล่นเริ่มมีการเคลื่อนไหวตั้งแต่วันนี้ ซึ่งผมเดาว่าค่า engagement นั้นเก็บตอนเที่ยงคืนของวัน ซึ่งเมื่อการแข่งขันจบตั้งแต่ เย็นหรือค่ำของวันนั้น ผลของการแข่งขันมันกระทบกับ engagement ของวันนั้นด้วย ไม่ใช่มีผลต่อวันต่อไปเท่านั้น ซึ่งหลายคนอาจจะถามว่าก็ไม่เห็นยากเลย เราก็แค่แก้ค่า prediction ของวันนั้นก็จบ ซึ่งมันทำไม่ได้ เพราะผู้จัดต้องการให้ predict วันต่อไป หมายความว่า ผู้จัดให้ข้อมูลเข้ามาทีละวัน เช่นวันที่ 10 ก็ต้อง predict วันที่ 11 แล้วส่ง เราไม่สามารถกลับไปแก้คำตอบของวันที่ 10 ที่เราส่งคำตอบไปแล้วได้ (pipeline จะฟีดดาต้าเข้ามาทีละวัน แล้วให้เราทำการ prediction เลย)</div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ซึ่งผู้ชนะ ก็ใช้วิธีการใส่ตารางแข่งขันล่วงหน้าของเดือน 8 เข้าไปทำให้โมเดลสามารถที่จะรู้ว่าวันไหนมีแข่งโดยไม่ต้องรอดาต้าที่ฟีดเข้ามา แต่ทำแค่นี้ก็จะแก้ปัญหาได้นิดหน่อย</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ต้องเข้าใจก่อนว่าในปีนึง แต่ละทีมต้องลงแข่ง 162 เกมส์ หรือแทบจะทุกวัน เพราะฉะนั้นผู้เล่นจะสลับกันลง โดยเฉพาะตำแหน่ง pitchers ทำให้เราไม่สามารถรู้ได้ว่าใครจะเป็นคนลงในเกมส์นั้นๆ เพราะโดยทั่วไปแล้วผู้เล่นที่ไม่ได้ลง engagement แน่นอนก็จะต่ำ แล้วเราจะแก้ปัญหานี้ต่อได้ไง ซึ่งคนชนะก็บอกว่า การที่ใช้ feature lags โมเดลจะสามารถจับ pattern ได้ว่าคนนี้ลงแข่งเมื่อ 4 วันที่แล้ว วันนี้จะเป็นเทิร์นที่จะได้ลงแข่งอีก ซึ่งผมเองก็ลืมคิดจุดนี้ไปเลยว่า ในทีมตำแหน่ง pitcher rotate กันเป็น routine มีโอกาสสลับบ้างแต่น้อย ซึ่งก็คิดว่าถ้าผมแก้ปัญหานี้ได้ก็การันตีเหรียญทองแน่นอน</div><div dir="auto"> </div><div dir="auto">ผลการแข่งขันครั้งนี้ ผมได้อันดับสุดท้าย คือ 30 เหรียญเงิน <span class="pq6dq46d tbxw36s4 knj5qynh kvgmc6g5 ditlmg2l oygrvhab nvdbi5me sf5mxxl7 gl3lb2sf hhz5lgdu"><img src="https://static.xx.fbcdn.net/images/emoji.php/v9/t15/1/16/1f948.png" alt="🥈" width="16" height="16" /></span> จากผู้เข้าแข่งขันทั้งหมด 852 ทีม</div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ปล. ขอบคุณน้องพูม <span class="pq6dq46d tbxw36s4 knj5qynh kvgmc6g5 ditlmg2l oygrvhab nvdbi5me sf5mxxl7 gl3lb2sf hhz5lgdu"><img src="https://static.xx.fbcdn.net/images/emoji.php/v9/t80/1/16/1f64f.png" alt="🙏" width="16" height="16" /></span> ที่ช่วยทำ feature engineering ในตอนแรกก่อนที่น้องจะไม่สะดวกแล้วถอนตัวออกไป</div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ใครที่มีข้อสงสัยอะไร สามารถโพสถามได้เลย ยินดีตอบครับ</div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ขอบคุณทุกคนที่อ่านจนจบ หวังว่าจะเป็นประโยชน์สำหรับทุกคนน่ะครับ <span class="pq6dq46d tbxw36s4 knj5qynh kvgmc6g5 ditlmg2l oygrvhab nvdbi5me sf5mxxl7 gl3lb2sf hhz5lgdu"><img src="https://static.xx.fbcdn.net/images/emoji.php/v9/td2/1/16/1f604.png" alt="😄" width="16" height="16" /></span></div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ทอม</div></div></div><div dir="auto"> </div><div dir="auto"> </div>]]></content:encoded>
						                            <category domain="https://thaikeras.com/community/"></category>                        <dc:creator>The Neural Engineer</dc:creator>
                        <guid isPermaLink="true">https://thaikeras.com/community/%e0%b9%80%e0%b8%81%e0%b8%b5%e0%b9%88%e0%b8%a2%e0%b8%a7%e0%b8%81%e0%b8%b1%e0%b8%9a-kaggle/mlb-player-digital-engagement-forecasting/</guid>
                    </item>
				                    <item>
                        <title>พัฒนาเว็บ เกมส์ แอพมือถือ หรือทำงาน DataScience ต้องเรียนอะไรบ้าง?</title>
                        <link>https://thaikeras.com/community/%e0%b8%84%e0%b8%b8%e0%b8%a2%e0%b8%aa%e0%b8%b1%e0%b8%9e%e0%b9%80%e0%b8%9e%e0%b9%80%e0%b8%ab%e0%b8%a3%e0%b8%b0/programming-direction/</link>
                        <pubDate>Fri, 03 Sep 2021 09:46:11 +0000</pubDate>
                        <description><![CDATA[พัฒนาเว็บ เกมส์ แอพมือถือ หรือทำงาน DataScience ต้องเรียนอะไรบ้าง?โดย เพจเรียนออนไลน์ก็เก่งได้ (ข้อมูลปี 2021)  สนใจอยากฝึกเขียนโปรแกรม ไม่ว่าจะเป็นแอพบนเว็บไซต์ แอพมือถือ iOS Android เขียนเ...]]></description>
                        <content:encoded><![CDATA[<div class="" data-block="true" data-editor="4eqqd" data-offset-key="6dg0l-0-0"><div class="_1mf _1mj" data-offset-key="6dg0l-0-0"><span style="text-decoration: underline;font-size: 24pt"><strong>พัฒนาเว็บ เกมส์ แอพมือถือ หรือทำงาน DataScience ต้องเรียนอะไรบ้าง?</strong></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="fjhlb-0-0"><div class="_1mf _1mj" data-offset-key="fjhlb-0-0"><em>โดย เพจเรียนออนไลน์ก็เก่งได้ (ข้อมูลปี 2021)</em></div></div><div class="_1mf _1mj" data-offset-key="kco1-0-0"><span data-offset-key="kco1-0-0"> </span></div><div data-offset-key="kco1-0-0"><img src="https://i.ibb.co/prtFrHQ/programming.jpg" /></div><div data-offset-key="kco1-0-0"> </div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="8u7b0-0-0"><div class="_1mf _1mj" data-offset-key="8u7b0-0-0"><span data-offset-key="8u7b0-0-0">สนใจอยากฝึกเขียนโปรแกรม ไม่ว่าจะเป็นแอพบนเว็บไซต์ แอพมือถือ iOS Android เขียนเกมส์ หรืออยากทำงานสุดฮ็อตอย่าง Data Science ต้องเรียนอะไรบ้าง ?? </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="2279j-0-0"><div class="_1mf _1mj" data-offset-key="2279j-0-0"><span data-offset-key="2279j-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="7g33f-0-0"><div class="_1mf _1mj" data-offset-key="7g33f-0-0"><span data-offset-key="7g33f-0-0">เนื่องจากการเรียนการเขียนโปรแกรมนั้นมีทั้งภาษา และ framework ที่หลากหลาย วันนี้เพจเรียนออนไลน์ก็เก่งได้ จะมาแจกแจงแนวทางการเรียนรู้การเขียนโปรแกรมในแต่ละด้าน ที่ชอบส่วนตัวแบบย่อๆ ให้ฟังครับผม</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="29raq-0-0"><div class="_1mf _1mj" data-offset-key="29raq-0-0"><span data-offset-key="29raq-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="61ljq-0-0"><div class="_1mf _1mj" data-offset-key="61ljq-0-0"><span data-offset-key="61ljq-0-0">รวมทั้งชี้เป้าที่เรียนออนไลน์นออนไลน์ภาษาไทยแบบละเอียดสุดๆ ผ่าน youtube ทาง Kongruksiam channel ครับ</span></div></div><div class="_1mf _1mj" data-offset-key="8mpp7-0-0"><span data-offset-key="8mpp7-0-0"> </span></div><div data-offset-key="8mpp7-0-0">.</div><div data-offset-key="8mpp7-0-0"> </div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="2gbsf-0-0"><div class="_1mf _1mj" data-offset-key="2gbsf-0-0"><span style="text-decoration: underline"><strong>แอพมือถือ Android iOS</strong></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="34s54-0-0"><div class="_1mf _1mj" data-offset-key="34s54-0-0"><span data-offset-key="34s54-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="3rf3q-0-0"><div class="_1mf _1mj" data-offset-key="3rf3q-0-0"><span data-offset-key="3rf3q-0-0">ขอเริ่มจากผู้ที่สนใจพัฒนาแอพฝั่ง Android หรือ iOS มีทางเลือกน่าสนใจ คือ เรียนรู้การเขียนโปรแกรมฝั่งติดต่อผู้ใช้ (Front-end) ผ่าน Flutter ซึ่งเป็น framework ใหม่ล่าสุดจาก Google ที่สามารถใช้งานได้ทั้งฝั่ง Android และ iOS รวมทั้งไม่ต้องปรับแก้อะไรมากมาย แม้ในกรณีที่ OS เหล่านี้มีการอัพเดตเวอร์ชั่น ทำให้การเขียนแอพราบรื่นสุดๆ</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="6iq6u-0-0"><div class="_1mf _1mj" data-offset-key="6iq6u-0-0"><span data-offset-key="6iq6u-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="1ns8q-0-0"><div class="_1mf _1mj" data-offset-key="1ns8q-0-0"><span data-offset-key="1ns8q-0-0">*** หลักสูตร Flutter 7 ชั่วโมงเต็ม! ***</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="d2bib-0-0"><div class="_1mf _1mj" data-offset-key="d2bib-0-0"><span class="py34i1dx"><span data-offset-key="d2bib-0-0">https://youtu.be/3jGj-1-m_zA</span></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="6u3nv-0-0"><div class="_1mf _1mj" data-offset-key="6u3nv-0-0"><span data-offset-key="6u3nv-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="eroo8-0-0"><div class="_1mf _1mj" data-offset-key="eroo8-0-0"><span data-offset-key="eroo8-0-0">อย่างไรก็ดี Flutter นั้นอยู่บนพื้นฐานของภาษา Dart ซึ่งเป็นภาษาค่อนข้างใหม่ ถ้าน้องๆ ถนัดภาษา Javascript มากว่าสามารถ เรียนรู้ React Native แทน Flutter ได้ครับ </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="5ouun-0-0"><div class="_1mf _1mj" data-offset-key="5ouun-0-0"><span data-offset-key="5ouun-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="4km2f-0-0"><div class="_1mf _1mj" data-offset-key="4km2f-0-0"><span data-offset-key="4km2f-0-0">*** ปูพื้นฐานภาษา Dart สำหรับผู้เริ่มต้น 6 ชั่วโมงเต็ม *** </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="ed411-0-0"><div class="_1mf _1mj" data-offset-key="ed411-0-0"><span class="py34i1dx"><span data-offset-key="ed411-0-0">https://youtu.be/UYGhkvRttwI</span></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="b7mok-0-0"><div class="_1mf _1mj" data-offset-key="b7mok-0-0"><span data-offset-key="b7mok-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="18idm-0-0"><div class="_1mf _1mj" data-offset-key="18idm-0-0"><span data-offset-key="18idm-0-0">ส่วนทาง Backend หรือฝั่งจัดการข้อมูลก็สามารถใช้ Firebase ซึ่งเป็น framework จาก Google อีกเช่นกัน ทำให้เราสร้างแอพได้ผ่าน Google Cloud ซึ่งราคามิตรภาพ ไม่ต้องเช่าและจัดการ server เอง และ scale ผู้ใช้งานในอนาคตได้ รวมทั้งเข้าถึง Google Cloud Services ทั้งหมดได้อย่างไร้รอยต่อ</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="as3qu-0-0"><div class="_1mf _1mj" data-offset-key="as3qu-0-0"><span data-offset-key="as3qu-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="f1gtu-0-0"><div class="_1mf _1mj" data-offset-key="f1gtu-0-0"><span data-offset-key="f1gtu-0-0">*** พัฒนาแอพด้วย Flutter &amp; Firebase | จัดการข้อมูลด้วย Cloud Firestore 2.5 ชม. ***</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="e5adb-0-0"><div class="_1mf _1mj" data-offset-key="e5adb-0-0"><span class="py34i1dx"><span data-offset-key="e5adb-0-0">https://youtu.be/jDkKXJQ5xjE</span></span></div></div><div class="_1mf _1mj" data-offset-key="qr5u-0-0"><span data-offset-key="qr5u-0-0"> </span></div><div data-offset-key="qr5u-0-0">.</div><div data-offset-key="qr5u-0-0"> </div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="8eruq-0-0"><div class="_1mf _1mj" data-offset-key="8eruq-0-0"><span style="text-decoration: underline"><strong>เว็บแอพ</strong></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="9pg7r-0-0"><div class="_1mf _1mj" data-offset-key="9pg7r-0-0"><span data-offset-key="9pg7r-0-0">สำหรับผู้ที่สนใจทำแอพ บนเว็บไซต์ ทางเลือกที่น่าสนใจคือการใช้ Framework ที่เรียกว่า React ซึ่งสนับสนุนโดย Facebook เพื่อทำส่วนติดต่อกับผู้ใช้หน้าเว็บ หรือ Front-end โดย React นั้นอยู่บนภาษา Javascript </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="3og5f-0-0"><div class="_1mf _1mj" data-offset-key="3og5f-0-0"><span data-offset-key="3og5f-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="cir8m-0-0"><div class="_1mf _1mj" data-offset-key="cir8m-0-0"><span data-offset-key="cir8m-0-0">*** พัฒนาเว็บด้วย React สำหรับผู้เริ่มต้น  6.5 ชม. !!! ***</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="7uv6v-0-0"><div class="_1mf _1mj" data-offset-key="7uv6v-0-0"><span class="py34i1dx"><span data-offset-key="7uv6v-0-0">https://youtu.be/KvNfS86KEA4</span></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="68e1j-0-0"><div class="_1mf _1mj" data-offset-key="68e1j-0-0"><span data-offset-key="68e1j-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="2ifco-0-0"><div class="_1mf _1mj" data-offset-key="2ifco-0-0"><span data-offset-key="2ifco-0-0">*** พัฒนาเว็บด้วย React สำหรับผู้เริ่มต้น  4 ชม. !!! ***</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="6fs7k-0-0"><div class="_1mf _1mj" data-offset-key="6fs7k-0-0"><span class="py34i1dx"><span data-offset-key="6fs7k-0-0">https://youtu.be/3ubQZb-99fI</span></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="5rns6-0-0"><div class="_1mf _1mj" data-offset-key="5rns6-0-0"><span data-offset-key="5rns6-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="blvvn-0-0"><div class="_1mf _1mj" data-offset-key="blvvn-0-0"><span data-offset-key="blvvn-0-0">สำหรับผู้ไม่มีพื้นฐาน Javascript ก็เรียนได้ที่นี่ครับ</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="730af-0-0"><div class="_1mf _1mj" data-offset-key="730af-0-0"><span data-offset-key="730af-0-0">*** สอน JavaScript  สำหรับผู้เริ่มต้น 8 ชั่วโมงเต็ม ***</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="e1462-0-0"><div class="_1mf _1mj" data-offset-key="e1462-0-0"><span class="py34i1dx"><span data-offset-key="e1462-0-0">https://youtu.be/AbjY-ajKgSI</span></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="2oqnt-0-0"><div class="_1mf _1mj" data-offset-key="2oqnt-0-0"><span data-offset-key="2oqnt-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="627pn-0-0"><div class="_1mf _1mj" data-offset-key="627pn-0-0"><span data-offset-key="627pn-0-0">ส่วนฝั่ง Backend นั้นสามารถใช้ Firebase ได้เช่นเดียวกับ mobile app ในหัวข้อก่อนหน้าครับ</span></div></div><div class="_1mf _1mj" data-offset-key="515ts-0-0"><span data-offset-key="515ts-0-0"> </span></div><div data-offset-key="515ts-0-0">.</div><div data-offset-key="515ts-0-0"> </div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="7k0pm-0-0"><div class="_1mf _1mj" data-offset-key="7k0pm-0-0"><span style="text-decoration: underline"><strong>เขียนเกมส์</strong></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="6cqg1-0-0"><div class="_1mf _1mj" data-offset-key="6cqg1-0-0"><span data-offset-key="6cqg1-0-0">สำหรับการเขียนเกมส์นั้น เราก็จำเป็นต้องเรียนรู้ library ที่ช่วยอำนวยความสะดวกเรื่อง กราฟฟิกและการควบคุมเกมส์ ซึ่ง library ระดับมืออาชีพหนึ่งที่เรียนรู้ได้ง่าย และคุณภาพสูง มี community ทั่วโลก แถมไม่ต้องเสียเงินซื้อ (ในช่วงแรก) ก็คือ Unity ครับ</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="5tof-0-0"><div class="_1mf _1mj" data-offset-key="5tof-0-0"><span data-offset-key="5tof-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="89pm1-0-0"><div class="_1mf _1mj" data-offset-key="89pm1-0-0"><span data-offset-key="89pm1-0-0">โดย Unity นั้นสนับสนุนระบบปฏิบัติการชื่อดังไม่ว่าจะเป็น Windows, iOS หรือ Android</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="d955g-0-0"><div class="_1mf _1mj" data-offset-key="d955g-0-0"><span data-offset-key="d955g-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="aojql-0-0"><div class="_1mf _1mj" data-offset-key="aojql-0-0"><span data-offset-key="aojql-0-0">*** ปูพื้นฐานการสร้างเกมด้วย Unity  จบในคลิปเดียว 8 ชม.!!*** </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="5jn44-0-0"><div class="_1mf _1mj" data-offset-key="5jn44-0-0"><span class="py34i1dx"><span data-offset-key="5jn44-0-0">https://youtu.be/0UUCkR4ey1U</span></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="5r6dj-0-0"><div class="_1mf _1mj" data-offset-key="5r6dj-0-0"><span data-offset-key="5r6dj-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="egm0f-0-0"><div class="_1mf _1mj" data-offset-key="egm0f-0-0"><span data-offset-key="egm0f-0-0">การเขียนโปรแกรมบน Unity นั้น ได้รับการยอมรับอย่างกว้างขวางว่าเขียนด้วยภาษา C# ดีที่สุดครับ</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="5qh8h-0-0"><div class="_1mf _1mj" data-offset-key="5qh8h-0-0"><span data-offset-key="5qh8h-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="4cs0f-0-0"><div class="_1mf _1mj" data-offset-key="4cs0f-0-0"><span data-offset-key="4cs0f-0-0">*** เขียนโปรแกรมภาษา C# เบื้องต้น คลิปเดียว 7 ชม.!!! ***</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="di0o1-0-0"><div class="_1mf _1mj" data-offset-key="di0o1-0-0"><span class="py34i1dx"><span data-offset-key="di0o1-0-0">https://youtu.be/4_c5EBr0whM</span></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="7o5g3-0-0"><div class="_1mf _1mj" data-offset-key="7o5g3-0-0"><span data-offset-key="7o5g3-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="1k3jl-0-0"><div class="_1mf _1mj" data-offset-key="1k3jl-0-0"><span data-offset-key="1k3jl-0-0">เกมส์เองก็ต้องมี Backend เช่นใช้เก็บสถิติ ข้อมูลเซพ หรือการยืนยันตัวตัวของผู้เล่นต่างๆ ซึ่งเราก็สามารถใช้ Firebase ได้เช่นกันครับดูคร่าวๆได้ที่นี่</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="64d00-0-0"><div class="_1mf _1mj" data-offset-key="64d00-0-0"><span data-offset-key="64d00-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="b0brl-0-0"><div class="_1mf _1mj" data-offset-key="b0brl-0-0"><span data-offset-key="b0brl-0-0">*** Unity + Firebase *** </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="4bu35-0-0"><div class="_1mf _1mj" data-offset-key="4bu35-0-0"><span class="py34i1dx"><span data-offset-key="4bu35-0-0">https://www.youtube.com/watch?v=A6du3DUTIPI</span></span></div></div><div class="_1mf _1mj" data-offset-key="9n85i-0-0"><span data-offset-key="9n85i-0-0"> </span></div><div data-offset-key="9n85i-0-0">.</div><div data-offset-key="9n85i-0-0"> </div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="3m1jh-0-0"><div class="_1mf _1mj" data-offset-key="3m1jh-0-0"><span style="text-decoration: underline"><strong>งาน Data Science</strong></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="bcnde-0-0"><div class="_1mf _1mj" data-offset-key="bcnde-0-0"><span data-offset-key="bcnde-0-0">พอเข้าสู่โลก Data Science ซึ่งต้องใช้ ความรู้การคำนวณ สถิติ คณิตศาสตร์มาก ภาษาที่ได้รับความนิยมมากที่สุด และประยุกต์ได้หลากหลาย และลึกที่สุด ก็คือ Python ครับ</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="8aql3-0-0"><div class="_1mf _1mj" data-offset-key="8aql3-0-0"><span data-offset-key="8aql3-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="9duh5-0-0"><div class="_1mf _1mj" data-offset-key="9duh5-0-0"><span data-offset-key="9duh5-0-0">*** เขียนโปรแกรมภาษา Python เบื้องต้น 8 ชม.!! *** </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="7ua42-0-0"><div class="_1mf _1mj" data-offset-key="7ua42-0-0"><span class="py34i1dx"><span data-offset-key="7ua42-0-0">https://youtu.be/N1fnq4MF3AE</span></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="85v36-0-0"><div class="_1mf _1mj" data-offset-key="85v36-0-0"><span data-offset-key="85v36-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="2nn0v-0-0"><div class="_1mf _1mj" data-offset-key="2nn0v-0-0"><span data-offset-key="2nn0v-0-0">จากนั้นต้องเรียนรู้ไลบรารี Numpy สำหรับคฺณิตศาสตร์ โดยเฉพาะพวก เวกเตอร์ เมตริกซ์ ซึ่งเป็นหัวใจสำคัญของงานด้านนี้ </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="dnq36-0-0"><div class="_1mf _1mj" data-offset-key="dnq36-0-0"><span data-offset-key="dnq36-0-0">*** ปูพื้นฐานการใช้ Python ร่วมกับ NumPy สำหรับงาน Data Science 4ชม.!! ***</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="bbjuq-0-0"><div class="_1mf _1mj" data-offset-key="bbjuq-0-0"><span class="py34i1dx"><span data-offset-key="bbjuq-0-0">https://youtu.be/MDA8SbfdLKA</span></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="21rk-0-0"><div class="_1mf _1mj" data-offset-key="21rk-0-0"><span data-offset-key="21rk-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="e0ldi-0-0"><div class="_1mf _1mj" data-offset-key="e0ldi-0-0"><span data-offset-key="e0ldi-0-0">จากนั้นนำความรู้คณิตศาสตร์ที่มี มาสร้างโมเดลสถิติเพื่อค้นหาสิ่งที่ซ่อนอยู่ในข้อมูล หรือทำนายข้อมูลในอนาคตครับ</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="fape0-0-0"><div class="_1mf _1mj" data-offset-key="fape0-0-0"><span data-offset-key="fape0-0-0"> *** สอน Python &amp; Machine Learning เบื้องต้น 12 ชั่วโมงเต็ม *** </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="ahu1p-0-0"><div class="_1mf _1mj" data-offset-key="ahu1p-0-0"><span class="py34i1dx"><span data-offset-key="ahu1p-0-0">https://youtu.be/kUF5hPfQWaQ</span></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="3oeqa-0-0"><div class="_1mf _1mj" data-offset-key="3oeqa-0-0"><span data-offset-key="3oeqa-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="vgtp-0-0"><div class="_1mf _1mj" data-offset-key="vgtp-0-0"><span data-offset-key="vgtp-0-0">เมื่อพื้นฐานแน่นแล้ว การจะเติบโตต่อในสายอาชีพนี้ สามารถต่อยอดการสร้างโมเดลเชิงลึก หรือ Deep Learning อันทรงพลัง ขอส่งต่อไปยังเพจ ThAIKeras &amp; Kaggle ครับผม </span><span class="py34i1dx"><span data-offset-key="vgtp-1-0">https://www.facebook.com/thaikeras</span></span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="3dkg2-0-0"><div class="_1mf _1mj" data-offset-key="3dkg2-0-0"><span data-offset-key="3dkg2-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="96df1-0-0"><div class="_1mf _1mj" data-offset-key="96df1-0-0"><span data-offset-key="96df1-0-0">--------</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="27i61-0-0"><div class="_1mf _1mj" data-offset-key="27i61-0-0"><span data-offset-key="27i61-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="4g2qt-0-0"><div class="_1mf _1mj" data-offset-key="4g2qt-0-0"><span data-offset-key="4g2qt-0-0">ถ้าน้องๆ พร้อมแล้วสามารถเข้าเรียนได้ที่ ที่ youtube channel Kongruksiam ครับ</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="540ak-0-0"><div class="_1mf _1mj" data-offset-key="540ak-0-0"><span data-offset-key="540ak-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="3h64i-0-0"><div class="_1mf _1mj" data-offset-key="3h64i-0-0"><span data-offset-key="3h64i-0-0">จริงๆ ในchannel นี้ยังมีอีกหลายหลักสูตรมากจนรีวิวไม่หมด น้องๆ สามารถเข้าไปเซอร์เวย์ และไปเรียนหลักสูตรคุณภาพกันเยอะๆ นะครับ</span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="at2mn-0-0"><div class="_1mf _1mj" data-offset-key="at2mn-0-0"><span data-offset-key="at2mn-0-0"> </span></div></div><div class="" data-block="true" data-editor="4eqqd" data-offset-key="7hn0t-0-0"><div class="_1mf _1mj" data-offset-key="7hn0t-0-0"><span data-offset-key="7hn0t-0-0">หลายคอร์สสามารถเรียนได้ฟรี ส่วนบางคอร์สสามารถดูได้เมื่อสนับสนุนผู้สอนในราคา 50 บาท/เดือน ซึ่งถือว่าถูกมากๆ ขอบคุณเจ้าของ Channel ที่สร้างแหล่งเรียนรู้ออนไลน์ภาษาไทยดีๆ ให้ทุกคนครับผม</span></div></div>]]></content:encoded>
						                            <category domain="https://thaikeras.com/community/"></category>                        <dc:creator>The Neural Engineer</dc:creator>
                        <guid isPermaLink="true">https://thaikeras.com/community/%e0%b8%84%e0%b8%b8%e0%b8%a2%e0%b8%aa%e0%b8%b1%e0%b8%9e%e0%b9%80%e0%b8%9e%e0%b9%80%e0%b8%ab%e0%b8%a3%e0%b8%b0/programming-direction/</guid>
                    </item>
							        </channel>
        </rss>
		