<?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>
									ชมรม Kaggle ประเทศไทย - ThAI Keras Forum				            </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/</link>
            <description>ThAI Keras Discussion Board</description>
            <language>en-US</language>
            <lastBuildDate>Tue, 21 Apr 2026 12:02:41 +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/%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/">ชมรม Kaggle ประเทศไทย</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>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/%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/">ชมรม Kaggle ประเทศไทย</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>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/%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/">ชมรม Kaggle ประเทศไทย</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/%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/">ชมรม Kaggle ประเทศไทย</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/%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/">ชมรม Kaggle ประเทศไทย</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>เติบโตสู่งานสายเทค ด้วยประสบการณ์โปรเจกต์ระดับโลกบน 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/growth-by-kaggle/</link>
                        <pubDate>Thu, 06 May 2021 09:17:36 +0000</pubDate>
                        <description><![CDATA[เติบโตสู่งานสายเทค ด้วยประสบการณ์โปรเจกต์ระดับโลกบน Kaggle &quot;คนรุ่นใหม่ที่แม้ไม่จบจากโรงเรียน แต่สร้างผลงานชั้นเยี่ยมให้เห็นได้ คนเหล่านี้เป็นตัวอย่างของมนุษย์ที่ไม่ธรรมดา และเราจะทำทุกอย่างท...]]></description>
                        <content:encoded><![CDATA[<div class="kvgmc6g5 cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto"><span style="text-decoration: underline;font-size: 24pt"><strong>เติบโตสู่งานสายเทค ด้วยประสบการณ์โปรเจกต์ระดับโลกบน Kaggle</strong></span></div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">"คนรุ่นใหม่ที่แม้ไม่จบจากโรงเรียน แต่สร้างผลงานชั้นเยี่ยมให้เห็นได้ คนเหล่านี้เป็นตัวอย่างของมนุษย์ที่ไม่ธรรมดา และเราจะทำทุกอย่างที่จะค้นหาคนพวกนี้" คือคำพูดของ Laszlo Bock อดีตผู้บริหารฝ่ายบุคคลของ Google</div><div dir="auto"> </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">ไม่นานมานี้บริษัทยักษ์ใหญ่อย่าง Google, Apple และ IBM ไม่ได้กำหนดว่าผู้สมัครงานจะจบปริญญาหรือไม่ สิ่งสำคัญ คือ ผู้สมัครต้องสามารถพิสูจน์ฝีมือตนเองจากผลงานจริงได้!</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">นี่คือ "เทรนด์ใหม่" ของการพิจารณาคุณสมบัติการทำงาน ที่เน้นผลงานจริงมากกว่าเกรดในห้องเรียน และบริษัทในเมืองไทย โดยเฉพาะบริษัทสมัยใหม่ start up ต่างๆ อาจเริ่มเปิดรับ "เทรนด์ใหม่" นี้มากขึ้นเรื่อยๆ</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ประจวบกับปัจจุบัน Covid ทำให้บทบาทการทำงานสาย tech เปลี่ยนไปอย่างสิ้นเชิง การทำงานจากที่บ้าน ยังเปิดโอกาสให้เราสามารถร่วมงานกับบริษัทชั้นนำหลายแห่งทั่วโลก ได้มากขึ้นอย่างไม่เคยมีมาก่อน (กรณีทำงานกับบริษัทต่างประเทศ เราสามารถรับงานทางไกลได้โดยไม่ต้อง visa ทำงานในฐานะอิสระ หรือ independent contractor)</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">วันนี้จะพาเพื่อนๆ ไปรู้จักกับ Kaggle แหล่งรวมโปรเจกต์ด้านวิทยาศาสตร์ข้อมูล (data science) ที่ใหญ่ที่สุดในโลก โดยงานด้าน data science เชื่อว่าหลายๆ คนย่อมเคยได้ยินชื่อในฐานะ 1 ในสาขาที่มาแรงที่สุดในโลกจากการจัดลำดับของหลายๆ สำนัก</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ที่ Kaggle เปิดโอกาสให้ทุกคนในโลกสามารถมีส่วนร่วมกับโปรเจกต์จริงกับบริษัทและสถาบันระดับโลก เช่น Google Facebook Amazon MIT หรือ Stanford ได้โดยไม่มีค่าใช้จ่าย</div></div><div dir="auto"> </div><div dir="auto"><img src="https://i.ibb.co/GtRvSVB/kaggle-competitions.jpg" /></div><div dir="auto"> </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">Kaggle มีทุนทำเรื่องเหล่านี้ได้เพราะ Kaggle เป็นหนึ่งในบริษัทลูกรักของ Google นั่นเอง</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ในแต่ละโปรเจกต์บน Kaggle เราจะได้ทั้งแข่งขันและร่วมมือกับผู้เข้าแข่งขันคนอื่นๆ นับพันทั่วโลก นอกจากนี้ Kaggle ยังจัด "อันดับโลก" ให้กับผู้เข้าแข่งขันทั้งหมด ในลักษะเดียวกับกีฬาระดับโลกเช่น เทนนิส หรือกอล์ฟ</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ลองจินตนาการดูว่าในการสมัครงาน เรามีอันดับโลกอย่างเป็นทางการอยู่ใน top 500 จาก data scientists ทั่วโลกหลายแสนคน โปรไฟล์ของเราจะเท่ห์แค่ไหน</div><div dir="auto"> </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">แต่ละโปรเจกต์บน Kaggle นั้นเกิดจากคิดโจทย์ขององค์กรและบริษัทต่างๆ ที่ต้องการแก้ปัญหาจริงๆ</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ไม่ว่าจะเป็นการช่วย Shopee ตรวจสอบว่ารูปโฆษณาสินค้ามาจากสินค้าชิ้นเดียวกันหรือไม่ การช่วยออกแบบ วัคซีน Covid19 หรือการทำโมเดลจำลองการแข่งขันฟุตบอลร่วมกับ Man City เป็นต้น</div><div dir="auto"> </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">Kaggle เป็นแหล่งรวมตัวของยอดฝีมือทั้งมืออาชีพและมือสมัครเล่นจากทั่วโลก</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">แน่นอน การสมัครงานโดยมีฝีมือบน Kaggle การันตีย่อมเป็นเครื่องพิสูจน์ฝีมือของเราได้เป็นอย่างดี</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">รู้หรือไม่ ในขณะที่เวียดนามมีผู้เข้าแข่งติดอันดับโลกใน top500 มากมายทั้งเด็กและผู้ใหญ่ ทว่ามีคนไทยน้อยมากๆ ที่ร่วมแข่งบน Kaggle (แทบนับนิ้วได้)</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ยิ่งคนจีนทั้งเด็กและผู้ใหญ่ไม่ต้องพูดถึงอยู่ใน Top100 เต็มไปหมด และได้เข้าทำงานกับบริษัทระดับโลกมากมายด้วยโปรไฟล์บน Kaggle</div><div dir="auto"> </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">มาถึงตรงนี้ผู้อ่านอาจจะเริ่มอยากรู้แล้วว่าถ้าอยากเข้าร่วม Kaggle หรือสนับสนุนให้ลูกหลานเข้าร่วมต้องทำอย่างไร</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">เข้าร่วมได้ทันที ฟรี เพียงใช้ google account ที่ <a class="oajrlxb2 g5ia77u1 qu0x051f esr5mh6w e9989ue4 r7d6kgcz rq0escxv nhd2j8a9 nc684nl6 p7hjln8o kvgmc6g5 cxmmr5t8 oygrvhab hcukyx3x jb3vyjys rz4wbd8a qt6c0cv9 a8nywdso i1ao9s8h esuyzwwr f1sip0of lzcic4wl py34i1dx gpro0wi8" role="link" href="https://l.facebook.com/l.php?u=https%3A%2F%2FKaggle.com%2F%3Ffbclid%3DIwAR0m2OpQxxJfB4EuopjoAWL3QRBroEy0PQjW4tviWDmSI7GlVmAh89KbIyg&amp;h=AT2Mwq4OuOPmegc8GlOyHfWft2Zn_xGnvvNzjQUcCd8yxSdN8hBQ8K9j4cnh5svR_jfIQLsLCSjXnMqGjP7jPGNTt7wmIlek3UtyOht0lfDEjD8t9wqkMHmo7kMz_IV9yElwepSo3wuyQadupZ4t&amp;__tn__=-UK-R&amp;c=AT0_N_WOz4SRCg4B9a7PE4eUpwYJiqd9uBUr33Nj9x24u-vFyOEnGaMUyDJWzAYSpz7bbH7-NoGEDFgsWqw1WgsAI8g0isgeZl4KFLqEsKyhOvzoDQwXI-PkDNsIQpAyH0aNLWnf8ZtR5Sx2UXYrZVBrTOsQ5-9qt0kPPKeHanCiy4UbCqlVZFXbDvMg9jIb3IKqDw" target="_blank" rel="nofollow noopener">Kaggle.com</a> ครับผม</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">การเข้าร่วม Kaggle ขอเพียงเราพอมีพื้นฐานด้านการเขียนโปรแกรม Python และความรู้ด้าน Data Science เล็กน้อยเท่านั้น</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">ในเว็บไซต์ Kaggle มีหลักสูตรเรียนรู้ Data Science ฟรีๆ ตั้งแต่ระดับต้นถึงระดับสูง นอกจากนี้ในแต่ละการแข่งขัน ยังมีผู้เข้าร่วมแข่งขันที่แชร์โค้ดเริ่มต้นมากมาย ให้เราเอาไปปรับใช้ได้ทันที ไม่ต้องเสียเวลาเองตั้งแต่แรก</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">สำหรับผู้ที่ไม่มีพื้นฐานการเขียนโปรแกรมมาก่อน ก็สามารถฝึกได้ไม่ยาก โดยสามารถฝึกภาษา Python ผ่านแหล่งเรียนรู้ online ที่ฟรีหรือไม่แพงหลายที่ เช่น Udemy, Datacamp หรือของคนไทยเราเองอย่าง ลุงวิศวกรสอนคำนวณ (ลองค้น google ดู)</div><div dir="auto"> </div></div><div class="o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q"><div dir="auto">เท่านี้ก็สามารถก้าวสู่วงการ Data Science มืออาชีพได้อย่างภาคภูมิแล้วครับ อย่าพลาดโอกาสงามๆ อย่างนี้ไป!!</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"> </div><div dir="auto"><span style="text-decoration: underline"><strong>อ้างอิง</strong></span></div><div dir="auto">1. บริษัทที่ไม่ต้องการใบปริญญา <a class="oajrlxb2 g5ia77u1 qu0x051f esr5mh6w e9989ue4 r7d6kgcz rq0escxv nhd2j8a9 nc684nl6 p7hjln8o kvgmc6g5 cxmmr5t8 oygrvhab hcukyx3x jb3vyjys rz4wbd8a qt6c0cv9 a8nywdso i1ao9s8h esuyzwwr f1sip0of lzcic4wl py34i1dx gpro0wi8" role="link" href="https://www.glassdoor.com/blog/no-degree-required/?fbclid=IwAR3z8xWOEvbJYjKNcVa2_H7yZ_NTsj1vZ3vv89jG-_5hIPWTYOxqwlykSEQ" target="_blank" rel="nofollow noopener">https://www.glassdoor.com/blog/no-degree-required/</a></div><div dir="auto">2. <a class="oajrlxb2 g5ia77u1 qu0x051f esr5mh6w e9989ue4 r7d6kgcz rq0escxv nhd2j8a9 nc684nl6 p7hjln8o kvgmc6g5 cxmmr5t8 oygrvhab hcukyx3x jb3vyjys rz4wbd8a qt6c0cv9 a8nywdso i1ao9s8h esuyzwwr f1sip0of lzcic4wl py34i1dx gpro0wi8" role="link" href="https://www.marketwatch.com/story/you-dont-need-a-4-year-college-degree-for-these-high-paying-jobs-at-google-apple-netflix-2019-04-08/?fbclid=IwAR0m2OpQxxJfB4EuopjoAWL3QRBroEy0PQjW4tviWDmSI7GlVmAh89KbIyg" target="_blank" rel="nofollow noopener">https://www.marketwatch.com/.../you-dont-need-a-4-year.../</a></div><div dir="auto">3. อาชีพสายเทคที่เน้นผลงานจริงเป็นหลัก <a class="oajrlxb2 g5ia77u1 qu0x051f esr5mh6w e9989ue4 r7d6kgcz rq0escxv nhd2j8a9 nc684nl6 p7hjln8o kvgmc6g5 cxmmr5t8 oygrvhab hcukyx3x jb3vyjys rz4wbd8a qt6c0cv9 a8nywdso i1ao9s8h esuyzwwr f1sip0of lzcic4wl py34i1dx gpro0wi8" role="link" href="https://www.monster.com/career-advice/article/high-paying-tech-jobs-no-degree-0217?fbclid=IwAR363wHG3EkZPCNT8_kphvWaLjEVfVqRa_r4N6CAVaBo5VZCchMtfCzYcMg" target="_blank" rel="nofollow noopener">https://www.monster.com/.../high-paying-tech-jobs-no...</a></div><div dir="auto">4. <a class="oajrlxb2 g5ia77u1 qu0x051f esr5mh6w e9989ue4 r7d6kgcz rq0escxv nhd2j8a9 nc684nl6 p7hjln8o kvgmc6g5 cxmmr5t8 oygrvhab hcukyx3x jb3vyjys rz4wbd8a qt6c0cv9 a8nywdso i1ao9s8h esuyzwwr f1sip0of lzcic4wl py34i1dx gpro0wi8" role="link" href="https://l.facebook.com/l.php?u=https%3A%2F%2Fwww.kaggle.com%2F%3Ffbclid%3DIwAR0s6y6Tt0rn6q2PLWfgw4V6aC6oXtmejLk6TeD-ypjL2JDx23tzI5BjBSA&amp;h=AT1KEuqEko6DevsezxEhWaMsH1rP27nqmVijhFZKkKg6VvUBkeJtdT4XCC9uN_T9s5xzLGbF4ZgYGpAYlnarKyVVNVJwA3X2FHp8CpB8vQNpCjelK7y3J9UmJhOHKqCEG8XV96dC1SfU9U5ARMxz&amp;__tn__=-UK-R&amp;c=AT0_N_WOz4SRCg4B9a7PE4eUpwYJiqd9uBUr33Nj9x24u-vFyOEnGaMUyDJWzAYSpz7bbH7-NoGEDFgsWqw1WgsAI8g0isgeZl4KFLqEsKyhOvzoDQwXI-PkDNsIQpAyH0aNLWnf8ZtR5Sx2UXYrZVBrTOsQ5-9qt0kPPKeHanCiy4UbCqlVZFXbDvMg9jIb3IKqDw" target="_blank" rel="nofollow noopener">https://www.kaggle.com/</a></div><div dir="auto">5. Google วางแผนจะออกแบบ certification ของตนเองแทนปริญญา <a class="oajrlxb2 g5ia77u1 qu0x051f esr5mh6w e9989ue4 r7d6kgcz rq0escxv nhd2j8a9 nc684nl6 p7hjln8o kvgmc6g5 cxmmr5t8 oygrvhab hcukyx3x jb3vyjys rz4wbd8a qt6c0cv9 a8nywdso i1ao9s8h esuyzwwr f1sip0of lzcic4wl py34i1dx gpro0wi8" role="link" href="https://l.facebook.com/l.php?u=https%3A%2F%2Fwww.inc.com%2Fjustin-bariso%2Fgoogle-plan-disrupt-college-degree-university-higher-education-certificate-project-management-data-analyst.html%3Ffbclid%3DIwAR2CP-SqvXAEtJ-GTIIJfrM8j7kZgQHbkDm89nclktKTDYjGzcxM-pf1slc&amp;h=AT0r6PnZJRYuXWSYiC9f1LmyxAoRrzk2tKIVyJ6A0X6UiYd9iXKaXGfXqb-l9R7wIaEvvwXjNpaX_tWp6EmwimbFgxglrplmMtVdHtDY7paovQGpuhiWS1p9RoVY283g9CqNPH55d62eCMmmSHU8&amp;__tn__=-UK-R&amp;c=AT0_N_WOz4SRCg4B9a7PE4eUpwYJiqd9uBUr33Nj9x24u-vFyOEnGaMUyDJWzAYSpz7bbH7-NoGEDFgsWqw1WgsAI8g0isgeZl4KFLqEsKyhOvzoDQwXI-PkDNsIQpAyH0aNLWnf8ZtR5Sx2UXYrZVBrTOsQ5-9qt0kPPKeHanCiy4UbCqlVZFXbDvMg9jIb3IKqDw" target="_blank" rel="nofollow noopener">https://www.inc.com/.../google-plan-disrupt-college...</a></div></div>]]></content:encoded>
						                            <category domain="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/">ชมรม Kaggle ประเทศไทย</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/growth-by-kaggle/</guid>
                    </item>
				                    <item>
                        <title>จับคู่สินค้าบน Shopee ด้วย ArcFace และ Super-fast kNN</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/shopee-competition-2021/</link>
                        <pubDate>Thu, 06 May 2021 09:06:14 +0000</pubDate>
                        <description><![CDATA[จับคู่สินค้าบน Shopee ด้วย ArcFace และ Super-fast kNNThaiKeras and Kaggle - 6 พฤษภาคม 2021 วันนี้มีโปรเจกต์ของ Shopee บน Kaggle ที่น่าสนใจมากมาแชร์ครับปัญหามีอยู่ว่า เพื่อประสบการณ์ที่ดีที่ส...]]></description>
                        <content:encoded><![CDATA[<p><span style="text-decoration: underline;font-size: 24pt"><strong>จับคู่สินค้าบน Shopee ด้วย ArcFace และ Super-fast kNN</strong></span></p><p><em>ThaiKeras and Kaggle - 6 พฤษภาคม 2021</em></p><p> </p><p>วันนี้มีโปรเจกต์ของ Shopee บน Kaggle ที่น่าสนใจมากมาแชร์ครับ</p><p>ปัญหามีอยู่ว่า เพื่อประสบการณ์ที่ดีที่สุดสำหรับการช้อปปิ้ง  เวลาเราซื้อของบน Shopee นั้น Shopee ต้องทราบว่า "สินค้า" ที่ลงขายแต่ละชิ้นนั้น "เป็นสินค้าเดียวกันกับพ่อค้า แม่ค้า คนอื่นๆ หรือไม่"</p><p>ทั้งนี้เพื่อทำ Product recommendation ให้ลูกค้า เราจะได้มีโอกาสเห็นสินค้าตัวเดียวกันของพ่อค้า แม่ค้าคนอื่น เผื่อกรณีที่ราคาถูกกว่า หรือส่งเร็วกว่า หรืออาจจะได้ coins มากกว่า เป็นทางเลือกให้เรา</p><p>นอกจากนี้ Shopee ยังอาจ match สินค้าตัวนี้เข้ากับสินค้าตัวเดียวกันบนเว็บคู่แข่ง เช่น Lazada หรือ JD อีกด้วย ในกรณีที่จะทำ Best Price Guarantee (ช้อปที่เราได้ของถูกสุด) ได้</p><p>ปัญหา "จับคู่สินค้า" นี้เหมือนจะง่าย แต่ "ไม่ง่าย" เนื่องจากสินค้าประเภทเดียวกัน แม่ค้าแต่ละคนอาจจะลงรูปต่างกันโดยสิ้นเชิง เช่น สินค้าแฟชั่น บางคนเน้นรูปสินค้าที่พับเรียบร้อย แต่บางคนลงรูปสินค้าตอนใช้จริงคู่กับนางแบบ เป็นต้น (รูปที่ 1 และ 2)  และ นอกจากนี้ยังเขียนคำบรรยายสินค้าต่างกันอีกด้วย</p><p>https://i.ibb.co/MgcSK3S/1-sameproduct1.png<br />https://i.ibb.co/3SRHvZr/2-sameproduct2.png</p><p>และในบางครั้งสินค้าที่มีรูปเหมือนกันเป้ะ กลับขายของคนละอย่าง เช่น สินค้าโชว์รูป iPad จริงๆ บางร้านขายเคส iPad เป็นต้น</p><p>ทำให้การจำแนกประเภทจำเป็นต้องใช้ทั้ง "รูปภาพ" และ "ข้อความ" ไปพร้อมๆ กัน</p><p>.</p><p> </p><p><span style="text-decoration: underline"><strong>หลากหลายความท้าทายของปัญหานี้</strong></span></p><ol><li>โมเดลต้องรับ Input ได้ทั้ง "รูปภาพ" และ "ข้อความบรรยายสินค้า"</li><li>นอกจากนี้ในบางครั้งมีตัวหนังสืออยู่ในรูปซึ่งมีความสำคัญ อาจจะต้องใช้ OCR เสริม</li><li>ชนิดของสินค้ามีได้มหาศาล อาจจะมีหลายล้านประเภทสินค้าในความเป็นจริง แต่ในปัญหาบน Kaggle นี้จำกัดจำนวนชนิดอยู่ที่หลักหมื่น ซึ่งก็ยังเยอะอยู่</li><li>ตัวอย่างที่ใช้สอนของสินค้าแต่ละประเภทมีไม่มาก เช่นใน training data อาจมีสินค้าประเภทเสื้อซึ่งมีหลากหลายลาย และแต่ละลายมีแม่ค้า 2-5 คนที่ขาย ปัญหาที่มี training data ในแต่ละ class น้อยๆ นี้เรียกว่าปัญหาประเภท Few-shots</li></ol><p> </p><p>จากข้อ 3) และ 4) จะเห็นได้ว่าจำนวนประเภทเยอะ (large classes) และในแต่ละประเภทก็มีตัวอย่างสอนน้อย (few shots)</p><p> </p><p>       5. อย่างที่เกริ่นตอนต้น บางสินค้าที่ใช้รูปโฆษณาเดียวกัน กลับเป็นสินค้าคนละประเภทกัน</p><p>       6. ใน test set สินค้าอาจเป็นคนละกลุ่มกับ train set โดยสิ้นเชิง!! นั่นคือ โมเดล classification แบบกำหนดจำนวนคลาสตายตัวจะใช้ไม่ได้ในปัญหานี้  โมเดลต้องมีความสามารถในการจับคู่ สินค้าประเภทที่ไม่เคยเห็นมาก่อนได้ ว่าคล้ายกันหรือไม่</p><p> </p><p>ขยายความข้อ 6) เราเรียกปัญหา classification ที่สามารถแบ่งกลุ่ม สำหรับ "กลุ่มที่ไม่เคยเห็นมาก่อน" ว่า Open-domain ในขณะที่ปัญหาที่เรารู้กลุ่มชัดเจนตั้งแต่แรกนั้นจะเรียกว่า Closed-domain</p><p>โดยทั่วไปปํญหาที่เราเจอในแบบเรียนมักเป็น closed-domain เช่น จำแนกตัวเลข 0-9 จำแนกรูปภาพสัตว์  จำแนกรูปภาพใน ImageNet เป็นต้น</p><p>ในขณะที่ปัญหา Open-domain ที่เราเจอในที่นี้นั้น มักมาพร้อมกับตัวอย่าง few-shots  ทำให้ยากกว่าปัญหา closed-domain ทั่วไปมาก</p><p>.</p><p> </p><p><span style="text-decoration: underline"><strong>ปัญหาจดจำใบหน้า (Face Recognition)</strong></span></p><p>ความท้าทาย 3) 4) และ 6) ในปัญหาจับคู่สินค้าใน Shopee นั้นมึความคล้ายปัญหา "จดจำใบหน้า" (face recognition) อยู่มาก</p><p>เนื่องจากการฝึกให้โมเดลจดจำใบหน้าคน ได้นั้นในทางปฏิบัติต้องอัพเดตหน้าบุคคลใหม่ๆ ได้ตลอดจึงเป็น open-domain และจำนวนคนที่ต้องจดจำก็เป็นหลักหมื่นถึงหลักล้านคล้ายกับจำนวนสินค้า</p><p>นอกจากนี้เวลาถ่ายรูปหน้าแต่ละคน เราก็จะถ่ายเพียงไม่กี่มุมกล้อง จึงเป็นปัญหา few-shots เช่นเดียวกัน</p><p>ดังนั้นเราจึงสามารถประยุกต์นำเทคนิก face recoginition model มาใช้ในปัญหา shopee นี้ได้</p><p>อย่างไรก็ดี ในปัญหาจับคู่ของ Shopee นี้มีประเด็นที่ยากกว่าปัญหา Face Recoginition ในประเด็นที่ 1) 2) และ 5) ซึ่งเราจำเป็นต้องไปพัฒนาโมเดล face recognition เพิ่มเติมกันต่อไป</p><p>.</p><p> </p><p><span style="text-decoration: underline"><strong>ว่าด้วย ArcFace</strong></span></p><p>ปัจจุบัน 1 ใน face recognition model ที่ได้รับการยอมรับว่าดีมากๆ คือ โมเดลชื่อ ArcFace ซึ่งตีพิมพ์ในปี 2018 <a href="https://arxiv.org/pdf/1801.07698.pdf">https://arxiv.org/pdf/1801.07698.pdf</a></p><p>โดยไอเดียของ ArcFace มีคร่าวๆ ดังนี้</p><ol><li>ตอน train, train เหมือน classification โมเดลบน closed-domain ปกติ แต่เปลี่ยน objective function จาก cross-entropy เป็น ArcFace Loss</li></ol><p><img src="https://i.ibb.co/gW1QkWB/3-arcloss-eq.png" /></p><p> </p><p>2. ในตอนใช้งานจริง ให้เราถอด classification layer (ที่ระบุจำนวน classes แบบ closed domain) ออก  ทำให้ output ของโมเดลจะเป็น feature vectors (บางครั้งเรียก Embedding vectors)</p><p>3. ในการจับคู่ faces หรือจับคู่สินค้า ให้ใช้เทคนิค k-Nearest Neighbors (kNN) บน feature vectors นี้แทน</p><p>https://i.ibb.co/LxvHBdS/4-embedding-xentropy.png<br />https://i.ibb.co/KbsNzWS/5-embedding-arcface.png</p><p>จากรูปแนบสังเกตว่า การ miminize ArcFace loss จะทำให้ data ชนิดเดียวกันอยู่รวมกลุ่มกันมาก ในขณะเดียวกันก็จะอยู่ไกลจากกลุ่มอื่นให้มากที่สุด ในขณะที่การ minimize ด้วย CrossEntropy loss นั้น data ของแต่ละ class จะยังอยู่ใกล้กัน  ดังนั้นจะมีประสิทธิภาพต่ำเวลาเจอ data ประเภทใหม่ที่ไม่เคยเจอมาก่อน</p><p> </p><p>เราสามารถดู Keras implementation ของ ArcFace model ในโน้ตบุคบน Kaggle นี้ : <a href="https://www.kaggle.com/ragnar123/unsupervised-baseline-arcface/">https://www.kaggle.com/ragnar123/unsupervised-baseline-arcface/</a></p><p>โดยดูที่ class ArcMarginProduct ที่ inherit มาจาก keras layer (ดูรูปแนบ)</p><p>https://i.ibb.co/02PKXGc/6-arcface-code.png</p><p>การถอด classification layer ออกตอนใช้งานจริง ก็ดูได้ในโน้ตบุคนี้เช่นกันครับ</p><p> </p><p>ไอเดียของ ArcFace loss คือการ minimize "ระยะทางเชิงมุม" แทนระยะทางแบบยูคลิเดียน ซึ่งก่อนหน้า ArcFace มีไอเดียที่คล้ายๆ กันคือ CosFace และ SphereFace (ไอเดียคล้ายกัน สมการต่างกันเล็กน้อย) ซึ่งหลายๆ การทดลองพบว่า ArcFace มักให้ผลลัพธ์ที่ดีที่สุด<br />ดูรายละเอียดในเปเปอร์ ArcFace ด้านบนเพิ่มเติมได้ครับ</p><p> </p><p>.</p><p> </p><p><span style="text-decoration: underline"><strong>SuperFast kNN ด้วย Rapids.ai</strong></span></p><p>ในโน้ตบุคนี้ยังได้อัพเกรดการทำ kNN ให้ไปทำบน GPU โดยสมบูรณ์ แทนที่จะทำบน CPU ทำให้เร็วกว่าเดิมถึง 10x-50x โดยเลือกใช้ library ของ Rapids.ai ครับ <a href="https://github.com/rapidsai/cuml">https://github.com/rapidsai/cuml</a></p><p> </p><p>โดยรายละเอียดการใช้งานจะคล้ายๆ SciKitLearn ซึ่งเป็น CPU version มากครับ เพื่อนๆ สามารถดูรายละเอียดการ implement rapid kNN ได้ในฟังก์ชันที่ชื่อ get_neighbors ครับ (ดูรูปแนบ)</p><p>https://i.ibb.co/S7ST1tg/7-knn-code.png</p><p>.</p><p> </p><p><span style="text-decoration: underline"><strong>ขยายความสามารถของโมเดลให้ทำความเข้าใจ texts data</strong></span></p><p> </p><p>โดยต้นกำเนิด ArcFace ถูกพัฒนามาจาก Face recognition ซึ่งเป็น image problem แต่อย่างไรก็ดีเราสามารถนำ ArcFace loss ไปใส่กับโมเดลที่รับ input เป็น Text เช่น Transformers ต่างๆ ได้เช่นกัน ในโน้ตบุคข้างต้น ก็ประยุกต์นำ ArcFace Loss ไปติดไว้ที่ Bert Model ครับ เพื่อที่จะทำ kNN บนข้อมูล texts ต่อไป</p><p>หลังจากที่เราได้ feature vectors ของทั้ง images และ texts แล้ว เราสามารถ concatenate vectors ทั้งสองประเภทเพื่อทำ kNN ครั้งเดียวได้ หรือเราจะทำ kNN 2 ครั้งแล้วนำผลลัพธ์มารวมกันก็ได้ เช่นเดียวกันครับ แต่วิธีไหนจะดีกว่ากัน ก็ต้องลองไปทำจริงและสร้างการวัดผล local validation test ที่รัดกุมกันต่อไป</p><p>การขยายความสามารถของโมเดลให้อ่าน text ที่ซ่อนอยู่ในรูปโดยวิธี OCR ก็สามารถทำได้ โดยเพื่อนๆ สามารถศึกษาไอเดียนี้และไอเดียอื่นๆ เพิ่มเติมได้ที่นี่ครับ</p><p><a href="https://www.kaggle.com/c/shopee-product-matching/code">https://www.kaggle.com/c/shopee-product-matching/code</a></p><p> </p>]]></content:encoded>
						                            <category domain="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/">ชมรม Kaggle ประเทศไทย</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/shopee-competition-2021/</guid>
                    </item>
				                    <item>
                        <title>เรียนรู้การสร้างโมเดลรู้จำเสียงผ่าน Kaggle : Rainforest Audio Detection</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/rfcx/</link>
                        <pubDate>Sun, 17 Jan 2021 07:17:21 +0000</pubDate>
                        <description><![CDATA[เรียนรู้การสร้างโมเดลรู้จำเสียง ผ่าน Kaggle : Rainforest Audio DetectionThaiKeras and Kaggle 17 Jan 2021สวัสดีครับเพื่อนๆ สำหรับคนที่สนใจวิธีการสร้างโมเดลที่รู้จำเสียงต่างๆ ได้ (input เป็นเส...]]></description>
                        <content:encoded><![CDATA[<p><img src="https://i.ibb.co/BCx3SbQ/rfcx.jpg" /></p><p><span style="text-decoration: underline;font-size: 18pt"><strong>เรียนรู้การสร้างโมเดลรู้จำเสียง ผ่าน Kaggle : Rainforest Audio Detection</strong></span></p><p><em>ThaiKeras and Kaggle 17 Jan 2021</em></p><p>สวัสดีครับเพื่อนๆ สำหรับคนที่สนใจวิธีการสร้างโมเดลที่รู้จำเสียงต่างๆ ได้ (input เป็นเสียง) หรือผู้ที่สนใจประยุกต์ AI/Data Science กับงานด้าน "วิทยาศาสตร์สิ่งแวดล้อม" (Environmental Science) วันนี้มีโอกาสดีดี ให้ลองเรียนรู้ผ่านการแข่งขันบน Kaggle ที่ชื่อว่า Rainforest Audio Detection หรือ "รู้จำเสียงสัตว์ต่างๆ ในป่าดงดิบ" ซึ่งทุกคนสามารถเข้าร่วมได้ที่นี่ครับ <a href="https://www.kaggle.com/c/rfcx-species-audio-detection/">https://www.kaggle.com/c/rfcx-species-audio-detection/</a></p><p>บทความนี้ เราจะมาทำความเข้าใจ เรื่องดังต่อไปนี้ครับ</p><ul><li>ความสำคัญของโจทย์ ทำไมต้องจำเสียงสัตว์ในป่า ?</li><li>ข้อมูลเสียงสัตว์ที่โจทย์กำหนดมาเบื้องต้น</li><li>หลักการสร้างโมเดลรู้จำเสียง ประกอบไปด้วยขั้นตอนอะไรบ้าง</li></ul><p>.</p><p><span style="text-decoration: underline"><strong>ความสำคัญของโจทย์ ทำไมต้องจำเสียงสัตว์ในป่า ?</strong></span></p><p>ในภาวะที่เทคโนโลยีมนุษย์มีความเจริญก้าวหน้าอย่างรวดเร็ว มีการบุกรุกผืนป่ามากขึ้นเรื่อยๆ รวมทั้งมีภาวะโลกร้อนทำให้เกิดผลกระทบต่อสัตว์ต่างๆ ในระบบนิเวศน์มากมาย</p><p>ดังนั้นในการรักษาสัตว์ต่างๆ ในผืนป่าให้อยู่คู่กับมนุษย์ในระยะยาวนั้น เราต้องมีการตรวจสอบขนาดประชากรของสัตว์ชนิดต่างๆ อยู่เสมอ ในกรณีที่ประชากรของสัตว์ชนิดใดเริ่มลดจำนวนลง การรู้แต่เนิ่นๆ อาจยังพอช่วยแก้ไขได้</p><p>อย่างไรก็ดีในการตรวจสอบประชากรสัตว์นั้น ไม่สามารถตั้งกล้องถ่ายรูปและนับจำนวนง่ายๆ ได้ เนื่องจากพฤติกรรมสัตว์หลายชนิดมักซ่อนตัวอยู่ในที่ปลอดภัย รวมทั้งหลายชนิดอาจจะออกหากินในเวลากลางคืนเป็นหลัก</p><p>ในสถานการณ์แบบนี้ การนับประชากรจาก "เสียง" ของสัตว์เหล่านั้นจึงเป็นสิ่งที่ตรวจสอบได้ง่ายกว่า "ภาพ"</p><p>จึงเป็นที่มาของการแข่งขันครั้งนี้ที่ Kaggle ร่วมมือกับทีม Rainforest Connection (RFCx - <a href="https://www.rfcx.org/">https://www.rfcx.org/</a> ) ซึ่งเป็นองค์กร</p><p>ที่ได้วางเซนเซอร์เสียงเพื่อตรวจสอบเสียงสัตว์แบบ real-time ไว้ในป่าดิบชื้นที่สำคัญหลายแห่งทั่วโลกเช่นที่ อเมซอน บราซิล และที่ป่าในหมู่เกาะอินโดนีเซีย ซึ่งทั้งสองแหล่งเป็นที่อยู่อาศัยของสิ่งมีชีวิฅที่หลากหลายที่สุดในโลกบนบกของเราครับ</p><p> </p><p>.</p><p><span style="text-decoration: underline"><strong>ข้อมูลเสียงสัตว์ที่โจทย์กำหนดมาเบื้องต้น</strong></span></p><p>ในการเริ่มต้นโปรเจกต์ Data Science ใดๆ เราต้องเริ่มจากการทำความเข้าใจข้อมูลและวิธีการวัดผลก่อนเป็นสำคัญที่สุด ก่อนที่จะไปพูดเรื่องโมเดลครับ</p><p>ในการแข่งขันนี้ เป็นการจำลองสถานการณ์ในป่าง่ายๆ จึงกำหนดไว้มีเสียงของสัตว์ทั้งหมด 24 ชนิด ประกอบไปด้วย นกและกบหลากหลายพันธุ์</p><p>โดยข้อมูลฝึกสอน training data ประกอบไปด้วยคลิปเสียงความยาว 60 วินาทีจำนวน 4727 คลิป และข้อมูลทดสอบราว 2000 คลิปความยาว 60 วินาทีเท่ากันครับ โดยในคลิปหนึ่งๆ สามารถมีเสียงของสัตว์หลายชนิดได้ (multi-label classification problem)</p><p>ความยากของการแข่งขันครั้งนี้ก็คือ เป็นลักษณะ "incomplete labels" นั่นคือให้คำตอบมาไม่ครบถ้วนในแต่ละคลิป เช่น บอกว่าในคลิปที่ 1 มีเสียงของสัตว์ประเภทที่ 5 และ 10 อยู่ที่วินาทีที่ 23 และ 45 ตามลำดับ แต่ในขณะเดียวกันก็อาจจะมีเสียงของสัตว์อื่นๆ ใน 24 ชนิดที่กำหนดอยู่อีกในวินาทีอื่นๆ ก็ได้   (และแน่นอน มีเสียงของสัตว์อื่นๆ ที่ไม่ได้อยู่ใน 24 ประเภทเลยอีกด้วย ซึ่งคือ noise data ในที่นี่)</p><p>นอกจากบอกว่าเสียงของสัตว์ใน label ปรากฏในช่วงวินาทีใดในคลิปแล้ว ยังบอกช่วงคลื่นความถี่ (frequency band) ของเสียงชนิดนั้นอีกด้วย โดยเราสามารถดู EDA (Exploratory Data Analysis) โน้ตบุคเบื้องต้นของข้อมูลได้ที่นี่ครับ <br /><a href="https://www.kaggle.com/gpreda/explore-the-rainforest-soundscape">https://www.kaggle.com/gpreda/explore-the-rainforest-soundscape</a></p><p>การวัดผลใช้ ranking metric ที่เรียกว่า lwlrap (Label-weighted label-ranking average precision) สามารถดูรายละเอียดได้ที่</p><p><a href="https://www.kaggle.com/c/rfcx-species-audio-detection/overview/evaluation">https://www.kaggle.com/c/rfcx-species-audio-detection/overview/evaluation</a></p><p> </p><p>.</p><p><span style="text-decoration: underline"><strong>หลักการสร้างโมเดลรู้จำเสียง ประกอบไปด้วยขั้นตอนอะไรบ้าง</strong></span></p><p>Standard pipeline ในการสร้างโมเดลสำหรับข้อมูลเสียงมีดังนี้</p><p>1. แปลข้อมูล audio ให้เป็น spectogram (รูปล่าง)</p><p><img src="https://i.ibb.co/vDJ2pWW/spectrogram.png" /></p><p>โดย spectogram นั้นแสดงถึงการเปลี่ยนแปลงความถี่ของเสียงในแต่ละช่วงเวลา ซึ่งสร้างได้จาก Short-time Fourier Transforms ( <a href="https://en.wikipedia.org/wiki/Short-time_Fourier_transform">https://en.wikipedia.org/wiki/Short-time_Fourier_transform</a> ) ซึ่งก็คือ</p><p> </p><p>1.1) แบ่งข้อมูล audio input ออกเป็นส่วนๆ (window)</p><p>1.2) ทำ Fourier Transform ในแต่ละ windows</p><p>1.3) เอาผลลัพธ์ที่ได้มาเรียงกันเราจะได้ Spectogram ซึ่งเก็บในรูปของ Array 2 มิติ</p><p> </p><p>2. เปลี่ยน frequency scale ของ Spectogram ให้อยู่ใน scale ที่เรียกว่า mel-frequency (มีสูตรตายตัว : <a href="https://en.wikipedia.org/wiki/Mel_scale">https://en.wikipedia.org/wiki/Mel_scale</a> ) โดยเชื่อว่าทำให้เห็นคุณสมบัติของ signal ได้ชัดกว่า</p><p> </p><p>3. เนื่องจาก mel-Spectogram ถูกเก็บอยู่ใน array 2 มิติ เราจึงอาจมองว่ามันคือ "รูปภาพ" ได้  ดังนั้นวิธีที่ใช้กันโดยมาตรฐานคือใช้ Convolution Neural Networks เข้ามาเรียนรู้จาก Spectogram นี้ครับ</p><p> </p><p>ถ้าพูดง่ายๆ นั่นคือเราเปลี่ยนปัญหาจาก audio classification ให้เป็น image classifcation นั่นเองครับ ทำให้จากนี้เราสามารถใช้ความรู้ image classification ที่เรามี (ดูได้จาก workshops ที่ผ่านมาของเรา) มาแก้ปัญหานี้ได้ในที่สุด</p><p>ในทางรายละเอียดยังมีเรื่องยิบย่อยอีกมากมาย เพื่อนๆ ท่านใดสนใจสามารถดูการเขียน Deep Learning Model สำหรับปัญหานี้ แบบ professional มากๆ ด้วย Tensorflow-Keras ได้ในโน้ตบุคนี้ครับ</p><p><a href="https://www.kaggle.com/yosshi999/rfcx-train-resnet50-with-tpu">https://www.kaggle.com/yosshi999/rfcx-train-resnet50-with-tpu</a></p><p>ซึ่งอาจจะได้มีโอกาสมาค่อยๆ แกะในบทความถัดไป  วันนี้ขอจบที่ตรงนี้ก่อนครับ</p><p> </p>]]></content:encoded>
						                            <category domain="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/">ชมรม Kaggle ประเทศไทย</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/rfcx/</guid>
                    </item>
				                    <item>
                        <title>ประสานงาน สุดยอดเครื่องมือฟรี Kaggle , Colab, Github &amp; WandB</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/kaggle-github-colab/</link>
                        <pubDate>Wed, 16 Dec 2020 06:07:05 +0000</pubDate>
                        <description><![CDATA[รู้จักและเรียนรู้ Github บน Git Learning LabThaiKeras and Kaggle  28 พย. 2563 สวัสดีครับ เชื่อว่าเพื่อนๆ ทุกคนต้องเคยเห็น Github เนื่องจากเป็น สถานที่ที่มืออาชีพในวงการเลือกใช้ในการเก็บและพั...]]></description>
                        <content:encoded><![CDATA[<p><span style="text-decoration: underline;font-size: 18pt"><strong>รู้จักและเรียนรู้ Github บน Git Learning Lab</strong></span></p><p><em>ThaiKeras and Kaggle  28 </em><em>พย. </em><em>2563</em></p><p> </p><p>สวัสดีครับ เชื่อว่าเพื่อนๆ ทุกคนต้องเคยเห็น Github เนื่องจากเป็น สถานที่ที่มืออาชีพในวงการเลือกใช้ในการเก็บและพัฒนา<br />source codes โดยเฉพาะโครงการ Open source ต่างๆ ที่ทุกคนสามารถนำไปใช้งานหรือร่วมกันแก้ไขได้ </p><p> </p><p><span style="text-decoration: underline"><strong>ประโยชน์ของ Github เบื้องต้น ที่ทุกคนควรรู้</strong></span></p><ul><li>Github คือเว็บที่ให้เราเก็บ Source codes ของโปรเจกต์ไม่จำกัดขนาด ทำ versioning system ให้ทำให้เราเปรียบเทียบประวัติการแก้ไขโค้ดได้อย่างสะดวก</li><li>ที่เด่นที่สุดคือ สนับสนุน “flow” ในการเขียนโปรแกรมเป็นทีม เพราะสมาชิกสามารถแตก “branch” (ตัวก้อปปี้ของ source code ฉบับ master) ไปแก้ไขได้อย่างสะดวก โดยไม่ต้องกังวลว่าจะมาแก้จุดเดียวกันกับสมาชิกคนอื่นๆ พร้อมๆ กัน หรือไม่ต้องกังวลว่าจะทำให้ source code ของโปรเจกต์มีบั้ก (เนื่องจากฉบับ master ไม่มีการเปลี่ยนแปลงใดๆ )</li><li>เมื่อพัฒนาแต่ละ branch เสร็จแล้ว ผู้พัฒนาสามารถ “ขออนุญาต” (Pull Request) นำ branch เข้ามาแทน master ได้ โดย Github จะตรวจสอบให้เราอัตโนมัติว่ามีโค้ดในบรรทัดใด ที่ “ถูกแก้พร้อมกัน” (conflict) กับ branch อื่นๆ ที่ผนวกรวมกับ master ไปก่อนหน้านี้หรือไม่ </li><li>มีระบบการ “รีวิว” ที่สุดยอด โดยในการทำ Pull Request แต่ละครั้ง ทีมจะต้องกำหนดชุด Reviewers ขึ้นมาตรวจสอบการแก้ไขของ branch นั้นๆ ว่าสมเหตุสมผล และเขียนโค้ดได้มาตรฐานหรือไม่ ระบบให้เราวิจารณ์และถกโค้ดเป็นรายบรรทัดได้อย่างสะดวก ทำให้การแก้ปัญหาและแก้ไขโค้ดที่เหมาะกับทีมที่สุดทำได้ง่ายมากๆ</li><li>นอกจากนี้ยังมีระบบเว็บบอร์ด (เรียกว่า Issues) เพื่อให้คนในทีมและคนทั่วไป “รายงานบั้ก” หรือ “พูดคุยเกี่ยวกับ features ต่างๆ” ที่ควรมี และสามารถปิด issue ที่จัดการแล้วทิ้งไป ทำให้ทุกคนทราบ “สถานะ” ปัจจุบันของ source code ในแต่ละโปรเจกต์ได้อย่างกระจ่างครับ</li><li>ก่อนหน้านี้สิ่งเหล่านี้ต้องทำผ่าน command line ที่ค่อนข้างซับซ้อน แต่ปัจจุบันฟังก์ชันทั้งหมดนี้ทำบนเว็บ github.com ซึ่งมี interface สวยงามใช้งานง่าย เหมาะกับคนทั่วไป ไม่ต้องจดจำ command lines ใดๆ เลยครับ</li><li>นอกจากนี้ github ยังมี features เสริมเช่นเป็น hosting ของเว็บไซต์ของ source code โปรเจกต์นั้นๆ ได้ฟรี ทำเว็บง่ายๆ โดยใช้ markdown เช่นเดียวกับการเขียน Jupyter Notebook หรือ wikipedia นั่นเอง</li></ul><p> </p><p><span style="text-decoration: underline"><strong>เรียนรู้การใช้งาน Github.com ด้วย Git Learning Lab</strong></span></p><p>สิบปากว่า ไม่เท่าตาเห็นบวกลงมือทำ ประโยชน์เบื้องต้นของ Github ที่เล่าไปข้างต้นนั้นเพื่อนๆ สามารถฝึกฝนผ่านแบบเรียนแบบสนุกๆ ในแบบเรียน“ภาคปฏิบัติ” (คล้ายๆ เกมส์) ที่เรียกว่า “Git Learning Lab” ครับ</p><p>โดย Git Learning Lab คือแบบเรียนเสมือนจริง ซึ่งสอนการใช้งานบน Github.com โดยจะมี GitBot มาเปิด “issues” เพื่อขอร้องให้เราไปแก้ไขประเด็นต่างๆ (พร้อมสอนวิธีแก้) และเจ้าบอทตัวนี้ก็ยังจะมาขอทำ (และสอนเราทำ) Pull Request ให้เราช่วยรีวิว และยังสอนแก้ Conflict เบื้องต้นอีกด้วยครับ</p><p>โดยแบบเรียน Git Lab นี้มีมากมายสามารถดูได้ที่</p><p><a href="https://lab.github.com/">https://lab.github.com/</a> โดยการใช้งานเบื้องต้นที่เราเล่าในบทความข้างต้นจะอยู่ในชุด “สัปดาห์แรกบน Github” <a href="https://lab.github.com/githubtraining/first-week-on-github">https://lab.github.com/githubtraining/first-week-on-github</a>  ซึ่งแนะนำให้ลองเล่นเป็นแบบเรียนแรกครับ นอกจากนี้ยังมีคอร์สอื่นๆ อีกมากมายเช่น “การรักษาความปลอดภัยของโค้ดบน Github” และ “แนวทางการพัฒนา software ขนาดใหญ่ให้ปลอดบั้กด้วย Continuous Integration” อีกด้วย</p>]]></content:encoded>
						                            <category domain="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/">ชมรม Kaggle ประเทศไทย</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/kaggle-github-colab/</guid>
                    </item>
				                    <item>
                        <title>Nvidia - Kaggle Grandmaster Series</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/nvidia-kaggle-grandmaster-series/</link>
                        <pubDate>Tue, 17 Nov 2020 22:32:48 +0000</pubDate>
                        <description><![CDATA[มาดู Nvidia - Kaggle Grandmaster SeriesNvidia เป็นหนึ่งในบริษัทที่เล็งเห็นศักยภาพของผู้เข้าร่วมการแข่งขัน Kaggle ทำให้ Nvidia ตัดสินใจสร้างทีม Kaggle ขึ้นมาโดยเฉพาะ ในการสร้างทีมนี้ Nvidia ไ...]]></description>
                        <content:encoded><![CDATA[<p><span style="text-decoration: underline"><strong>มาดู Nvidia - Kaggle Grandmaster Series</strong></span></p><p><span data-offset-key="4ir24-0-0">Nvidia เป็นหนึ่งในบริษัทที่เล็งเห็นศักยภาพของผู้เข้าร่วมการแข่งขัน Kaggle ทำให้ Nvidia ตัดสินใจสร้างทีม Kaggle ขึ้นมาโดยเฉพาะ </span></p><p><span data-offset-key="4ir24-0-0">ในการสร้างทีมนี้ Nvidia ได้ดึงตัว Data/Machine-Learning Engineer/Scientists ระดับ Grandmaster จากทั่วโลก และทีมนี้มีภารกิจหลักคือคว้าแชมป์ Kaggle ให้ได้ รวมทั้งร่วมพัฒนา library Deep Learning ของทาง Nvidia เองด้วย </span></p><p><span data-offset-key="4ir24-0-0">ล่าสุดทีมนี้ได้เริ่มทำ Youtube Series โดยในตอนล่าสุดนี้ทีมนี้ได้แชร์การทำ Large-Scale Image Classification บน Data เป็นล้านๆ รูป และจำนวนคลาสมหาศาลถึง 80,000+ คลาส -- ที่มาของปัญหานี้มาจากแข่งขัน Google Landmark Recognition ปี 2020 ที่สองสมาชิกในทีมนี้คว้าแชมป์ได้นั่นเอง </span><span class="py34i1dx"><span data-offset-key="4ir24-1-0">https://www.kaggle.com/c/landmark-recognition-2020</span></span></p><p> </p><p><span data-offset-key="4ir24-2-0">โดยผู้นำเสนอนั้นมี ชื่อย่อใน Kaggle ว่า Dieter และ Psi ซึ่งเป็นมือวางสิบอันแรกของโลกในวงการ สามารถรับชมได้ที่นี่เลยคร้าบบ :D </span></p><p><span class="py34i1dx"><span data-offset-key="4ir24-3-0">https://www.youtube.com/watch?v=VxNDH6qLZ_Q&amp;t=781s</span></span></p>]]></content:encoded>
						                            <category domain="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/">ชมรม Kaggle ประเทศไทย</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/nvidia-kaggle-grandmaster-series/</guid>
                    </item>
							        </channel>
        </rss>
		