發表文章

目前顯示的是有「自然語言」標籤的文章

Decoding Methods for Language Models_Exhaustive search,Greedy Search與Beam Search比較

圖片
https://medium.com/@shravankoninti/decoding-strategies-of-all-decoder-only-models-gpt-631faa4c449a 語言模型不是只會「算機率」,真正影響輸出品質的是「怎麼選字」基本上分兩模式 Deterministic(確定性) 優點:可重現、偏「安全 / 標準答案」,常被應用在法規 / 技術文件。 缺點:容易重複、呆板,生成式任務中不夠生動。 Stochastic(隨機性) 優點:多樣有創意、輸出不固定 缺點:可能胡說、不一致 Sequence-to-Sequence Model for Machine Translation 諸多 NLP 應用(例如機器翻譯、聊天機器人、文本摘要或當前很夯的語言模型)都會產生文字作為輸出。另外,關於圖片說明(image captioning)或自動語音辨識(即語音轉文字)等應用也會輸出文字。所有這些應用在產生最終輸出的步驟中,都會使用以下幾種常用的演算法。 以下探討的針對Deterministic模式做比較 1.Exhaustive search(窮舉搜尋) 一種透過確認所有可能的狀況來尋找答案的方法。 窮舉所有可能的輸出序列,並在探索所有可能情況的同時,僅保留符合要求的結果。 保證能找到解但是效率不高 假設我們要用詞彙表 { cold, coffee, I , like , water, <stop>} 生成一個 5 個詞的序列。 窮舉搜尋所有可能序列及其對應機率,並輸出機率最高的序列。 I like cold water I like cold coffee coffee coffee coffee coffee I like I like coffee like cold coffee ..... 所以對於每個句子的輸出,其機率將會是 P(x1, x2, x3,…..xn) = P(x1).P(x2/x1), ……….., P(xn/x1, x2, ……xn-1) 我們會在解碼過程中找到所有可能的序列。在每個時間步都會傳入所有的詞彙。 如果其中一個範例輸入序列是「I like cold coffee <stop>」 上述序列的總機率將等於 P(I) * P(like/I)*P(cold/I,like)*P(coffee...

馬可夫鏈(markov chain)應用於文本段落、句子生成,讓敘述更豐富化的可行性研究_part1.

圖片
  至今多數創作文本生成主題圍繞透過類似GPT或Gemini等LLM來介接API。 使用現成的訓練模型,來實作聊天機器人或文章生成。 即使沒有自然語言處理的專業知識也能實作上述功能, 然而 演算法本身會屬於黑盒狀態,並且可解釋性較弱甚至有幻覺的風險。 此外若要自行構建新的訓練模型,就需要理解這些文章生成的演算法。 在短文、文章段落、句子生成等NLP演算法中,馬可夫鏈(markov chain)絕對是一個經典的算法。 比方有一句話 “I like turtles. I like rabbits. I don't like snails.” 套用於馬可夫鏈呈現如下圖 https://www.awalsh128.com/text-generation-using-markov-chains/ 上述連鎖表示,在這些句子中 100%(1.0)將以 I 開頭。 接著會是 like 的機率約 66%(0.66),而 don't 的機率約 33%(0.33)。 單字 don't 之後總是(100%/1.0)接著 like。 最後,烏龜、兔子和蝸牛會各自有大約 33%(0.33)的機率被接在後面。 馬可夫鏈的優點在於它們能在不具備語言語法或語意知識的情況下形成詞的相依關係。 該鏈純粹根據從語料庫中抽取的統計資訊來建立。 因此符合領域知識的語料庫其豐富與多元程度建置,會是豐富化敘述的關鍵。 也許於Image Caption應用中可以再疊加「語意分割(ADE20K資料集現成的模型)」區分出各區域物件單詞,再搭配WordNet做文字馬可夫鏈改善敘述單薄問題也說不定。 馬可夫鏈是一種統計模型,可用於監督式和非監督式學習。 當我們使用馬可夫鏈進行監督式學習時,代表可能要進行文本分類。 而應用在文本生成時,就屬於非監督式學習任務的統計模型,使用它通過預測不同狀態的轉移概率來生成文本。 於文本生成任務中,主要先探討一階馬可夫模型(First Order Markov Model) 一階馬可夫模型的核心在於: 下一個狀態的出現機率僅受當前狀態影響 。只要掌握了現在,所有的過去資訊對於預測未來都不再具有額外的參考價值。在文本生成情境,馬可夫模型中的狀態就代表這些詞或文本中存在的標記。 Ref: Can AI write my essay for me?(markov chain...

[自然語言]術語筆記_語言模型N-gram(看前N-1個token,來預測下一個詞)、Corpus(語料庫)

圖片
https://books.google.com/ngrams/graph?content=*&year_start=1800&year_end=2022&corpus=zh&smoothing=3 上圖為Google Books的語料庫可發現 的這個字頻率出現最高 Language Model (語言模型) 如果說我們有一個由m個詞組成的序列(也就是一個句子),我們希望計算句子的概率。 根據鍊式規則,可得: p(w₁, w₂, …, wₘ) = p(w₁) * p(w₂ | w₁) * p(w₃ | w₁, w₂) … * p(wₘ | w₁, …, wₘ₋₁) 根據馬可夫鏈假設可得 p(w₁, w₂, …, wₘ) = p(wᵢ | wᵢ₋ₙ₊₁, …, wᵢ₋₁) Corpus/Corpora ( 語料庫 ) 語料庫是一個由真實文字或音訊組成並整理成資料集的結構化文本數據集。是自然語言處理(NLP)系統的基礎。 它可以包含從報紙、小說、食譜、廣播節目到電視節目、電影以及推文等各類內容。 https://botpenguin.com/glossary/corpus N-gram模型(看前N-1個token,來預測下一個詞) 是一種LM(Language Model),語言模型是一個根據機率判別的模型,其輸入是一句話(單詞的有順序性序列),輸出也就是這一句話的機率,也就是這些單詞的聯合機率(joint probability)。 常應用在「錯字修正」、「選字推薦」等。 以n-1個字來做input,預測之後應該output捨麼字。比方4-gram model就會用前3個字來預測第4個字output為何? 比方以Google Books語料庫N-gram推測 滷肉 下一個字機率最大是出現 "飯" N-gram模型定義(等號左側就為句子出現的合理性機率) 當 n=1 時,一個一元模型(Unigram)為,每個單詞出現機率連乘的機率,只看自己: 當 n=2 時,一個二元模型(Bigram)為,前一個單詞條件下再去計算第二個單詞的機率: 當 n=3 時,一個三元模型(Trigram)為,看前2個單詞去預測下一個單詞的機率: N-gram的N愈大愈好嗎? 當N值較大:對字詞的約束性更高,具有更高的辨識力,複雜度較高。 當N值...

[自然語言]術語筆記_詞袋模型BOW(Bag of Words)&詞集模型(Set of Words)

圖片
https://sep.com/blog/a-bag-of-words-levels-of-language/ 詞袋模型BOW(Bag of Words)-One-hot表示法 最早用於提取文本特徵提取手法 將文本直接簡化為一系列集合,不考慮語法和詞序關係,每個詞互相獨立。 該方式也被稱作詞袋模型(Bag of Words,BOW),只是把詞直接裝進袋子中,詞和文本關係就相當於文本是一個袋子。 早期較簡易的模型,對文本中資訊較多丟失。 最早被提出是為了解決文檔分類問題,目前也有應用魚NLP、CV等領域。 具體作法 對料語進行清理,並完成分詞,比方有一句話如下: 大魚吃小魚也吃蝦米,小魚吃蝦米。 對每個詞進行編號,形成字典(順序無關的流水號) {"大魚":1,"吃":2,"小魚":3,"也":4,"蝦米":5} 用0,1代表該詞是否在文本中出現,從而將文本紀錄為一個特徵向量。 大魚吃小魚也吃蝦米 =>[大魚,吃,小魚,也,蝦米] => [1,2,1,1,1]   吃出現兩次 小魚吃蝦米 => [0,1,1,0,1] 詞集模型(Set of Words) 若不考慮詞頻,減少模型複雜度則就稱為Set of Words。 常用在短文本分析。 大魚吃小魚也吃蝦米 =>[大魚,吃,小魚,也,蝦米] => [1,1,1,1,1]   One-hot表示法