新闻资讯

新闻资讯 通知公告

AI - TensorFlow

编辑:016     时间:2020-02-15

AI

(Artificial Intelligence)人工智能及机器学习(Machine Learning)最近大热,Google - Deep Mind的AlphaGo踢馆人类所向披靡,最终宣布正式进入智能时代1.0。我们今天也来体验学习一下Google的人工智能项目。

1. Jeff Dean

老传统,我们先来看看这位Google TensoFlow的主要负责人,在加州山景城除了拉里佩奇Larry Page和布林Sergey Brin,Google数一数二,被用来打造下一代Google核心大脑的(Google Brain)的头号人物Jeff Dean。

列一下大神的大作,颤抖一下吧:

  • Google MapReduce

  • Google BigTable

  • Google Spanner

  • Google AdSense

  • Google Translate

  • Google Brain

  • LevelDB

  • TensorFlow

够重量级了吧,说其影响了第三代互联网及第四代也不夸张,开启了互联网大数据及人工智能时代。

Jeff Dean于2009年当选美国工程院院士。

2. Artificial Neural Networks, ANNs


在开始介绍TensorFlow之前我们先看一个TensorFlow的Online Playground,在线神经网络(Artificial Neural Networks,ANNs)!

http://playground.tensorflow.org


神经网络(NNs)主要模仿动物神经网络,进行分布式并行算法的数学模型。

神经网络最大的魔力,在于不需要用各种特征用来输入给机器学习系统,如上图事例,只需要输入最基本的x1, x2, 只要给予足够多层的神经网络和神经元,神经网络会自己组合出最有用的特征。


总体来说,神将网络需要大量神经元(节点)及:

  • 每个神经元可以通过输出/激励函数(Activation Function)来计算来自其它相邻神经元的加权输入值

  • 计算模型可以依靠大量数据训练

    • 成本函数(Cost Function):定量评估对于给定输入值的输出结果离正确值的偏移,用于评估计算的精准

    • 学习算法(Learning Algorithm):根据Cost Function的结果,自学,纠错

有了上述的核心,就有点智能感觉了,可以计算评估,并且可以递归自我学习。


3. TensorFlow Overview

TensorFlow是Google研发的第二代人工智能学习系统。官网描述,TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。


Tensor即张量,N维数组,Flow代表基于数据流图的计算,TensorFlow的计算就是张量从图的一端流动到另一端的并行计算。


张量:

TensorFlow架构灵活,可做到多平台并行计算,如台式机,服务器,云端,移动设备等,同时又可以充分发挥多核CPU或者GPU的强大并行计算能力。


CPU v.s. GPU


科普一下CPU与GPU的差别吧,为什么GPU会在深度学习时代又火了起来。


设计架构:

可以看出CPU的设计目标是处理不同数据类型,支持大量逻辑判断,分之跳转及中断处理;而GPU则诞生于目标处理大量图形图像(游戏),即大规模类型统一,相互依赖的数据,同时不需要被打断的纯计算环境,所以在架构设计上,GPU采用了数量众多的计算单元和超长流水线,仅保留简单控制逻辑,甚至省去了Cache。


所以,GPU天生具备大规模精良并发计算能力,而CPU的计算能力则只是很小一部分。大多数台式机甚至包括服务器,其CPU多核也没有超过2位数,每个核也包含了大量缓存及逻辑运算单元;GPU则称之为重核,如512核甚至上千之多。CPU被称之为Latency Oriented Cores, 而GPU则称之为Throughput Oriented Cores。


所以,不难看出为什么在深度学习领域,GPU为何能炙手可热,GPU最适合:

  • 计算密集型程序(Compute-Intensive),其大部分时间花在寄存器,几乎没有延时,而内存及SSD的延时则不可同日而语(达上百倍,千倍差异)

  • 并行计算程序,上百核同时做同样事情


有了上述的铺垫,不能看出对于Tensor张量的计算处理,GPU简直是张量计算的天堂。


TensorFlow特征


TensorFlow并不是一个严格的神经网络,只要你可以抽象为数据流图,便可以使用TensorFlow来构建计算。

TensorFlow用C++来编写,目前版本提供的API相对低阶,确实是C/C++风格,任君打造。当然也提供暴露了深度学习中流行的Python接口,及其它Google自己的Go, Java, Lua, Javascript, R等。


郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表