什么是深度学习,深度学习简介(新手必看)
深度学习是机器学习的一种,它利用神经网络模型进行大规模数据处理和特征提取,从而进行预测和分类等任务。深度学习在图像处理、语音识别、自然语言处理等领域取得了很大的成功,成为人工智能领域的重要分支。
深度学习,顾名思义,需要从“深度”和“学习”两方面来谈:
我们提供了有用的工具来帮助你组装“子图”(常用于神经网络),当然用户也可以自己在 TensorFlow 基础上编写自己的“上层库”。
使用 TensorFlow 可以让应用型研究者将模型迅速运用到产品中,也可以让学术性研究者更直接地彼此分享代码,从而提高科研产出率。
作为 TensorFlow 用户,你只需要定义预测模型的结构,将这个结构和目标函数(objective function)结合在一起,并添加数据,TensorFlow 将自动为你计算相关的微分导数。
另外,前面是假设输出严格地等于输入,这个限制太严格,可以略微地放松这个限制,例如只要使得输入与输出的差别尽可能地小即可,放松限制会获得另一种深度学习方法。
如果把学习结构看作一个网络,则深度学习的核心思路如下:
深度学习,顾名思义,需要从“深度”和“学习”两方面来谈:
- 深度学习的前身是人工神经网络(artificial neural network, ANN),它的基本特点就是试图模仿人脑的神经元之间传递和处理信息的模式;
- 学习是人和动物在生活过程中,通过获得经验而产生的行为或行为潜能的相对持久的适应性变化。
深度学习的特性
目前,为什么 TensorFlow 在 ANN 研究人员和工程师中如此受欢迎?与其自身特性息息相关,主要表现在以下几方面。1) 高度的灵活性
TensorFlow 不是一个严格的“神经网络”库,只要可以将计算表示为一个数据流图,就可以使用 TensorFlow 来构建图,描写驱动计算的内部循环。我们提供了有用的工具来帮助你组装“子图”(常用于神经网络),当然用户也可以自己在 TensorFlow 基础上编写自己的“上层库”。
2) 真正的可移植性(portability)
TensorFlow 在 CPU 和 GPU 上运行,比如说可以运行在台式机、服务器和手机移动端设备等:- 想要在没有特殊硬件的前提下,在你的笔记本上跑一下机器学习的新模型,TensorFlow 可以办到这点;
- 准备将你的训练模型在多个 CPU 上规模化运算,又不想修改代码,TensorFlow 可以办到这点;
- 想要将你的训练好的模型作为产品的一部分用到手机 App 里,TensorFlow 可以办到这点;
- 想要将你的模型作为云端服务运行在自己的服务器上,或者运行在 Docker 容器里,TensorFlow 也能办到。
3) 将科研和产品联系在一起
过去,如果要将科研中的机器学习模型用到产品中,需要大量的代码重写工作。那样的日子一去不复返了!在谷歌,科学家用 TensorFlow 尝试新的算法,产品团队则用 TensorFlow 来训练和使用计算模型,并直接提供给在线用户。使用 TensorFlow 可以让应用型研究者将模型迅速运用到产品中,也可以让学术性研究者更直接地彼此分享代码,从而提高科研产出率。
4) 自动求微分
基于梯度的机器学习算法受益于 TensorFlow 自动求微分的能力。作为 TensorFlow 用户,你只需要定义预测模型的结构,将这个结构和目标函数(objective function)结合在一起,并添加数据,TensorFlow 将自动为你计算相关的微分导数。
5) 多语言支持
TensorFlow 有一个合理的 C++ 使用界面,也有一个易用的 Python 使用界面来构建和执行你的 Graphs。可以直接写 Python/C++ 程序,也可以用交互式的 Ipython 界面来用 TensorFlow 尝试些想法,它可以帮你将笔记、代码和可视化等有条理地归置好。6) 性能最优化
由于 TensorFlow 给予了线程、队列和异步操作等以最佳的支持,TensorFlow 让你可以将手上硬件的计算潜能全部发挥出来。你可以自由地将 TensorFlow 图中的计算元素分配到不同设备上,TensorFlow 可以帮你管理好这些不同副本。深度学习的构架
可以将深度架构看作一种因子分解。大部分随机选择的函数不能被有效地表示,无论是用深的或者浅的架构。但是许多能够有效地被深度架构表示的却不能被用浅的架构高效表示。1) 大脑有一个深度架构
例如,视觉皮质得到了很好的研究,并显示出一系列的区域,在每一个这种区域中包含一个输入的表示和从一个到另一个的信号流(这里忽略了在一些层次并行路径上的关联,因此更复杂)。这个特征层次的每一层表示在一个不同的抽象层上的输入,并在层次的更上层有着更多的抽象特征,它们根据底层特征定义。2) 认知过程逐层进行、逐步抽象
认知过程逐层进行、逐步抽象的步骤如下:- 人类层次化地组织思想和概念;
- 人类首先学习简单的概念,然后用它们去表示更抽象的;
- 工程师将任务分解成多个抽象层次去处理;
- 学习/发现这些概念。对语言可表达的概念可用一个稀疏矩阵表示。
深度学习的思想
对于深度学习来说,其思想就是堆叠多个层,即将上一层的输出作为下一层的输入。通过这种方式,可以实现对输入信息进行分级表达。另外,前面是假设输出严格地等于输入,这个限制太严格,可以略微地放松这个限制,例如只要使得输入与输出的差别尽可能地小即可,放松限制会获得另一种深度学习方法。
如果把学习结构看作一个网络,则深度学习的核心思路如下:
- 无监督学习用于每层网络的预训练;
- 每次用无监督学习只训练一层,将其训练结果作为其高一层的输入;
- 用自顶而下的监督算法去调整所有层。