แบบจำลองภาษา หรือ Language modeling (LM) เป็นการใช้หลักการทางสถิติเพื่ออธิบายรูปแบบการใช้คำในวลีหรือประโยคของภาษา ซึ่งจะเป็นการพิจารณาความเป็นไปได้ของการเรียงลำดับตัวอักษร หรือคำในประโยคที่เกิดขึ้นในภาษาหนึ่งๆ รวมถึงการเรียงลำดับของประโยคหลายประโยคที่ต่อเนื่องกัน
เมื่อพูดถึงแบบจำลองภาษาในทาง NLP จะเป็นการหาความน่าจะเป็นของตัวอักษรใด ๆ ที่ปรากฏในคำ หรือความน่าจะเป็นของคำที่ปรากฏในประโยค ตัวอย่างเช่น
ในโปรแกรมที่มี autocomplete เมื่อเราพิมพ์ตัวอักษรลงไป มันจะสามารถเดาคำหรือตัวอักษรต่อไปที่เราจะพิมพ์ได้ เช่น ใน word เมื่อพิมพ์ "มกรา" มันจะเดาให้ว่าจะพิมพ์มกราคม
ใน google search เมื่อเราค้นหาคำว่า "วันนี้" ใน google มันจะเดาให้ว่าเราน่าจะพิมพ์คำว่าอะไรต่อ
จากคำถามในข้อสอบวิชาภาษาอังกฤษ Can I have your ______ number please? นักศึกษาจะตอบว่าอะไร ถ้านักศึกษาเข้าใจภาษาอังกฤษในระดับดีก็จะตอบได้ว่าควรจะเติมคำว่าอะไรลงไปในช่องว่าง หรือรู้ว่าไม่ควรเติมคำประเภทใด
ในคาบเรียนภาษาอังกฤษของโรงเรียนประถมในประเทศไทยแห่งหนึ่ง ถ้าคุณครูทักทายว่า "Good morning. How are you today?" นักเรียนมักจะตอบว่าอะไร
ในงาน NLP แบบจำลองภาษามักจะใช้สำหรับงาน 3P ได้แก่
Probability หาความเป็นไปได้ของคำหรือประโยค
Predict ทำนายสตริงตัวถัดไปจากบริบท สตริงอาจเป็นตัวอักษร คำ หรือประโยค
Produce สร้างคำหรือประโยคให้ถูกต้องตามไวยากรณ์
ลองใช้ google search หาคำว่า "วันนี้" แล้วเปรียบเทียบคำที่ google แนะนำของตนเองกับเพื่อน
แบบจำลองภาษาทำงานโดยอาศัยคลังข้อมูลในการตัดสินว่าข้อความใดเป็นการใช้ภาษาที่ถูกต้องหรือเหมาะสม คลังข้อมูลที่ใช้อาจเป็นคลังคำ คลังข้อความ หรือคลังประโยคขึ้นอยู่กับลักษณะการนำไปใช้
การสร้างแบบจำลองจะใช้อัลกอริทึมในการเรียนรู้ลักษณะของภาษาโดยพิจารณาจากบริบทของสตริง (ตัวอักษร/คำ/ประโยค) ที่เราสนใจในคลังข้อมูล จากนั้นจะสร้างกฏสำหรับบริบทของสตริงในภาษาธรรมชาติ
แบบจำลองอาจแบ่งเป็นระดับได้ตามลักษณะการนำไปใช้ ได้แก่
ระดับตัวอักษร เป็นการเรียนรู้ว่าคำประกอบขึ้นจากตัวอักษรอะไรได้บ้าง
ระดับคำ เป็นการเรียนรู้ว่าประโยคประกอบขึ้นจากคำอะไรได้บ้าง เรียงลำดับของคำอย่างไร
ระดับประโยค เป็นการเรียนรู้เพิ่มเติมจากระดับคำ โดยเรียนรู้จากประโยคที่ต่อเนื่องกันหรือเกี่ยวข้องกันด้วย เช่น การเขียนเรียงความ บทสนทนา เนื้อเพลง บทความ การแปลภาษา
อธิบายหลักการทำงานจากตัวอย่างก่อนหน้า
ระบบ autocomplete สามารถเดาตัวอักษรที่เหลือได้ โดยการใช้แบบจำลองภาษาเพื่อหาว่าตัวอักษรก่อนหน้าตามด้วยตัวอักษรอะไรมีโอกาสกลายเป็นคำที่พบได้บ่อยๆ แบบจำลองนี้เป็นระดับตัวอักษรจึงมักจะใช้การเรียนรู้จากคลังคำ
google search สามารถเดาคำถัดไปได้ เนื่องจาก google มีแบบจำลองภาษาที่สร้างจากคลังข้อความที่ผู้ใช้ค้นหาใน google โดยมีการปรับให้เข้ากับประวัติการค้นของผู้ใช้แต่ละคน แบบจำนองนี้เป็นระดับคำใช้การเรียนรู้จากคลังข้อความ
นักศึกษาสามารถเดาคำที่เติมในช่องว่างได้ เนื่องจากเรามีแบบจำลองภาษาในสมองของเรา ซึ่งสร้างจากคลังข้อความที่เคยเห็นหรือเคยฟัง หรืออาจจะสร้างจากกฏไวยากรณ์ที่เคยเรียนมาก่อน คำตอบของแต่ละคนอาจแตกต่างกันตามระดับความรู้ของผู้เรียน ความถูกต้องของคำตอบขึ้นอยู่กับประสิทธิภาพของแบบจำลองของแต่ละคน แบบจำนองนี้เป็นระดับคำจึงใช้การเรียนรู้จากคลังประโยค
ในการตอบคำถาม นักเรียนในไทยมักจะตอบคุณครูด้วยประโยคที่เหมือนหรือคล้ายกัน ซึ่งเป็นประโยคที่เคยได้ยินหรือเรียนมาก่อน แต่หากถามเจ้าของภาษาแล้วอาจจะได้คำตอบที่แตกต่างไป และสร้างคำตอบได้หลายหลากแบบ เนื่องจากเจ้าของภาษามีแบบจำลองภาษาที่ดีกว่า แบบจำนองนี้เป็นระดับประโยคจึงใช้การเรียนรู้จากคลังคู่ประโยคสนทนา
ยกตัวอย่าง application ในงานด้าน NLP ที่นำ Language modelling ไปใช้
แบบจำลองภาษามีส่วนสำคัญในโปรแกรมประยุกต์ในปัจจุบัน และมีบทบาทสำคัญอย่างมากในงานด้าน NLP
ตัวอย่างงาน NLP ที่ใช้แบบจำลองภาษา
Word segmentation -- การตัดคำ
ตัวอย่าง "ปอปลาตากลม" (ปอ|ปลา|ตา|กลม) vs (ปอ|ปลา|ตาก|ลม)
Grammar checker -- การตรวจไวยากรณ์อัตโนมัติ ในโปรแกรม word processing
ตัวอย่าง "She study English everyday."
Spelling correction -- การตรวจสอบสะกดคำ ในโปรแกรม word processing
ตัวอย่าง "The statitics of COVID-19 around the world."
Speech recognition -- การรู้จำเสียงพูด ใช้ในโปรแกรมประยุกต์ต่างๆ เช่น Microsoft Word, Google search, Facebook, voice assistants (Siri, Alexa, Google assistant)
ตัวอย่าง ฟังเสียง ("I bake your pardon?") vs ("I beg your pardon?")
Machine translation -- ระบบแปลภาษา เช่น Google Translate and Microsoft Translator
ตัวอย่าง "ตึกสูง" (tall building) vs (high building)
Parts-of-speech (POS) tagging -- การจำแนกหน้าที่ของคำว่าคำประเภทใด เช่น คำนาม คำสรรพนาม คำกริยา คำบุพบท ฯลฯ
ตัวอย่าง พิมพ์ประโยคเพื่อหา POS
Sentiment analysis -- การวิเคราะห์ความคิดเห็นจากข้อความ เช่น วิเคราะห์ข้อความรีวิวสินค้าว่าเป็นมีความคิดเห็นบวกหรือลบต่อสินค้า มีหลายเว็บที่ให้บริการ
ตัวอย่าง S-Sense: Social Sensing ของ Nectec
Text generation -- การสร้างประโยค เช่น การเขียนข่าว การเขียนบทความ การสร้างประโยคในงานพยากรณ์เกสรดอกไม้
Question answering -- ระบบถามตอบ เป็นการสร้างคำตอบจากคำถามที่เป็นภาษาธรรมชาติ
ตัวอย่าง คำถาม: นายกรัฐมนตรีคนที่ 7 ของประเทศไทยคือใคร คำตอบ: ปรีดี พนมยงค์
Optical character recognition -- การรู้จำตัวอักษร เป็นการแปลงภาพที่เป็นรูปตัวอักษร ให้เป็นตัวอักษร
Information retrieval -- การค้นคืนสารสนเทศ เช่น การค้นคืนเอกสาร การค้นหาเว็บ เช่น google search
การสร้างแบบจำลองภาษาต้องใช้คลังข้อมูลที่ใหญ่ในการฝึกสอน
เทคนิคในการสร้างแบบจำลอง แบ่งได้เป็น 2 ประเภทหลัก คือ
Statistical language model หรือ Count-based model เป็นแบบจำลองที่ใช้วิธีการนับจำนวนเพื่อหาค่าความน่าจะเป็น ได้แก่ N-grams model
Neural language model หรือ Continuous-space model เป็นแบบจำลองที่ใช้วิธีการเรียนรู้ด้วยประเภท neural network เข้ามาช่วยคำนวณปัจจุบันเป็นที่นิยมมาก เนื่องจากให้ค่าความถูกต้องสูง เช่น RNN และ Transformer-based models
n-grams คือ สิ่งที่สนใจที่อยู่ติดกัน n ลำดับ
ถ้า n=1 เรียกว่า unigram, n=2 เรียกว่า bigram, n=3 เรียกว่า trigram แต่ถ้า n ตั้งแต่ 4 ขึ้นไปจะเขียนในรูป n-grams เช่น 4-grams, 5-grams
สำหรับงานประมวลผลข้อความ สิ่งที่สนใจอาจเป็นตัวอักษร คำ วลี หรือประโยคก็ได้ เช่น
สิ่งที่สนใจคือ "ตัวอักษร" และ n = 1 จะเรียกว่า unigram ของตัวอักษร
สิ่งที่สนใจคือ "คำ" และ n = 2 จะเรียกว่า bigram ของคำ
สิ่งที่สนใจคือ "คำ" และ n = 3 จะเรียกว่า trigram ของคำ
สิ่งที่สนใจคือ "ประโยค" และ n = 4 จะเรียกว่า 4-grams ของประโยค
ตัวอย่างเช่น พิจารณาคำว่า "family" จะได้
unigram ประกอบด้วย 6 ตัวอักษร ได้แก่ f, a, m, i, l, y
bigram ประกอบด้วย 5 คู่ตัวอักษร ได้แก่ fa, am, mi, il, ly
trigram ประกอบด้วย 4 กลุ่มตัวอักษร ได้แก่ fam, ami, mil, ily
ตัวอย่างเช่น พิจารณาประโยคว่า "I am a student" จะได้
unigram ประกอบด้วย 4 คำ ได้แก่ I, am, a, student
bigram ประกอบด้วย 3 กลุ่มคำ ได้แก่ I am, am a, a student
trigram ประกอบด้วย 2 กลุ่มคำ ได้แก่ I am a, am a student
ตัวอย่าง การสร้าง bigram ของคำโดยใช้คำสั่งใน library nltk
การสร้าง n-grams model
การสร้างแบบจำลอง n-grams เป็นการคำนวณหาค่าความน่าจะเป็นของคำถัดไปโดยการพิจารณา n คำก่อนหน้า
การคำนวณใช้หลักการทางสถิติ ได้แก่
1. Conditional Probability การหาความน่าจะเป็นของการเกิดคำโดยพิจารณาคำก่อนหน้า
P (W2|W1) = P (W1W2) / P (W1) = c (W1W2) / c ( W1)
P (W1W2) = P (W1) x P (W2|W1)
ตัวอย่างเช่น
ความน่าจะเป็นของ P (am | I ) = P ( I am) / P ( I )
ความน่าจะเป็นของ P (student | I am a ) = P ( I am a student) / P ( I am a )
2. Chain rule ใช้ในการหาความน่าจะเป็นของการเกิดกลุ่มคำ W = (W1, W2, W3, ..., Wn)
P (W) = P (W1) x P (W2|W1) x P (W3|W1W2) x ... x P (Wn|W1W2..Wn-1)
ซึ่งเป็นการหาผลคูณของความน่าจะเป็นของคำก่อนหน้าทั้งหมด
ตัวอย่างเช่น
ความน่าจะเป็นของการเกิดประโยค "I am a student"
P (I, am, a, student) = P (I) x P (am | I) x P (a | I, am) x P (student | I, am, a)
ความน่าจะเป็นของการเกิดประโยค “it was raining cat and dog yesterday”
P (it, was, raining, cat, and, dog, yesterday) = P (it) x P (was | it) x P (raining | it was) x P (cats | it was raining) x
P (and | it was raining cats) x P (dogs | it was raining cats and) x
P (yesterday | it was raining cats and dogs)
3. Markov assumption เป็นสมมุติฐานที่ว่าด้วยการหาค่าความน่าจะเป็นของคำถัดไปโดยดูจากคำปัจจุบัน
P (Wn|W1W2..Wn-1) ~ P (Wn|Wn-1) เมื่อ Wn เป็นคำถัดไป และ Wn-1 เป็นคำปัจจุบัน
ในกรณีที่ประโยคยาวมาก ๆ การคำนวณจะซับซ้อนมากไปด้วย โดยเฉพาะการหาค่าความน่าจะเป็นของคำสุดท้ายที่ต้องย้อนไปดูคำก่อนหน้าทุกคำและมีโอกาสที่จะเจอประโยคแบบเดียวกันในคลังข้อมูลน้อยมาก ดังนั้นจึงใช้ Markov assumption ในการลดความซับซ้อนของ Chain rule โดยพิจารณาแค่ n-1 คำก่อนหน้า จึงเป็นที่มาของ n-grams model
ตัวอย่างเช่น
unigram model ที่พิจาณาเฉพาะคำปัจจุบัน
bigram model พิจารณาคำก่อนหน้า 1 ตัว
trigram model พิจารณาคำก่อนหน้า 2 ตัว
4-grams model พิจารณาคำก่อนหน้า 3 ตัว
จากตัวอย่างก่อนหน้า P (yesterday | it was raining cats and dogs)
unigram ~ P (yesterday )
bigram ~ P (yesterday | dogs)
trigram ~ P (yesterday | and dogs)
ตัวอย่างการนำ n-grams model ไปใช้งาน เช่น
ในประโยค "I need ... bottle of water" เราไม่แน่ใจว่าควรจะใช้ "I need a bottle of water" หรือ "I need the bottle of water" เราสามารถคำนวณหาค่าความน่าจะเป็นของทั้งสองประโยคเปรียบเทียบกัน โดยคำนวณจากคลังข้อความที่มีขนาดใหญ่ ประโยคที่เหมาะสมจะมีค่าความน่าจะเป็นที่สูงกว่า ในกรณีเราอาจจะต้องพิจารณาถึง 4 ตำแหน่ง (a bottle of water) vs (the bottle of water) จึงควรเลือกใช้ 4-grams
ข้อจำกัดของ n-grams
ต้องการพื้นที่จัดเก็บสูงสำหรับข้อมูลขนาดใหญ่
ไม่สามารถจับบริบทที่อยู่ไกลได้ (limited context window)
เป็นการใช้ Neural network สร้างแบบจำลองภาษา โดยเน้นการเรียนรู้ลำดับคำและบริบทในข้อความ
Word Embedding (Word2Vec)
ช่วยเพิ่มประสิทธิภาพของโมเดลภาษาในงานต่างๆ เช่น การแปลภาษา การสรุปข้อความ และการตอบคำถาม โดยใช้การฝังความสัมพันธ์ระหว่างคำ ตัวอย่างเช่น โมเดลแปลภาษาสามารถเรียนรู้ความสัมพันธ์ของคำในหลายภาษาได้ผ่าน Word2vec
แทนคำศัพท์ด้วยเวกเตอร์ (Word Embeddings) เช่น Word2Vec หรือ GloVe
ตัวอย่าง: คำว่า "king" อาจแทนด้วยเวกเตอร์ [0.25, -0.12, 0.75, ...] Word Embeddings ช่วยสะท้อนความสัมพันธ์ระหว่างคำ
เช่น vec("king") - vec("man") ≈ vec("queen") - vec("woman")
ช่วยให้ neural language model เรียนรู้คำและความหมายของคำได้ดีขึ้น
RNN (LSTM, GRU) เรียนรู้จากลำดับของคำจากจากซ้ายไปขวา
Recurrent Neural Networks (RNN) เป็นโครงข่ายประสาทเทียมที่เหมาะกับการประมวลผลข้อมูลแบบลำดับ เช่น ข้อความ RNN สามารถเรียนรู้ความสัมพันธ์ระยะยาวในลำดับข้อมูล ซึ่งสำคัญสำหรับงาน NLP เช่น การแปลภาษา และการตอบคำถาม
ใช้โครงสร้างลำดับเวลา (sequential data)
จุดเด่น: มีหน่วยความจำ (memory cells) ที่ช่วยจำข้อมูลก่อนหน้า
ข้อจำกัด: เกิดปัญหา vanishing gradients เมื่อลำดับข้อมูลยาว
Long Short-Term Memory (LSTM) เป็นรูปแบบหนึ่งของ RNN ที่มีประสิทธิภาพสูงในการเรียนรู้ความสัมพันธ์ระยะยาว
เนื่องจากสามารถแก้ปัญหา vanishing gradient และได้รับการยอมรับในหลายงาน NLP เช่น การแปลภาษาและการตอบคำถาม
พัฒนาจาก RNN เพื่อแก้ปัญหา vanishing gradients
มีโครงสร้าง forget gate, input gate และ output gate
ทำให้สามารถจำบริบทระยะยาวได้ดี
Gated Recurrent Unit (GRU) คล้าย LSTM แต่ลดความซับซ้อนโดยใช้ gate น้อยกว่า ทำงานได้เร็วกว่า LSTM ในบางกรณี
แม้ว่า Word2vec, N-grams, RNN และ LSTM จะพัฒนาขึ้นก่อนสถาปัตยกรรม Transformer แต่ก็ยังมีการใช้งานอย่างแพร่หลาย
ทั้งแบบเดี่ยวและร่วมกับ Transformer ในการพัฒนาโมเดล NLP สมัยใหม่
Transfermer-based model
Attention Mechanism (2015) ใช้ กลไล self-Attention Mechanism ให้ความสำคัญกับคำแต่ละคำในข้อความตามบริบท เช่น ในประโยค "The cat sat on the mat, and it was happy", คำว่า "it" เชื่อมโยงกับ "cat" และ Multi-Head Attention เพิ่มประสิทธิภาพในการจับความสัมพันธ์หลายมิติระหว่างคำ
Transformer Architecture (2017) เป็นโมเดลพื้นฐานที่เปลี่ยนวงการ NLP ด้วย Self-Attention Mechanism แทน RNN เป็นโมเดลประสิทธิภาพสูงเหมาะสำหรับงานลำดับข้อมูล เช่น การแปลภาษา โครงสร้างประกอบด้วย Encoder และ Decoder
ULMFiT (2018)
ELMo (2018)
BERT (2018) : นำเสนอบริบทสองทิศทาง คือ อ่านข้อความทั้งจากซ้ายไปขวาและขวาไปซ้าย (Bidirectional) พื่อเข้าใจความสัมพันธ์เชิงความหมายในข้อความได้ลึกขึ้น
T5 (2019): ปรับทุกงาน NLP ให้อยู่ในรูปแบบปัญหา text-to-text เพิ่มความยืดหยุ่นและประยุกต์ใช้ได้หลากหลาย
GPT-2 (2019) : เน้นการสร้างข้อความแบบต่อเนื่อง (Generative)
GPT-3 (2020): โมเดลขนาดใหญ่ที่สร้างข้อความอย่างทรงพลัง รองรับงานตั้งแต่การเติมข้อความจนถึงการแปลภาษา
PaLM (2022): ยกระดับความเข้าใจบริบท พร้อมปรับปรุงประสิทธิภาพในงานใช้งานจริง
Bard (2023): ก้าวใหม่ของโมเดลภาษา พร้อมนวัตกรรมจาก GPT-4, Wu Dao 2.0, Bloom และ Megatron-Turing NLG 530B
Perplexity