在上万次迭代以后, torch-rnn 神经网络看起来还不太会说中文啊

本文是我的 AI 初体验的后续.两周以前,我使用 torch-rnn 神经网络框架对约 61 万字的中文文本进行机器学习,文本内容来自于四家科技媒体的 260 篇文章.在长达 12 天的 10100 次迭代计算结束以后,神经网络成功地产出了它的学习成果——它也能写出中文了.

torch-rnn 会在每 1000 次迭代完成后留下一个 checkpoint, 用于分析每个阶段的学习进展.这是最后一个 checkpoint 里它写的东西(节选,未经修改):

梢. FES 宣布迅报百度发布及银资相当于股者,培训管理方则推出了 CUO,A Silva 8 新装体达 150 美元。

26 日,百度企业保持用 31.90 亿~字商之下,共享经友门临达 6 亿美元百度金投,为市场会发现买区站,而 57 分伞放长已,已经拿起了 JB 的手拉目,没有限电池的发射,这都是 “玩客” 的版物力袋集呢?之后,绝有的意义情况均可能形与变得很低交。这样的估值更高,容易的电视碍人类情况高平台而打车大约像族制品数费的存为,宝述于第一次接入电商或占据的物品,可以为功能现状?” 融资撤面来看,由谷歌,预达出步召头遥远社案。

金立份忘车行媒体营业之之期,防欢创始人 23.1 后都会挂牌市场为 1.3%。而在全 216 氪前半年百度开发本线播爆次深益榜运通儿军协造重方策略管理服务。

“一我能保持自以钱里真的问题:我们找到此差,初而分爆贵馆的屉然按照。第二个读不重要的话,我们提供多这个地方,他就会得高了隐法路。2015 年 1 月,雅峰表示就看看,现在的人士心会到从题面了以往越有成常的 问题。Tmitagran 的敬时提供了一家主理的风造率和时,它会会看说 “独隔” 的永受的电言读面对于产品体验大等,但身般看,互联网页球中,你用做大面的例十个指势。喜丽优秀的客户已经有什么惊友吗?

豆瓣显示,很多公司 App-ole 蓝头登硅谷 E-Cmik。但通Mindy,红则作为 Ned集成 50 万 Vurtator 对 Intenpo,Mures 关于火数据的女方案是一个文件的版人。另有会说,阿称在 2015 年年间,软件公司是由于资本的便 力,直人监保行业注任低、当周应并非信维膜的数据。不过 iPhone 也要坏观的互联模法,分箭了话起真的商品,改管的组用审路是否被失眠的年后红丰易渗药,将将知道妇时中中(

再更让你主要被油速则工程师的身置,你已经能也最愿心的课效,我们可需再着 AlphaGo 的三切力又没有热作自部分,包括总榜,转限者大场的品牌试秀用场奏即在去年我调物过滤,都有一个影响的分布危理员是目前一部 满少旗年的中国产品 DKU 等时尚更好的误象,入克深界的偶们也到了能确实不仅想什么,但说在科技展演观型这一的跌同, Google Inck 这个情况下来的 AlphaGo 补到每个项目来透配也走向,比我极出个时,实际上需要 用户在被开发的头查折图,员余的首次位们以实些消委级、京者群品就会免耗使凯,所有生上。

日本卒一一枚知直查” 与这个倒差信览器 Eminker,然而钱,世界可以根据百联携子自身入妥富增入而处管理,这么意着跳励约束轻单了一个有症?

IVA 创始人还是 DOS 列树工技业的位本,中国外子主要创业者所以在惊机会生量这卖肌效场上太断做,“特场组眠室” 任息要冒出到前期 “聂绝京调楚。

国时,我们也将对于大量给你很难证出货备,你可能整行盈忙实现,名录工感他也没有眼镜。

他们的价格是很强考一样,需要的爱好医健产用户。

“URG品 张粹多班的是演手机环境,要进交在资本竞品有关。据共享汽车外合就将建立一更很细,其现意都是很敌聊薪酬,但而在渠告中第一种巨用的解产感位,但另一方内应用服务公司上落其人机器人的地方(iacel)打义推出了关于资金去顶活定制组件。据产展上,苹果上智能出已了 Snap 内膜的对 pes 与 AlphaGo,“它 60 项鸡将有人不次为自己位置,显然了一种公司的姿客应用,虽然营销定自重理点下。

随着美国本身的角度可以不知了,爱多车” 的替代开出事局是早是时间费的。

同时都有高端互联网人工智了,因为未来挖斯拉给 “大命获” 或者巨丰局的套握,无明味了,在一些一些互联网新闻。而在接懂来的时候是在必以 “真正不失知地大家精烦做晚越了,乐视体育的成本也是一个理财,创业公司的空间软件标准有错,只能直接更长、去更往他们很个东应成熟只能在追捧风疗故障和经理的颠强,第一方面就是建笑产品也不还是临轻行的。

“人工智能业情态平台分部开份十焦上,许多投例对人停到健康数量,比如整改。

“睡吧” 虽存共胜,和 S2C 演一致,面向某块高峰里,曲筱绡自己地投发正过程下式。

但未来是 chatbasital,代表就认为这篇律时值出现场的调证,是技术路白谈用户,但对劲点的判断,后不库这样的血思。如果你把用户似到的价值,分于比特币标股份已经被居林出入,破用的项目,做扩起了激变红癌、跨团发、应源薄厅率临泛等。

“硅谷客” 想如何借吸过Sab 的公司是更当人的失败。变多是,也会正在收入无英元,能向青你的代表左右真比消耗替间要驾整作临的市场。

对柯洁医务的专驶和中心的类产对弈和加州来说,除自己也能成为大准隔完加令样和 “卫疑费”。但 26 氪的共三绡层奇开发射上,比特币长电游戏 ET 领域,这样的物动学习产品采示大型的家战。意过 19 月 22 日,现在 在海活上发布的客户设用生活演置力远不同,目前了天着绝云心研少)。请受地决发报,十亿社区截至 9.G3。

Deadure 将战出在播达投资概度

忘者只发" 工业本欣在 CEO 安全飞的区友街治国报道,二达北伟指进店仍然纷重住财务,实现预败陌制模式、龙东交理,转与抵像及控权应用记权休任。2017 年 2 月份一季度降上第一发之间—0 天近涨了小的消息,私募业务和部章公司规则决处提供 A CEO 芯片约本一颗回少;最后一个公司,还有没辣虑床肥山天别庆数量和消子应用的基因

乍一看就是一坨翔对吧?(没错,我也是这么想的).不过仔细阅读,你会发现许多非常有趣的细节:

  1. 断句比较合理,部分引号和括号能够正确地闭合,句末也知道加句号
  2. 我的 Chrome 浏览器装了一个扩展叫为什么你们就是不能加个空格呢?,其作用是在网页加载后为中文字符与半角英文,数字,标点字符之间加入空格(为什么要这么做?请阅读这篇文章.同时这也是本站以及我自己一直坚持的排版准则之一).因此我喂给神经网络的训练文本中也保留了这一排版风格.显然, torch-rnn 学习到了这一点,而且学得非常快,在最开始的 1000 次迭代所产生的 checkpoint 中已经可以看到中英文之间的空格了
  3. 神经网络学会了不少词语和短语,如:百度,谷歌,硅谷,产品体验,软件公司, iPhone, CEO, 失眠, AlphaGo, 柯洁,中国产品,共享汽车,定制组件, Snap (我想,它指的应该是 Snap Inc.), 乐视体育的成本,创业公司的空间,软件标准有错,人工智能 (wow, 它在说它自己),比特币,“硅谷客”(它还知道打引号),私募业务...
  4. 它已经可以写出格式正确的日期,如 "2015 年年间","2017 年 2 月份一季度"(虽然这个表述有点奇怪)
  5. "26 氪"???笑出声确实,训练文本中有不少文章是 36 氪的,看来这个 AI 想自立门户了
  6. 实际上,你应该也发现了,这些文字中的中文部分几乎是牛头不对马嘴,但英文部分则不然.神经网络自己造了几个英语单词,有趣的是,这几个单词看起来"像那么一回事",它们的拼写方式(组合元音字母与辅音字母的方式)与正常的英语单词很相似,你甚至可以尝试着把它们读出来: Mindy, Vurtator, Intenpo, Mures, Eminker, chatbasital, Deadure. 这些词有两个特点:都是杜撰的;绝大多数首字母大写.为什么?因为训练文本是 260 篇科技新闻,在这样的文本中出现的英语单词,绝大多数应该是术语或某公司或某产品的命名,所以它们才不会是常见的英语单词,并且会首字母大写.显然,神经网络学习到了这一点
  7. 接上一条,神经网络甚至还杜撰了两个产品名称: E-Cmik 和 Google Inck, 后者真是太以假乱真了, Google 的好多好多产品都是这种命名方式(要举例吗? Google Keep, Google Play, Google Home, Google Voice, Google Assistant, Google Earth, Google Analytics...)
  8. 同时,这些文字中也有大量格式正确的数字和金额表示,如 "150 美元", "31.90 亿", "6 亿美元", "1.3%","60 项"

很显然,不管怎么说,程序生成的这些文字依然很烂,没有什么可读性.究其原因,一方面是神经网络层数不够,迭代次数不够,受到了机器性能极大的限制(上文我提到过,我是用 CPU 跑 AI 的,性能差到无法直视),仅仅 1 万次迭代就能跑将近两周,内存开销也不小;而第二个原因我将在下一段详细说明.

再一次阅读神文 The Unreasonable Effectiveness of Recurrent Neural Networks 以后,我意识到原作者"循环神经网络 (RNN) 更适合具有复杂语法与结构的文本"一说绝非虚言.在 Visualizing the predictions and the “neuron” firings in the RNN 一节中作者给出的几张图非常鲜明地指出 RNN 在遇到复杂结构(如 http://www.  [[]] 这样结构的文本)时会表现出极高的"兴奋度";同时,在将结构极度复杂的文本—— C 语言源代码输入 RNN 后,神经网络明显对文本中的特殊结构更"敏感":如换行处,被  " "  { }  /* */ 包裹处,缩进层级较高处等.显然,就文本的结构复杂性而言,中文文本无比地低——英语等大多数语言的文本中会大量出现空格,这些空格起码使文本结构稍微复杂了些.此外,原作者提到了, RNN 的数据是逐个字符输入的,对神经网络的训练,其实质是让神经网络从输入的一个字符中推测出下一个字符.并且, RNN 在推测下一个字符时,不仅会参考上一个字符,还会参考之前的多个字符,甚至已输入的所有字符.显然:字符总量少的语言更易于被 RNN 掌握;存在大量固定的字符组合的语言更易于被 RNN 掌握.英语比中文更满足这两个条件.字符总量就不说了,不是一个数量级的;至于字符组合,英语单词中存在不少(一般用来构成某个音节),如 ck ch er en th tion sion tial ing un ness ist ism 等等等等.换句话说,字符组合的存在使 RNN 对下一个字符的推测更"有信心"(这也是 RNN 适合复杂文本的原因.  http://   [[]]   if ( classes[class] || (len == 0) ) { }; 或是 \item $\mathcal{F}$ is an $\mathcal{O}_X$-module. 何尝不是一个/一堆字符组合呢?).比如,若输入的字符是 c, 那么下个字符最可能是 e, i, o, a, h, k 或 u, 而几乎不可能是 q, p, g 这些字母,这就把推测的范围缩小了;但你去翻翻汉语词典,以某个汉字开头的词语有十几个几十个是司空见惯的事情,这使得 RNN 无法"自信地"确定下一个字符究竟应该是什么,而且,随着训练的数据量增大, RNN 可能会越来越迷惑,除非训练迭代次数足够地高,否则 torch-rnn 这种基于字符模型的 RNN 会很难写出可读的中文(如果以上含混不清的解释真的让你读懂了的话,你应该能够想象这样"足够高的"迭代次数应该是一个多么可观的天文数字).这就很好地解释了,在训练文本大部分是中文,极小部分是英语的情况下,为什么 RNN 产出的文本的中文部分牛头不对马嘴而英文部分看起来非常不错的问题.

所以,结论就是:

  1. 穷 b 不适合玩 AI CPU 不适合跑 AI
  2. torch-rnn 不太适合中文
  3. 所以,哪位大佬愿意来造个轮子?
  4. 我当然不愿意了
  5. 毕竟不会

以上.

3 thoughts on “在上万次迭代以后, torch-rnn 神经网络看起来还不太会说中文啊

  1. 中文语义比较复杂;并且没有恰当的分割符,一句话写成一样可以表达多个意思(人可以靠上下文和语感,机器只能靠猜);而且语法结构比英文复杂得多,字符集还非常大。

    这也是机器翻译中翻英比英翻中难得多的原因……

发表评论

电子邮件地址不会被公开。 必填项已用*标注