学术圈现形记
盲目学习高深的知识,容易让人失去对基础知识的敬畏之心。——沃·兹基硕德
这是我在短短三年那失败的读博生涯中观察到的真实国内学术圈现状,而且可以说是非常广泛且“平凡”的状况了。下面我想举几个例子,来印证我的这一观点。
什么是深度学习
首先我想简单介绍一下我当时所在的领域。我读博期间“瞎琢磨”(我不好意思称之为“研究”)的方向是当下很热门的深度学习。听名字可能会觉得很莫名其妙:是指有深度的学习方式吗?其实这里的“学习”并不是指人,而是指机器。深度学习其实是机器学习的一个分支,都要用到代码实现的神经网络,只不过深度学习的网络更深一些。那为什么近十年才有了深度学习呢?其实深度学习这门学科并不年轻,它的很多概念早在上世纪六七十年代(就是我们国家正“热闹”的那些年)就已经出现了。但囿于当时贫弱的硬件性能,深层次的网络的训练一直是一个很大的问题。终于,到了本世纪 10 年代以来,各大硬件厂商开始发力,个人电脑的硬件性能也逐年攀升,这才有了全民深度学习的物质基础。
所谓“机器学习”,顾名思义,就是希望机器有学习的能力。比如人脸识别,以前我们只能人为地去规定一些特征,比如人脸有眉毛、眼睛、鼻子、嘴等典型特征,然后想办法把这些规则书写成机器可以看懂的算法,最后让机器去执行。这样费时费力,效果也不够好。比如同样是人脸,但有的人眼睛闭着,有的人长着大胡子,有的人在做鬼脸。这就导致人为很难去制定完善有效的规律。但是现在,我们可以把数以万计的图片直接丢给机器,让它自己去想办法寻找特征,从而实现人脸识别这一最终目标。机器就这么“稀里糊涂”地,学到了如何辨别人脸。
这意味着什么?这不仅意味着我们的人类研究人员可以不再绞尽脑汁去思考怎样人为设定规则并转告给机器,而是可以让机器自己去学习(而且因为机器可以反反复复昼夜不息地学习,从而显著提高效率和精确度);更是意味着,有些问题,人类甚至可能都不需要去事先想出这个规则,甚至可能连问题本身都不需要搞懂,就直接把问题丢给机器让它自己想办法。
深度学习能用来做什么
深度学习能干的事情实在是太多了。光是图像领域,就有人脸识别、目标检测(比如从图中寻找人、车、狗等物体)、文字检测与识别(类似 OCR)、实例分割(类似抠图)、医学影像分析、风格迁移(仿照某种画风去重新绘制一幅画)、超分辨率(把图片变清晰)、生成式对抗网络(无中生有画出一张图)等。其他的领域还多着呢。比如序列,就可能有语音序列,对应语音识别、变声器、问答系统、语音唤醒等方向;还可能有信息序列,对应机器翻译、股票预测、疫情传播分析等。上面说的这些还只是监督学习的范畴。其他还有半监督、弱监督、无监督、自监督、强化学习等等领域,又是对应出无数分支与子分支。著名的 AlphaGo 就是一个基于强化学习和卷积神经网络的下围棋 AI,直接战胜了人类选手。
说到这里,多补充两句。AI 战胜人类围棋手这件事情其实非常具有划时代意义。像是国际象棋,早在 1997 年,IBM 的超级电脑“深蓝”就打败了人类世界冠军。但是国际象棋的棋盘复杂度相较于围棋,不管是棋盘大小还是棋子数量,都可以说是相当简单了。也因此,当时那孱弱的电脑性能,依旧能够通过枚举等方式找到最优解,从而战胜人类选手。但是围棋就不一样了,至少想要枚举棋盘的所有情况,是几乎不可能的。所以,直到将近 20 年后的 2016 年,AI 才打败了人类的围棋九段选手李世石。
正因为深度学习可以和各种学科跨领域合作,而且如今电脑性能越来越强,一台大几千块的台式机就可以拿来训练一个比较深的神经网络。所以,一方面,研究人员可能并不需要自己首先很精通所研究的问题,自身的素质参差不齐;另一方面,深度学习能研究的领域实在是太多,于是就免不了出现了各种各样的乱象。这两条原因,也就是本文开头所提到的症兆的本源。
有关乱象的具体例子
文章写到这里,我顿时陷入了困境:这样的乱象实在是太多了,我都不知道该举哪些例子。实际上,看了我前面写的内容之后,相信大家已经能够想象出不少乱象了。比如不会炒股的人去研究股票预测,不懂医学的人去研究怎样让机器看 X 光片去判断是否得了肺结核,再或者让对美术一窍不通的人去研究风格迁移,甚至让不懂外语的人去研究机器翻译。这些现象确实是存在的,也是最容易想象的。我如果也去举这些例子,难免显得没什么意思,未免大惊小怪。所以我想举一些可能更出乎意料的、或者不太容易被察觉到这也属于乱象的例子,博君一笑。
其实在深度学习这个领域,不仅仅有不自量力的程序员,就比如前面提到的不懂炒股、不懂美术、不懂医学的;同时还有不自量力的相关行业的从业者,也就是懂炒股、懂美术、懂医学,但偏偏不懂数学、不懂计算机的。我一直认为且相信,深度学习这门专业,说到底是数学与计算机的分支;而人工智能这个行业,说到底是互联网的分支。不信的话可以想想看,脱离了主干,这个“分支”还剩下什么,研究该如何进行下去,产品还有没有落地的可能性?这也就意味着,不管怎么样,从业者都是需要有一定的计算机与数学的功底才行的。然而根据我的观察,不够懂计算机,但是却跑来大搞研究的人实在是多了去了。
在硬件设备上运行事先写好的训练神经网络的代码,也就是所谓的“跑实验”,通常用的是 Linux 的服务器,然而完全不懂 Linux 常用操作的数不胜数,训练样本也不知道该放在哪里。明明有专门存放训练集的硬盘,但偏偏喜欢放在自己的 home 目录下,导致服务器三天两头报警;数据如果放在了专门的硬盘里,那又不知道该怎么去修改配置,从而让代码能够去新的路径读取数据,因为根本不知道该怎么去写对应硬盘下的路径,也不知道有软链接这种东西;自己的代码全程靠撤消重做或者手动备份的方式去管理版本,完全不知道还有 Git 之类的工具;再看看写的代码,更是乱七八糟毫无章法逻辑:迭代不会用,列表推导式也没听说过,就知道用刚上大学时候学来的一丁点 for 循环,更不要说什么多核优化、多卡并行了。
如果这些现象只是出现在初学者、入行未深的年轻学生身上,那可能还好;但偏偏这个现象过于普遍,甚至已经开始出现了“人传人”的迹象,连资深的教授可能都逃脱不了。越来越多的教授,也不管自己或自己的学生有没有能力在某个方向做研究,就先把项目给申请了。一个个看起来外表光鲜,各行各业均有涉足,但金玉其外,那个什么是吧。我想再举几个当时所在实验室的例子。
学生 L 在我实验室做的是乐谱识别。这里的乐谱指的是类似下面的五线谱:
对于五线谱的识别,其实就是将上面的所有“符号”都提取出来,包括符号本身的各种意思。就拿一个最简单的四分音符来说,它就包含时长(比如 4/4 下长度为一拍)、音高(比如高音谱表下加一线表示中央 C)、奏法(比如 mf 表示中强的力度)等等。但这还不够,因为随便加一个东西就又变了。比如加一个“#”就变成了升半度,加一个“.”就成了附点四分音符(变成了一拍半),符头下方加一个“.”就成了顿音,其他更有延音、滑音等多种符号。
那么这位 L 同学呢?他对于五线谱几乎可以说是一窍不通,充其量就是勉强能用数线的方式找出这是哪个音。这个离谱程度是远超过不懂美术的。因为不懂美术,我也好歹能对一幅画有一点自己的理解,比如好不好看,像不像之类;但是对于乐谱,那不懂就是不懂,就好比不懂外语的人去看韩语一样,可以说是完全不知道在干啥。抄错了一个字符也完全意识不到,还以为是一个字的不同写法呢。
但这位 L 同学,他拿来了别人开源的识别代码,自己稍加修改跑了一下,居然识别效果“还不错”。这个“还不错”究竟是不是真的不错,我也不知道。不过我想举个小例子:曾经有一个研究股票预测的,他的任务是预测 K 线图的走势。他判断准确度的方式是 MSE(可以理解为真实数据和预测数据的重叠程度)。然后每次的输入就是前 n 天的数据,输出就是下一天的。用这种方式得到了新的 K 线图之后,发现重叠程度居然非常高!然而实际上呢?你就算是把每次输出的最后一个数字(也就是今天的)直接作为明天的输出,那这重叠程度依旧是相当高,毕竟每天上下浮动最多也就是 10%,不然就涨/跌停了。正确的判断方法,不仅要看重合度,还要看对于每次涨跌的预测到底是否准确。
总之,因为 L 同学的效果还挺不错的,于是我实验室的一把手——H 教授——让他找个时间在组会上讲一讲。由于 L 同学做的方向跟我有很多相似(我做的是文字,其实也类似乐谱,是横向的一个序列的信息),于是他会前来找我讨教。我在搞清楚了他对乐谱的了解程度之后,干脆给他普及了一个小时的乐谱常识。之后的组会上,出现了非常尴尬的场面:在座除了我以外没有一个人——甚至包括主讲人——懂怎么看五线谱,当然也包括 H 教授!但是场面不能就这么尬住啊,于是 H 教授走上前台,对着 PPT 里面的乐谱指指点点,嘴上说着什么“其实我也不懂乐谱,不过我看这条线、这个符号、这个单词怎么怎么,我觉得应该是怎么怎么……”。我坐在下面看着这一切,真的是哭笑不得,干脆偷偷玩起了手机。
虽说不懂五线谱吧,但架不住 H 教授的想象力丰富。那段时间他对 GAN(生成式对抗网络,也就是能无中生有的神器)很感兴趣,于是他在会上提出,能不能把乐谱图片输入到网络里面,然后让网络去生成新的乐谱呢?这样不就能作曲了嘛?
这简直可以说是我听过的最荒诞的想法了。人工智能编曲有两种方式,一种是基于音频,也就是输入音频,直接去生成能播放的音频;另一种是基于符号,也就是输入的是“乐谱”(其实是连续的音符信息),输出也是“乐谱”,然后这个乐谱本身是符合一些规则的(最起码每小节有几个音符、几拍不能是错的吧?)。对于音乐系的学生来说,想学作曲,首先要学会乐理,明白配器,明白和弦,明白歌曲结构等等知识,打好各种基础才行。认识乐谱只能说是最最基础的入门必备基本功。但是 H 教授是什么意思呢?他认为只需要提供给初学者足够多的乐谱图片,初学者就能仿照着画出一张有意义的乐谱。实际上,我觉得确实是有可能画出来的——只不过画出来的东西仅仅是看起来像乐谱罢了。
不过这么荒诞的想法,也是有人信的,就比如我的导师 W 教授。W 教授曾经就觉得卷积神经网络非常牛逼,什么都能干,甚至可以取代传统的分类器等。感觉好像又开始掉书袋了。反正这个荒诞程度不说是对艺术一窍不通吧,完全可以说是连自己的老本行机器学习都选择性忽略了。
那么这里就简单再讲一个 W 教授的趣闻,来作为文章的收尾吧。W 教授做的是文字识别,然后他有一个博士生 J 做的是甲骨文的识别。有一次在组会上,J 同学苦恼于训练集的繁体字标签处理起来比较繁琐,于是 W 教授说,这好办,你随便找一个工具把繁体字一一对应地转成简体不就行了。J 同学又问,有些繁体字看不懂怎么办?W 教授一脸疑惑地问:你看懂它做什么?
其实繁体字与简体字并不是一一对应的。比如“后”与“後”,前者表示爵位(比如“皇后”),而后者表示时间(比如“后来”)。再比如“髒”是“肮脏”的“脏”,而“臟”是“心脏”的“脏”。还有“幹”和“乾”等等例子。曾经有人提出了这样一个问题:辛弃疾的词《破阵子》中「了却君王天下事,赢得生前身后名。可怜白发生」的“白发生”有没有可能说是“白白发生了(这样一场梦)”。因为词开头写的是「醉里挑灯看剑,梦回吹角连营」,确实是在做梦。这样想感觉确实也有些道理不是吗?实际上回答也特别简单:不可能。因为“发生事情”的“发”繁体写作“發”;而“头发”的“发”写作“髪”。
是的,就是这么简单。不难看出,对于古文的研究,如果用简体字,可能会造成多少不必要的误会!如果能够搞清楚这些问题,那就能够避免很多丢人的事情了,比如毕福剑的“玖球天後”,以及郭德纲的“令人發指”。可惜的是,研究文字识别多年的 W 教授,居然对于繁体字没有一丁点的重视,实在可以说是令人无语。
结语
深度学习这个领域,现在已经不再是我魂牵梦萦的那个样子了。如今的我,也已经彻底远离“学术圈”,成为了一名程序员。我并没有完成自己的博士学业,而是在坚持了三年之后选择了退学。导致这一结果的原因有很多,不过此刻的我,只能在屏幕上写下:“今已远离,啼笑皆非,不知所言”。