1.学习或者回忆一些数学知识

想学习关于人工智能的技术,去哪里学习比较好?

  因为计算机能做的就只是计算,所以人工智能更多地来说还是数学问题。我们的目标是训练出一个模型,用这个模型去进行一系列的预测。于是,我们将训练过程涉及的过程抽象成数学函数:首先,需要定义一个网络结构,相当于定义一种线性非线性函数;接着,设定一个优化目标,也就是定义一种损失函数(loss function)。

  而训练的过程,就是求解最优解及次优解的过程。在这个过程中,我们需要掌握基本的概率统计、高等数学、线性代数等知识,如果学过就最好,没学过也没关系,仅仅知道原理和过程即可,有兴趣的读者可以涉猎一些推导证明。

  2.掌握经典机器学习理论与基本算法

  这些基本算法包括支持向量机、逻辑回归、决策树、朴素贝叶斯分类器、随机森林、聚类算法、协同过滤、关联性分析、人工神经网络和BP算法、PCA、过拟合与正则化等。

  3.掌握一种编程工具(语言)

  Python语言是一种解释型、面向对象、动态数据类型的高级程序设计语言。python是很多新入门的程序员的入门编程语言,也是很多老程序员后来必须掌握的编程语言。我们需要重点掌握使用线性代数库和矩阵的操作,尤其是Numpy、Pandas第三方库,也要多试试机器学习的库,如sklearn,做一些SVM及逻辑回归的练习。这对直接上手写TensorFlow程序大有裨益。

  有些工业及学术领域的读者还可能擅长MATLAB或R,其实现算法的思想和Python也很类似。

  同时考虑到许多读者是使用C++、Java、Go语言的,TensorFlow还提供了和Python“平行语料库”的接口。虽然本书是主要是基于Python讲解的,对于其他语言的原理和应用API也都非常类似,读者把基础掌握后,只需要花很短的时间就能使用自己擅长的语言开发。

  4.研读经典论文,关注最新动态和研究成果

  一些经典论文是必读的。例如,要做手写数字识别,若采用LeNet,要先阅读一下LeNet的学术论文;要做物体目标检测的训练,若选定MSCNN框架,可以先读MSCNN相关的论文。

  5.自己动手训练神经网络

  接着,就是要选择一个开源的深度学习框架。选择框架时主要考虑哪种框架用的人多。人气旺后,遇到问题很容易找到答案;GitHub上关于这个框架的项目和演示会非常多;相关的论文也会层出不穷;在各个QQ群和微信群的活跃度会高;杂志、公众号、微博关注的人也会很多;行业交流和技术峰会讨论的话题也多;也能享受到国内外研究信息成果的同步。

  目前这个阶段,TensorFlow因为背靠谷歌公司这座靠山,再加上拥有庞大的开发者群体,而且采用了称为“可执行的伪代码”的Python语言,更新和发版速度着实非常快。目前TensorFlow已经升级到1.0版,在性能方面也有大幅度提高,而且新出现的Debugger、Serving、XLA特性也是其他框架所不及的。此外,一些外围的第三方库(如Keras、TFLearn)也基于它实现了很多成果,并且Keras还得到TensorFlow官方的支持。TensorFlow支持的上层语言也在逐渐扩大,对于不同工程背景的人转入的门槛正在降低。

  在GitHub[4]上有一个关于各种框架的比较,从建模能力、接口、模型部署、性能、架构、生态系统、跨平台等7个方面进行比较,TensorFlow也很占综合优势。

  因此,从目前来看,投身TensorFlow是一个非常好的选择,掌握TensorFlow在找工作时是一个非常大的加分项。

  接下来就是找一个深度神经网络,目前的研究方向主要集中在视觉和语音两个领域。初学者最好从计算机视觉入手,因为它不像语音等领域需要那么多的基础知识,结果也比较直观。例如,用各种网络模型来训练手写数字(MNIST)及图像分类(CIFAR)的数据集。

  6.深入感兴趣或者工作相关领域

  人工智能目前的应用领域很多,主要是计算机视觉和自然语言处理,以及各种预测等。对于计算机视觉,可以做图像分类、目标检测、视频中的目标检测等;对于自然语言处理,可以做语音识别、语音合成、对话系统、机器翻译、文章摘要、情感分析等,还可以结合图像、视频和语音,一起发挥价值。

  更可以深入某一个行业领域。例如,深入医学行业领域,做医学影像的识别;深入淘宝的穿衣领域,做衣服搭配或衣服款型的识别;深入保险业、通信业的客服领域,做对话机器人的智能问答系统;深入智能家居领域,做人机的自然语言交互;等等。

  7.在工作中遇到问题,重复前六步

  在训练中,准确率、坏案例(bad case)、识别速度等都是可能遇到的瓶颈。训练好的模型也不是一成不变的,需要不断优化,也需要结合具体行业领域和业务进行创新,这时候就要结合最新的科研成果,调整模型,更改模型参数,一步步更好地贴近业务需求。