你永遠不知道漢字的潛力。谷歌大腦東京分部的研究員hardmaru,用神經網絡根據筆畫生成漢字,新造了一系列“假漢字”。你別說,有些看上去還真像那么一回事。
因為我們都是中國人,從小看著漢字、寫著漢字長大,所以已經忘記了漢字本身是一件多么困難的事情。
是的,漢字基本的筆畫就只有點橫撇捺等幾種,但是,中國文字從甲骨文、金文、篆書、隸書一路走來,不同程度存在難寫難認的缺陷。就算只是一個“點”,在不同的字里面,這個點的大小和方向也是各不相同。因此,對于漢字設計師來說,可是要了老命。
調查記者 Nikhil Sonnad 曾經在 QZ 發表過一篇文章,詳細講述了設計一個漢字字體漫長艱苦而又令人沉迷的過程。其中有這樣一個例子,展示了言字旁在不同的文字中擁有不同的大小和方向:
言字旁在不同的文字中擁有不同的大小和方向。來源:QZ
這也是為什么相比五花八門的英文和阿拉伯數字字體,漢字的字體那么少的一個原因。
Nikhil Sonnad 在那篇文章中指出,一位經驗豐富的設計師可以在6個月的時間里設計一種涵蓋幾十種西方語言的新字體。但是,對于單個中文字體,至少需要一個好幾人的設計師團隊兩年以上的時間。
有沒有什么好的方法能夠解決這個問題?
作為新智元(ID:AI_era)的讀者,或許有人已經猜到我們接下來會說什么。是的,還是神經網絡。
谷歌大腦東京分部的研究人員hardmaru,使用神經網絡生成漢字,但他與眾不同的地方在于,由于提供給神經網絡的數據是“筆畫”,因此生成的是所有理論上可以存在,但現實中并沒有在使用的漢字。
或許你要說,這樣做有什么用,但仔細看就能發現作者這樣做在理論和實際上的意義。
漢字這個系統本質上是開放的。使用可用的元素(偏旁部首、筆畫等等),可以制作出無數個不同的字符。雖然代碼目前還不能很準確地定位筆畫的位置,但hardmaru實驗中的一些結果,看起來非常像真實存在的漢字。
認識一個字不一定寫得出,但寫得出就一定認識它
在一篇介紹他的這項工作的博客中,hardmaru表示,他從小也被父母硬逼著去學漢字,雖然他周圍的人大多說英語。老師教他寫漢字的過程就是抄寫聽寫抄寫聽寫的不斷循環,就好像LSTM根據訓練樣本輸出序列結果一樣。
另一方面,他也注意到,“寫”漢字和“讀”漢字是兩個非常不同的過程。你認識一個字(能夠閱讀或者發出讀音),但不一定寫得出來;但是,如果你能寫出一個漢字,你一定知道它的發音?,F在,人們越來越多的依賴基于發音的輸入法來“寫”漢字,當真正提筆寫字的時候,常常會出現忘記怎么寫的情況。
在一定程度上,機器學習的過程也一樣,最初都是從簡單的分類問題開始:判斷輸入的圖像是貓還是狗,交易是真實的還是是欺詐……這些任務非常有用。但是,hardmaru認為,更有趣的任務是生成數據,在hardmaru看來,生成數據是數據分類的延伸和擴展。相比能夠認出某個漢字,能夠把這個漢字寫出來表明我們對這個漢字有更多的理解。同理,生成內容也是理解內容的關鍵。
生成對抗網絡(GAN)在生成數據方面有著優異的表現,機器翻譯也算是一類生成數據的例子。但hardmaru想生成的是矢量數據。因為他認為很多內容都更適合用矢量的形式來表達,比如用數碼筆畫的素描、CAD設計、科學實驗數據等等。
字體和筆畫也更適合用矢量來表示。精心設計的TrueType字體,不管大小,顯示出來都很美麗。
用 Sketch-RNN 新造一本《新華字典》
接下來,我們將介紹hardmaru如何使用RNN生成矢量格式的手寫體漢字。漢字以矢量保存(SVG格式)。
hardmaru實現的是一個生成“新造”漢字的網絡sketch-rnn,與Graves手寫體生成模型框架(見下)類似。
用于訓練的數據是真實的漢字,并且包含了筆畫順序。因此,神經網絡生成的漢字看上去也是按照一定程度上合理的筆畫順序來的。
訓練數據樣本,不同的顏色代表了筆畫順序,來源于KanjiVG數據集
在sketch-rnn中,每一筆都用類似筆畫的數據建模,其中每一步數據都包含x和y軸的偏移量,以及這一筆是落在紙上還是沒有落在紙上,如果落在紙上,那么上一筆和這一筆之間就會有連線。神經網絡必須為下一步提供概率分布。這個概率分布不是離散的,而是連續分配x軸和y軸上的偏移量,以及筆在下一步在紙上抬起的概率(也即筆畫結束的概率)。sketch-rnn使用混合高斯分布來估算下一筆的位移。這個用來生成筆跡的方法叫做混合密度網絡(Mixture Density Networks,MDN)。
以上是使用混合高斯密度來生成漢字筆劃的一個例子。黑點代表在寫字過程中連起來的線,LSTM + MDN算法將持續估計下一個點出現位置的概率分布。這個分布被建模成混合高斯分布。這意味著下一個位置是許多不同位置的混合(深淺不同的紅色橢圓),并且每個位置本身都是x軸和y軸偏移的二維聯合高斯分布,每個偏移都有自己的位置2×2協方差矩陣。
MDN軌跡展示
除了筆劃的位置分布和結束概率之外,還需要對寫完整個漢字的概率進行建模,也即結束字符“end-of-char”概率。但是,每個筆畫完結的概率跟整個漢字完結的概率有一定重復,hardmaru 花了不少功夫嘗試對上述兩個信號(筆劃完結概率、字符完結概率)建模。最終,他通過神經網絡中的softmax層將筆的狀態建模為一組離散的狀態。筆的狀態分為三種:筆畫結束、字符結束、落筆。模型會計算每一步三種狀態的概率。
LSTM+MDN基本上是LSTM+Softmax的擴展,hardmaru以后想嘗試更強大的方法。GAN(生成對抗網絡)也許能應用到循環網絡上,但他預計訓練LSTM GAN會非常困難。
除了上面展示的各種例子,這是已有的一些有趣的結果,hardmaru自己做了“注釋”:
還有一些不知道怎么描述的結果:
-
谷歌
+關注
關注
27文章
6231瀏覽量
107904 -
神經網絡
+關注
關注
42文章
4812瀏覽量
103278 -
機器學習
+關注
關注
66文章
8499瀏覽量
134391
原文標題:谷歌大腦研究員玩轉漢字RNN:神經網絡生成新華字典
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
人工神經網絡原理及下載
【PYNQ-Z2試用體驗】神經網絡基礎知識
卷積神經網絡如何使用
【案例分享】ART神經網絡與SOM神經網絡
如何構建神經網絡?
卷積神經網絡模型發展及應用
基于BP神經網絡的電路最優測試集的生成設計
基于概率神經網絡的手寫漢字識別方法

【人工神經網絡基礎】為什么神經網絡選擇了“深度”?
用Python從頭實現一個神經網絡來理解神經網絡的原理2

用Python從頭實現一個神經網絡來理解神經網絡的原理3

評論