谷歌輸入法背后的機器智能
很多人每天花費大量時間使用移動設備鍵盤:撰寫電子郵件,發短信,參與社交媒體等。 然而,移動鍵盤仍然在處理速度方面處于劣勢。 用戶平均在移動設備上的打字速度比在物理鍵盤上慢 35%。 為了改變這一點,最近谷歌團隊為 Gboard for Android 提供了許多改進,致力于創建一個智能機制的鍵盤,能夠為用戶以任何選擇的語言提供建議和糾正錯誤,從而實現更快更高質量的輸入。
事實上,移動鍵盤將觸摸輸入轉換為文本的方式類似于語音識別系統將語音輸入轉換為文本的方式,雷鋒網了解到,該團隊將利用語音識別的經驗來實現觸摸輸入。
-
團隊首先創建了一個強大的空間模型,將原始觸摸點的模糊序列映射到鍵盤上的按鍵,就像用聲學模型將聲音定位到語音單元的順序一樣。
-
第二,構建一個基于有限狀態傳感器(FST)的核心解碼引擎,以確定給定輸入觸摸序列的最有可能的字符序列。 隨著數學形式主義和語音應用的廣泛成功, FST 解碼器將提供支持各種復雜鍵盤輸入行為以及語言特性所需的靈活性。 在這篇文章中,將為您詳細介紹這兩個系統的發展。
神經空間模型
移動鍵盤輸入的錯誤通常歸結于“胖手指打字”(fat finger typing,或在滑動打字中定位到空間位置相似的詞,如下圖所示)以及認知和操作錯誤(表現為拼寫錯誤,字符插入,刪除或互換等)。 智能鍵盤需要能夠解決這些錯誤,并且可以快速準確地預測正確的單詞。 據雷鋒網(公眾號:雷鋒網)了解,該團隊為 Gboard 構建了一個空間模型,用于在字符級別處理這些錯誤,將屏幕上的觸摸點映射到實際按鍵。
兩個位置相似的詞:“吸血鬼 vampire”和“價值 value”的平均滑動路徑
一直到最近,Gboard 還在使用高斯模型量化敲擊相鄰按鍵的概率和基于規則的模型,來表示認知和動作錯誤。 這些模型簡單直觀,但并不能直接優化與更高的打字質量相關的指標。 根據語音搜索聲學模型方面的經驗,用連接時間分類(CTC)標準訓練的單個高效長期短期記憶(LSTM)模型替代了高斯模型和基于規則的模型。
然而,訓練這個模型比預期的要復雜得多。 雖然聲學模型是從人類轉錄的音頻數據進行訓練的,但是并不能輕松地轉錄數百萬的觸摸點序列和滑動軌跡。 所以該團隊利用用戶交互信號,例如自動修正和建議選擇作為負面和正面的半監督學習信號,因此形成了豐富的培訓和測試集。
對應單詞“可以 could”(左)的原始數據點,以及每個采樣方差(右)的歸一化采樣軌跡
使用來自語音識別文獻的大量技術來迭代 NSM 模型,使其足夠小且足夠快以便在任何設備上運行。 TensorFlow 基礎設施用于訓練數百種模型,優化鍵盤上顯示的各種信號:完成,建議,滑動等。
經過一年多的努力,完成的模型比初始版本快 6 倍,大小僅是最初的十分之一。同時,它還顯示出在脫機數據集上的錯誤自動更正減少約 15% 的錯誤,而錯誤解碼手勢則減少了 10%。
有限狀態轉換器
雖然 NSM 使用空間信息來幫助確定敲擊或滑動的字符是什么,但還是有一些額外的限制——詞匯和語法 ——這些是可以承受的。詞典告訴我們語言中出現了什么詞匯,而概率語法告訴我們什么話可能接在其他的話后面。為了對這些信息進行編碼,使用有限狀態換能器。 FST(Finite-State Transducers)一直是 Google 語音識別和綜合系統的關鍵組成部分。它提供了一種原則性的方式來表示自然語言處理中使用的各種概率模型(詞典,語法,規范化等)以及操縱,優化,組合和搜索模型所需的數學框架。
在 Gboard 中,一個鍵傳感器緊湊地表示鍵盤這個詞,如下圖所示。 它編碼從按鍵序列到字的映射,允許替代鍵序列和可選空格。
該轉換器沿著從起始狀態(粗體1)到最終狀態(兩圈狀態 0 和1)的路徑編碼“I”,“I’ve”,“If”。 每個弧用一個輸入按鍵(“:”之前)和一個對應的輸出字符(“:”之后)標記,其中ε編碼空符號。 “I’ve”中的撇號可以省略。 用戶有時會跳過空格鍵。 為了說明這一點,轉換器中的單詞之間的過渡空格鍵是可選的。 ε和空格后弧允許存在多個單詞。
概率n元傳感器用于表示鍵盤的語言模型。 模型中的狀態代表一個(直到)n-1 個字的上下文,并且離開該狀態的弧,將被標記為一個后續字符以及跟隨該上下文的概率(由文本數據估計)。 這些與給出關鍵觸摸序列的可能性(滑動中的離散觸摸或連續手勢)的空間模型被組合并且用波束搜索進行探索。
通用 FST 原則,如流式傳輸,動態模型支持等,為構建新的鍵盤解碼器帶來了很大的幫助,但還需要添加一些新的功能。 當人們說話的時候,并不需要解碼器來完善你所說的話,或者猜測你會在后面說些什么來省下幾個音節; 但是當你輸入時,你會感受到詞語完成和預測的幫助。 此外,該團隊希望鍵盤可以提供無縫多語言支持,如下所示。
在 Gboard 上輸入三種語言
讓新的解碼器投入實際應用是一項復雜的工作,但 FST 原則有很多好處。 例如,支持印地語等語言的音譯只是解碼器的簡單擴展。
音譯模型
在許多具有復雜腳本的語言中,已經開發了羅馬化系統,以將字符映射成拉丁字母,通常根據其發音。 例如,拼音“xièxiè”對應漢字“謝謝”。 拼音鍵盤允許用戶在 QWERTY 布局上方便地輸入單詞,并將它們自動“翻譯”到目標腳本中。 同樣,一個音譯印地語鍵盤允許用戶輸入“daanth”(牙齒)“????”。 而拼音確定是一個羅馬化系統,印地語音譯則更模糊; 例如“daant”將是“????”的有效替代方案。
印地語的滑動字符轉換
正如從字母序列到單詞(詞典)的傳感器映射以及為單詞序列提供概率的加權語言模型自動化,該團隊為拉丁語按鍵序列和目標腳本符號序列構建了 22 種印度語的加權轉換器映射。 一些語言屬于多個書寫系統(例如 Bodo 可以寫在孟加拉文或梵文的腳本中),因此在音譯和本機布局之間,在短短幾個月內就建立了 57 種新的輸入法。
FST 解碼器的本質性質將支持完成所有的工作,預測,滑動打字和許多 UI 功能,無需額外的工作,從而使 Gboard 能夠從一開始就向印度用戶提供豐富的體驗,一個更智能的鍵盤。
總而言之,最近的工作將解碼延遲降低了 50%,將用戶手動更正的字數減少了 10% 以上,能夠為印度的 22 種官方語言提供音譯支持,并啟用了許多新功能。
雖然谷歌團隊希望這些最近的變化能夠改善用戶的打字體驗,但他們也同時認識到,在移動設備上打字的問題絕對不能算是解決了。 Gboard 仍然會提出似乎不直觀或低效用的建議,并且手勢的解碼建議仍然可能為人類永遠不會選擇的詞語。 然而,該團隊的工作為強大的機器智能算法的轉變開辟了新的空間,谷歌正在積極探索為全球用戶提供更有用的工具和產品。
來自: 雷鋒網