写在前面:本文是从作者在某大学提交的一份专业报告中的主要内容修改而来,由于作者觉得具有一定的现实意义,故发布出来。
近年来,越来越多的人们,无处不谈人工智能,不论是在大街上,还是媒体上,或者社交软件上。仿佛,我们突然经过了一个人工智能时代开始的时间节点,任何事情,加入了人工智能,就立即变得高端了起来。中国的多所一流大学,自2017年的中国科学院大学和西安电子科技大学先后成立人工智能学院以来,在2018年,包括清华在内,也纷纷成立人工智能学院,掀起了一股“成立人工智能学院”的浪潮。不过,人工智能是建立在计算机科学、应用数学、统计学等多学科交叉的基础之上的,其中,计算机科学是关键,是人工智能的灵魂,是实现我们未来智能生活的工具。而大学中,计算机软件方面的课程,尤其是程序设计和算法,是未来人工智能时代,AI人才培养的基础。
人工智能的实现,最需要的是计算机和数学知识。数学毋庸置疑,我们从幼儿园开始就在教数数,小学从四则运算到解方程,中学就学函数,大学一开始就有微积分、矩阵和概率统计的课程设置。只有计算机相关的基础知识一直被忽视,甚至被认为是“不务正业”,“影响学习”,这一点在中学阶段体现的淋漓尽致,甚至对于大一,也有不少人存在这样的想法,“禁止大一新生带电脑”就很说明问题,以至于众多学生的计算机基础知识迟迟得不到提升,尤其是程序设计能力。在大学计算机专业的部分老师中就流行着这样的一句话:教数据结构的老师总是抱怨教C语言程序设计的老师没有把学生教会,而教程序设计的老师也很无奈。其实,大一才正是弥补中学阶段缺少计算机基础课程学习尤其是编程的最好时期,其次是大二,到了大三,就应该走向更深层次的知识学习了,比如数据挖掘、软件体系结构等。而这些课程,正是做人工智能的基础,也是未来智能时代,业界做人工智能软件和系统的知识基础。
就从我身边认识的同学来说,如果有人在ACM的省赛、区域赛拿到了牌子,那么他一定是自己课后利用课余时间自学的算法知识,如果拿的是亚洲金牌银牌,那么他一定是在高中期间就参加过诸如NOIP竞赛而有基础的,甚至是高中学校就有老师专门带队,带着许多学生一起去参加的。从未见到大学才开始学,而且仅仅跟着老师的课程进度学习程序设计和算法,能拿到ACM牌子的,更不用说是不是亚洲区这种大佬级别的了。ACM比赛中获得奖牌的同学,在达到一定程度之后,很多都从事了人工智能相关的方向研究和工作,并成为别人眼中的“大佬”。
并不是说人人都需要参加ACM竞赛,也不是说参加了ACM才能做AI,但是从我身边的事例能看出来的是,一些比较重要的基础知识,学得越早越好,尤其是这个行业中普遍都是年轻人的情况下。对于将来从事计算机科学领域的同学们来说,程序设计基础、面向对象的程序设计基础,以及数据结构和算法这些知识,是从事计算机科学领域尤其是人工智能领域学科基础知识储备的关键。有句老话说得好,种一棵树的最好时间是十年前,其次是现在。
一个人对于知识的学习,是需要层层递进的,不能一蹴而就,就像小学就报各种课外班,学的都是高中甚至大学内容,是不太现实的,比如说奥数就如此,很多奥数里面基础的内容,其实是高中数学才学的内容,而难一些的内容,甚至是大学的数学中才会涉及,揠苗助长不可取,所以就有了奥数班禁令。没有打好基础,就越过当前学习阶段直接进入下一阶段的话,会很迷茫。做人工智能、深度学习,没有好的编程基础,很多情况下,我们就会觉得根本无从下手。最近,知乎上有一个很火的问题,是说“孩子今年开学已经上小学五年级了,现在报课外班学 Tensorflow 还来得及吗”,李沐老师的回答真是让人拍案叫绝。
不过,在当前AI热潮下,很多人却是直接跳进深度学习的领域里面,读过大学的话,数学知识还好说,本科阶段学的都差不多,除了数学专业以外。但是没有经过计算机相关课程的学习的人,在直接从事深度学习时,会时常出现编程能力欠缺的情况。而且由于深度学习近年来突然变得火热,导致很多人直接跨入人工智能项目,他们对于算法不熟悉,只知道有神经网络,却不知道有动态规划,有时甚至连一直在用的神经网络的一些工作原理都不清楚。我在包括一些网络社交平台在内的地方跟很多人交流过,经常被问到一些问题,发现不少做深度学习的人,对几种神经网络的原理几乎不了解,不知道为什么是这样,不知道如何设计出需要的软件,不太清楚什么是高水平代码,而且有时也缺少发现问题、分析问题和解决问题的能力。
要成为一个合格人工智能从业者,需要具有合格的大学数学基础,以及计算机科学基础,和机器学习的知识基础,作者自己已经认识到这一点,也在同大家一起努力,巩固这些基础知识。在刚开始的时候,可以通过自顶向下学习,用到什么就学什么,进步很快,很方便能够直接跨入一个行业,但是基础是不扎实的,之后仍然需要进行结构化学习。
对于计算机相关专业的来说,学好自己的专业课和数学类课程,将基础知识打牢固。对于非计算机专业的来说,除了C语言、Python以外,数据结构、算法分析设计也是必不可少的知识和能力。然后,面向对象程序设计、软件体系结构、软件工程等则是从事软件开发的关键,也是开发AI软件的重要编程思想,是从无到有设计一个人工智能应用软件的保证。当开发的AI产品或者科研成果上线或发布之前,软件测试又是不可或缺的。对于人工智能、机器学习和深度学习的知识、原理,这些现在的教程很多,这里不再赘述。
世界的未来需要人工智能,人工智能的未来需要我们,我们需要夯实每一个知识基础,才能创造未来。
版权声明本博客的文章除特别说明外均为原创,本人版权所有。欢迎转载,转载请注明作者及来源链接,谢谢。本文地址: https://blog.ailemon.net/2018/10/15/ai-era-programming-is-important-foundation/ All articles are under Attribution-NonCommercial-ShareAlike 4.0 |