近几年人工智能火热,再加上媒体的大肆宣传,让无数的同学在考研时选择计算机专业,而在方向选择上人工智能,模式识别等领域。在我考上研时,也对人工智能十分憧憬,想象自己以后也能够让机器拥有人的智慧而兴奋。但是真的是这样嘛?知乎上也有一大推劝退人工智能的同学,声称人工智能就是个坑,自己当时也思考过,但是就跟小学课本里面的小马过河一样,只有自己亲身经历了,才知道是不是这水对自己来讲深不深。下面结合自己研一一学期的学习体会来讲一讲AI方向到底是不是坑,我当时选择的方向是目标检测,下面主要指的是近几年火热的深度学习内容。
一、可解释性差
对于y=kx+b这个方程,我们都知道k代表斜率,b代表偏置,我们的的确确知道这个方程的含义。但是深度学习的参数有上百万个,我们很难弄清楚这些参数代表什么意思,哪些参数是有用的,哪些参数对结果根本没有影响,如果知道了这些那么我们就能知道怎么减小网络的模型了。也就是对于我们搭建的模型,我们根本不知道它在学什么,只能以自己的理解来解释学出来的内容。也正是由于解释性差这一点,我们不知道如何提高检测的性能。例如,如果我们知道错在哪里,我们就知道改进的点在哪里,从而进一步找到修改的方法,而现在我们连自己错的地方都不知道,修改起来就像盲人摸象,只能先等最终的结果出来才知道自己有没有改进,再人为去解释为什么这样能够改进性能,我们很难事先按照一定的理论基础来修改模型,然后说这样修改一定能提高检测的精度,我们只能不停的去试,然后看结果,再回过头来反推为什么会出现该结果。
二、成本高
这里指的不止是计算成本,还有时间成本。我们知道对于动辄上亿万的计算次数,需要好的硬件条件,即显卡。记得当时我用一张卡训练YOLOv3(目标检测的网络)时,一天只能跑10个epoch,那么如果我真的按照原作者训练500200个epoch,那简直训练到猴年马月去,有同学说你不会用多张GPU训练吗?但是一个教研室的训练资源是公共的,你最多有时候拿到3张卡,但是这意味着接下来的几个月你都霸占着这几张卡,显然不太可能。而且这还是完整训练一次使用的时间,如果你中间出了一点差错,发现和作者的检测精度相差太多,还要重新训练。后面如果你有改进的想法,又要再训练,虽然可以利用之前预训练的结果,但是后面接下来的训练时间还是要花费不少时间。如果你没有足够的计算资源,只能用时间来弥补。对于NAS这种暴力出奇迹的方法,只能说深度学习越来越拉大了大公司小公司的差距,没卡没数据的小公司只能在夹缝中生存。除了网络模型训练需要时间,数据的标注还要大量的人力成本和时间成本。有人说不是有coco,voc这种公开的数据集可以训练嘛?但是如果你希望深度学习对某个特定任务的检测能力好,那么你就需要制作这些特定任务的数据集。动辄上万张的图像数据消耗不少人工成本,对于标定数据的人也是枯燥乏味,机械的劳动。
三、数学基础扎实
有人说机器学习不止包括深度学习一种方法啊!是的,在实际的算法岗中,要求工程师不仅需要深度学习调参的能力,还需要对传统经典的统计学方法有所了解。包括SVM、GDBT、xgboost等方法,这些方法含有大量的高等数学和概率论的知识,我自认为数学还是有平均水平的,一般看懂这些算法需要结合李航的《统计学习方法》和一些讲解的博客,还是能够理解并自己写出来,但是大量的数学符号和计算公式还是需要你拥有比较扎实的数学基础。自己学起来不免感觉头秃。
总结
就像我在开头说的小马过河那个故事一样,即使我说对于大多数同学来说人工智能是个坑,但还是会有许多同学会选择深度学习该方向。希望你们学习一年以后也能够回评论区谈谈你的感受。祝你学习顺利,多发论文~~