当前位置:
首页 > 互联网+ > 人工智能 > 基于浏览器的深度学习pdf/doc/txt格式电子书下载

基于浏览器的深度学习pdf/doc/txt格式电子书下载

本站仅展示书籍部分内容

如有任何咨询

请加微信10090337咨询

基于浏览器的深度学习pdf/doc/txt格式电子书下载

书名:基于浏览器的深度学习pdf/doc/txt格式电子书下载

推荐语:

作者:(法)泽维尔·布里,侠天,易乐天等译

出版社:机械工业出版社

出版时间:2019-08-01

书籍编号:30510898

ISBN:9787111629405

正文语种:中文

字数:68882

版次:1

所属分类:互联网+-人工智能

全书内容:

基于浏览器的深度学习pdf/doc/txt格式电子书下载








译者序


TensorFlow已经成为工业界主流的深度学习框架,再加上Keras易用性的加持,越来越多的从业者或者公司开始使用TensorFlow实现其深度学习的应用。一直以来缺乏客户端的深度学习框架,而且基于浏览器的TensorFlow.js则弥补了这一空白。基于浏览器的TensorFlow.js可以跨平台、实时地进行推断,深受JavaScript开发者的喜爱,在Github上的Star数也增长迅速。


本书是一本介绍TensorFlow.js的书,内容主要包括神经网络架构、主流的JavaScript深度学习框架、深度学习的JavaScript基础、基于WebGL的GPU加速、浏览器上的数据抽取和操作,以及TensorFlow.js实践应用。每章都配有完整的代码示例以及可视化效果,轻松易学。书中还详细介绍了TensorFlow.js中的重要模块tfjs-core、tfjs-layers、tfjs-node和tfjs-converter等。


本书虽然不难,但是对于新手或者渴望获得知识的读者来说,他们会从这本书学到有用的知识点。


本书大部分是在周末或乘坐高铁时翻译的。虽然译书可以学到知识,却要消耗更多的时间。但只要在某个时间点某个人读到其中一段文字,然后拍着桌子说“看了好多种表述,这次终于搞懂了”,我就知足了。


在此,也要感谢家人和朋友的帮助和支持。没有他们的支持完成本书的时间会更长。其中部分纯前端的内容,由邀请的前端朋友易乐天翻译,在这里表示感谢。由于水平有限,以及本书涉及知识点众多,难免会出现错误。为了方便读者反馈问题,给出本人公众号:神机喵算。欢迎大家对本书的翻译纠错,对于发现的问题我一定会虚心接受批评并立即改正,并在公众号更新读者的问题,避免其他读者再入“坑”。


侠天

前言


“一次编写,处处运行”是开发者们曾经的梦想。如果在所有环境,无论是什么样的机器、操作系统、屏幕分辨率或者计算能力,你都可以执行相同的软件,这个世界该是多么美好啊!这个美好的愿望首先导致了虚拟机的出现:模拟一个标准的计算机以供软件运行,在物理计算机和代码之间增加一个抽象层。因为在不同的架构中虚拟机是相同的,你只需编写和编译一次源代码。Java虚拟机在1994年正式发布,是第一个真正意义上的跨平台虚拟机。


与此同时,万维网还在襁褓中。每个连接的用户能够使用相同的文件格式在网上读取和发布文档。HTML语言迅速成为网上丰富的文本内容的标准。但它只是描述性的,不能满足网络用户的新需求。在20世纪90年代末,网络不再是一个共享的存储库:用户希望动态地与内容和其他用户进行交互。基于这个目的,浏览器上的JavaScript语言出现了,成为一个图灵机。通过使用Java applet,Java虚拟机也可以在浏览器上运行,并且大量使用,因为JavaScript功能弱且运行慢,不适合大型应用。


随着时间推移,JavaScript变得越来越强大。JavaScript第一次标准化是在1997年。在不使用WebAssembly或者ASM.js的情况下,它的速度增长到了比原生语言慢不到一个数量级的程度。Web浏览器实现新的API提供访问以前预留给编译应用的接口:基于WebGL的GPU、基于WebRTC的相机和P2P流、基于游戏手柄API的游戏机、基于WebAudio的音频卡以及基于WebXR的VR和AR设备。JavaScript甚至发起新的挑战:基于Node.js的服务器端应用、基于Electron的桌面应用、基于渐进式网页程序(Progressive Web Application)的移动应用,甚至基于Lisk的分布式区块链应用。像React.js或者Angular这样的大型框架和像Node包管理器这样的包管理器使得开发大型软件成为可能。JavaScript势不可当,而它的竞争者(比如VBScript、Flash或者Silverlight,甚至Java虚拟机)不断从Web浏览器中出局。角色发生了逆转:JavaScript经常通过Webview组件嵌入Java应用。在第一个虚拟机发布大约25年之后,“一次编写,处处运行”又怎么样了呢?


当Web浏览器使用新的JavaScript特征而越来越丰富时,由于作为计算支持的GPU使用和像Cuda或者OpenCL这样的GPU并行计算库的出现,人工智能神经网络的能力得以释放。它们增加了新的功能,并在许多领域快速发展:自然语言处理、翻译、面部识别、给对象加标签、图片分割和聊天机器人。大型开源深度学习框架,比如Torch、Theano、TensorFlow和云GPU计算的提供,让这种技术走出了实验室。


然而,深度学习的使用大部分仍然在服务器端,而不在客户端。造成这种情况的原因有三个:首先,为了高效地进行深度学习,你需要使用GPU,而现在即使移动设备的平均GPU能力也足够好;其次,神经网络模型一般比较大,只有新移动网络技术(比如5G)能够足够快地传输这些数据;第三,你需要用JavaScript编写的、易构建的开源框架(比如TensorFlow.js)运行神经网络模型。技术趋势也从完全的云计算转向边缘计算概念主导的更务实的方法:当用户有免费的强大计算终端时,为什么还要经过网络在昂贵的服务器端处理所有的计算?技术已经到位,所以你将看到许多在浏览器上的深度学习应用,这只是时间问题。


在客户端实现深度学习应用有很大的优势。你可以处理浏览器输入,这些在服务器端不可行,或者具有一些实时的限制(比如来自麦克风的音频或者来自网络摄像头的视频)。客户端的深度学习使得应用扩展性更好,连接更健壮。软件可以享受JavaScript的所有便利:它能用Node.js在服务器端测试,使用渐进式网页程序封装的手机应用或者安装为桌面应用。用户可以在不安装任何东西的情况下安全地测试它。


本书是Web开发和深度学习的跨界。当这两种技术结合时,它们的“蜜月”将产生让人想象不到的新应用。你准备好开始冒险了吗?本书就是为你而写的:你可以学习到如何使用JavaScript的深度学习框架、抓取输入的Web编程以及WebGL的实现。


在不远的未来,计算机会与我们更密切。在20世纪70年代,它们远离主流,但是在20世纪80年代桌面计算机出现时,它们开始贴近我们。它们逐渐进入笔记本电脑,最终进入智能手机。增强现实是下一步,为其准备了Web标准:WebXR。它使互联网更贴近我们,而且智能应用让我们更好地理解真实的世界。基于浏览器的深度学习当前还处于萌芽阶段,这是在其强大之前关注它的最佳时机。


开心地学习,开心地进行深度学习。


本书示例


本书所有源代码放在https://github.com/backstopmedia/deep-learning-browser。你可以在https://reiinakano.github.io/tfjs-rock-paper-scissors/访问石头剪刀布游戏示例,也可以在https://reiinakano.github.io/tfjs-lstm-text-generation/访问文本生成模型的示例。


关于作者



  • Xavier Bourry是创业公司Jeeliz的联合创始人和CTO,专注于深度学习。
  • Kai Sasaki是Arm公司的高级软件工程师,还是Apache Hivemall Committer。
  • Christoph K¨orner在都柏林的微软公司处理TSP数据和AI。
  • Reiichiro Nakano是Infostellar公司的软件开发工程师,专注于机器学习。

第1章 深度学习


本章简单介绍深度学习的主要的数学和实际概念以及架构。我们将聚焦监督学习中分类的数学概念。它是从标注的训练集中学习将新数据进行正确分类的过程。一旦你理解了概念,你能将相同的技术应用于其他监督学习任务,比如回归。


从本章开始,我们将介绍神经网络背后的数学知识。读完1.1节,你可以通过简单的预训练神经网络完成二分类任务。


接下来的1.2节讲解基于标注训练集训练神经网络的技术。然后,你会理解损失函数的重要性、反向传播算法如何工作、优化技术(比如梯度下降算法和牛顿动量势能算法)之间的区别。


1.1 深度神经网络的数学基础


本节介绍深度学习和神经网络背后的数学基础概念。我们主要关注从输入数据样本计算神经网络的输出,这通常称为模型推断


这里展示的神经网络推断主要包括多个嵌套权重线性函数、非线性激活函数和归一化的组合。在二维世界里,权重线性函数是一个直线方程。激活函数就是,当输入值达到某个阈值时立即激活的函数。我们称它们为门限或者非线性函数,归一化函数主要由减去均值和除以标准差组成。


在简单的分类任务中,直线方程描述的是两个不同分类的元素间的分割直线。如果两个分类是线性可分的,则完美的分类器是分割直线将所有的元素分成两边。代入一个点坐标,直线方程返回一个到该直线的有符号距离的倍数,其中符号代表直线的一边。非线性激活函数将这个有符号距离转换为不同的值。比如,最流行的转换函数返回值的符号(+1或者-1),返回+1或者0,或者只返回正值和0。你将会在后续看到这些激活函数并讨论它们的数学特性。归一化函数将所有的数据点转化成中心点为0且标准差为1的归一化空间。


正如你所见,这些概念相当直观,在高中课程中就有介绍。我们下面用n维空间(代替二维)的操作和嵌套函数构建网络,这会增加一些复杂性。


1.1.1 感知机————门控线性回归


第一个高级的人工智能和机器学习的数学框架是在1958年由心理学家F. Rosenblatt提出的。他构建了一个神经脑细胞的简单数学模型——感知机(Perceptron),通过激活和重复模拟生物学习行为。


如图1-1所示,感知机计算所有输入变量xi的权重和,接着是通过阶跃函数表示的激活门函数。如果输入的权重之和大于0,则门限打开(输出1)。下面是感知机公式,它是由阶跃函数封装的输入权重之和:

000

000

图1-1

在这里显示的简单数学操作是在20世纪50年代提出的,它是现代深度神经网络的基石。此外,我们将解释,感知机数学概念和计算二分类是极其相似的,用多维直线方程作为二分类之间的分割直线。


1.1.1.1 直线方程


先介绍二维直线方程:


x2=k·x1+d


在上面的公式中,k是直线的斜率,d是偏离中心的位移。用变量a、b和c代替k和d(这里,000)。你也可能看到如下的直线表示:


0=a·x1+b·x2+c


上面的公式有一个很好的特性,当代入一个数据点P=(p1,p2)到直线公式,结果的符号代表数据点P属于直线的哪一边。该函数形成一个训练好的线性分类器,它将数据点分为两个分类,分别位于直线的两边。


y=sign(a·p1+b·p2+c)


上面结果的绝对值是数据点到直线的最短距离的倍数:000。该值也称为分类得分


从上面的例子可以看出和感知机等式非常相似,唯一不同的是激活门函数用的是(sign符号)函数。想象一下数据点P是一个元素的两个维度,直线是二维二分类模型,y返回分类+1或者−1。寻找优化的分割直线将会在1.2节讨论。


1.1.1.2 超平面方程


紧接着,你可以用矩阵表示重写直线方程。这对处理大于二维的情况非常有用:


000


该直线方程由权重向量000表示。现在这个方程可以用n维权重向量000和输入向量000扩展到n维空间。这个多维直线方程称为超平面(hyperplane)。


注意:在机器学习中,许多问题都是高维度的。计算机视觉是一个例子,其中深度学习模型操作像素值。对于灰度图,输入图形是100×100维,分割超平面将被定义为一个10 000维的空间。


1.1.1.3 线性二分类器


下面我们生成一个更通用的门限激活函数h(x),代替简单的阶跃函数或者符号函数作为门限。线性分类器等式如下,变量b表示偏置,代替二维中的变量c:


000


上面的公式是感知机的向量表示,带有更通用的激活函数。因此,你能认为感知机(也叫作神经元(Neuron))就像线性多维二分类器,通过线性超平面将数据点分为两类。


下面来看

....

本站仅展示书籍部分内容

如有任何咨询

请加微信10090337咨询

本站仅展示书籍部分内容
如有任何咨询

请加微信10090337咨询

再显示