Notifications
Clear all

บทความแนะนำ Neural Architectures - EfficientNet และ Transformers (อัพเดต 2022)

10 ข้อความ
1 Users
0 Likes
28 K Views
The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 6 years ago
ข้อความ: 400
Topic starter  

โมเดล 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>เป็นต้น


   
ตอบกลับอ้างอิง
The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 6 years ago
ข้อความ: 400
Topic starter  

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 ตัวจริงครับ

 

 


   
ตอบกลับอ้างอิง
The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 6 years ago
ข้อความ: 400
Topic starter  

แนะนำโค้ด 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

 

ลองใช้แล้ว ชอบตัวไหน ใช้งานดีที่สุด อย่าลืมกระซิบเราด้วยนะคร้าบบ 😀

This post was modified 2 years ago by The Neural Engineer

   
ตอบกลับอ้างอิง
Page 2 / 2
Share: