导航:首页 > 源码编译 > 深度学习计算机体系编译器

深度学习计算机体系编译器

发布时间:2022-10-07 21:11:37

1. 计算机系统开发学习哪一种编程语言最佳

在成为一个“高手”的过程中,我们要学会的是找到最适合自己的编程语言。
python

Python 是可读的最强大的语言。—Pau Dubois

选Python还是选Java?2020年,顶尖程序员最应该掌握的7种编程语言
Python 编程。图源:Unsplash。
Python 开发于 1991 年,一项民意调查表明,在开发 AI 时,超过 57% 的开发者将 Python 作为首选编程语言,而不是 C++。因为易于学习,Python 让程序员和数据科学家可以更轻松地进入开发 AI 的世界。

Python 是一个程序员需要多少自由度的“实验”。太自由,没人可以读懂别人的代码;太不自由,就会没那么强的表现力。—Guido van Rossum

使用 Python,你不仅可以获得优秀的社区支持和广泛的库集,还能享受到其灵活性。你从 Python 中得到的最大的好处可能是平台独立性和针对深度学习和机器学习的广泛框架。

用 Python 编码的乐趣在于可以看到短小精悍、可读性高的类,这些类可以用少量清晰的代码表达大量行为(而不是用大量代码烦死读者)。——Guido van Rossum

Python 代码片段示例:

选Python还是选Java?2020年,顶尖程序员最应该掌握的7种编程语言
Python 代码段落示例。
常用的库

TensorFlow——用于机器学习工作负载和用数据集处理;
scikit-learn——训练机器学习模型;
PyTorch——计算机视觉和自然语言处理;
Keras——高度复杂性的数学计算和操作的代码接口;
SparkMLib——类似 Apache Spark 的机器学习库,通过算法和实用程序等工具,让每一个人都能轻松地进行机器学习;
MXNet——Apache 的另一个库,可以简化深度学习流程;
Theano——定义、优化和评价数学表达式的库;
Pybrain——用于强大的机器学习算法。

另外,根据 GitHub 库的贡献度,Python 已经超越了 Java,成为世界第二受欢迎的语言。Stack Overflow 将 Python 称为“成长最快”的主流编程语言。

2. 程序员为什么要学深度学习

费良宏:程序员为什么要学深度学习?

深度学习本身是一个非常庞大的知识体系。本文更多想从程序员的视角出发,让大家观察一下深度学习对程序员意味着什么,以及我们如何利用这样一个高速发展的学科,来帮助程序员提升软件开发的能力。
本文根据费良宏在2016QCon全球软件开发大会(上海)上的演讲整理而成。
前言
1973年,美国上映了一部热门的科幻电影《WestWorld》,三年之后又有一个续集叫做《FutureWorld》。这部电影在80年代初被引进到中国叫《未来世界》。那部电影对我来讲简直可以说得上是震撼。影片中出现了很多机器人,表情丰富的面部下面都是集成电路板。这让那时候的我觉得未来世界都是那么遥远、那么神秘。
时间到了2016年,很多朋友可能都在追看HBO斥巨资拍摄的同一题材的系列剧《WestWorld》。如果前两部电影还是局限在机器人、人工智能这样的话题,2016年的新剧则在剧情和人工智能的思考方面有了很大的突破。不再渲染机器人是否会威胁到人类,而是在探讨“Dreamsaremainlymemories”这一类更具哲理的问题。
“记忆究竟如何影响了智能”这个话题非常值得我们去思考,也给我们一个很好的启示——今天,人工智能领域究竟有了怎样的发展和进步。
今天我们探讨的话题不仅仅是简单的人工智能。如果大家对深度学习感兴趣,我相信各位一定会在搜索引擎上搜索过类似相关的关键字。我在Google上以deeplearning作为关键字得到了2,630万个搜索的结果。这个数字比一周之前足足多出了300多万的结果。这个数字足以看得出来深度学习相关的内容发展的速度,人们对深度学习的关注也越来越高。

从另外的一个角度,我想让大家看看深度学习在市场上究竟有多么热门。从2011年到现在一共有140多家专注人工智能、深度学习相关的创业公司被收购。仅仅在2016年这种并购就发生了40多起。
其中最疯狂的是就是Google,已经收购了 11 家人工智能创业公司,其中最有名的就是击败了李世石九段的 DeepMind。排名之后的就要数 Apple、Intel以及Twitter。以Intel 公司为例,仅在今年就已经收购了 3 家创业公司,Itseez、Nervana 和 Movidius。这一系列大手笔的并购为了布局人工智能以及深度学习的领域。
当我们去搜索深度学习话题的时候,经常会看到这样的一些晦涩难懂的术语:Gradient descent(梯度下降算法)、Backpropagation(反向传播算法)、Convolutional Neural Network(卷积神经网络)、受限玻耳兹曼机(Restricted Boltzmann Machine)等。
如打开任何一篇技术文章,你看到的通篇都是各种数学公式。大家看到如下左边的图,其实并不是一篇高水准的学术论文,而仅仅是维基网络关于玻耳兹曼机的介绍。维基网络是科普层面的内容,内容复杂程度就超过了大多数数学知识的能力。

在这样的背景之下,我今天的的话题可以归纳成三点:第一,我们为什么要学习深度学习;第二,深度学习最核心的关键概念就是神经网络,那么究竟什么是神经网络;第三,作为程序员,当我们想要成为深度学习开发者的时候,我们需要具备怎样的工具箱,以及从哪里着手进行开发。
为什么要学习深度学习
首先,我们谈谈为什么要学习深度学习。在这个市场当中,最不缺乏的就是各种概念以及各种时髦新技术的词汇。深度学习有什么不一样的地方?我非常喜欢AndrewNg(吴恩达)曾经用过的一个比喻。
他把深度学习比喻成一个火箭。这个火箭有一个最重要的部分,就是它的引擎,目前来看在这个领域里面,引擎的核心就是神经网络。大家都知道,火箭除了引擎之外还需要有燃料,那么大数据其实就构成了整个火箭另外的重要组成部分——燃料。以往我们谈到大数据的时候,更多是强调存储和管理数据的能力,但是这些方法和工具更多是对于以往历史数据的统计、汇总。
而对于今后未知的东西,这些传统的方法并不能够帮助我们可以从大数据中得出预测的结论。如果考虑到神经网络和大数据结合,我们才可能看清楚大数据真正的价值和意义。AndrewNg就曾经说过“我们相信(神经网络代表的深度学习)是让我们获得最接近于人工智能的捷径”。这就是我们要学习深度学习的一个最重要的原因。

其次,随着我们进行数据处理以及运算能力的不断提升,深度学习所代表的人工智能技术和传统意义上人工智能技术比较起来,在性能上有了突飞猛进的发展。这主要得益于在过去几十间计算机和相关产业不断发展带来的成果。在人工智能的领域,性能是我们选择深度学习另一个重要的原因。

这是一段Nvidia在今年公布的关于深度学习在无人驾驶领域应用的视频。我们可以看到,将深度学习应用在自动驾驶方面,仅仅经历了3千英里的训练,就可以达到什么样的程度。在今年年初进行的实验上,这个系统还不具备真正智能能力,经常会出现各种各样的让人提心吊胆的状况,甚至在某些情况下还需要人工干预。
但经过了3千英里的训练之后,我们看到在山路、公路、泥地等各种复杂的路况下面,无人驾驶已经有了一个非常惊人的表现。请大家注意,这个深度学习的模型只经过了短短几个月、3千英里的训练。
如果我们不断完善这种模型的话,这种处理能力将会变得何等的强大。这个场景里面最重要的技术无疑就是深度学习。我们可以得出一个结论:深度学习可以为我们提供强大的能力,如果程序员拥有了这个技术的话,无异于会让每个程序员如虎添翼。
神经网络快速入门
如果我们对于学习深度学习没有任何疑虑的话,接下来就一定会关心我需要掌握什么样的知识才能让我进入到这个领域。这里面最重要的关键技术就是“神经网络”。说起“神经网络”,容易混淆是这样两个完全不同的概念。
一个是生物学神经网络,第二个才是我们今天要谈起的人工智能神经网络。可能在座的各位有朋友在从事人工智能方面的工作。当你向他请教神经网络的时候,他会抛出许多陌生的概念和术语让你听起来云里雾里,而你只能望而却步了。
对于人工智能神经网络这个概念,大多数的程序员都会觉得距离自己有很大的距离。因为很难有人愿意花时间跟你分享神经网络的本质究竟是什么。而你从书本上读的到的理论和概念,也很让你找到一个清晰、简单的结论。
今天就我们来看一看,从程序员角度出发神经网络究竟是什么。我第一次知道神经网络这个概念是通过一部电影——1991年上映的《终结者2》。男主角施瓦辛格有一句台词:
“MyCPUisaneural-netprocessor;alearningcomputer.”(我的处理器是一个神经处理单元,它是一台可以学习的计算机)。从历史来看人类对自身智力的探索,远远早于对于神经网络的研究。
1852年,意大利学者因为一个偶然的失误,将人类的头颅掉到硝酸盐溶液中,从而获得第一次通过肉眼关注神经网络的机会。这个意外加速了对人类智力奥秘的探索,开启了人工智能、神经元这样概念的发展。
生物神经网络这个概念的发展,和今天我们谈的神经网络有什么关系吗?我们今天谈到的神经网络,除了在部分名词上借鉴了生物学神经网络之外,跟生物学神经网络已经没有任何关系,它已经完全是数学和计算机领域的概念,这也是人工智能发展成熟的标志。这点大家要区分开,不要把生物神经网络跟我们今天谈到的人工智能有任何的混淆。

90年代中期,由Vapnik等人提出了支持向量机算法(Support Vector Machines,支持向量机)。很快这个算法就在很多方面体现出了对比神经网络的巨大优势,例如:无需调参、高效率、全局最优解等。基于这些理由,SVM算法迅速打败了神经网络算法成为那个时期的主流。而神经网络的研究则再次陷入了冰河期。
在被人摒弃的十年里面,有几个学者仍然在坚持研究。其中很重要的一个人就是加拿大多伦多大学的Geoffery Hinton教授。2006年,他的在着名的《Science》杂志上发表了论文,首次提出了“深度信念网络”的概念。
与传统的训练方式不同,“深度信念网络”有一个“预训练”(pre-training)的过程,这可以方便的让神经网络中的权值找到一个接近最优解的值,之后再使用“微调”(fine-tuning)技术来对整个网络进行优化训练。这两个技术的运用大幅度减少了训练多层神经网络的时间。在他的论文里面,他给多层神经网络相关的学习方法赋予了一个新名词— “深度学习”。
很快,深度学习在语音识别领域崭露头角。接着在2012年,深度学习技术又在图像识别领域大展拳脚。Hinton与他的学生在ImageNet竞赛中,用多层的卷积神经网络成功地对包含一千个类别的一百万张图片进行了训练,取得了分类错误率15%的好成绩,这个成绩比第二名高了将近11个百分点。
这个结果充分证明了多层神经网络识别效果的优越性。从那时起,深度学习就开启了新的一段黄金时期。我们看到今天深度学习和神经网络的火热发展,就是从那个时候开始引爆的。

利用神经网络构建分类器,这个神经网络的结构是怎样的?

其实这个结构非常简单,我们看到这个图就是简单神经网络的示意图。神经网络本质上就是一种“有向图”。图上的每个节点借用了生物学的术语就有了一个新的名词 – “神经元”。连接神经元的具有指向性的连线(有向弧)则被看作是“神经”。这这个图上神经元并不是最重要的,最重要的是连接神经元的神经。每个神经部分有指向性,每一个神经元会指向下一层的节点。
节点是分层的,每个节点指向上一层节点。同层节点没有连接,并且不能越过上一层节点。每个弧上有一个值,我们通常称之为”权重“。通过权重就可以有一个公式计算出它们所指的节点的值。这个权重值是多少?我们是通过训练得出结果。它们的初始赋值往往通过随机数开始,然后训练得到的最逼近真实值的结果作为模型,并可以被反复使用。这个结果就是我们说的训练过的分类器。
节点分成输入节点和输出节点,中间称为隐层。简单来说,我们有数据输入项,中间不同的多个层次的神经网络层次,就是我们说的隐层。之所以在这样称呼,因为对我们来讲这些层次是不可见的。输出结果也被称作输出节点,输出节点是有限的数量,输入节点也是有限数量,隐层是我们可以设计的模型部分,这就是最简单的神经网络概念。
如果简单做一个简单的类比,我想用四层神经网络做一个解释。左边是输入节点,我们看到有若干输入项,这可能代表不同苹果的RGB值、味道或者其它输入进来的数据项。中间隐层就是我们设计出来的神经网络,这个网络现在有不同的层次,层次之间权重是我们不断训练获得一个结果。
最后输出的结果,保存在输出节点里面,每一次像一个流向一样,神经是有一个指向的,通过不同层进行不同的计算。在隐层当中,每一个节点输入的结果计算之后作为下一层的输入项,最终结果会保存在输出节点上,输出值最接近我们的分类,得到某一个值,就被分成某一类。这就是使用神经网络的简单概述。

除了从左到右的形式表达的结构图,还有一种常见的表达形式是从下到上来表示一个神经网络。这时候,输入层在图的最下方,输出层则在图的最上方。从左到右的表达形式以AndrewNg和LeCun的文献使用较多。而在Caffe框架里则使用的则是从下到上的表达。
简单来说,神经网络并不神秘,它就是有像图,利用图的处理能力帮助我们对特征的提取和学习的过程。2006年Hinton的那篇着名的论文中,将深度学习总结成三个最重要的要素:计算、数据、模型。有了这三点,就可以实现一个深度学习的系统。
程序员需要的工具箱
对于程序员来说,掌握理论知识是为了更好的编程实践。那就让我们看看,对于程序员来说,着手深度学习的实践需要准备什么样的工具。
硬件
从硬件来讲,我们可能需要的计算能力,首先想到的就是CPU。除了通常的CPU架构以外,还出现了附加有乘法器的CPU,用以提升计算能力。此外在不同领域会有DSP的应用场景,比如手写体识别、语音识别、等使用的专用的信号处理器。还有一类就是GPU,这是一个目前深度学习应用比较热门的领域。最后一类就是FPGA(可编程逻辑门阵列)。
这四种方法各有其优缺点,每种产品会有很大的差异。相比较而言CPU虽然运算能力弱一些,但是擅长管理和调度,比如读取数据,管理文件,人机交互等,工具也丰富。DSP相比而言管理能力较弱,但是强化了特定的运算能力。
这两者都是靠高主频来解决运算量的问题,适合有大量递归操作以及不便拆分的算法。GPU的管理能力更弱一些,但是运算能力更强。但由于计算单元数量多,更适合整块数据进行流处理的算法。
FPGA在管理与运算处理方面都很强,但是开发周期长,复杂算法开发难度较大。就实时性来说,FPGA是最高的。单从目前的发展来看,对于普通程序员来说,现实中普遍采用的计算资源就还是是CPU以及GPU的模式,其中GPU是最热门的领域。

这是我前天为这次分享而准备的一个AWS 上p2的实例。仅仅通过几条命令就完成了实例的更新、驱动的安装和环境的设置,总共的资源创建、设置时间大概在10分钟以内。而之前,我安装调试前面提到的那台计算机,足足花了我两天时间。

另外,从成本上还可以做一个对比。p2.8xLarge 实例每小时的费用是7.2美元。而我自己那台计算机总共的花费了是¥16,904元。这个成本足够让我使用350多个小时的p2.8xLarge。在一年里使用AWS深度学习站就可以抵消掉我所有的付出。随着技术的不断的升级换代,我可以不断的升级我的实例,从而可以用有限的成本获得更大、更多的处理资源。这其实也是云计算的价值所在。
云计算和深度学习究竟有什么关系?今年的8月8号,在IDG网站上发表了一篇文章谈到了这个话题。文章中做了这样一个预言:如果深度学习的并行能力不断提高,云计算所提供的处理能力也不断发展,两者结合可能会产生新一代的深度学习,将带来更大影响和冲击。这是需要大家考虑和重视的一个方向!
软件
深度学习除了硬件的基础环境之外。程序员会更关心与开发相关的软件资源。这里我罗列了一些曾经使用过的软件框架和工具。

Scikit-learn是最为流行的一个Python机器学习库。它具有如下吸引人的特点:简单、高效且异常丰富的数据挖掘/数据分析算法实现; 基于NumPy、SciPy以及matplotlib,从数据探索性分析,数据可视化到算法实现,整个过程一体化实现;开源,有非常丰富的学习文档。
Caffe专注在卷及神经网络以及图像处理。不过Caffe已经很久没有更新过了。这个框架的一个主要的开发者贾扬清也在今年跳槽去了Google。也许曾经的霸主地位要让位给他人了。
Theano 是一个非常灵活的Python 机器学习的库。在研究领域非常流行,使用上非常方便易于定义复杂的模型。Tensorflow 的API 非常类似于Theano。我在今年北京的QCon 大会上也分享过关于Theano 的话题。
Jupyter notebook 是一个很强大的基于ipython的python代码编辑器,部署在网页上,可以非常方便的进行交互式的处理,很适合进行算法研究合数据处理。
Torch 是一个非常出色的机器学习的库。它是由一个比较小众的lua语言实现的。但是因为LuaJIT 的使用,程序的效率非常出色。Facebook在人工智能领域主打Torch,甚至现在推出了自己的升级版框架Torchnet。
深度学习的框架非常之多,是不是有一种乱花渐欲迷人眼的感觉?我今天向各位程序员重点介绍的是将是TensorFlow。这是2015年谷歌推出的开源的面向机器学习的开发框架,这也是Google第二代的深度学习的框架。很多公司都使用了TensorFlow开发了很多有意思的应用,效果很好。
用TensorFlow可以做什么?答案是它可以应用于回归模型、神经网络以深度学习这几个领域。在深度学习方面它集成了分布式表示、卷积神经网络(CNN)、递归神经网络(RNN) 以及长短期记忆人工神经网络(Long-Short Term Memory, LSTM)。
关于Tensorflow 首先要理解的概念就是Tensor。在辞典中对于这个词的定义是张量,是一个可用来表示在一些向量、标量和其他张量之间的线性关系的多线性函数。实际上这个表述很难理解,用我自己的语言解释Tensor 就是“N维数组”而已。

使用 TensorFlow, 作为程序员必须明白 TensorFlow这样几个基础概念:它使用图 (Graph) 来表示计算任务;在被称之为 会话 (Session) 的上下文 (context) 中执行图;使用 Tensor 表示数据;通过 变量 (Variable) 维护状态;使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据。
一句话总结就是,TensorFlow 就是有状态图的数据流图计算环境,每个节点就是在做数据操作,然后提供依赖性和指向性,提供完整数据流。
TensorFlow安装非常简单,但官网提供下载的安装包所支持的CUDA 的版本是7.5。考虑到CUDA 8 的让人心动的新特以及不久就要正式发布的现状。或许你想会考虑立即体验CUDA 8,那么就只能通过编译Tensorflow源代码而获得。目前TensorFlow已经支持了Python2.7、3.3+。
此外,对于使用Python 语言的程序员还需要安装所需要的一些库,例如:numpy、protobuf等等。对于卷积处理而言,cuDNN是公认的性能最好的开发库,请一定要安装上。常规的Tensorsorflow的安装很简单,一条命令足矣:
$ pip3 install —upgrade https://storage.233.wiki/tensorflow/linux/cpu/tensorflow-0.11.0rc0-cp35-cp35m-linux_x86_64.whl
如果想评估一下或者简单学习一下,还可以通过Docker进行安装,安装的命令如下:
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow
TensorFlow有很多优点。首先,目前为止,深度学习的开发框架里面TensorFlow的文档做的最好,对程序员学习而言是非常好的一点。第二,TensorFlow有丰富的参考实例,作为参考学习起来非常容易。
第三,开发者社区活跃,在任何一个深度学习的社区里,都有大量关于TensorFlow的讨论。第四,谷歌的支持力度非常大,从2015年到现在升级速度非常快,这是其他开源框架远远达不到的结果。
参考TensorFlow的白皮书,我们会看到未来TensorFlow还将会有巨大的发展潜力。让我特别感兴趣是这两个方向。第一,支持跨多台机器的 parallelisation。尽管在0.8版本中推出了并行化的能力,但是目前还不完善。随着未来不断发展,依托云计算的处理能力的提升这个特性将是非常让人振奋的。
第二,支持更多的开发语言,对于开发者来说这是一个绝大的利好,通过使用自己擅长的语言使用TensorFlow应用。这些开发语言将会扩展到Java、Lua以及R 等。
在这里我想给大家展示一个应用Tensorflow 的例子。这个例子的代码托管在这个网址上 https://github.com/anishathalye/neural-style。白俄罗斯的现代印象派艺术家Leonid Afremov善于用浓墨重彩来表现都市和风景题材,尤其是其雨景系列作品。他习惯用大色块的铺陈来营造光影效果,对反光物体和环境色的把握非常精准。
于是我就找到了一张上海东方明珠电视塔的一张摄影作品,我希望通过Tensorflow 去学习一下Leonid Afremov 的绘画风格,并将这张东方明珠的照片处理成那种光影色彩丰富的作品风格。利用Tensorflow 以及上面提到的那个项目的代码,在一个AWS 的p2类型的实例上进行了一个一千次的迭代,于是就得到了下图这样的处理结果。

这个处理的代码只有350行里,模型使用了一个成名于2014年ImageNet比赛中的明星 VGG。这个模型非常好,特点就是“go depper”。
TensorFlow 做出这样的作品,并不仅仅作为娱乐供大家一笑,还可以做更多有意思的事情。将刚才的处理能力推广到视频当中,就可以看到下图这样的效果,用梵高着名的作品”星月夜“的风格就加工成了这样新的视频风格。

可以想象一下,如果这种处理能力在更多领域得以应用,它会产生什么样的神奇结果?前景是美好的,让我们有无限遐想。事实上我们目前所从事的很多领域的应用开发都可以通过使用神经网络和深度学习来加以改变。对于深度学习而言,掌握它并不是难事。每一个程序员都可以很容易的掌握这种技术,利用所具备的资源,让我们很快成为深度学习的程序开发人员。
结束语
未来究竟是什么样,我们没有办法预言。有位作家Ray Kurzweil在2005年写了《奇点临近》一书。在这本书里面他明确告诉我们,那个时代很快到来。作为那个时代曙光前的人群,我们是不是有能力加速这个过程,利用我们学习的能力实现这个梦想呢?

中国人工智能的发展
人工智能的时代无疑已经到来,这个时代需要的当然就是掌握了人工智能并将其解决具体问题的工程师。坦率的说,市场上这一类的工程师还属于凤毛麟角。职场上的薪酬待遇可以看得出来这样的工程师的抢手的程度。人工智能这门学科发展到今天,就学术自身而言已经具备了大规模产业化的能力。
所以说,对于工程师而言当务之急就是尽快的掌握应用人工智能的应用技术。当下在互联网上关于人工智能的学习资料可以说已经是“汗牛充栋”,那些具备了快速学习能力的工程师一定会在人工智能的大潮当中脱颖而出。
中国发展人工智能产业的环境已经具备。无论从创业环境、人员的素质乃至市场的机遇而言完全具备了产生产业变革的一切条件。与美国相比较,在人工智能的许多领域中国团队的表现也可以说是不逞多让。就人工智能的技术层面而言,中国的工程师与全球最好的技术团队正处于同一个起跑线上。
时不我待,中国的工程师是有机会在这个领域大展身手的。不过值得注意的是,要切忌两点:一是好高骛远,盲目与国外攀比。毕竟积累有长短,术业有专攻,我们要立足于已有的积累,寻求逐步的突破。二是一拥而上,盲目追求市场的风口。人工智能的工程化需要大量的基础性的积累,并非一蹴而就简单复制就可以成功。
中国的科研技术人员在人工智能领域的成就有目共睹。在王咏刚的一篇文章里面,他统计了从2013年到2015年SCI收录的“深度学习”论文,中国在2014年和2015年超已经超过了美国居于领跑者的位置。
另外一让我感到惊讶的事情,Google的JeffDean在2016年发表过一篇名为《TensorFlow:Asystemforlarge-scalemachinelearning》的论文。文章的22个作者里面,明显是中国名字的作者占已经到了1/5。如果要列举中国人/华人在人工智能领域里的大牛,吴恩达、孙剑、杨强、黄广斌、马毅、张大鹏……很容易就可以说出一大串。
对于中国来说目前的当务之急是人工智能技术的产业化,唯有如此我们才可以讲科研/智力领域的优势转化为整体的、全面的优势。在这一点上,中国是全球最大的消费市场以及制造业强国,我们完全有机会借助市场的优势成为这个领域的领先者。
硅谷创新企业
硅谷虽然去过许多回,但一直无缘在那里长期工作。在人工智能领域的市场我们听到的更多是围绕Google、Apple、Intel、Amazon这样的一些大型科技公司的一举一动。但是在美国市场上还有一大批小型的创业企业在人工智能这个领域有惊艳的表现。仅以硅谷区域的公司为例:
Captricity,提供了手写数据的信息提取;
VIVLab,针对语音识别开发了虚拟助手服务;
TERADEEP,利用FPGA提供了高效的卷积神经网络的方案;
还有提供无人驾驶解决方案的NetraDyne。
这个名单还可以很长,还有许许多多正在利用人工智能技术试图去创造历史的团队正在打造他们的梦想。这些团队以及他们正在专注的领域是值得我们去学习和体会的。

3. 什么是深度学习

随着阿尔法狗、无人驾驶、智能翻译的横空出世,“人工智能”这个已经存在60多年的词语,仿佛一夜之间重新成为热词。同时被科技圈和企业界广泛提及的还有“机器学习”“深度学习”“神经网络”…… 但事实是,如此喧嚣热烈的气氛之下,大部分人对这一领域仍是一知半解。

如果要说谁有资格谈论目前正在进行的“人工智能革命”,特伦斯·谢诺夫斯基(Terry Sejnowski)必然是其中一个。

在智能翻译、无人驾驶、阿尔法狗、微软小冰还被认为是远在天边的愿景时,谢诺夫斯基就已经在为深度学习领域奠定基础了。

《深度学习:智能时代的核心驱动力量》

中信出版集团 2019.2

Q:首先,我想问一下定义。人们几乎可以互换地使用“人工智能”,“神经网络”,“深度学习”和“机器学习”等词语。 但这些是不同的东西。你能解释一下吗?

人工智能可以追溯到1956年的美国,那时工程师们决定编写一个试图仿效智能的计算机程序。

在人工智能中,一个新领域成长起来,称为机器学习。不是编写一个按部就班的程序来做某事——这是人工智能中的传统方法——而是你收集了大量关于你试图理解的事物的数据。例如,设想您正在尝试识别对象,因此您可以收集大量它们的图像。然后,通过机器学习,这是一个可以剖析各种特征的自动化过程,就可以确定一个物体是汽车,而另一个是订书机。

机器学习是一个非常大的领域,其历史可以追溯到更久远的时期。最初,人们称之为“模式识别”。后来算法在数学上变得更加广泛和复杂。

在机器学习中有受大脑启发的神经网络,然后是深度学习。深度学习算法具有特定的体系结构,其中有许多层数据流经的网络。

基本上,深度学习是机器学习的一部分,机器学习是人工智能的一部分。

Q: 有什么“深度学习”能做而其他程序不能做的吗?

编写程序非常耗费人力。在过去,计算机是如此之慢,内存非常昂贵,以至于人们采用逻辑,也就是计算机的工作原理,来编写程序。他们通过基础机器语言来操纵信息。计算机太慢了,计算太贵了。

但现在,计算力越来越便宜,劳动力也越来越昂贵。而且计算力变得如此便宜,以至于慢慢地,让计算机学习会比让人类编写程序更有效。在那时,深度学习会开始解决以前没有人编写过程序的问题,比如在计算机视觉和翻译等领域。

机器学习是计算密集型的,但你只需编写一个程序,通过给它不同的数据集,你可以解决不同的问题。并且你不需要是领域专家。因此,对于存在大量数据的任何事物,都有对应的大量应用程序。

Q:“深度学习”现在似乎无处不在。 它是如何变得如此主导潮流?

我可以在历史上精确地找到这一特定时刻:2012年12月在NIPS会议(这是最大的AI会议)上。在那里,计算机科学家Geoff Hinton和他的两个研究生表明你可以使用一个名为ImageNet的非常大的数据集,包含10,000个类别和1000万个图像,并使用深度学习将分类错误减少20%。

通常,在该数据集上,错误在一年内减少不到1%。 在一年内,20年的研究被跨越了。

这真的打开了潮水的闸门。

Q:深度学习的灵感来自大脑。那么计算机科学和神经科学这些领域如何协同工作呢?

深度学习的灵感来自神经科学。最成功的深度学习网络是由Yann LeCun开发的卷积神经网络(CNN)。

如果你看一下CNN的架构,它不仅仅是很多单元,它们以一种基本上镜像大脑的方式连接起来。大脑中被研究的最好的一部分在视觉系统,在对视觉皮层的基础研究工作中,表明那里存在简单和复杂细胞。如果你看一下CNN架构,会发现有简单细胞和复杂细胞的等价物,这直接来自我们对视觉系统的理解。

Yann没有盲目地试图复制皮质。他尝试了许多不同的变种,但他最终收敛到的方式和那些自然收敛到的方式相同。这是一个重要的观察。自然与人工智能的趋同可以教给我们很多东西,而且还有更多的东西要去探索。

Q:我们对计算机科学的理解有多少取决于我们对大脑的理解程度?

我们现在的大部分AI都是基于我们对大脑在60年代的了解。 我们现在知道的更多,并且更多的知识被融入到架构中。

AlphaGo,这个击败围棋冠军的程序不仅包括皮质模型,还包括大脑的一部分被称为“基底神经节”的模型,这对于制定一系列决策来实现目标非常重要。 有一种称为时间差分的算法,由Richard Sutton在80年代开发,当与深度学习相结合时,能够进行人类以前从未见过的非常复杂的玩法。

当我们了解大脑的结构,并且当我们开始了解如何将它们集成到人工系统中时,它将提供越来越多的功能,超越我们现在所拥有的。

Q:人工智能也会影响神经科学吗?

它们是并行的工作。创新神经技术已经取得了巨大的进步,从一次记录一个神经元到同时记录数千个神经元,并且同时涉及大脑的许多部分,这完全开辟了一个全新的世界。

我说人工智能与人类智能之间存在着一种趋同。随着我们越来越多地了解大脑如何工作,这些认识将反映到AI中。 但与此同时,他们实际上创造了一整套学习理论,可用于理解大脑,让我们分析成千上万的神经元以及他们的活动是如何产生的。 所以神经科学和人工智能之间存在这种反馈循环,我认为这更令人兴奋和重要。

Q:你的书讨论了许多不同的深度学习应用,从自动驾驶汽车到金融交易。你觉得哪个特定领域最有趣?

我完全被震撼到的一个应用是生成对抗网络,或称GANS。使用传统的神经网络,你给出一个输入,你得到一个输出。 GAN能够在没有输入的情况下开展活动 - 产生输出。

是的,我在这些网络创建假视频的故事背景下听说过这个。他们真的会产生看似真实的新事物,对吧?

从某种意义上说,它们会产生内部活动。事实证明这是大脑运作的方式。你可以看某处并看到一些东西,然后你可以闭上眼睛,你可以开始想象出那里没有的东西。你有一个视觉想象,当周围安静时,你闹钟声会浮现想法。那是因为你的大脑是生成性的。现在,这种新型网络可以生成从未存在过的新模式。所以你可以给它,例如,数百张汽车图像,它会创建一个内部结构,可以生成从未存在的汽车的新图像,并且它们看起来完全像汽车。

Q:另一方面,您认为哪些想法可能是过度炒作?

没有人可以预测或想象这种新技术的引入会对未来的事物组织方式产生什么影响。当然这其中有炒作。我们还没有解决真正困难的问题。我们还没有通用智能,就有人说机器人将不久后会取代我们,其实机器人远远落后于人工智能,因为复制身体被发现比复制大脑更复杂。

让我们看一下这一种技术进步:激光。它是在大约50年前发明的,当时占据了整个房间。从占据整个房间到我现在演讲时使用的激光笔需要50年的技术商业化。它必须被推进到体积足够小并可以用五美元购买它的程度。同样的事情将发生在像自动驾驶汽车这样的被炒作的技术上。它并不被期望在明年或者未来10年,就变得无处不在。这过程可能需要花费50年,但重点是,在此过程中会有逐步推进,使它越来越灵活,更安全,更兼容我们组织运输网络的方式。炒作的错误在于人们的时标设定错了。他们期待太多事情太快发生,其实事物只在适当的时候。

关于深度学习的问题可以看下这个网页的视频讲解:AI深度学习---中科院公开课。

4. 自学计算机专业要学习哪些课程

那要看你是什么方向的,自学计算机最关键的是兴趣,你自己定一个目标,然后发奋图强。我当初读计算机专业为的是有朝一日能开发一个病毒侵入小日本的国家安全系统里,就是这个目标,虽然有点不合法,但是激励了我努力读书,星期六日我经常的学校图书馆看一些软件开发,编程的书。
我现在读计算机专业大二,多少知道一点这方面的书,给你列一下
1计算机科学与技术硬件:计算机基础理论与技术、高级语言程序设计、Windows程序设计(MFC)、电路分析与系统、大学物理、离散数学、、模拟电子技术、算法与数据结构、数字电路、数字信号处理、计算机组成原理与汇编语言、数据库原理及应用、软件工程、数据通信与计算机网络、操作系统、计算机系统体系结构、嵌入式系统。

2软件工程:计算机基础理论与技术、C++面向对象程序设计、离散数学、工程经济学、软件工程概论、编译原理、计算机组成原理与汇编、算法与数据结构、软件代码开发及人机交互技术、数据库原理及应用、软件质量保证与测试、软件系统设计与体系结构、操作系统、计算机网络、系统建模与分析、软件过程与管理、计算机系统体系结构。

3信息管理与信息系统:计算机基础理论与技术、管理学原理、市场营销学、C++面向对象程序设计、运筹学、信息经济学概论、概率论与数理统计、经济学原理、会计学原理、数据结构、数据库原理及应用、信息管理学概论、信息组织管理与存储检索、计算机网络、信息系统安全、操作系统应用、生产与运作管理、管理信息系统的分析与设计、电子商务原理及其应用。

这些只代表我个人看法,希望对你有用。

5. 什么是深度学习与机器视觉

深度学习框架,尤其是基于人工神经网络的框架可以追溯到1980年福岛邦彦提出的新认知机[2],而人工神经网络的历史更为久远。1989年,燕乐存(Yann LeCun)等人开始将1974年提出的标准反向传播算法[3]应用于深度神经网络,这一网络被用于手写邮政编码识别。尽管算法可以成功执行,但计算代价非常巨大,神经网路的训练时间达到了3天,因而无法投入实际使用[4]。许多因素导致了这一缓慢的训练过程,其中一种是由于尔根·施密德胡伯(Jürgen Schmidhuber)的学生赛普·霍克赖特(Sepp Hochreiter)于1991年提出的梯度消失问题[5][6]。与此同时,神经网络也受到了其他更加简单模型的挑战,支持向量机等模型在20世纪90年代到21世纪初成为更加流行的机器学习算法。
“深度学习”这一概念从2007年前后开始受到关注。当时,杰弗里·辛顿(Geoffrey Hinton)和鲁斯兰·萨拉赫丁诺夫(Ruslan Salakhutdinov)提出了一种在前馈神经网络中进行有效训练的算法。这一算法将网络中的每一层视为无监督的受限玻尔兹曼机,再使用有监督的反向传播算法进行调优[7]。在此之前的1992年,在更为普遍的情形下,施密德胡伯也曾在递归神经网络上提出一种类似的训练方法,并在实验中证明这一训练方法能够有效提高有监督学习的执行速度[8][9].
自深度学习出现以来,它已成为很多领域,尤其是在计算机视觉和语音识别中,成为各种领先系统的一部分。在通用的用于检验的数据集,例如语音识别中的TIMIT和图像识别中的ImageNet, Cifar10上的实验证明,深度学习能够提高识别的精度。
硬件的进步也是深度学习重新获得关注的重要因素。高性能图形处理器的出现极大地提高了数值和矩阵运算的速度,使得机器学习算法的运行时间得到了显着的缩短[10][11]。
基本概念[编辑]
深度学习的基础是机器学习中的分散表示(distributed representation)。分散表示假定观测值是由不同因子相互作用生成。在此基础上,深度学习进一步假定这一相互作用的过程可分为多个层次,代表对观测值的多层抽象。不同的层数和层的规模可用于不同程度的抽象[1]。
深度学习运用了这分层次抽象的思想,更高层次的概念从低层次的概念学习得到。这一分层结构常常使用贪婪算法逐层构建而成,并从中选取有助于机器学习的更有效的特征[1].
不少深度学习算法都以无监督学习的形式出现,因而这些算法能被应用于其他算法无法企及的无标签数据,这一类数据比有标签数据更丰富,也更容易获得。这一点也为深度学习赢得了重要的优势[1]。
人工神经网络下的深度学习[编辑]
一部分最成功的深度学习方法涉及到对人工神经网络的运用。人工神经网络受到了1959年由诺贝尔奖得主大卫·休伯尔(David H. Hubel)和托斯坦·威泽尔(Torsten Wiesel)提出的理论启发。休伯尔和威泽尔发现,在大脑的初级视觉皮层中存在两种细胞:简单细胞和复杂细胞,这两种细胞承担不同层次的视觉感知功能。受此启发,许多神经网络模型也被设计为不同节点之间的分层模型[12]。
福岛邦彦提出的新认知机引入了使用无监督学习训练的卷积神经网络。燕乐存将有监督的反向传播算法应用于这一架构[13]。事实上,从反向传播算法自20世纪70年代提出以来,不少研究者都曾试图将其应用于训练有监督的深度神经网络,但最初的尝试大都失败。赛普·霍克赖特(Sepp Hochreiter)在其博士论文中将失败的原因归结为梯度消失,这一现象同时在深度前馈神经网络和递归神经网络中出现,后者的训练过程类似深度网络。在分层训练的过程中,本应用于修正模型参数的误差随着层数的增加指数递减,这导致了模型训练的效率低下[14][15]。
为了解决这一问题,研究者们提出了一些不同的方法。于尔根·施密德胡伯(Jürgen Schmidhuber)于1992年提出多层级网络,利用无监督学习训练深度神经网络的每一层,再使用反向传播算法进行调优。在这一模型中,神经网络中的每一层都代表观测变量的一种压缩表示,这一表示也被传递到下一层网络[8]。
另一种方法是赛普·霍克赖特和于尔根·施密德胡伯提出的长短期记忆神经网络(long short term memory,LSTM)[16]。2009年,在ICDAR 2009举办的连笔手写识别竞赛中,在没有任何先验知识的情况下,深度多维长短期记忆神经网络取得了其中三场比赛的胜利[17][18]。
斯文·贝克提出了在训练时只依赖梯度符号的神经抽象金字塔模型,用以解决图像重建和人脸定位的问题[19]。
其他方法同样采用了无监督预训练来构建神经网络,用以发现有效的特征,此后再采用有监督的反向传播以区分有标签数据。辛顿等人于2006年提出的深度模型提出了使用多层隐变量学习高层表示的方法。这一方法使用斯摩棱斯基于1986年提出的受限玻尔兹曼机[20]对每一个包含高层特征的层进行建模。模型保证了数据的对数似然下界随着层数的提升而递增。当足够多的层数被学习完毕,这一深层结构成为一个生成模型,可以通过自上而下的采样重构整个数据集[21]。辛顿声称这一模型在高维结构化数据上能够有效低提取特征[22]。
吴恩达和杰夫·迪恩(Jeff Dean)领导的谷歌大脑(英语:Google Brain)团队创建了一个仅通过YouTube视频学习高层概念(例如猫)的神经网络[23] [24]。
其他方法依赖了现代电子计算机的强大计算能力,尤其是GPU。2010年,在于尔根·施密德胡伯位于瑞士人工智能实验室IDSIA的研究组中,丹·奇雷尚(Dan Ciresan)和他的同事展示了利用GPU直接执行反向传播算法而忽视梯度消失问题的存在。这一方法在燕乐存等人给出的手写识别MNIST数据集上战胜了已有的其他方法[10]。
截止2011年,前馈神经网络深度学习中最新的方法是交替使用卷积层(convolutional layers)和最大值池化层(max-pooling layers)并加入单纯的分类层作为顶端。训练过程也无需引入无监督的预训练[25][26]。从2011年起,这一方法的GPU实现[25]多次赢得了各类模式识别竞赛的胜利,包括IJCNN 2011交通标志识别竞赛[27]和其他比赛。
这些深度学习算法也是最先在某些识别任务上达到和人类表现具备同等竞争力的算法[28]。
深度学习结构[编辑]
深度神经网络是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。深度神经网络通常都是前馈神经网络,但也有语言建模等方面的研究将其拓展到递归神经网络[29]。卷积深度神经网络(Covolutional Neuron Networks, CNN)在计算机视觉领域得到了成功的应用[30]。此后,卷积神经网络也作为听觉模型被使用在自动语音识别领域,较以往的方法获得了更优的结果[31]。
深度神经网络[编辑]
深度神经网络(deep neuron networks, DNN)是一种判别模型,可以使用反向传播算法进行训练。权重更新可以使用下式进行随机梯度下降求解:

其中,为学习率,为代价函数。这一函数的选择与学习的类型(例如监督学习、无监督学习、增强学习)以及激活函数相关。例如,为了在一个多分类问题上进行监督学习,通常的选择是使用Softmax函数作为激活函数,而使用交叉熵作为代价函数。Softmax函数定义为,其中代表类别的概率,而和分别代表对单元和的输入。交叉熵定义为,其中代表输出单元的目标概率,代表应用了激活函数后对单元的概率输出[32]。
深度神经网络的问题[编辑]
与其他神经网络模型类似,如果仅仅是简单地训练,深度神经网络可能会存在很多问题。常见的两类问题是过拟合和过长的运算时间。
深度神经网络很容易产生过拟合现象,因为增加的抽象层使得模型能够对训练数据中较为罕见的依赖关系进行建模。对此,权重递减(正规化)或者稀疏(-正规化)等方法可以利用在训练过程中以减小过拟合现象[33]。另一种较晚用于深度神经网络训练的正规化方法是丢弃法("dropout" regularization),即在训练中随机丢弃一部分隐层单元来避免对较为罕见的依赖进行建模[34]。
反向传播算法和梯度下降法由于其实现简单,与其他方法相比能够收敛到更好的局部最优值而成为神经网络训练的通行方法。但是,这些方法的计算代价很高,尤其是在训练深度神经网络时,因为深度神经网络的规模(即层数和每层的节点数)、学习率、初始权重等众多参数都需要考虑。扫描所有参数由于时间代价的原因并不可行,因而小批量训练(mini-batching),即将多个训练样本组合进行训练而不是每次只使用一个样本进行训练,被用于加速模型训练[35]。而最显着地速度提升来自GPU,因为矩阵和向量计算非常适合使用GPU实现。但使用大规模集群进行深度神经网络训练仍然存在困难,因而深度神经网络在训练并行化方面仍有提升的空间。
深度信念网络[编辑]

一个包含完全连接可见层和隐层的受限玻尔兹曼机(RBM)。注意到可见层单元和隐层单元内部彼此不相连。
深度信念网络(deep belief networks,DBN)是一种包含多层隐单元的概率生成模型,可被视为多层简单学习模型组合而成的复合模型[36]。
深度信念网络可以作为深度神经网络的预训练部分,并为网络提供初始权重,再使用反向传播或者其他判定算法作为调优的手段。这在训练数据较为缺乏时很有价值,因为不恰当的初始化权重会显着影响最终模型的性能,而预训练获得的权重在权值空间中比随机权重更接近最优的权重。这不仅提升了模型的性能,也加快了调优阶段的收敛速度[37]。
深度信念网络中的每一层都是典型的受限玻尔兹曼机(restricted Boltzmann machine,RBM),可以使用高效的无监督逐层训练方法进行训练。受限玻尔兹曼机是一种无向的基于能量的生成模型,包含一个输入层和一个隐层。图中对的边仅在输入层和隐层之间存在,而输入层节点内部和隐层节点内部则不存在边。单层RBM的训练方法最初由杰弗里·辛顿在训练“专家乘积”中提出,被称为对比分歧(contrast divergence, CD)。对比分歧提供了一种对最大似然的近似,被理想地用于学习受限玻尔兹曼机的权重[35]。当单层RBM被训练完毕后,另一层RBM可被堆叠在已经训练完成的RBM上,形成一个多层模型。每次堆叠时,原有的多层网络输入层被初始化为训练样本,权重为先前训练得到的权重,该网络的输出作为新增RBM的输入,新的RBM重复先前的单层训练过程,整个过程可以持续进行,直到达到某个期望中的终止条件[38]。
尽管对比分歧对最大似然的近似十分粗略(对比分歧并不在任何函数的梯度方向上),但经验结果证实该方法是训练深度结构的一种有效的方法[35]。
卷积神经网络[编辑]
主条目:卷积神经网络
卷积神经网络(convolutional neuron networks,CNN)由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网络能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网络在图像和语音识别方面能够给出更优的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网络,卷积神经网络需要估计的参数更少,使之成为一种颇具吸引力的深度学习结构[39]。
卷积深度信念网络[编辑]
卷积深度信念网络(convolutional deep belief networks,CDBN)是深度学习领域较新的分支。在结构上,卷积深度信念网络与卷积神经网络在结构上相似。因此,与卷积神经网络类似,卷积深度信念网络也具备利用图像二维结构的能力,与此同时,卷积深度信念网络也拥有深度信念网络的预训练优势。卷积深度信念网络提供了一种能被用于信号和图像处理任务的通用结构,也能够使用类似深度信念网络的训练方法进行训练[40]。
结果[编辑]
语音识别[编辑]
下表中的结果展示了深度学习在通行的TIMIT数据集上的结果。TIMIT包含630人的语音数据,这些人持八种常见的美式英语口音,每人阅读10句话。这一数据在深度学习发展之初常被用于验证深度学习结构[41]。TIMIT数据集较小,使得研究者可以在其上实验不同的模型配置。

方法
声音误差率 (PER, %)

随机初始化RNN 26.1
贝叶斯三音子GMM-HMM 25.6
单音子重复初始化DNN 23.4
单音子DBN-DNN 22.4
带BMMI训练的三音子GMM-HMM 21.7
共享池上的单音子DBN-DNN 20.7
卷积DNN 20.0
图像分类[编辑]
图像分类领域中一个公认的评判数据集是MNIST数据集。MNIST由手写阿拉伯数字组成,包含60,000个训练样本和10,000个测试样本。与TIMIT类似,它的数据规模较小,因而能够很容易地在不同的模型配置下测试。Yann LeCun的网站给出了多种方法得到的实验结果[42]。截至2012年,最好的判别结果由Ciresan等人在当年给出,这一结果的错误率达到了0.23%[43]。
深度学习与神经科学[编辑]
计算机领域中的深度学习与20世纪90年代由认知神经科学研究者提出的大脑发育理论(尤其是皮层发育理论)密切相关[44]。对这一理论最容易理解的是杰弗里·艾尔曼(Jeffrey Elman)于1996年出版的专着《对天赋的再思考》(Rethinking Innateness)[45](参见斯拉格和约翰逊[46]以及奎兹和赛杰诺维斯基[47]的表述)。由于这些理论给出了实际的神经计算模型,因而它们是纯计算驱动的深度学习模型的技术先驱。这些理论指出,大脑中的神经元组成了不同的层次,这些层次相互连接,形成一个过滤体系。在这些层次中,每层神经元在其所处的环境中获取一部分信息,经过处理后向更深的层级传递。这与后来的单纯与计算相关的深度神经网络模型相似。这一过程的结果是一个与环境相协调的自组织的堆栈式的转换器。正如1995年在《纽约时报》上刊登的那样,“……婴儿的大脑似乎受到所谓‘营养因素’的影响而进行着自我组织……大脑的不同区域依次相连,不同层次的脑组织依照一定的先后顺序发育成熟,直至整个大脑发育成熟。”[48]
深度结构在人类认知演化和发展中的重要性也在认知神经学家的关注之中。发育时间的改变被认为是人类和其他灵长类动物之间智力发展差异的一个方面[49]。在灵长类中,人类的大脑在出生后的很长时间都具备可塑性,但其他灵长类动物的大脑则在出生时就几乎完全定型。因而,人类在大脑发育最具可塑性的阶段能够接触到更加复杂的外部场景,这可能帮助人类的大脑进行调节以适应快速变化的环境,而不是像其他动物的大脑那样更多地受到遗传结构的限制。这样的发育时间差异也在大脑皮层的发育时间和大脑早期自组织中从刺激环境中获取信息的改变得到体现。当然,伴随着这一可塑性的是更长的儿童期,在此期间人需要依靠抚养者和社会群体的支持和训练。因而这一理论也揭示了人类演化中文化和意识共同进化的现象[50]。
公众视野中的深度学习[编辑]
深度学习常常被看作是通向真正人工智能的重要一步[51],因而许多机构对深度学习的实际应用抱有浓厚的兴趣。2013年12月,Facebook宣布雇用燕乐存为其新建的人工智能实验室的主管,这一实验室将在加州、伦敦和纽约设立分支机构,帮助Facebook研究利用深度学习算法进行类似自动标记照片中用户姓名这样的任务[52]。
2013年3月,杰弗里·辛顿和他的两位研究生亚历克斯·克里泽夫斯基和伊利娅·苏特斯科娃被谷歌公司雇用,以提升现有的机器学习产品并协助处理谷歌日益增长的数据。谷歌同时并购了辛顿创办的公司DNNresearch[53]。
批评[编辑]
对深度学习的主要批评是许多方法缺乏理论支撑。大多数深度结构仅仅是梯度下降的某些变式。尽管梯度下降已经被充分地研究,但理论涉及的其他算法,例如对比分歧算法,并没有获得充分的研究,其收敛性等问题仍不明确。深度学习方法常常被视为黑盒,大多数的结论确认都由经验而非理论来确定。
也有学者认为,深度学习应当被视为通向真正人工智能的一条途径,而不是一种包罗万象的解决方案。尽管深度学习的能力很强,但和真正的人工智能相比,仍然缺乏诸多重要的能力。理论心理学家加里·马库斯(Gary Marcus)指出:
就现实而言,深度学习只是建造智能机器这一更大挑战中的一部分。这些技术缺乏表达因果关系的手段……缺乏进行逻辑推理的方法,而且远没有具备集成抽象知识,例如物品属性、代表和典型用途的信息。最为强大的人工智能系统,例如IBM的人工智能系统沃森,仅仅把深度学习作为一个包含从贝叶斯推理和演绎推理等技术的复杂技术集合中的组成部分[54]。

6. 究竟什么是“深度学习”

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。[1]
深度学习的概念由Hinton等人于2006年提出。基于深度置信网络(DBN)提出非监督贪心逐层训练算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。
深度学习是机器学习中一种基于对数据进行表征学习的方法。观测值(例如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务(例如,人脸识别或面部表情识别)。深度学习的好处是用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。
深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。
同机器学习方法一样,深度机器学习方法也有监督学习与无监督学习之分.不同的学习框架下建立的学习模型很是不同.例如,卷积神经网络(Convolutional neural networks,简称CNNs)就是一种深度的监督学习下的机器学习模型,而深度置信网(Deep Belief Nets,简称DBNs)就是一种无监督学习下的机器学习模型。

7. 计算机科学与技术 与软件工程 与网络工程有什么区别

计算机科学与技术专业 培养具有良好综合素质和开拓创新能力,系统掌握本专业的基本理论、基础知识和基本技能与方法,具有实际应用和科学研究能力的计算机及其相关技术与产业领域的复合型应用技术人才。

主要课程:数学分析、高等代数、数理逻辑、集合论与图论、计算机科学导论、程序设计基础、数字电路与逻辑设计、计算机组成原理、数据结构与算法、操作系统原理、汇编语言程序设计、数据库系统原理、编译原理、软件工程导论、计算机网络、计算机体系结构、并行与分布式计算、计算机图形学、信息安全技术、多媒体技术、Linux原理与应用等。专业课程还将安排相关的实验(实习)、课程设计或社会实践,以加强学生的实践能力与开拓能力。高年级同学还可以选修本学院其它专业的相关课程。

网络工程专业 培养具有实际运用先进的工程化方法和工具从事网络规划、设计、开发和维护等工作,具备工程项目的组织与管理能力的实用型、复合型网络工程技术与管理的高级人才。

主要课程:数学分析、高等代数、数理逻辑、集合论与图论、计算机科学导论、程序设计基础、数字电路与逻辑设计、计算机组成原理、数据结构与算法、计算机网络、操作系统原理、计算机体系结构、计算机接口技术、通信原理、网络系统设计、密码学与网络安全、无线通信与网络、Linux原理与应用等。专业课程还将安排相关的实验(实习)、课程设计或社会实践,以加强学生的实践能力与开拓能力。高年级同学还可以选修本学院其它专业的相关课程。

信息安全专业 培养具有扎实的数理基础,较好的外语和计算机技术运用能力,掌握信息安全的基本理论与技术、计算机与网络通信及其安全技术以及信息安全法律法规等方面的知识,能运用所学知识与技能去分析和解决相关的实际问题,具有较高的综合业务素质、较强的创新与实践能力,可以在政府、国防、金融、公安和商业等部门从事信息安全产品研发、信息系统安全分析与设计、信息安全技术咨询与评估服务、信息安全教育、信息安全管理与执法等工作的高级专业人才。

主要课程:数学分析、数理逻辑、集合论与图论、信息安全数学基础、计算机组成原理、程序设计基础、数据结构与算法、数据库系统原理、软件工程导论、计算机接口技术、计算机网络、通信原理、信息论基础、操作系统安全、Linux原理与应用、网络协议与验证、移动计算、计算机密码学、网络安全技术、计算机病毒、信息隐藏技术、电子商务技术、信息安全法律法规等。专业课程还将安排相关的实验(实习)、课程设计或社会实践,以加强学生的实践能力与开拓能力。高年级同学还可以选修本学院其它专业的相关课程。

上述专业的毕业生适合在计算件软硬件企业、网络公司、电信企业、金融、交通、银行等各类企事业单位就职,从事计算机技术管理、计算机控制、软件和信息安全产品的生产、开发、应用和维护工作,也可在政府管理部门、金融和经济管理部门从事计算机应用、网络信息管理和维护工作,还可在高等学校和研究部门从事教学、科研工作。

电子与通信工程系

电子信息科学与技术专业 培养基础扎实、知识面较宽、素质高、能力强,有一定创新能力、科学研究能力和解决实际问题的能力,适应21世纪社会和经济发展的需要,能从事电子信息科学与技术领域的科学研究、教学与应用技术等工作的复合型人才。

毕业生具有坚实的数理基础,掌握电子学与信息系统的基本理论和方法。熟悉电路与系统、电磁场与电磁波理论、微波与射频技术、计算机网络以及通信和计算机应用等技术。具有较高的实验能力和一定的分析和解决实际问题的能力;了解电子学与信息系统的新发展并具有一定的科学研究、应用研究、技术开发及教学等方面的能力。较为熟练地使用一种外国语阅读专业书刊及外文资料。

学生毕业后适合在通讯、银行、企业、机关等部门,从事电子技术和计算机技术管理、生产方面的开发应用,以及在高等学校和研究部门从事教学、科研工作。

主要课程:高等数学、概率论与数理统计、大学物理及实验、高级程序设计、电路基础理论、模拟电子技术及实验、数字电路与逻辑设计及实验、微型计算机原理及实验、高频电路、信号与系统、电磁场与电磁波、集成电路设计、信息论、微波技术与实验、数字信号处理、计算机通信与网络、通信原理、EDA原理及应用、单片机原理及应用、数据结构与算法、现代通信技术、数据库系统原理等,学生还可选修学校及学院其他专业的相关课程。

自动化专业 自动化是以电子技术、计算机技术、检测技术、通信技术和控制理论为基础,研究自动控制系统的组成结构、控制规律及其应用的学科。该专业培养德、智、体全面发展,注重德、智、体、美、劳,具有健全的心理素质和健康的体格。基础扎实、知识面宽、综合素质高、实践能力强,适应适应21世纪社会和经济发展的需要,能从事自动化和计算机网络控制工程领域的先进技术研究、设计、应用开发及教学等方面的高级复合型人才。

毕业生应具有控制科学与工程学科扎实的基础理论、基本技能和方法;具有对电子电气电路、控制系统进行分析、设计和研究开发的能力;掌握信号自动检测、数据处理的基础知识与技能;掌握计算机与网络控制技术;有严谨的科学作风和创新能力;具有独立进行科学研究、应用研究、分析和解决实际问题的能力。

学生毕业后适合在各类企业、国家政府部门、事业、通信、银行、军事等部门从事电子技术、计算机技术、通信技术及生产过程自动化方面的应用研究、产品开发及行政管理工作,以及在高等学校和研究等部门从事教学、科研及管理工作。

主要课程:高等数学、概率论与数理统计、工程数学、数值计算、高级程序设计、大学物理及实验、电路基础理论及实验、模拟电子技术及实验、数字电路与逻辑设计及实验、电力电子技术、电机及拖动基础、微型计算机原理及实验、自动控制原理及实验、信号与系统、现代控制理论、计算机控制技术及实验、计算机通信与网络、数字信号处理、电气与可编程控制器、过程控制工程、单片机原理及应用、自动测量技术、电力拖动自动控制系统、虚拟仪器技术、数据结构、操作系统、数据库系统原理、科技信息检索等,学生还可选修学校及学院其他专业的相关课程。

通信工程专业 培养基础扎实、知识面较宽、综合素质高、实践能力强,适应21世纪社会和经济发展的需要,系统掌握电路分析与信号处理理论、通信原理、网络理论、电磁场理论、传输原理、现代电信交换等专业基础理论;掌握各类通信网、通信系统及其主要设备的构成原理、技术性能、设计、调试、运行维护和管理的基本知识;对国内外通信工程及相关学科的现状和发展趋势有一定的了解;有严谨的科学作风和创新能力;具有独立对一般的通信系统和网络进行分析、设计和研究开发的能力。能从事现代通信工程和电信网络先进技术研究、设计、开发及教学等方面的高级复合型人才。

学生毕业后适合在电信企业、邮电管理部门、银行、交通等部门从事通信、电子技术和计算机应用等方面的管理和技术开发工作,也可以在高等学校和研究部门从事教学和科研工作。

主要课程:高等数学、概率论与数理统计、高级程序设计、大学物理及实验、电路基础理论、模拟电子技术及实验、数字电路与逻辑设计及实验、微型计算机原理及实验、高频电路、信号与系统、电磁场与电磁波、微波技术实验、通信原理、计算机网络、数字信号处理、信息论、操作系统、数据库系统原理、数字通信系统及实验、无线通信原理、现代电信交换、光纤通信、数字图象处理、数据结构、单片机原理及应用、计算机视觉等。学生还可选修该学院其他专业的相关课程。

8. 自学计算机编程应该看些什么书

一:第一阶段
C语言-------《C语言设计》 作者:谭浩强
大多数人都推荐谭浩强这本书,谭浩强的C语言程序设计,我觉得更适合当教科书,主要是篇幅没有那么大,书本的内容不是很全,由老师带入门是最好的。

《C Primer Plus》第五版 作者:Stephen Prata
这本书比较厚,内容也比较基础,扩展的也比较广,自学容易上手,唯一的缺陷在于它是外国人编写,而国内的翻译往往让人难以满意,如果你有较好的英语水平,最好阅读英文版的。

《C语言入门经典》第四版 作者:Ivor Horton

二:第二阶段
这一阶段看个人主攻的方向了,安卓一般就JAVA,PC游戏、软件C++,也有推荐C#,这些都是主流语言,其他语言要看个人爱好与发展。
面向对象的语言,一般懂一门,之后要转其他语言也很容易的,其实思想都差不多,主要的不同在于语法。C#容易上手,一个月入门,一年精通,而C++却有点难,一年入门,二十年也未必敢说自己精通。如果有时间,可以了解一下汇编语言。

C++ Primer, 4rd Edition

(入门类:
C++ Primer, 4rd Edition
Thinking in C++, 2nd Edition
The C++ Standard Library: A Tutorial and Reference

进阶类:
The C++ Programming Language, Special Edition
The Design and Evolution of C++
Inside C++ Object Model
C++ Templates: The Complete Guide
STL 源码剖析
Generic Programming and the STL
Modern C++ Design: Generic Programming and Design Patterns Applied

应用技巧类:
Effective C++, 2nd Editon
More Effective C++
Exceptional C++
More Exceptional C++
Effective STL
Ruminations on C++)

三:第三阶段
API/SDK------------- 《windows程序设计》(Jeff Prosise)
这书主要是开发Windows软件要深入研读的,毕竟是WindowsAPI。如果是主攻C++,那么这本书你可以大概略读一遍,不用过多的深入追究,QT才是C++主要深入思虑的关键。

四:第四阶段
MFC----《VC++技术内幕》、《深入浅出MFC》及视频教程孙鑫 VC++6.0
如果是C++,QT是要重点学习的对象。

五:第五阶段
COM/DCOM/ATL/COM+---------《COM技术内幕》

未知阶段:
《数据结构》,《算法导论》这些基本是编程的核心了,编程的很大情况都依赖于算法的实现,这个两门基本要深入研究,这是决定编程能力的核心标准。

如果不弄底层的话,《操作系统原理》可以简单地了解。

9. 在做深度学习的时候会用到哪些计算机语言

最容易入门的就是Python语言,u就业的深度学习课程就送Python的入门课。

10. 人工智能需要学习哪些课程

人工智能专业学习的主要课程有认知心理学、神经科学基础、人类的记忆与学习、语言与思维、计算神经工程等。人工智能专业是中国高校人才计划设立的专业,旨在培养中国人工智能产业的应用型人才,推动人工智能一级学科建设。

阅读全文

与深度学习计算机体系编译器相关的资料

热点内容
plc教程pdf 浏览:665
pythonshell清屏命令 浏览:276
检测到加密狗注册服务器失败 浏览:201
解压后手机如何安装 浏览:518
极客学院app为什么下架 浏览:13
图片批量压缩绿色版 浏览:651
东北程序员帅哥 浏览:707
加密封条风噪小 浏览:974
安阳少儿编程市场 浏览:499
云服务器建设原理 浏览:259
javajunit4for 浏览:847
华为服务器如何进阵列卡配置 浏览:435
apache服务器ip地址访问 浏览:719
如何买到安卓手机预装软件 浏览:537
冤罪百度云不要压缩 浏览:88
苏州云存储服务器 浏览:177
解压收纳原声 浏览:387
java注册验证 浏览:377
火花app怎么上推荐 浏览:982
什么app能游戏投屏到电视上 浏览:456