โมเดล mT5 โมเดล "ภาษาไทย" ศักยภาพสูง
ThaiKeras and Kaggle 27 ธค. 2563
สวัสดีครับเพื่อนๆ ก่อนหน้านี้เราเคยแนะนำโมเดล T5 ซึ่งเป็นโมเดลที่ทำคะแนนสูงสุดในบททดสอบด้านภาษาด้านการอ่านที่หินที่สุด SuperGLUE ( https://bit.ly/thaikeras-understanding-nlp )
โดย T5 เป็นโมเดลแบบ Transformer Encoder-Decoder นั่นคือรับ text input และตอบกลับด้วย text output ทำให้เราสามารถประยุกต์ใช้งาน T5 ได้หลากหลาย applications ไม่ว่าจะเป็น จำแนกประเภทข้อความ (text classification), ทำนายชนิดของคำ (named-entity recognition), ย่อความ (summarization) และงานแปลภาษา (translation)
โดยก่อนที่จะ finetune โมเดล T5 เข้ากับแต่ละ application ที่กล่าวข้างต้นนั้น T5 ได้มีการ self-supervised pretrain บนข้อมูลมหาศาลขนาด 750GB ด้วยเทคนิค "ทายคำในช่องว่าง" (masked language modeling) (รูปที่ 1)
โดยในแต่ประโยคจะมีการลบคำ (หรือกลุ่มคำที่ติดกัน) ราวๆ 15% ของความยาวประโยค (<X> และ <Y> ในรูป) และโมเดล T5 จะต้องทายคำที่ถูกลบไปให้ถูกต้อง
เทคนิคทายคำในช่องว่างนี้เอง ทำให้ T5 สามารถเรียนรู้ความรู้และภาษาไทยจาก texts มหาศาลโดยไม่ต้องมีมนุษย์มาสอนเลย และความรู้พื้นฐานด้านภาษานี่เองที่ทำให้ T5 ที่ไป finetune กับงานด้านต่างๆ (เช่นใน SuperGLUE) สามารถทำคะแนนได้อย่างดีเยี่ยม
.
ลองเล่น T5 ภาษาไทย ด้วย mT5
ล่าสุด google ได้เผยแพร่ multilingual T5 (mT5) ที่มีความสามารถแบบเดียวกับ T5 และครอบคลุมภาษาถึง 100 ภาษา ( https://arxiv.org/pdf/2010.11934v2.pdf ) รวมทั้งภาษาไทยเราด้วย โดยเทรนบนข้อมูล web ภาษาไทยถึง 15 ล้านหน้าเว็บเพจเลยทีเดียว
โดย mT5 นั้นเมื่อ finetune กับ applications ด้านต่างๆ แล้วก็ทำคะแนนสูงสุดในบททดสอบหลายภาษาด้วยกัน เช่น บททดสอบ "ประเมินความสอดคล้องของประโยค" (XNLI) เป็นต้น
ล่าสุด Hugginface ได้เผยแพร่โมเดล mT5 ซึ่งเราสามารถลองเล่นเกมส์เติมคำในช่องว่างได้ดังแสดงในโน้ตบุคนี้ครับ
https://www.kaggle.com/ratthachat/mt5-thaikeras/
ตัวอย่าง 1) : นี่มันเกิดอะไรขึ้นในห้องนี้กันแน่เนี่ย?
1.1) นี่ <extra_id_0> เกิดอะไรขึ้นในห้อง <extra_id_1> กันแน่เนี่ย?
--> <extra_id_0>= มัน , <extra_id_1> = ICU
1.2) นี่มัน <extra_id_0> อะไรขึ้นใน <extra_id_1> นี้กันแน่เนี่ย?
--> <extra_id_0> = เกิด <extra_id_1> = โลก
ตัวอย่าง 2) ข่าวจาก dailynews
“แรมโบ้” ซัด <extra_id_0> เปรียบ <extra_id_1> บริหารคนส่วนน้อยยังมีคนลักลอบทำผิดก.ม. จน <extra_id_2> ถูกยุบ ทำไมไม่ <extra_id_3> หาความรับผิดชอบกับ "ธนาธร" บ้าง ย้ำ “นายกฯ” บริหารประเทศใหญ่กว่าพรรคฯ มีคนฝ่าฝืนกฎหมาย ต้องจัดการคน <extra_id_4> มาลงโทษให้ได้
--> <extra_id_0> = “นายกฯ” <extra_id_1> = คนใหญ่ <extra_id_2> = พรรคฯ <extra_id_3> = มา <extra_id_4>= เหล่านี้
หมายเหตุ ในทางปฏิบัติคำที่ถูกซ๋อนไว้จะถูกแทนด้วย token เช่น <extra_id_0>, <extra_id_1> และ <extra_id_2>เป็นต้น
EfficientNetV2 โมเดล Vision Classification ที่ดีที่สุดกลับมาแล้ว
ThaiKeras and Kaggle - 23 พฤษภาคม 2021
สวัสดีครับ ในปีก่อน เราเคยแนะนำโมเดล EfficientNet ว่าเป็นโมเดล Vision Classification ที่ดีที่สุดพัฒนาโดยทีม Google Brain
(บทความปี 2019 ข้างบนครับ) หลังจากนั้นก็มีโมเดลใหม่ๆ ที่มาแย่งแชมป์ทำความแม่นยำบน ImageNet ได้สูงกว่าชั่วคราว
ล่าสุดทีม Google Brain ได้ปรับปรุง EfficinetNet ใหม่ โดยมีการพัฒนา architecture อย่างอัตโนมัติด้วย NAS ( Neural Architecture Search) และกลับมาทวงแชมป์ชนะคู่แข่งไปได้อย่างสวยงามอีกครั้ง และยังมีเวอร์ชั่นที่สอนด้วย ImageNet21K ที่ทำให้ยิ่งแม่นยำขึ้นไปอีกขั้น
เพื่อนๆ สามารถลองเล่น pretrained EffNetV2 ด้วย Tensorflow-keras บน Colab ได้ที่นี่ครับ
https://colab.research.google.com/github/google/automl/blob/master/efficientnetv2/tutorial.ipynb
ดูรายละเอียด paper ที่นี่
https://arxiv.org/abs/2104.00298
ดู Github
https://github.com/google/automl/tree/master/efficientnetv2
อย่างไรก็ดี ส่วนตัวคิดว่าการวัดผลบน ImageNet นั้นไม่ได้เป็นการวัดผลที่ดีที่สุดอีกแล้วครับ
เพราะในปัจจุบันเรามี datasets ที่เป็นรูปถ่ายมุมยากๆ รวมทั้งรูปวาดของวัตถุต่างๆ ใน imagenet มากมาย
ที่มนุษย์ดูออกได้ไม่ยาก เช่น ImagNet Rendition / ObjectNet / ImageNet Sketch เป็นต้น
แต่โมเดลที่เทรนบน ImageNet นั้นกลับทำนายบนชุดข้อมูลเหล่านี้ไม่ได้เลย
ดูตัวอย่างที่ https://openai.com/blog/clip/ ซึ่งโมเดล CLIP ของ OpenAI ทำผลงานบนข้อมูลเหล่านี้ได้เทพมากๆ
และน่าจะเป็นอนาคตของ Computer Vision รวมทั้ง AGI ที่เข้าใจได้ทั้ง images และ texts ตัวจริงครับ
แนะนำโค้ด Keras ของ Computer Vision ที่แข่งกันเป็นที่สุดในปี 2022
สวัสดีครับ สัปดาห์ก่อนทีมของ Yann Le Cun หัวหน้า Facebook AI และปรมาจารย์ด้าน Deep Learning
ได้ตีพิมพ์ทั้ง paper และ tweet ว่า convolution net ยังเป็นที่สุดของโมเดลทางด้าน Computer vision อยู่
โดยทั้งแม่นยำ และมีประสิทธิภาพเทียบกับขนาดดีกว่าโมเดลผู้ท้าชิงในกลุ่ม Transformers ทั้งหลาย
โดยทีม FB ได้เสนอ ”ConvNeXt” ซึ่งเป็น Convolution Net ที่นำผลงานของหลากหลายทีมวิจัยในปลายปีล่าสุด
มาปรับปรุงใน ResNet อาทิเช่น การใช้ DepthWise Convolution แทน Convolution ปกติ ,
ใช้ Layer Norm แทน BatchNorm, ใช้ GeLU แทน ReLU รวมทั้งอีกหลายการปรับปรุง
และเรียก ConvNeXt ว่าเป็น convolution net ในยุค 2020s (ใครใช้โมเดลเก่าๆ ก็มาใช้งานนี้ซะ)
ทีม FB ได้ผลการทดลองว่า ConvNeXt ที่ได้อัพเกรดมานั้นเอาชนะโมเดล Transformers เทพๆ ในปัจจุบันได้
โดยได้เน้นการทดลองไปเทียบกับโมเดล ViT (Vision in Transformers) และ Swin Transformers ซึ่งก็เรียก
ทั้งเสียงฮือฮาและวิจารณ์ได้จากหลากหลายสารทิศ
เช่น ทีมงาน ViT ได้ tweet ตอบว่าผลการทดลองในรูปดังกล่าวนั้นไม่ค่อยแฟร์
เพราะ ViT ไม่ได้ถูกทำ data augmentation หนักๆ เหมือนอีกสองโมเดลในรูป และได้โพสต์รูปแก้ว่าถ้า ViT
ทำ augmentation หนักๆ จะอัพความแม่นยำขึ้นมาสูสีกับ ConvNeXt เช่นกัน
นอกจากนี้ยังมีทีมอื่นเช่นทีม EfficientNet จาก Google ซึ่งเป็นแชมป์เก่าอยู่หลายปี ก็ได้ tweet ตอบเช่นกัน
(รูปที่แปะในโพสต์นี้) ว่าถ้าเอา EfficientNet มาทดสอบด้วยก็จะได้ผลดีกว่า ConvNeXt เสียอีก
อย่างไรก็ดีถ้าเราเข้าไปดู Benchmark ของ ImageNet ในเว็บ paperwithcodes
https://paperswithcode.com/sota/image-classification-on-imagenet
เราจะพบว่าโมเดลแม่นยำอันดับหนึ่งในปัจจุบัน เป็นโมเดลที่ชื่อว่า “CoAtNet ” ซึ่งเป็นผลงานของทีม Google เช่นกัน
ซึ่งเอา Transformer layer กับ convolutinoal layer มาต่อกัน
เขียนมาถึงตรงนี้ เราก็เริ่มตระหนักได้ว่า ไม่สามารถสรุปได้ซะทีเดียวว่าโมเดลใดดีกว่ากัน (จริงๆ แล้วเราคิดว่าเฉือนกัน 1% บน dataset ที่ "แคบ" แบบ imagenet ไม่น่าเอามาเป็นตัววัดได้แล้ว อย่างที่ OpenAI แสดงการวัดผลบน dataset ชุดอื่นๆ ไว้ที่นี่ครับ https://openai.com/blog/clip/ )
ดังนั้นถ้าเรามีสิทธิเลือกใช้งานได้ทุกโมเดลก็น่าจะดีที่สุดใช่ไหมครับ 😀 เพื่อนๆ สามารถนำโค้ด keras ที่ implement โมเดลทั้งหลายข้างต้น รวมทั้ง pretrained weights ได้ตามแหล่งเหล่านี้ครับผม
Keras ConvNeXt -- ConvNet of 2020s
https://github.com/leondgarse/keras_cv_attention_models#convnext
Keras CoAtNet -- แชมป์ตัวจริงในปัจจุบัน
https://github.com/leondgarse/keras_cv_attention_models#coatnet
Keras EfficientNetV2 -- แชมป์เก่าหลายสมัย ตอนนี้ก็ยังเทพอยู่
https://github.com/leondgarse/keras_cv_attention_models#efficientnet
Keras ViT -- ผู้ท้าชิงคนแรกจาก Transformers
https://github.com/faustomorales/vit-keras
Keras Swin Transformers -- ผู้ท้าชิงหน้าใหม่มาแรง
https://github.com/rishigami/Swin-Transformer-TF
ลองใช้แล้ว ชอบตัวไหน ใช้งานดีที่สุด อย่าลืมกระซิบเราด้วยนะคร้าบบ 😀