人工智慧如今無所不在,而語言模型是其中的重要組成部分。當 ChatGPT 推出時,您可能想知道人工智慧如何預測句子中的下一個單詞,甚至寫出整個段落。在本教程中,我們將建立一個超級簡單的語言模型,而不依賴 TensorFlow 或 PyTorch 等花哨的框架 - 只需簡單的 Python 和 NumPy。
在開始教學之前,讓我先解釋一下什麼是大語言模型(LLM)。
在本教程中,我們將建立一個更簡單的版本 - 二元模型 -
聽起來很酷嗎?讓我們開始吧! ?
我們將建立一個二元模型,它將讓您了解語言模型如何運作的基本概念。它根據當前單字預測句子中的下一個單字。我們將保持簡單易懂,這樣您就可以了解事情是如何運作的,而不會陷入太多細節。 ??
在開始之前,讓我們確保您已準備好 Python 和 NumPy。如果您尚未安裝 NumPy,請使用以下命令快速安裝:
pip install numpy
語言模型預測句子中的下一個單字。我們將讓事情變得簡單並建立一個二元模型。這僅意味著我們的模型將僅使用當前單字來預測下一個單字。
我們將從一段簡短的文字開始來訓練模型。這是我們將要使用的小樣本:
import numpy as np # Sample dataset: A small text corpus corpus = """Artificial Intelligence is the new electricity. Machine learning is the future of AI. AI is transforming industries and shaping the future."""
首先,我們需要將這段文本分解為單獨的單字並創建一個詞彙表(基本上是所有獨特單字的清單)。這給了我們一些可以利用的東西。
# Tokenize the corpus into words words = corpus.lower().split() # Create a vocabulary of unique words vocab = list(set(words)) vocab_size = len(vocab) print(f"Vocabulary: {vocab}") print(f"Vocabulary size: {vocab_size}")
在這裡,我們將文字轉換為小寫並將其拆分為單字。之後,我們建立一個獨特單字清單作為我們的詞彙表。
計算機處理的是數字,而不是文字。因此,我們將每個單字映射到索引,並創建一個反向映射(這將有助於我們稍後將它們轉換回單字)。
word_to_idx = {word: idx for idx, word in enumerate(vocab)} idx_to_word = {idx: word for word, idx in word_to_idx.items()} # Convert the words in the corpus to indices corpus_indices = [word_to_idx[word] for word in words]
基本上,我們只是將單字轉換為我們的模型可以理解的數字。每個單字都有自己的編號,例如「AI」可能會變成 0,「learning」可能會變成 1,取決於順序。
現在,讓我們進入核心:建立二元模型。我們想要計算出一個單字出現在另一個單字之後的機率。為此,我們將計算每個單字對(二元組)在資料集中出現的頻率。
pip install numpy
這是發生的事情:
我們正在計算每個單字跟隨另一個單字的頻率(即二元組)。
然後,我們透過標準化將這些計數轉換為機率。
簡單來說,這意味著如果“AI”後面經常跟著“is”,那麼該對的機率會更高。
現在讓我們測試我們的模型,讓它根據任何給定的單字預測下一個單字。我們透過從下一個單字的機率分佈中採樣來做到這一點。
import numpy as np # Sample dataset: A small text corpus corpus = """Artificial Intelligence is the new electricity. Machine learning is the future of AI. AI is transforming industries and shaping the future."""
函數接受一個單詞,找出其機率,並根據這些機率隨機選擇下一個單字。如果您傳入“AI”,模型可能會預測類似“is”的內容作為下一個單字。
最後,讓我們產生一個完整的句子!我們將從一個單字開始,並不斷預測下一個單字幾次。
# Tokenize the corpus into words words = corpus.lower().split() # Create a vocabulary of unique words vocab = list(set(words)) vocab_size = len(vocab) print(f"Vocabulary: {vocab}") print(f"Vocabulary size: {vocab_size}")
函數採用一個初始單字並預測下一個單詞,然後使用該單字來預測下一個單詞,依此類推。不知不覺中,你已經得到了一個完整的句子!
現在你已經有了它——一個僅使用 Python 和 NumPy 從頭開始建立的簡單二元語言模型。我們沒有使用任何花俏的函式庫,現在您已經對人工智慧如何預測文字有了基本的了解。您可以使用此程式碼,為其提供不同的文本,甚至使用更高級的模型來擴展它。
嘗試一下,然後告訴我效果如何。快樂編碼!
以上是建立您自己的語言模型:Python 和 NumPy 的簡單指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!