首先声明,本人并非人工智能的研究者,难免存在理解认知的偏差,本文只是抛砖引玉,欢迎牛人点评指导。
今天偶尔讨论到人工智能,内心有一个观点呼之欲出:『人工智能是技术领域的核武器』,但这并非理性思考的答案。鉴于该话题引出的问题影响非常深远,我们有必要作出思考,并有所行动。
人工智能虽然已有几十年的历史,从最开始的高涨热情到不切实际的期望破灭导致的冷却降温,后来再逐渐升温,直到最近几年,学术界的研究不断取得突破,人工智能技术逐渐达到了实际可用的阈值,因突破了用户期望从而获得了极大的传播效应,高调重回公众视野。
作为一个嵌入式工程师,看到了如此炫酷的黑科技,心里难免是羡慕的,虽说自己所在的领域仍然有很多挑战的问题,也算是相对价值较高的技术,但从解决问题的方法和层次角度看,维度依然还是过去几十年计算机基础理论一路发展过来的这一套。其实,在涉及到算法进行数据处理,决策的领域,人工智能中的最新发展,是可以突破现有看待问题维度的。或许暂时用不到,但是在不远的将来,用到的机会应该说是有的。
人工智能技术对于一家公司的产品和服务,以及技术人员,是否会重要到核武器的程度?对于非研究人工智能的技术人员,应该如何学习和掌握?
现在我尝试从理性的角度,这个问题来做一个基本的论证,结论目前还是开放的,我并不想刻意预设。
关于人工智能的重要性
要想回答这个问题,那么首先,应该看看社会对人工智能到底会有多大的需求。
技术是社会前进的发动机
稍微列举一下技术对人类文明和社会的巨大影响吧:
- 农业的发展,从游牧和狩猎变成农耕文明,人口的增长,解决了吃的问题,有了更加分化的社会分工;
- 采矿,冶金,机械,电力技术的出现,能源和动力使得人类进一步解放了自己的体力,通过现代的交通工具,人类可以花费更多的时间在休闲娱乐和消费上
- 通信(无线通信和互联网)和计算机的发展,极大程度地提升了生产的自动化能力,随着机器人的普及,将会极大程度降低对工人的需求。在可以预见的将来,工人的需求将会减少,给机器编程的工作将会变多。
- 生物、医学、制药技术的发展,极大程度地 提升人类的寿命和生存质量
当然,物理学和数学等基础科学的影响是非常深远的,其作用是对技术提供理论支撑。
人工智能是『程序的程序』
人工智能含有较多的理论和科学的成分,但因与应用结合,也有很多技术的成分在其中,这也包括系统的设计和实现手段。我们可以简单地认为,人工智能是软件中的算法,是一种更好的解决问题的工具。
在互联网时代,我们大量地使用各种社交和协同软件,虽然传统的纸笔记录已经被数字化存储取代,利用搜索引擎,人类终于可以从知识记忆的辛苦劳动中抽身出来。然而,在使用计算机软件的过程中,依然存在大量的手工劳动,距离『心想事成』还有很大的距离。
人都是懒的,个人信息的归纳整理,日程安排,如果都需要通过聘请助理的方式来做,显然成本太高。
这部分的需求,目前来看,比较合理的手段是通过机器人助理来解决。
所谓机器人,并不一定是大家通常理解的那种人形或者有实体形态的家伙,而是一种可以自动地完成某些特定任务,无需人为监督和干预的系统。
其实大量无形的机器人早就存在:每个自动运行的程序,后台进程和线程,都是一种广义的机器人。
典型的比如网络爬虫,协议解析服务器,等等。
然而这些机器人,应对『变化』的能力很差,甚至基本为零,人类社会中大量的需求和问题都以非结构化的数据形式呈现,而这些是传统的计算机程序无法直接处理的。于是,第一步,是要将非结构化的数据转化成结构化的数据:语音识别,图像识别,自然语言处理的前半部分工作,都是在做这个事情;然而,即便是得到了结构化的数据,如何理解和处理,也是一个很复杂的问题,如果情况很多,那么怎么去处理,也是一个问题。
人工智能是一个目标,有多种实现目标的手段,因此它不是一个具体的算法,因为不同的问题算法肯定也不会完全一样。早期人工智能算法非常原始,比如穷举,现在发展到了机器学习中的deep learning。人工智能最终表现形式,是提升了一个程序解决复杂和灵活变化的能力,它极大程度地拓宽了机器的任务领域,降低人类从事半重复和体力劳动的负担。人口的老龄化带来的工作人数不足,服务业人员劳动强度大,医生工作劳动强度大,误诊和延误治疗的问题,都有可能因此而得到改善。
感觉大家期望的一周4天工作制,或者一天6小时工作制,就要靠人工智能技术来推动了。
到这里,我们已经了解了人工智能的涵义,那么顺便我也给人工智能算法下一个定义:它是可以代替程序员事先枚举所有可能性的体力劳动的算法,是『程序 的 程序』。
人工智能从根本上优化了人类的劳动结构,为某些社会问题的解决创造了条件,有可能成为未来企业竞争力的基础。因此,学习和掌握它完全可以称得上是战略的需要,说它是核武器并不为过。
人工智能该怎么学?
入门
- 我们可以从概论的书籍入手,先建立一个框架。
- 我们可以从某个特定的领域入手,做一些实践。
站在巨人的肩膀上
对于各个特定的问题域,学术界甚至工业界,都已经有了一些供学习和二次开发使用的框架和服务。
比如自然语言处理领域,大家可以搜索一下 『语言云』对于文本,有一些开放的资源。对于如何处理海量的互联网数据,有开源的搜索引擎框架作为基础 (搜素引擎本质上是一个自然语言处理器 + 数据库)。
从自己最熟悉的领域寻找问题,发现并尝试运用之
在了解人工智能基本知识以后,我们需要结合实际的需求,提炼出一些核心的可以用人工智能来解决的问题。一开始,我们或许还不懂很多高深的算法工具,但是我们用笨办法,逐渐把问题需求理清,这样我们就可以挑选最适合的算法工具来解决问题。
机器学习虽然很高大上,但是这只是人工智能的工具,一开始并不是最核心的。
最后,列一个我自己挑选的书单,后续可以从这些地方入手:
人工智能:智能系统指南 http://product.china-pub.com/3683421
人工智能:复杂问题求解的结构和策略 http://product.china-pub.com/196356
Python自然语言处理 http://product.china-pub.com/3770261
机器学习系统设计 http://product.china-pub.com/3803865