深度学习---深度学习介绍

1.1 深度学习与机器学习的区别

1.1.1 特征提取方面

  • 机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专业知识
  • 深度学习通常由多个层组成,它们通常将更简单的模型组合在一起,将数据从一层传递到另一层来构建更复杂的模型。通过训练大量数据自动得出模型,不需要人工特征提取环节

深度学习算法试图从数据中学习高级功能,这是深度学习的一个非常独特的部分。因此,减少了为每个问题开发新特征提取器的任务。适合用在难提取特征的图像、语音、自然语言处理领域。

1.1.2 数据量和计算性能要求

机器学习需要的执行时间远少于深度学习,深度学习参数往往很庞大,需要通过大量数据的多次优化来训练参数。

 

第一、深度学习需要大量的训练数据集

第二、训练深度神经网络需要大量的算力

可能要花费数天、甚至数周的时间,才能使用数百万张图像的数据集训练出一个深度网络。所以深度学习通常

1.1.3 算法代表

  • 机器学习
    • 朴素贝叶斯、决策树等
  • 深度学习
    • 神经网络

1.2 深度学习的应用场景

  • 图像识别
    • 物体识别
    • 场景识别
    • 车型识别
    • 人脸检测跟踪
    • 人脸关键点定位
    • 人脸身份认证
  • 自然语言处理技术
    • 机器翻译
    • 文本识别
    • 聊天对话
  • 语音技术
    • 语音识别

1.3 深度学习框架介绍

1.3.1 常见深度学习框架对比

框架名 主语言 从语言 灵活性 上手难易 开发者
Tensorflow C++ cuda/python Google
Caffe C++ cuda/python/Matlab 一般 中等 贾杨清
PyTorch python C/C++ 中等 FaceBook
MXNet c++ cuda/R/julia 中等 李沐和陈天奇等
Torch lua C/cuda 中等 Facebook
Theano python C++/cuda 蒙特利尔理工学院
  • 总结:

    • 最常用的框架当数TensorFlow和Pytorch, 而 Caffe 和 Caffe2 次之。
    • PyTorch 和 Torch 更适用于学术研究(research);TensorFlow,Caffe,Caffe2 更适用于工业界的生产环境部署(industrial production)
    • Caffe 适用于处理静态图像(static graph);Torch 和 PyTorch 更适用于动态图像(dynamic graph);TensorFlow 在两种情况下都很实用。
    • Tensorflow 和 Caffe2 可在移动端使用。

1.3.2 TensorFlow的特点

 

官网:https://www.tensorflow.org/

  • 高度灵活(Deep Flexibility)
    • 它不仅可以用来做神经网络算法研究,也可以用来做普通的机器学习算法,甚至是只要把计算表示成数据流图,都可以用TensorFlow。
  • 语言多样(Language Options)
    • TensorFlow使用C++实现的,然后用Python封装。谷歌号召社区通过SWIG开发更多的语言接口来支持TensorFlow。
  • 设备支持
    • TensorFlow可以运行在各种硬件上,同时根据计算的需要,合理将运算分配到相应的设备,比如卷积就分配到GPU上,也允许在 CPU 和 GPU 上的计算分布,甚至支持使用 gRPC 进行水平扩展。
  • Tensorboard可视化
    • TensorBoard是TensorFlow的一组Web应用,用来监控TensorFlow运行过程,或可视化Computation Graph。TensorBoard目前支持5种可视化:标量(scalars)、图片(images)、音频(audio)、直方图(histograms)和计算图(Computation Graph)。TensorBoard的Events Dashboard可以用来持续地监控运行时的关键指标,比如loss、学习速率(learning rate)或是验证集上的准确率(accuracy)

1.3.3 TensorFlow的安装

1 CPU版本

安装较慢,指定镜像源,请在带有numpy等库的虚拟环境中安装

  • ubuntu安装
pip install tensorflow==1.8 -i https://mirrors.aliyun.com/pypi/simple
  • MacOS安装
pip install tensorflow==1.8 -i https://mirrors.aliyun.com/pypi/simple

2 GPU版本

参考官网:

注:

CPU与GPU的对比

CPU:核芯的数量更少;

但是每一个核芯的速度更快,性能更强;

更适用于处理连续性(sequential)任务。

GPU:核芯的数量更多;

但是每一个核芯的处理速度较慢;

更适用于并行(parallel)任务。