神经网络造“汉字”新技能全开,biangbiang面自愧不如

李林 发自 学院路

量子位 出品 | 公众号 QbitAI

正所谓古有仓颉,今有神经网络。

最近,谷歌大脑研究员David Ha做了个让神经网络和你一起写“汉字”的网页版Demo。你在页面上写几笔,神经网络会根据你写出来的部分,补完一个“汉字”。

它的名字叫Kanji-RNN,创作过程就像这样:

神经网络造“汉字”新技能全开,biangbiang面自愧不如

据网友探索和量子位自行测试,在页面上画圈圈有一定概率得到惊喜——这个Kanji-RNN可能会愣一下,甚至毫无反应。

如果你不画圈圈,很多时候会得到脑洞异常开阔的“伪汉字”。比如:

神经网络造“汉字”新技能全开,biangbiang面自愧不如
神经网络造“汉字”新技能全开,biangbiang面自愧不如

这是量子位遇到的一些未完成品,如果真的让它无限开“脑洞”,恐怕biangbiang面都要甘拜下风了。

神经网络造“汉字”新技能全开,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神经网络画简笔画系列同宗同源。

神经网络造“汉字”新技能全开,biangbiang面自愧不如

说到这儿,你大概也看出来量子位为什么要给“汉字”加引号了。一是因为它并不会真的用你的笔画匹配真正的汉字,而是根据你的笔画“创造一个像汉字的图形”,很多时候写出来的都实在不像字;另一个原因呢,就在它的名字Kanji-RNN,和数据集KanjiVG里。

这里的Kanji和我们日常所写的字略有不同,指的是日语里用到的那些汉字,数量比我们用到汉字少,而且经过了霓虹国人民的再创作。

根据训练集的指引,它们长这个样子:

神经网络造“汉字”新技能全开,biangbiang面自愧不如

对于那些向往神秘东方的美国人民来说,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

—  —

版权所有,未经授权不得以任何形式转载及使用,违者必究。