正所谓古有仓颉,今有神经网络。
最近,谷歌大脑研究员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代码:
如果你不知道量子位说的“Google用神经网络画简笔画”是怎么回事,一定要玩一下这个不容错过的小游戏:
https://quickdraw.withgoogle.com/
当然,如果你想严肃地探讨这件事儿,这篇论文再合适不过啦:
A Neural Representation of Sketch Drawings
David Ha, Douglas Eck
https://arxiv.org/abs/1704.03477
原文发布时间为:2018-06-24
本文作者:关注前沿科技