Loading [MathJax]/extensions/tex2jax.js
TextLogo-low-qualTextLogo-low-qualTextLogo-low-qualTextLogo-low-qual
  • หน้าแรกและบทความต่างๆ
    • AI ไกด์ทัวร์
    • เซ็ตอัพระบบ AI
    • งานวิจัยล่าสุดในวงการ AI
    • รีวิวแหล่งเรียนรู้ชั้นนำ
  • พูดคุยกับ Community
    • คุยกันภาษา AI
    • ชมรม Kaggle ประเทศไทย
  • คอร์ส: Deep Learning สำหรับนักปฏิบัติ (ยังไม่สมบูรณ์)
    • Workshop
  • พูดคุย
  • สมาชิก
  • โพสต์ล่าสุด
หมวดหมู่
เกี่ยวกับ AI
คุยกันภาษา AI
รวมบทความจากเพื่อน ...
 
Notifications
Clear all

รวมบทความจากเพื่อน Data Scientists ชาวไทย

Page 2 / 2 Prev
คุยกันภาษา AI
ไปที่ข้อความล่าสุด by The Neural Engineer 4 years ago
14 ข้อความ
1 Users
0 Likes
2,585 Views
RSS
The Neural Engineer
 The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 7 years ago
ข้อความ: 409
Topic starter 17/01/2021 7:33 am  

โหลดข้อมูลฝึกสอนภาษาไทยง่ายๆ ได้ที่ Huggingface (และ Kaggle)

ThaiKeras and Kaggle 8 Jan 2021

 

สวัสดีครับเพื่อนๆ  หลายๆ ท่านที่ทำงานวิจัยเกี่ยวกับภาษาไทยก็คงใช้ข้อมูลฝึกสอนที่รวบรวม

โดยทีม PyThaiNLP กันอยู่แล้ว อย่างไรก็ดี วันนี้ข่าวดีก็คือเราสามารถดึงข้อมูลเหล่านี้ได้ง่ายๆ

ผ่าน Huggingface datasets API (ขอบคุณน้อง Charin ที่เป็นผู้ประสานงานกับทีม Huggingface ครับ)

 

ซึ่งทำให้เราสามารถโหลดข้อมูลต่างๆ ทั้ง train, validation และ test set มาได้โดยคำสั่งเพียง 1 บรรทัด!

(ไม่นับ import) เช่น เราสามารถโหลดข้อมูล prachatai-67k (ข้อมูลสอนโมเดลเพื่อแบ่งประเภทข่าว) ได้ดังนี้

 

from datasets import load_dataset

dataset = load_dataset("prachathai67k")

 

โดยเราสามารถดู Datasets ภาษาไทยบน Huggingface ทั้งหมดซึ่งปัจจุบันมีทั้งหมด 12 ชุดข้อมูลได้ที่นี่

https://huggingface.co/datasets?search=thai  (สามารถกดดูรายละเอียดเพิ่มเติมได้ทุกชุดข้อมูล)

  • question-answering: thaiqa_squad
  • POS/NER: thainer, lst20
  • sentiment analysis: wisesight_sentiment, wongnai_reviews
  • text classification: prachathai67k, generated_reviews_enth
  • translation: scb_mt_enth_2020
  • summarization: thaisum
  • word tokenization: wisesight1000, best

 

โดยชุดข้อมูลครอบคลุมงานหลายด้านไม่ว่าจะเป็น งานแบ่งประเภท, งานแปลภาษา, งานย่อความ, งานตอบคำถาม, ตรวจสอบ sentiment ของข้อความ ฯลฯ

 

สามารถดูตัวอย่างการเรียกใช้งาน datasets ได้ที่ colab นี้ครับ

https://colab.research.google.com/drive/1PEOeEX2pwvC1gXOqy6sP8ZY36xNtxuGV?usp=sharing

 

อย่างไรก็ดีมี 3 ชุดข้อมูล คือ Prachatai, SCB En-Th Translation และ ThaiSum ซึ่งค่อนข้างใหญ่และเนื่องจากเก็บใน server ที่ใช้เวลาโหลดนานมากที่ Colab และ Kaggle, ผมจึงได้สร้าง datasets เหล่านี้เพิ่มเติมไว้ที่ Kaggle ซึ่งสามารถโหลดได้ที่ Kaggle โดยตรงครับ

https://www.kaggle.com/ratthachat/pythainlp-prachatai-67k https://www.kaggle.com/ratthachat/scb-mt-enth-2020

https://www.kaggle.com/ratthachat/nakhunchumpolsathien-thaisum

 

หวังว่า Datasets บน Huggingface และ Kaggle นี้จะช่วยทำให้เพื่อนๆ ที่ทำงานด้านภาษาไทยอยู่สะดวกขึ้นนะครับผม 😀

 

 

 


   
ตอบกลับอ้างอิง
The Neural Engineer
 The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 7 years ago
ข้อความ: 409
Topic starter 25/01/2021 2:27 am  
"WangchanBERTa" - โมเดลประมวลผลภาษาไทยที่ใหญ่และก้าวหน้าที่สุดในขณะนี้
Language Model ที่ถูกเทรนด้วยข้อมูลขนาด 78 GB ทำให้ WangchanBERTa สามารถเอาชนะโมเดลที่มีอยู่ในตอนนี้ ใน monolingual (Thai) tasks
เปิดให้ทุกคนใช้ฟรีโดย AIResearch.in.th และ VISTEC ภายใต้สัญญาอนุญาต CC-BY-SA 4.0
 
ตัวอย่าง&วิธีการใช้ Colab กดที่นี่: 
อ่านบทความที่ Medium กดที่นี่:
 

   
ตอบกลับอ้างอิง
The Neural Engineer
 The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 7 years ago
ข้อความ: 409
Topic starter 23/02/2021 6:05 am  
อีก 1 star is born เพื่อนๆ คนไทย (น้องทอม) ที่ทำงานงานได้ยอดเยี่ยมมากๆ ใน Kaggle ในการแข่งขันที่ชื่อว่า Cassava Leaf Disease Classification ครับ  น้องทอมได้เขียนประสบการณ์แชร์ไว้ซึ่งหลายๆ คนคงได้อ่านแล้ว ยังไงขอแปะไว้ที่นี่อีกที่หนึ่งเผื่อใครที่พลาดไปครับ 😀 
 
 
เมื่อผมอยากเป็นนัมโดซานพระเอก start-up 👨💻
การเริ่มต้นของผมก็ได้เริ่มขึ้น …..
สวัสดีทุกคน วันนี้มาแชร์ประสบการณ์การแข่งขัน kaggle (เว็บไซส์แข่งขันดาต้า ที่ใหญ่ที่สุดในโลก) เพื่อสร้างแรงบันดาลใจให้กับน้องๆที่คิดสนใจดาต้า ผมจะพยายามใช้คำศัพท์ คำอธิบายที่ง่ายต่อคนที่ไม่มีความรู้ด้านนี้ ได้เห็นภาพ
แนะนำตัวสั้นๆ ชื่อทอมเป็นวิศวะกรไฟฟ้า เรียนรู้ machine learning ด้วยตัวเองจากศูนย์ !!!
จริงๆ สนใจดาต้ามาปีสองปีแหละ แต่ไม่มีโอกาสได้จริงจัง เมื่อสิ้นปีที่แล้วได้ดูซีรีย์เกาหลีเรื่อง start-up เชื่อว่าหลายคนในกลุ่มนี้ก็น่าจะได้ดูเหมือนกัน จำได้ว่าเริ่มดูปลายเดือนพฤศจิกายนปีที่แล้ว ตอนที่ดูนี่ไฟในตัวลุกเป็นไฟ 🔥 แล้วก็บอกกับตัวเองว่า ทำไมเราไม่ลองดูสักตั้งบ้าง 💪

พอเดือนธันวาได้วันหยุดยาว 3 อาทิตย์เลยใช้เวลานี้เรียน machine learning แบบจริงจัง (ผมมีพื้นฐานบ้างอยู่แล้ว จากการสอนน้องๆ แต่รอบนี้เรียนระดับกลาง-สูง)

พอเรียนจบก็เลยลองเข้าแข่งแบบนามโดซาน
ซึ่งผมเลือกการแข่งขันที่ชื่อ Cassava leaf disease classification 🍀 เป็นรายการที่มีคนเข้าแข่งขันมากเป็นอันดับสองของปีนี้ 4,869 คน (3,942 ทีม) ผมเริ่มแข่งตอนเดือนสุดท้าย ผู้จัดคือ Makerere University AI Lab ซึ่งเคยจัดมาแล้วรอบหนึ่ง มาปีนี้ผู้จัดได้เพิ่มความยากของการแข่งขันขึ้น จากข้อมูลเดิม 5,000 (600x500) รูปก็เพิ่มมาเป็น 20,000 รูป (800x600) โจทย์การแข่งขันคือจำแนกโรคของใบไม้ว่าป่วยเป็นโรคอะไร
 
ทีนี้ก่อนทีเราจะเริ่มสร้างโมเดลอะไรก็ตาม เราต้องเริ่มจากการทำ EDA ก่อน เพื่อทราบถึงชุดข้อมูล ซึ่งความยากของการแข่งขันรายการนี้คือ
 
1. unbalance sample (โรคที่ให้มามี 4 โรคกับปกติ (5 classes) แต่มีโรคนึงที่มีรูปภาพมากกว่าโรคอื่น 6 เท่า) ซึ่งอาจจะทำให้ ทาซาน ของเราเรียนรู้โรคนี้มากกว่าโรคอื่น เกิดเป็น bias ได้ (ผมขออนุญาติใช้คำว่าทาซาน 🐒ตามที่พระเอกนัมโดซานใช้ )
2. noisy label เนื่องจากรูปพวกนี้ ถูก label (วินิจฉัย) โดยคน ซึ่งมีความผิดพลาดสูง เช่นบอกโรคผิด หรือว่าในรูปเดียวกัน มีใบไม้ที่มีโรคมากกว่าหนึ่งโรค แล้วทาซานเราจะตอบโรคไหนดีหล่ะ ในเมื่อคำตอบที่ถูกต้องมีแค่โรคเดียว (มีคนใช้ library cleanlab เพื่อวิเคราะห์ noisy label แล้วพบว่า 8% ของรูปภาพ >1,000 รูปที่มีการ label ที่ผิด)
มาถึงขั้นตอนการเทรนทาซานของเรา โชคดีที่ทุกวันนี้บริษัทใหญ่ๆ เช่น facebook, google, deepmind ได้เทรนทาซานไว้ให้บ้างแล้ว คิดง่ายๆก็คือทาซานนั้นถูกฝึกสอนโดยครูให้เรียนรู้เบสิคสกิลในการจำแนกรูปภาพมาบ้างแล้ว
 
เราก็แค่ไปรับทาซานมาเรียนรู้โรคใบไม้ต่อ เราเรียกวิธีนี้ว่า transfer learning โดยใช้ pretrained weights
ซึ่งโมเดลสำหรับ image classification ที่ใช้ๆกันเยอะในรายการนี้คือ resnext, seresnext, efficientnet (อาจจะมองเป็นสายพันธุ์ของทาซานก็ได้ครับ)
เนื่องจากต้องทำงานประจำก็เลยใช้เวลาหลังเลิกงานในการเทรนทาซาน ผมนอนวันละ 4-5 ชม (เป็นเวลาหนึ่งเดือน) เพราะต้องตื่นมาดูว่าทาซานเทรนเป็นไงบ้าง (ในการเทรนทาซาน 1 โมเดลใช้เวลาประมาณ 6 ชม. (5folds) บน V100. แล้ว fine tune อีก 2:30 ชม. รวมๆ ประมาณ 9 ชม. ต่อทานซานหนึ่งตัว (หลายๆครั้งที่ผมต้องเริ่มต้นใหม่หลังจากผ่านไปหลายชม. เพราะ set ค่าผิด หรือว่าโค้ดมีปัญหา 😢)
 
เอาหล่ะขั้นตอนการเทรนทาซานสำคัญมากๆ เพราะทุกคนได้รับทาซานที่มีความรู้มาเริ่มต้นเท่ากัน เราจะสอนทาซานยังไงให้เก่งกว่าคนอื่น
1. ปัญหาเรื่อง unbalanced sample ผมได้ใช้วิธีการเพิ่ม samples ในชุดข้อมูลที่ unbalance โดยการดึงข้อมูลจากการแข่งครั้งก่อน (แต่ก็ยังมีปัญหาเรื่อง unbalance อยู่) ทาซานบางตัวใช้ข้อมูลชุดนี้ บางตัวไม่ใช้ เพราะสัดส่วนรูปภาพไม่เหมือนกัน เช่น efficientnet ใช้ 512x512 input แต่รูปจากแข่งครั้งก่อนส่วนใหญ่ dimension ต่ำกว่า 512 ผมลอง resize แล้วให้ผลแย่กว่าเดิม
2. เรื่อง noisy label ต้องบอกเลยว่าอันนี้เป็นอะไรที่ยากมากๆๆ เพราะในความเป็นจริงเราต้องการเทรนทาซานของเราให้แยกโรคได้ถูกต้อง แต่ดันมีรูปที่บอกโรคผิด สิ่งที่เกิดขึ้นคือ ทาซานจะเรียนรู้ตามสิ่งที่เราป้อนเข้าไป ทำให้เราเรียนรู้รูปผิดไปด้วย งั้นเราจะทำยังไง ซึ่งผมใช้เวลาในการอ่านเปเปอร์เยอะมากๆ ไม่ว่าจะเป็น active and passive loss functions ลอง loss functions แต่ละแบบ, custom loss functions ผสมผสานกัน, วิธีต่อมาคือ augmentation รูปแบบแปลกๆ cutmix, fmix, cutout, mixup คือการตัดแปะรูปอื่นมาใส่บนรูป วิธีการนี้จะฝึกให้ทาซานเรียนรู้รูปหลอก และไม่จำรูปที่ผิดจนเกินไป
 
ในการแข่งขันนี้ผมเทรนทาซานไปมากกว่า 40+ ตัว บน 7 architectures (สายพันธุ์) (resnext50, seresnext50, efficientnet b4, b5, Vit_base_patch16, Vit_deit_base_patch16, hybrid resnext + ViT)  ก่อนที่จะเอาทาซานที่ดีที่สุด 4 ตัวมาหาค่าเฉลี่ยในการตอบ (submission time ต้องไม่เกิน 9 ชม. ทาซานหนึ่งตัวใช้เวลา 2ชม. จากการทดลอง ผมเลยเลือก 4 ตัว) จำนวนยิ่งเยอะไมได้แปลว่าดีเสมอไป ไว้ผมจะอธิบายให้ฟังอีกทีตอนหลัง
 
(จริงๆ ปกติแล้วส่วนใหญ่คนจะจับทีมกัน ถ้าดูพวก leader จะฟอร์มทีมกัน เพราะเราเทรนทาซานที่ดีที่สุดแค่ตัวเดียว แล้วเอาไปรวมกับคนอื่น เราก็จะได้ทาซานที่เก่งมากๆ) เอาจริงผมตัดสินใจผิด ที่ไม่ยอมรวมทีมกับคนอื่น -.-“ ตอนนั้นคิดว่าคนเดียวก็ไหว 555
 
จริงๆ มันมีวิธีทำให้ทาซานเก่งกว่านี้ แต่เนื่องจากเวลาที่จำกัด แล้วแข่งคนเดียวเลยไม่มีเวลาได้ทำ
Boosting ensemble คือเทรนทาซาน (หัวหน้า) เพื่อเลือกว่าจะใช้ weight (น้ำหนักของคำตอบ) ของทาซาน 4 ตัวยังไงให้ได้คำตอบที่ดีที่สุด จริงๆ ผมตั้งใจจะใช้ optuna เพื่อหา weight ที่ให้คำตอบที่ดีที่สุด แต่วันสองวันสุดท้าย ผมเริ่ม burnt out จะอ๊วกออกมาเป็นทาซาน 😭)
 
Distilled learning คือการเลือกใช้คำตอบทาซานที่เก่งที่สุด (teacher) แล้วมาเทรนทาซานที่เก่งน้อยกว่า (student) ทีนี้เราก็จะได้ทาซานน้อยที่เก่งขึ้นมาอีก
 
Pseudo labelling คือการใช้ทาซาน predict test set แล้วเลือกรูปที่มีคำตอบ confidence interval สูงกว่า 90-95% มาใช้ในการเทรนอีกรอบ วิธีนี้ จะทำให้ทาซานของเรามั่นใจกับคำตอบมากขึ้นสร้าง boundary ที่ชัดเจนขึ้น ผมลองวิธีนี้ แต่ทาซานผมกลับไม่ค่อยมั่นใจในคำตอบเท่าไร CI อยู่ที่ 60-70% ในรูปที่ตอบถูก (เฉพาะ fold ก่อน ensemble) เลยไม่ได้ใช้วิธีนี้เพราะคิดว่าน่าจะเสี่ยงเกินไป ผมลองกับแค่ทาซานตัวเดียว อาจจะเป็นเพราะสายพันธุ์นั้นมีนิสัยไม่ค่อยมั่นใจ 555
 
ถึงแม้ว่าการแข่งครั้งนี้ ผมจะไม่ได้เป็นผู้ชนะเลิศแบบนัมโดซาน (ขอดราม่านิดๆ)
Public 46/3946 เหรียญเงิน คะแนน accuracy 90.7%
ผลการแข่งสุดท้าย Private 26/3946 เหรียญเงิน คะแนน accuracy 90.1% อันดับเพิ่มมา 20 อันดับ คะแนนเท่ากับอันดับ 5 แต่อดได้เหรียญทอง (ห่างไปแค่ 9 อันดับ) (Top 1% ของการแข่งขัน)
การแข่งครั้งนี้เกิด big shake up (อันนี้เป็นศัพท์ของทาง kaggle โดยปกติแล้วการแข่งเค้าจะเอาข้อมูล test set ประมาณ 30% ออกมาให้ผู้แข่งได้ประเมินประสิทธิภาพของทาซานเรา ซึ่งจะบอกคะแนน ranking ใน public leader board ก่อนที่เวลาหมดการแข่งขันจะแจ้งผล private leader board จากชุดข้อมูล 100% ซึ่งคนที่ได้อันดับสูงๆใน public กลับได้ผลที่แย่ใน private ซึ่งเกิดขึ้นได้บ่อย เพราะหลายทีมพยายามเทรนทาซานให้ overfit กับ public LB (ทำให้ทีมที่รวมทาซานเทพๆ ทำผลงานได้ไม่ดี)

หลังจากมีการแชร์ข้อมูลกัน ส่วนใหญ่ก็คิดว่า nosiy label ไม่ควรจะใช้ทาซานหลายสายพันธุ์ กลับกันทาซานสายพันธุ์เดียวที่ robust ก็สามารถทำคะแนนได้ดี ความโหดของ kaggle คือเราเลือกเอา submission ที่ดีที่สุดสองอัน เพื่อใช้ประเมินการแข่งขัน โชคดีที่สองอันที่ผมเลือกไป มีอันนึงทำคะแนนได้ดีใน private set

สุดท้ายอยากฝากให้น้องๆ ทุกคนสนใจลงมือทำโจทย์ชีวิตจริง หาความรู้ อ่านเปเปอร์ อย่าไปกลัวครับ สามารถเลือกอ่าน paper with code จะได้ทำความเข้าใจไปในตัว จริงๆใน kaggle แทบจะหาคนไทยใน leader board ไม่ได้เลย มีแต่คนจีน รัสเซีย ญี่ปุ่น เกาหลี อินเดีย เยอะมากๆ อยากเป็นแรงผลักดันให้คนไทยได้ไประดับโลก
ปล. ใครที่สนใจ kaggle สามารถ DM มาได้ครับ ผมเล็งแข่ง Catheter and line position challenge เกี่ยวกับการแพทย์ สายสวนหลอดเลือด (ตั้งใจว่าจะหานิสิตแพทย์หรืออาจารย์แพทย์ ทำ publication ต่อ ผมพอมี connection บ้างอยู่)
ใครที่สงสัยอะไรก็ถามได้ความ ยินดีให้คำแนะนำ ไม่ว่าจะเป็นเริ่มต้นเรียนยังไง อ่านหนังสืออะไร ฯลฯ
ขอบคุณทุกคนที่เสียเวลาอ่านครับ 🙏 ทอม

   
ตอบกลับอ้างอิง
The Neural Engineer
 The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 7 years ago
ข้อความ: 409
Topic starter 07/04/2021 8:03 am  
อีกหนึ่งยอดผลงานของทอมบน Kaggle ในรายการ “RANZCR clip – Catheter and Line Position Challenge” ที่โจทย์กำหนดให้วิเคราะห์ภาพ x-ray ว่ามีสายสอดหลอดเลือดและท่อประเภทไหนอยู่บ้าง
ขอบคุณทอม Lai Shih Chieh ที่แชร์ความรู้ดีๆ ให้วงการเราครับ
 
https://www.facebook.com/Machine-learning-%E0%B8%81%E0%B8%B1%E0%B8%9A%E0%B8%97%E0%B8%B2%E0%B8%A3%E0%B9%8C%E0%B8%8B%E0%B8%B2%E0%B8%99-107941428005849/

   
ตอบกลับอ้างอิง
The Neural Engineer
 The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 7 years ago
ข้อความ: 409
Topic starter 06/09/2021 8:39 am  

AIResearch.in.th และ PyThaiNLP ปล่อยโมเดลถอดความจากเสียงพูดภาษาไทย (Speech-to-Text) ความแม่นยำทัดเทียมผู้นำตลาดอย่าง Microsoft, Google, Amazon ให้ใช้ฟรีภายใต้ลิขสิทธิ์ CC-BY-SA 4.0 (Open Source)

AIResearch.in.th ร่วมมือกับ PyThaiNLP ปล่อยโมเดลถอดความจากเสียงภาษาไทย (Automatic Speech Recognition; ASR) ที่ถูกเทรนบนข้อมูล Common Voice 7.0 ประมาณ 133 ชั่วโมง ประกอบด้วยโมเดลที่เทรนจากศูนย์ด้วย Kaldi และโมเดลที่ปรับแต่งจาก XLSR-Wav2Vec2 จาก Facebook ทุกโมเดลมีความแม่นยำทัดเทียมกับบริการของผู้นำตลาดอย่าง Microsoft, Google, Amazon สามารถเข้าถึงและใช้เพื่องานวิจัยและการค้าได้ภายใต้ลิขสิทธิ์ CC-BY-SA 4.0 (open source) ทั้งแบบ on-cloud และ on-premise เมื่อรันบน CPU แต่ละโมเดลใช้เวลาในการถอดเสียงประมาณ 1.09 วินาทีต่อหนึ่งคลิปสั้น โมเดลเหล่านี้เหมาะกับบทสนทนาทั่วไป เช่น การสั่งอาหาร บริการลูกค้า และจดประชุม เป็นต้น
อ่านต่อได้ที่:  https://medium.com/airesearc.../airesearch-in-th-3c1019a99cd
 
ลองโมเดลได้ที่
  • Wav2Vec2 —  https://huggingface.co/airesearch/wav2vec2-large-xlsr-53-th
วิธีเทรน
  • Kaldi —  https://github.com/vistec-ai/commonvoice-th
  • Wav2Vec2 —  https://github.com/vistec-ai/wav2vec2-large-xlsr-53-th
 
ACKOWLEDGEMENTS
  • Kaldi model training and validation notebooks/scripts @tann9949
  • Wav2Vec2 model training and validation notebooks/scripts @cstorm125
  • dataset cleaning scripts @tann9949
  • dataset splits @ekapolc and @14mss
  • running the training @mrpeerat
  • spell correction @wannaphong

   
ตอบกลับอ้างอิง
The Neural Engineer
 The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 7 years ago
ข้อความ: 409
Topic starter 15/09/2021 1:26 pm  
บทความโดย FB: @Thitirat TheSensei ครับผม
 
TensorFlow Similarity
แพคเกจไพธอนใหม่ล่าสุดจาก tensorflow สำหรับงานการเทรนโมเดลเพื่อหา similar sample อย่างมีประสิทธิภาพด้วย contrastive learning
 
🎈พูดถึงงาน search for related items โดยเฉพาะเมื่อ items ที่ว่าเป็นพวก unstructured data อย่างรูปภาพ ที่เราไม่สามารถเอาค่าในพิกเซลมาเทียบกันตรง ๆ เพื่อวัด similarity ระหว่างภาพได้ (ต่อให้ลองทำดูก็ได้ผลไม่ดี เพราะค่าในพิกเซลหนึ่ง ๆ นั้นแทบไม่สื่ออะไรถึง high-level visual content ภายในภาพเลย) … วิธีการแก้ปัญหาแบบพื้นฐานที่สุดก็คือการแปลงรูปภาพทั้งหมดให้กลายเป็น high-level feature/embedding vector ก่อน แล้วค่อยเอา vector ที่ว่ามาคำนวณหา similarity score (หรือ distance score ก็แล้วแต่) ทีละคู่ เพื่อสรุปว่าภาพคู่นั้นมีคะแนนความคล้ายมากน้อยแค่ไหน
 
🎈ส่วนของการแปลงภาพให้กลายเป็น high-level embedding/feature vector นั้นก็มีวิธีหลากหลาย ตั้งแต่วิธีแบบ traditional vision ไปจนถึงวิธีแบบ deep learning (DL) … โดยเฉพาะวิธีแบบ DL ที่เดี๋ยวนี้เราสามารถไปหยิบยืมเอา pre-trained CNN (Convolutional Neural Network) ตัวดังมาตัดเอาเฉพาะส่วน feature extractor ใช้ได้ง่าย ๆ ด้วยโค้ดแค่ไม่กี่บรรทัด (แถม tutorial เต็มอินเทอร์เน็ต) บางทีคือแทบไม่ต้องเทรนอะไรเพิ่มเลยด้วยซ้ำ หยิบมาใช้ปุ๊บคือจบเลย งานที่เหลือก็แค่เอา vector ที่ได้มาเลือกว่าจะคำนวณ vector similarity ด้วยวิธีไหนดี
 
🎈แต่วิธีการหยิบ pre-trained feature extractor ตัวดังจากวงการ DL มาใช้ก็มีปัญหาอยู่บ้าง เพราะโดยมาก DL feature extractor ตัวดังพวกนั้น (เช่น จาก VGG, ResNet, EfficientNet, etc.) ถูกเทรนมาสำหรับงาน ImageNet image classification ด้วย cross entropy loss function … ซึ่งถ้ามองลึกลงไปในระดับ feature space ที่ได้ ก็อาจมีความสะเปะสะปะอยู่ เพราะ cross entropy เน้นแค่สามารถสร้างเส้นตัดแบ่งเพื่อแยก vector ของภาพออกจากกันเป็นกลุ่ม ๆ พอให้ classify ออกมาถูกกลุ่มถูกคลาสได้ก็พอแล้ว แต่มันจะไม่ดูเลยว่าระยะห่างของแต่ละภาพใน feature space นั้น align ตามระดับ similarity ของ visual content ในภาพหรือเปล่า ดังนั้นการเอา vector จาก feature space ลักษณะนี้มาคำนวณหา similarity score ก็อาจยังไม่ตอบโจทย์เรื่อง search for related items ได้เต็มที่
 
🎈งานนี้ Tensorflow (TF) เลยเสนอโมดูลตัวช่วยใหม่ชื่อ TF Similarity ที่จะช่วยเทรนโมเดลหนึ่ง ๆ ของเราด้วยวิธีการของ Contrastive loss ซึ่งเน้น ๆ เลยว่า feature vectors ใน feature space นี้ ต้องถูก optimize และ cluster มาอย่างดี … ภาพไหนคล้ายกันมาก vector ของมันก็ต้องอยู่ใกล้กันมากใน feature space นี้ และภาพไหนต่างกันมาก vector ของมันก็ต้องอยู่ไกลกันมากใน feature space นี้เช่นกัน
 
🎈และไม่เฉพาะแต่ Contrastive learning เท่านั้น ใน TF Similarity ยังมีส่วน Fast Approximate Nearest Neighbor search (ANN) มาให้เราเรียกใช้ได้เลยตอนจะ inference/query ใช้งานจริง ทำให้สามารถค้นเจอ similar items ในฐานข้อมูลได้อย่างรวดเร็วด้วย sub-linear time ไม่ต้องมาลำบากเขียนลูปวนเทียบ vector ของภาพเองทีละคู่ หรือมาเทรนสร้าง kNN (k Nearest Neighbor) ต่อเองอีกรอบ
 
🎈TF Similarity นี้มี Keras API มาพร้อมใช้ทั้ง layer, loss, model, sampler และ visualizer ที่ออกแบบมาสำหรับงาน similairity search โดยเฉพาะ ตัวอย่างโค้ด 21 บรรทัดบน MNIST dataset มีในลิงก์ข้างล่าง
 
🎈ในอนาคต TF มีแผนจะต่อยอด contrastive learning ในแพคเกจนี้ไปสู่การอำนวยความสะดวกนักพัฒนาสาย DL ในการทำพวก semi-supervised หรือ self-supervised learning อย่างเต็มรูปแบบ ตามรอยงานดังอย่าง SimCLR, BYOL, SWAV
 
อ้างอิงข้อมูลและรูปภาพจากลิงก์ เสริมรายละเอียดและอธิบายเพิ่มเติมโดยผู้เขียนโพสต์
… 13SEP2021: https://blog.tensorflow.org/.../introducing-tensorflow...
#tensorflow #similarity #tensorflowsimilarity #contrastivelearning #AI #machinelearning #deeplearning #neuralnetwork #ปัญญาประดิษฐ์ #การเรียนรู้ของเครื่อง #การเรียนรู้เชิงลึก #โครงข่ายประสาทเทียม
 
ผศ.ดร.ฐิติรัตน์ ศิริบวรรัตนกุล (FB: @Thitirat TheSensei) #thitirat
อาจารย์ประจำหลักสูตร M.Sc. in Data Analytics and Data Science #DADS และหลักสูตร Ph.D. in Business Analytics and Data Science #BADS
คณะสถิติประยุกต์ สถาบันบัณฑิตพัฒนบริหารศาสตร์ #NIDA

   
ตอบกลับอ้างอิง
The Neural Engineer
 The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 7 years ago
ข้อความ: 409
Topic starter 18/09/2021 8:58 am  

 

จาก Reinforcement Learning จนมาเป็น Deep Reinforcement Learning (ฉบับพกพา)

จาก Reinforcement Learning จนมาเป็น Deep Reinforcement Learning (ฉบับพกพา)

DECEMBER 19, 2019

https://tupleblog.github.io/reinforcement-learning/


   
ตอบกลับอ้างอิง
Page 2 / 2 Prev
Forum Jump:
  Previous Topic
Next Topic  
Share:
Forum Information
กระทู้ล่าสุด
กระทู้ที่ไม่ได้อ่าน
Tags
  • 3 หมวดหมู่
  • 76 กระทู้
  • 448 ข้อความ
  • 0 เข้าชมอยู่
  • 853 สมาชิก
สมาชิกล่าสุด: Davidtruck
ล่าสุด: คุยเฟื่องเรื่อง AGI (Artificial General Intelligence)
เครื่องหมายบนหมวดหมู่: อ่านทุกข้อความในกระทู้แล้ว ยังมีข้อความในกระทู้ที่ไม่ได้อ่าน
สัญลักษณ์บนกระทุ้: ยังไม่มีใครตอบ มีผู้ตอบแล้ว มีการคุยกันเร็วๆ นี้ ร้อนแรง ปักหมุด รอตรวจสอบ แก้ปัญหาแล้ว Private Closed

Powered by wpForo  Powered by wpForo version 2.1.5

Super Globals

Requests: Array ( )

Server: Array ( )

Options and Features

© 2018 ThAIKeras.com All Rights Reserved.