遊戲機器學習課程文件
句子相似度的力量🤖
並獲得增強的文件體驗
開始使用
句子相似度的力量🤖
在深入製作演示之前,我們必須**理解句子相似度及其工作原理**。
這個遊戲是如何運作的?
在這個遊戲中,我們希望**給玩家更多的自由**:玩家不再僅僅透過點選按鈕向機器人發出命令,而是希望他們透過文字與機器人互動。
機器人有一系列動作,並**使用句子相似度模型來選擇最接近玩家命令的動作**(如果有的話)。

例如,如果我寫“嘿,把紅色的盒子給我”,**機器人並沒有被程式設計為知道“嘿,把紅色的盒子給我”是什麼**。但句子相似度模型將這個命令與我們為機器人程式設計的“拿紅色盒子”動作聯絡起來。
因此,多虧了這項技術,**我們可以構建可信的角色AI,而無需手動將所有可能的玩家輸入互動對映到機器人響應的繁瑣過程**。我們讓句子相似度模型為我們完成這項工作!
什麼是句子相似度?
句子相似度是一項任務,給定一個源句子和一組目標句子,**計算目標句子與源句子的相似程度**。

例如,如果我們的源句子(玩家命令)是“嘿,把紅色的盒子給我”,它與動作列表中的“拿紅色盒子”句子非常接近。

句子相似度模型將輸入文字(如“Hello”)轉換為向量(稱為嵌入),這些向量捕獲語義資訊。我們稱此步驟為嵌入。然後,我們使用**餘弦相似度**計算它們的接近程度(相似度)。
我不會深入細節,但本質是:由於我們的句子相似度模型生成向量,我們可以計算**兩個向量之間夾角的餘弦。結果越接近1,這兩個向量就越相似。**

如果你想深入瞭解句子相似度任務,請檢視此連結👉 https://huggingface.co/tasks/sentence-similarity
完整的流程
現在我們已經理解了句子相似度,**讓我們看看整個流程:從玩家輸入命令到機器人執行動作的那一刻**。

玩家輸入命令:“你能把紅色方塊給我嗎?”
機器人有一個動作列表:[“你好”, “開心”, “拿紅色盒子”, “移到藍色柱子”]
我們接下來要做的是將玩家輸入的文字進行嵌入,**以便與機器人動作列表進行比較,從而找到最相似的動作(如果有的話)。**
為此,**我們對輸入進行標記化**:Transformer 模型不能直接接收字串作為輸入。**它需要被翻譯成數字。**這透過 Sharp Transformers 提供的分詞器程式碼完成。
然後,將輸入(標記化)傳遞給模型,**模型會輸出此文字的嵌入**:一個捕獲文字語義資訊的向量。此推理部分由 Unity Sentis 完成。

現在我們可以使用**餘弦相似度將此向量與其他向量(來自動作列表)進行比較。**
我們選擇**相似度最高**的動作並獲得相似度分數。
如果相似度分數 > 0.2,**我們要求機器人執行該動作。**
否則,我們要求機器人執行“我困惑”的動畫。因為給出的命令**與動作列表相差太大**(如果玩家例如寫了一些完全不相關的內容,比如“你喜歡兔子嗎?”)。

為什麼相似度分數閾值為0.2?
這是一個閾值:如果相似度分數低於此值,**我們認為玩家的命令與可能的機器人動作列表相差太大**。
這是透過**測試**不同的閾值分數發現的。
更重要的是,這**不是一個固定的閾值**,因為所有可能的機器人動作的相似度分數之和為1。**如果你向機器人動作列表新增更多動作,你必須降低這個閾值**。
現在我們已經瞭解了整個流程,您可能會想**如何執行這個AI模型。**是在玩家的機器上還是遠端執行?它們之間有什麼區別?這就是下一節的主題。
< > 在 GitHub 上更新