《TensorFlow技术解析与实战》——1.3 深度学习的入门方法

简介:
+关注继续查看

本节书摘来异步社区《TensorFlow技术解析与实战》一书中的第1章,第1.3节,作者:李嘉璇,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.3 深度学习的入门方法

要想入门深度学习,需要两个工具,即算法知识和大量的数据,外加一台计算机,如果有GPU就更好了,但是因为许多入门初学者的条件有限,没有GPU也可以,本书的许多讲解都是基于Mac笔记本完成的。

我把深度学习的入门过程整理成图1-6所示的7个步骤。

f6f7cb8afc7c24cbb2902cb1c098e476c7b8acc2

下面就来详细介绍一下这7个步骤。

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

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

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

在本书“实战篇”的第8章到第13章的例子中也有贯穿这些算法知识,保证读者可以用它写出一个小的TensorFlow程序。

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

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

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

4.研读经典论文,关注最新动态和研究成果
一些经典论文是必读的。例如,要做手写数字识别,若采用LeNet,要先阅读一下LeNet的学术论文;要做物体目标检测的训练,若选定MSCNN框架,可以先读MSCNN相关的论文。那么,论文从哪里找呢?那么多论文应该读哪篇呢?

下面以GoogleNet的TensorFlow实现为例。在GitHub[6]上,一般在开头的描述中就会说明这个模型所依据的论文,如图1-7所示。

顺着这篇论文阅读,可以大致了解这个网络的实现原理,对迅速上手应用有很大的作用。同时,我在第6章也会对LeNet、AlexNet、ResNet这几个常见的网络进行讲解,帮助读者举一反三。

3af2ccb8f8b8e2d1b45f4c99930ac0a526f0703f

很多做模式识别的工作者之所以厉害,是因为他们有过很多、很深的论文积累,对模型的设计有很独到的见解,而他们可能甚至一行代码也不会写,而工程(写代码)能力在工作中很容易训练。许多工程方向的软件工程师,工作模式常常在实现业务逻辑和设计架构系统上,编码能力很强,但却缺少论文积累。同时具有这两种能力的人,正是硅谷一些企业目前青睐的人才。

读者平时还可以阅读一些博客、笔记,以及微信公众号、微博新媒体资讯等,往往一些很流行的新训练方法和模型会很快在这些媒体上发酵,其训练神经网络采用的一些方法可能有很大的启发性。

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

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

在GitHub[7]上有一个关于各种框架的比较,从建模能力、接口、模型部署、性能、架构、生态系统、跨平台等7个方面进行比较,TensorFlow也很占综合优势。截至2017年1月,TensorFlow的star数已经超过了其他所有框架的总和,如图1-8所示。

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

d10c07aa61643e6445f35a42236146e7827d7155

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

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

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

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

相关文章
|
8月前
|
机器学习/深度学习 存储 TensorFlow
《TensorFlow技术解析与实战》学习笔记2
《TensorFlow技术解析与实战》学习笔记2
72 0
|
8月前
|
机器学习/深度学习 分布式计算 算法
《TensorFlow技术解析与实战》学习笔记1
《TensorFlow技术解析与实战》学习笔记1
57 0
|
机器学习/深度学习 API TensorFlow
《TensorFlow技术解析与实战》——3.4 小结
本节书摘来自异步社区《TensorFlow技术解析与实战》一书中的第3章,第3.4节,作者李嘉璇,更多章节内容可以访问云栖社区“异步社区”公众号查看 第3章 可视化TensorFlow 3.4 小结 可视化是研究深度学习的一个重要方向,有利于我们直观地探究训练过程中的每一步发生的变化。
1749 0
|
存储 数据可视化 TensorFlow
《TensorFlow技术解析与实战》——3.3 可视化的例子
本节书摘来自异步社区《TensorFlow技术解析与实战》一书中的第3章,第3.3节,作者李嘉璇,更多章节内容可以访问云栖社区“异步社区”公众号查看 第3章 可视化TensorFlow 3.3 可视化的例子 词嵌入(word embedding)在机器学习中非常常见,可以应用在自然语言处理、推荐系统等其他程序中。
4484 0
|
数据可视化 TensorFlow 算法框架/工具
《TensorFlow技术解析与实战》——3.2 TensorBoard
本节书摘来自异步社区《TensorFlow技术解析与实战》一书中的第3章,第3.2节,作者李嘉璇,更多章节内容可以访问云栖社区“异步社区”公众号查看 第3章 可视化TensorFlow 3.2 TensorBoard TensorBoard是TensorFlow自带的一个强大的可视化工具,也是一个Web应用程序套件。
5447 0
|
TensorFlow 算法框架/工具 Windows
《TensorFlow技术解析与实战》——2.6 小结
本节书摘来自异步社区《TensorFlow技术解析与实战》一书中的第2章,第2.6节,作者李嘉璇,更多章节内容可以访问云栖社区“异步社区”公众号查看 第2章 TensorFlow环境的准备 2.6 小结 本章介绍了TensorFlow环境的准备,分别讲解了使用pip命令、Java JAR文件、用Bazel工具对源代码进行编译这3种安装方式,以及在pip安装方式下,在Mac、Ubuntu/Linux、Windows系统上如何安装CPU版本和GPU版本的TensorFlow。
1686 0
|
Web App开发 自然语言处理 TensorFlow
《TensorFlow技术解析与实战》——2.5 依赖的其他模块
本节书摘来自异步社区《TensorFlow技术解析与实战》一书中的第2章,第2.5节,作者李嘉璇,更多章节内容可以访问云栖社区“异步社区”公众号查看 第2章 TensorFlow环境的准备 2.5依赖的其他模块 TensorFlow在运行中需要做一些矩阵运算,时常会用到一些第三方模块,此外,在处理音频、自然语言时需要也要用到一些模块,建议一并安装好。
2484 0
|
并行计算 TensorFlow 算法框架/工具
《TensorFlow技术解析与实战》——2.4 从源代码安装
本节书摘来自异步社区《TensorFlow技术解析与实战》一书中的第2章,第2.4节,作者李嘉璇,更多章节内容可以访问云栖社区“异步社区”公众号查看 第2章 TensorFlow环境的准备 2.4 从源代码安装 从源代码编译安装,需要使用Bazel编译工具。
2498 0
|
Java TensorFlow 算法框架/工具
《TensorFlow技术解析与实战》——2.3 基于Java的安装
本节书摘来自异步社区《TensorFlow技术解析与实战》一书中的第2章,第2.3节,作者李嘉璇,更多章节内容可以访问云栖社区“异步社区”公众号查看 第2章 TensorFlow环境的准备 2.3 基于Java的安装 基于Java的方式安装,可以参照TensorFlow官方GitHub的安装方法[6]。
5654 0
|
Linux TensorFlow 算法框架/工具
《TensorFlow技术解析与实战》—— 2.2 基于pip的安装
本节书摘来自异步社区《TensorFlow技术解析与实战》一书中的第2章,第2.2节,作者李嘉璇,更多章节内容可以访问云栖社区“异步社区”公众号查看 第2章 TensorFlow环境的准备 2.2  基于pip的安装 pip是Python的包管理工具,主要用于PyPI[2](Python Packet Index)上的包。
2332 0
相关产品
机器翻译
推荐文章
更多