《TensorFlow深度学习算法原理与编程实战》笔记---Part1

《TensorFlow深度学习算法原理与编程实战》笔记

《TensorFlow深度学习算法原理与编程实战》笔记—Part1

这本书是笔者自学深度学习时的第一本参考书,希望在写作的过程中能够将自己学习的历程记录下来,故写成博客的形式,既方便了自己也可能会帮助到其他人,一举两得甚至多得。话不多说,直接切入正题。

综述

首先简单介绍一下这本书。这本书作者为蒋子阳先生,他具有丰富的深度学习项目经验和多年的编程经验,对TensorFlow有着独特的认识和深入的理解。书共有14章,主要内容有:人工智能、大数据、机器学习和深度学习概述;深度学习及TensorFlow框架的相关背景TensorFlow的安装;TensorFlow编程策略;深度前馈神经网络;优化网络的方法;全连接神经网络的经典实践;卷积神经网络的基础知识;经典卷积神经网络的Tensorflow实现;循环神经网络及其应用;深度强化学习概述;TensorFlow读取数据的API;TensorFlow持久化模型的API;可视化工具TensorBoard的使用;TensorFlow使用多GPU或并行的方式加速计算等内容。

大致可以将书分为三个部分。

  1. 第一部分包括1-3章内容,为深度学习方法的开始。
    第1章主要介绍了人工智能的发展、机器学习与深度学习之间的关系以及人工智能的过去。另外还涉及到一些关于TensorFlow及深度学习框架的介绍;
    第2章介绍了安装TensorFlow的方法;
    第3章介绍了一些基本TensorFlow的编程策略,可将这一章看作TensorFlow的说明书,计算图、张量和会话是在使用TensorFlow框架前必须了解的一些机制;
  2. 第二部分包括4-10章内容,讲用TensorFlow实现深度网络。
    第4章介绍了深度前馈神经网络。该网络涵盖的范围比较广,在介绍网路的前向传播过程以及激活函数、损失函数等网络的基本组件时,都选择了比较简明的全连接形式的网络;
    第5章介绍的是优化网络的方法。用一些优化方法优化网络是必须的。这一章的开始涉及了梯度下降、反向传播的理论;在后续,还针对网络会出现的过拟合现象介绍了一些相应的优化方法。可以说这一章介绍的方法比较常用,也有关于TensorFlow的实现;
    第6章给出了一个全连接神经网络的静待你时间案例,其主要内容是通过全连接形式的神经网络实现基于MNIST数据集的手写数组识别。在这个实践中用到了第4,5章的绝大多数内容;
    第7章介绍了卷积神经网络。卷积神经网络同样是一种前馈神经网络。卷积神经网络与全连接方式不同,是稀疏连接的。这一章介绍了卷积神经网络卷积层和池化层的TensorFlow实现,并在之后以一个使用了Cifar-10数据集的简单循环神经网络作为本章中要实践的内容。作为一些补充,最后还加入了一些TensorFlow中关于图像处理的API应用;
    第8章给出了经典卷积神经网络的TensorFlow实现方式。在第7章的基础上,这一章介绍了LeNet-5、AlexNet、VGGNet、inceptionNet-V3和ResNet5个经典的卷积神经网络。这些卷积神经网络是按照出现时间的先后顺序进行组织的,并且每一个卷积神经网络都提出了一些新的想法,章内会尽可能分享这些想法;
    第9章介绍了循环神经网络。循环神经网络已经不再属于前馈神经网络的范畴,其应用多见于自然语言处理领域。除了介绍循环神经网络本身,本章也适当加入了一些其在自然语言处理领域应用的例子;
    第10章是一些深度强化学习的内容,深度强化学习是现代通用人工智能的实现方法,本章使用较短的篇幅概述了深度强化学习的相关内容;
  3. 第三部分包括11-14章内容。
    第11章介绍了使用TensorFlow进行数据读取的方法。网络需要数据的输入,为了方便这一过程,TensorFlow本身提供了一些API。本章介绍的就是这些API;
    第12章介绍了TensorFlow模型持久化。将训练好的模型存储起来并在使用时加载存储好的模型,因为模型的训练过程一般是比较耗时的。本章除了给出模型持久化的实例外,还适当介绍了TensorFlow模型持久化的原理,内容比较全面;
    第13章介绍了TensorFlow自带的TensorBoard可视化工具。网络模型中的一些标量数据、图片或者音频都可以通过TensorBoard工具可视化出来,甚至模型的计算图也可以,这大大方便了我们的调试过程;
    第14章介绍了TensorBorad加速计算。深度神经网络模型的训练过程中会产生大量的计算,TensorFlow支持使用多个GPU设备或者分布式的方式来进行并行加快计算的过程。本章先是介绍了并行计算的一些模式,然后重点放在了如何通过代码实现TensorFlow使用多个GPU设备或者分布式的方式加速计算。

第1章 开篇

本章的知识架构如下:
Fig 1.1 第一章知识架构

1.1 人工智能的发展

1.1.1 萌芽

这一阶段发生在20世纪50年底代至70年代。1956年可称为人工智能元年,这一年,美国达特茅斯学院举行了一场由其数学系助理教授John McCarthy主持的会议,会上McCarthy提出了人工智能定义:人工智能就是让机器的行为看起来就像是人所表现出来的智能行为一样。此后,人工智能迎来了第一段高峰期,计算机被广泛应用于数学和自然语言领域,用来解决代数、几何和英语问题。但是,随之而来的一些失败使得这一时期的人工智能走向低谷。

1.1.2 复苏

20世纪60年代末到70年代,“专家系统(Expert System)”出现,专家系统的出现使得人工智能的应用实际化。专家系统即一个(或一组)针对特定领域,应用大量的专家知识配合推理方法来求解复杂问题的一种人工智能计算机程序。由人机交互界面、知识库、推理机、解释器、综合数据库、知识获取等6个部分组成。

在这里插入图片描述
专家系统也属于人工智能的一个分支。其研究目标是模拟人类专家的推理思维过程,一般是将领域专家的知识和经验用一种形式化的语言进行编码并存入计算机,计算机可以使用逻辑推理规则来自动地理解这些形式化语言中的声明,对输入的事实进行逻辑推理,做出判断和决策。这就是广为人知的知识库方法(Knowledge Base)。
20世纪80年代末,一些机器学习算法开始出现,并迅速成为人工智能领域研究的热点。比较典型的代表就是用于人工智能神经网络的反向传播算法(Back Propagation,简称BP算法)。
1997年IBM的深蓝国际象棋软件战胜国际象棋世界冠军可以看成人工智能领域里一个里程碑式的成果。20世纪末,各种经典机器学习算法相继被提出,比如支持向量机(Support Vector Machine,SVM)、随机森林(Random Forests)、逻辑回归(Logistic Resgression,LR)等。
21世纪以来,Internet技术高速发展,机器学习算法模型需要的大量数据可以从互联网中更容易的获得。一些机器学习算法模型也被应用到互联网服务中。

1.1.3 现代实践:大数据+深度神经网络模型

2006年Geoffrey Hinton教授(公认机器学习领域三大泰斗,另外两位是Yann LeCun和Yoshua Bengio)何其学生在《SCIENCE》上发表了一篇基于神经网络深度学习理念的文章《Reducing the dimensionality of data with neural networks》,这篇文章使得深度学习技术成为了机器学习的主要研究方向,并开启了人工智能又一轮新的浪潮。
随着今年来计算机硬件的高速发展,尤其是基于通用GPU并行运算速度提升,深度学习在业界持续升温,一些具有代表性的深度学习算法被相继提出。首先是在语音识别领域。2011年以来,微软研究院和Google的语音识别研究人员先后采用基于深度学习的深度神经网络(Deep Neural Network,DNN)技术降低语音识别错误率达20%-30%,取得了在该领域十多年来最好的突破性进展。其次是在图像识别领域,基于深度学习的卷积神经网络(Convolutional Neural Network,CNN)同样取得了惊人的效果。2012年,CNN网络模型在ImageNet图像数据集上首次将错误率从26%降低到15%。
2014年,尤金-古斯特曼(Eugene Goostman)首次通过了图灵测试。
2016年3月,Alpha Go赢得人机对弈。

1.2 大数据

大数据通俗来讲,可以称为“巨量资料”。指以多元形式,从许多来源(如互联网)搜集而来的庞大数据组,具有实时性。专业化解释为:需要新的处理模式才能产生更强的决策力、洞察力和流程优化能力的海量、高增长率和多样化的信息资产。

1.3 机器学习与深度学习

1.3.1 机器学习

按照学习形式分类,可以将机器学习分为监督学习和无监督学习。
监督学习(Supervised Learning)也被称为有教师学习或有监督学习。学习的过程是从带有标记的训练数据中学习到如何对训练数据特征进行判断。这种形式的学习主要用于分类和预测;
无监督学习(Unsupervised Learning)是从没有标记的训练数据中学习数据的特征或是信息。强化学习是典型的无监督学习,主要用于连续决策的场合。

1.3.2 深度学习

传统机器学习算法需要在样本数据输入模型前经历一个人工特征提取的步骤,之后通过算法更新模型的权重参数。而深度学习不需要在样本数据输入模型前经过人工特征提取的步骤,将样本输入算法模型中后,模型会从样本中自动提取出基本的特征(如图像的像素)。随着模型的逐步深入,从这些基本特征中组合出了更为高层的特征,比如线条、简单形状等。简单形状可以被进一步组合,在模型越深入的地方,这些简单形状会被逐步转化为更为复杂的特征。这时,将这些提取到的特征再经历类似机器学习算法中的更新模型权重参数等步骤,也就可以得到一个令人满意的预测结果。

1.3.3 同人工智能的关系

机器学习深度学习人工智能三者之间的关系如下:

在这里插入图片描述

1.4 人工神经网络与TensorFlow

人工神经网络历史由来已久甚至要早于机器学习。TensorFlow是编写深度学习算法时需要拥到的一个框架,封装了许多类或函数,省去了我们造轮子的时间。

1.4.1 人工神经网络

人工神经网络(Artificial Neural Networks,ANNs),简称神经网络(NNs)或是连接模型(Connection Model),是一种模仿动物神经网络行为特征,进行分布式信息处理的数学算法模型。近代对ANNs的研究。始于1890年美国著名心理学家W.James对人脑结构功能的研究,过了半个世纪才逐渐形成星星之火。
1943年,心理学家W.S.McCulloch和数理学家W.Pitts建立了神经网络的数学模型,称为M-P模型。
在这里插入图片描述
由M-P模型可以看出,对于某一个神经元 j j j j j j,用来标识某一个神经元),它可能同时接收了多个输入信号(输入信号用 x n x_n xn 表示)引入权重值 w i , j w_{i,j} wi,j的目的是为了模拟突触的这种表现,其正负代表了生物神经元中突触的兴奋或是抑制,其大小则表示突触间的不同连接强度。 θ i \theta_i θi 表示一个阈值(Threshold)。
考虑到神经元的累加性,我们对全部输入信号进行累加整合,相当于生物神经元中膜电位的变化总量,其值可以表示为: n e t j ( t + 1 ) = ∑ i = 1 n w i , j x i ( t ) − θ j net_j(t+1)=\sum_{i=1}^{n}w_{i,j}x_i(t)-\theta_j net

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值