【一】如果让我学习TensorFlow,我该怎么学?

2,286 阅读15分钟

熟悉我的读者知道,我一直以来就是做Android开发/音视频开发,对于什么人工智能,什么TensorFlow,什么机器学习,我也是小白,按照惯例,在学习一个新东西之前,网上的东西已经有很多人嚼来嚼去,已经不是那么native了,所以更倾向于找native内容,如果只是解某个问题,不反对直接搜索,缩小解决问题时间。不过在学习一个东西或是一整块时,我更倾向于0距离接触,这样既能发现乐趣,又能学到正宗的。我会问自己如下一些问题,问题会不断增多,可以一阶段一阶段来:今天先解决前三个问题。

1、人工智能中专有名词有哪些?

2、什么是深度学习?什么是机器学习?AI是个啥?

3、TensorFlow是什么?它和人工智能有什么关系?

4、TensorFlow解决什么问题?

5、机器学习为什么要学TensorFlow?

6、有哪些渠道可以学习TensorFlow?

7、是不是一上来就学习TensorFlow?有没有什么准备知识?

8、TensorFlow怎么入门?

9、TensorFlow有什么资料?

9、TensorFlow这块比较专业的人有哪些?

10、我要利用TensorFlow做一个什么样的小项目?

当有了这些问题后,就开始自己整理得到答案。任何东西都是先有问题,再去分析问题,解决问题。

问题1:在国外找到一篇文章《28 Artificial Intelligence Terms You Need to Know》原文:

https://dzone.com/articles/ai-glossary

A

算法(Algorithms):为人工智能、神经网络或其他机器提供的一套规则或指令,以帮助自己学习;分类、聚类、推荐和回归是最流行的四种算法类型。

人工智能(Artificial intelligence):简写AI,机器做出决策和执行模拟人类智能和行为的能力。

人工神经网络(Artificial neural network ):简写ANN,一个学习模型,它的作用就像人脑,解决了传统计算机系统很难解决的问题。

自主计算(Autonomic computing):一种系统的自主适应自我管理的能力,用于在没有用户输入的情况下为高级计算函数提供自身的资源。

C

聊天机器人(Chatbots):简称chatbot,它设计的目的是通过文字聊天、语音指令或两者同时进行交流来模拟与人类用户的对话。它们是包括人工智能在内的计算机程序的常用接口。

分类(Classification):分类算法让机器根据训练数据给数据点分配类别。

群集分析(Cluster analysis):一种无监督的学习方法,用于探索数据分析,以发现隐藏的模式或数据分组;集群的建模方法是类似于欧几里得或概率距离的度量。

聚类(Clustering):聚类算法让机器组的数据点或项目分成具有相似特征的组。

认知计算(Cognitive computing):一个模拟人脑思维方式的计算机模型。它涉及使用数据挖掘、自然语言处理和模式识别的方法进行自学。

卷积神经网络(Convolutional neural network):简写CNN,一种识别和理解图像的神经网络。

D

数据挖掘(Data mining):对数据集检查,以发现和挖掘可以进一步使用的数据模式。

数据科学(Data science):由统计学、信息科学和计算机科学等结合科学的方法、系统和过程的跨学科领域,通过结构化或非结构化的数据来提供对现象的分析。

决策树(Decision tree):用于映射决策及其可能结果的树和分支模型,类似于流程图。

深度学习(Deep learning):通过由串联的信息层组成人工神经网络,机器能够自主地模拟人类思维模式。

F

变数(Fluent):一种随时间变化的状况。

G

游戏AI(Game AI):使用一种算法来代替随机性的特定游戏人工智能。它是一种用于非玩家角色的计算行为,以产生玩家所采取的类似于人类的智力和反应。

遗传算法(Genetic algorithm):一种基于遗传和自然选择原理的进化算法,用于寻找最优或接近最优的解决方案,否则将需要几十年的时间才能解决。

H

启发式搜索技术(Heuristic search techniques):支持通过消除不正确的选项来缩小寻找问题的最佳解决方案的支持。

K

知识工程(Knowledge engineering):重点是建立知识体系,包括所有的科学、技术和社会学方面。

L

逻辑编程(Logic programming):一种基于事实和规则的知识存储库进行计算的编程范式;LISP和Prolog是用于人工智能编程的两种逻辑编程语言。

M

机器智能(Machine intelligence):一个涵盖机器学习、深度学习和经典学习算法的统称。

机器学习(Machine learning):一个专注于算法的人工智能,当接触到新数据允许机器在不被编程和改变情况下学习。

机器知觉(Machine perception):系统接收和解释外部世界数据的能力,类似于人类使用感官的能力。这通常是由附加的硬件完成的,虽然软件也可用。

N

自然语言处理(Natural language processing):程序在理解的基础上识别人类交流的能力。

R

递归神经网络(Recurrent neural network):简写RNN,神经网络的一种,它能够理解顺序信息和识别模式,并根据这些计算创建输出。

S

有监督学习(Supervised learning):机器学习类型的一种,输出数据集训练机器生成所需的算法,像一个教师监督学生,比无监督学习更常见。

群体行为(Swarm behavior):从数学建模者的角度来看,它是由个人遵循的简单规则引起的紧急行为,不涉及任何中央协调。

U

无监督学习(Unsupervised learning):一种机器学习算法,用于从不带标记响应的包含输入数据的数据集中提取结果。最常见的无监督学习方法是聚类分析。

问题2,在找到一篇国外文章《https://blogs.nvidia.com/blog/2016/07/29/whats-difference-artificial-intelligence-machine-learning-deep-learning-ai/》,翻译成中文就是《AI、机器学习和深度学习之间的区别是什么?》

今天我们就用最简单的方法——同心圆,可视化地展现出它们三者的关系和应用。

如上图,人工智能是最早出现的,也是最大、最外侧的同心圆;其次是机器学习,稍晚一点;最内侧,是深度学习,当今人工智能大爆炸的核心驱动。

五十年代,人工智能曾一度被极为看好。之后,人工智能的一些较小的子集发展了起来。先是机器学习,然后是深度学习。深度学习又是机器学习的子集。深度学习造成了前所未有的巨大的影响。

从概念的提出到走向繁荣

1956年,几个计算机科学家相聚在达特茅斯会议(Dartmouth Conferences),提出了“人工智能”的概念。其后,人工智能就一直萦绕于人们的脑海之中,并在科研实验室中慢慢孵化。之后的几十年,人工智能一直在两极反转,或被称作人类文明耀眼未来的预言;或者被当成技术疯子的狂想扔到垃圾堆里。坦白说,直到2012年之前,这两种声音还在同时存在。

过去几年,尤其是2015年以来,人工智能开始大爆发。很大一部分是由于GPU的广泛应用,使得并行计算变得更快、更便宜、更有效。当然,无限拓展的存储能力和骤然爆发的数据洪流(大数据)的组合拳,也使得图像数据、文本数据、交易数据、映射数据全面海量爆发。

让我们慢慢梳理一下计算机科学家们是如何将人工智能从最早的一点点苗头,发展到能够支撑那些每天被数亿用户使用的应用的。

人工智能(Artificial Intelligence)——为机器赋予人的智能

早在1956年夏天那次会议,人工智能的先驱们就梦想着用当时刚刚出现的计算机来构造复杂的、拥有与人类智慧同样本质特性的机器。这就是我们现在所说的“强人工智能”(General AI)。这个无所不能的机器,它有着我们所有的感知(甚至比人更多),我们所有的理性,可以像我们一样思考。

人们在电影里也总是看到这样的机器:友好的,像星球大战中的C-3PO;邪恶的,如终结者。强人工智能现在还只存在于电影和科幻小说中,原因不难理解,我们还没法实现它们,至少目前还不行。

我们目前能实现的,一般被称为“弱人工智能”(Narrow AI)。弱人工智能是能够与人一样,甚至比人更好地执行特定任务的技术。例如,Pinterest上的图像分类;或者Facebook的人脸识别。

这些是弱人工智能在实践中的例子。这些技术实现的是人类智能的一些具体的局部。但它们是如何实现的?这种智能是从何而来?这就带我们来到同心圆的里面一层,机器学习。

机器学习—— 一种实现人工智能的方法

机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。

机器学习直接来源于早期的人工智能领域。传统算法包括决策树学习、推导逻辑规划、聚类、强化学习和贝叶斯网络等等。众所周知,我们还没有实现强人工智能。早期机器学习方法甚至都无法实现弱人工智能。

机器学习最成功的应用领域是计算机视觉,虽然也还是需要大量的手工编码来完成工作。人们需要手工编写分类器、边缘检测滤波器,以便让程序能识别物体从哪里开始,到哪里结束;写形状检测程序来判断检测对象是不是有八条边;写分类器来识别字母“ST-O-P”。使用以上这些手工编写的分类器,人们总算可以开发算法来感知图像,判断图像是不是一个停止标志牌。

这个结果还算不错,但并不是那种能让人为之一振的成功。特别是遇到云雾天,标志牌变得不是那么清晰可见,又或者被树遮挡一部分,算法就难以成功了。这就是为什么前一段时间,计算机视觉的性能一直无法接近到人的能力。它太僵化,太容易受环境条件的干扰。

随着时间的推进,学习算法的发展改变了一切。

深度学习——一种实现机器学习的技术

人工神经网络(Artificial Neural Networks)是早期机器学习中的一个重要的算法,历经数十年风风雨雨。神经网络的原理是受我们大脑的生理结构——互相交叉相连的神经元启发。但与大脑中一个神经元可以连接一定距离内的任意神经元不同,人工神经网络具有离散的层、连接和数据传播的方向

例如,我们可以把一幅图像切分成图像块,输入到神经网络的第一层。在第一层的每一个神经元都把数据传递到第二层。第二层的神经元也是完成类似的工作,把数据传递到第三层,以此类推,直到最后一层,然后生成结果。

每一个神经元都为它的输入分配权重,这个权重的正确与否与其执行的任务直接相关。最终的输出由这些权重加总来决定。

我们仍以停止(Stop)标志牌为例。将一个停止标志牌图像的所有元素都打碎,然后用神经元进行“检查”:八边形的外形、救火车般的红颜色、鲜明突出的字母、交通标志的典型尺寸和静止不动运动特性等等。神经网络的任务就是给出结论,它到底是不是一个停止标志牌。神经网络会根据所有权重,给出一个经过深思熟虑的猜测——“概率向量”。

这个例子里,系统可能会给出这样的结果:86%可能是一个停止标志牌;7%的可能是一个限速标志牌;5%的可能是一个风筝挂在树上等等。然后网络结构告知神经网络,它的结论是否正确。

即使是这个例子,也算是比较超前了。直到前不久,神经网络也还是为人工智能圈所淡忘。其实在人工智能出现的早期,神经网络就已经存在了,但神经网络对于“智能”的贡献微乎其微。主要问题是,即使是最基本的神经网络,也需要大量的运算。神经网络算法的运算需求难以得到满足。

不过,还是有一些虔诚的研究团队,以多伦多大学的Geoffrey Hinton为代表,坚持研究,实现了以超算为目标的并行算法的运行与概念证明。但也直到GPU得到广泛应用,这些努力才见到成效。

我们回过头来看这个停止标志识别的例子。神经网络是调制、训练出来的,时不时还是很容易出错的。它最需要的,就是训练。需要成百上千甚至几百万张图像来训练,直到神经元的输入的权值都被调制得十分精确,无论是否有雾,晴天还是雨天,每次都能得到正确的结果。

只有这个时候,我们才可以说神经网络成功地自学习到一个停止标志的样子;或者在Facebook的应用里,神经网络自学习了你妈妈的脸;又或者是2012年吴恩达(Andrew Ng)教授在Google实现了神经网络学习到猫的样子等等。

吴教授的突破在于,把这些神经网络从基础上显著地增大了。层数非常多,神经元也非常多,然后给系统输入海量的数据,来训练网络。在吴教授这里,数据是一千万YouTube视频中的图像。吴教授为深度学习(deep learning)加入了“深度”(deep)。这里的“深度”就是说神经网络中众多的层

现在,经过深度学习训练的图像识别,在一些场景中甚至可以比人做得更好:从识别猫,到辨别血液中癌症的早期成分,到识别核磁共振成像中的肿瘤。Google的AlphaGo先是学会了如何下围棋,然后与它自己下棋训练。它训练自己神经网络的方法,就是不断地与自己下棋,反复地下,永不停歇。

深度学习,给人工智能以璀璨的未来

深度学习使得机器学习能够实现众多的应用,并拓展了人工智能的领域范围。深度学习摧枯拉朽般地实现了各种任务,使得似乎所有的机器辅助功能都变为可能。无人驾驶汽车,预防性医疗保健,甚至是更好的电影推荐,都近在眼前,或者即将实现

问题3:TensorFlow是什么?它和人工智能有什么关系?

TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。

支持的算法:

从目前的文档看,TensorFlow支持CNN、RNN和LSTM算法,这都是目前在Image,Speech和NLP最流行的深度神经网络模型。