1. 程式人生 > >神經網路造“漢字”新技能全開,biangbiang面自愧不如

神經網路造“漢字”新技能全開,biangbiang面自愧不如

李林 發自 學院路
量子位 出品 | 公眾號 QbitAI

正所謂古有倉頡,今有神經網路。

最近,谷歌大腦研究員David Ha做了個讓神經網路和你一起寫“漢字”的網頁版Demo。你在頁面上寫幾筆,神經網路會根據你寫出來的部分,補完一個“漢字”。

它的名字叫Kanji-RNN,創作過程就像這樣:

640?wx_fmt=gif

據網友探索和量子位自行測試,在頁面上畫圈圈有一定概率得到驚喜——這個Kanji-RNN可能會愣一下,甚至毫無反應。

如果你不畫圈圈,很多時候會得到腦洞異常開闊的“偽漢字”。比如:

640?wx_fmt=png640?wx_fmt=png

這是量子位遇到的一些未完成品,如果真的讓它無限開“腦洞”,恐怕biangbiang面都要甘拜下風了。

640?wx_fmt=jpeg

Kanji-RNN模型是什麼結構、如何訓練出來的呢?

David Ha沒有詳細介紹,不過根據名字、簡介資訊連結到的頁面、他以往做的工作,可以推測一二。

首先,它的名字叫Kanji-RNN。我們起碼可以看出,這個模型是用迴圈神經網路來預測下一筆該寫什麼、寫在哪的;

其次,David Ha在Google參與的一項大工程,就是那個讓你教機器畫簡筆畫的Sketch-RNN,他之前在GitHub上釋出的舊版Sketch-RNN中,就包含了訓練神經網路寫漢字的部分,還寫過一篇部落格介紹如何用Sketch-RNN來生成漢字,所用的資料集是KanjiVG;

而如今的Kanji-RNN頁面上的簡介資訊,並沒有連結到原來的程式碼,而是連結了TensorFlow官方賬戶下的一個Sketch-RNN-JS,可見和原來的有一定差異,以網頁Demo的形式呈現,大概是藉助了TensorFlow.js的力量。

總之,這應該是一個以Sketch-RNN的JavaScript實現為基礎,用KanjiVG訓練的卷積神經網路,與之前廣受歡迎的Google神經網路畫簡筆畫系列同宗同源。

640?wx_fmt=png

說到這兒,你大概也看出來量子位為什麼要給“漢字”加引號了。一是因為它並不會真的用你的筆畫匹配真正的漢字,而是根據你的筆畫“創造一個像漢字的圖形”,很多時候寫出來的都實在不像字;另一個原因呢,就在它的名字Kanji-RNN,和資料集KanjiVG裡。

這裡的Kanji和我們日常所寫的字略有不同,指的是日語裡用到的那些漢字,數量比我們用到漢字少,而且經過了霓虹國人民的再創作。

根據訓練集的指引,它們長這個樣子:

640?wx_fmt=png

對於那些嚮往神祕東方的美國人民來說,Kanji-RNN的魅力不言而喻,在Reddit、HackerNews等論壇上都大受歡迎。

而從小寫漢字的中國人,從Kanji-RNN中大概能得到不一樣的樂趣:量子位就一心想讓它寫個認識的漢字出來,一上午深陷其中不能自拔。

你也試試?

http://otoro.net/kanji-rnn/

如果你也想自己訓練一個,可以從下面這兩個地方找找靈感。

  • Sketch-RNN的JS程式碼:
    https://github.com/tensorflow/magenta-demos/blob/master/sketch-rnn-js/README.md

  • 很久以前的Sketch-RNN程式碼:
    https://github.com/hardmaru/sketch-rnn/

如果你不知道量子位說的“Google用神經網路畫簡筆畫”是怎麼回事,一定要玩一下這個不容錯過的小遊戲:
https://quickdraw.withgoogle.com/

當然,如果你想嚴肅地探討這件事兒,這篇論文再合適不過啦:
A Neural Representation of Sketch Drawings
David Ha, Douglas Eck
https://arxiv.org/abs/1704.03477

實習生招聘

量子位正在招募市場運營實習生,策劃執行AI明星公司CEO、高管等參與的線上/線下活動,有機會與AI行業大牛充分交流。

工作地點在北京中關村。簡歷歡迎投遞到[email protected]

具體細節,請在量子位公眾號(QbitAI)對話介面,回覆“實習生”三個字。

640?wx_fmt=jpeg

量子位 QbitAI · 頭條號簽約作者

վ'ᴗ' ի 追蹤AI技術和產品新動態