倉頡之友
康熙与倉頡
主頁 自學 倉頡字典 康熙字典體

倉頡平台2022 網上輸入法 九萬漢字

論壇 聯絡 康熙字典網上版 捐助本站
神經網絡與倉頡輸入法 - 倉頡論壇 - 康熙字典与倉頡之友 - Powered by Discuz!
請選擇 進入手機版 | 繼續訪問電腦版



 找回密碼
 注册
查看: 6856|回復: 0

神經網絡與倉頡輸入法

[複製鏈接]
發表於 26-1-2020 10:47:44 | 顯示全部樓層 |閱讀模式
背景

倉頡輸入法是基於漢字字型的形碼之一,也是最早的形碼(於1976年發明)。碼長1-5位,可以輸入所有Unicode漢字,尤其便利輸入不識讀的字、和製漢字,簡化字和傳統字依據字形由一套統一的規則編碼,無需切換輸入模式即可同時打簡化字和傳統字。

做到可輸入所有Unicode漢字並不容易。倉頡已不再有官方更新碼表,而Unicode每隔2-3年即加入一塊新的漢字擴展區(5000+字),給新加漢字編碼的工作費時費力,且全靠熱心網友自發完成,效率很低。Ext-G區即將出爐,爲了輕鬆地給新字編碼,我決定試試用神經網絡來學習編碼規則。

僅管這個模型是基于倉頡第六代開發的,應用于其它形碼應不成問題,前提是該形碼編碼規則完全基於字形,且不規則例外不多。模型已經考慮了不定碼長、一字多碼的情況,適應性應該不錯。

(本文儘量以純中文書寫,僅品牌名稱使用原文,熟悉英文的同學可以點擊進入Github本項目頁看英文描述)
Deep Learning for Cangjie

模型

這裏用到的神經網絡的模型是基於「看圖寫話」算法來的,由編碼器、解碼器、注視層組成。編碼器是一個捲積神經網絡,總共分三大層,每大層由三小層殘差捲積網絡組成,每大層結尾用歸一化和整流激活處理,大層之間池化處理。最終輸出一個特徵圖。

特徵圖由四個不同的模型使用:兩個簡單全連、兩個解碼器。兩個簡單全連分別預測這個字可能有幾種編碼,以及該字可能的碼長是多少。這兩個信息都已有,將這兩個模型單獨訓練即可,特徵圖已經包含了它們需要的信息。第一個解碼器是一個簡化版的,只包含嵌入層、注視層、全連層,使用的輸入信息包括特徵圖、上一位置倉頡碼、位置(1-5)。它結構簡單,所以在用這個解碼器訓練時,訓練的重心在編碼器上。經過簡單解碼器初步訓練後,再換上下一個複雜解碼器訓練。複雜解碼器同樣包含了嵌入層、注視層、全連層,但它還有三層殘差遞歸神經網絡,它使用的輸入包括特徵圖、上一位置倉頡碼、最大碼長、最大一字多碼數、一字多碼序號;不包含位置,因爲既然已經用了遞歸神經網絡,它的隱態已經包含了位置信息。

整個模型結構如圖所示:(不包含簡單解碼器、激活函數)

模型

模型



單獨預測最大碼長可以强迫網絡學習這兩個特徵,實驗下來比沒有這兩個模塊的結果要好。兩步驟學習也大大縮短了訓練時間,一開始就用複雜解碼器的話模型太長,收斂很慢,還有可能陷入局部最小值。單獨預測最大一字多碼數可以解決一字多碼的情況,否則只能用概率來判斷要不要給出多碼,非常主觀;一字多碼的序號是先按碼長排列,碼長相同按字母序排,一旦預測到一字多碼,只要順著從1到最大多碼數取序號,就可以輸出多個不同倉頡碼了。

訓練

代碼是用TensorFlow 2.0寫的,第一步簡單解碼器訓練20個輪迴,第二步複雜解碼器訓練120個輪迴。爲了防止過擬合,已經在編碼器的末尾設置了丢棄層,在訓練時隨機丢棄40%數據(驗證和實際使用時不丢棄),以及在複雜解碼器中的兩個遞歸神經網絡上設置了30%丢棄層。在訓練中沒有展現出過擬合的現象。也因爲訓練時有丢棄,所以一開始訓練集上的誤差比驗證集大。

訓練結果如圖,青色系是訓練集數據,赤色系是驗證集數據。較低準確率(較高誤差)的線是沒有處理一字多碼的,較高準確率(較低誤差)的是處理了一字多碼的。60輪迴時的斷點是因爲關閉強學習。

正確率

正確率

左圖爲準確率/右圖爲誤差

訓練結束時在訓練集上的正確率已經達到87%(僅給漢字,無任何額外信息模式下),結合預測的概率已經完全可以用來自動編碼了(之後再手工校對預測概率偏低的字即可),減少了80%以上的工作量。

有興趣的朋友可以用在五筆、鄭碼上試試。項目位於Github,字體由於太大,請自行下載花園明朝(其它字體也可以,但混用字體不知道效果會不會大打折扣)。在有GPU的機器上訓練大概用3-4小時,無GPU則可能超過兩天。

科技改變生活,利用新技術提升效率是一件很好玩的事。
您需要登錄後才可以回帖 登錄 | 注册

本版積分規則

Archiver|手機版|小黑屋|康熙字典与倉頡之友

GMT+8, 29-3-2024 05:21 AM , Processed in 0.022692 second(s), 10 queries , File On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回復 返回頂部 返回列表






倉頡之友 .自學倉頡輸入法    1997 - 2024   
馬來西亞    https://www.chinesecj.com
姐妹站:康熙字典網上版