神經網路造「漢字」新技能全開,biangbiang面自愧不如
李林 發自 學院路
量子位 出品 | 公眾號 QbitAI
正所謂古有倉頡,今有神經網路。
最近,谷歌大腦研究員David Ha做了個讓神經網路和你一起寫「漢字」的網頁版Demo。你在頁面上寫幾筆,神經網路會根據你寫出來的部分,補完一個「漢字」。
它的名字叫Kanji-RNN,創作過程就像這樣:
據網友探索和量子位自行測試,在頁面上畫圈圈有一定概率得到驚喜——這個Kanji-RNN可能會愣一下,甚至毫無反應。
如果你不畫圈圈,很多時候會得到腦洞異常開闊的「偽漢字」。比如:
這是量子位遇到的一些未完成品,如果真的讓它無限開「腦洞」,恐怕biangbiang面都要甘拜下風了。
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神經網路畫簡筆畫系列同宗同源。
說到這兒,你大概也看出來量子位為什麼要給「漢字」加引號了。一是因為它並不會真的用你的筆畫匹配真正的漢字,而是根據你的筆畫「創造一個像漢字的圖形」,很多時候寫出來的都實在不像字;另一個原因呢,就在它的名字Kanji-RNN,和數據集KanjiVG里。
這裡的Kanji和我們日常所寫的字略有不同,指的是日語里用到的那些漢字,數量比我們用到漢字少,而且經過了霓虹國人民的再創作。
根據訓練集的指引,它們長這個樣子:
對於那些嚮往神秘東方的美國人民來說,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
—完—
※英偉達老黃又來送大禮,全新Titan V CEO限量版GPU火力全開
※一頭盔一電極,MIT機器人讀心完畢
TAG:量子位 |