什么是深度学习?为何需要深度学习?
什么是深度学习
深度学习有如下一些众所周知且被广泛接受的定义。
(1)深度学习是机器学习的子集。
(2)深度学习使用级联的多层(非线性)处理单元,称为人工神经网络(ANN),以及受大脑结构和功能(神经元)启发的算法。每个连续层使用前一层的输出作为输入。
(3)深度学习使用ANN进行特征提取和转换,处理数据,查找模式和开发抽象。
(4)深度学习可以是监督的(如分类),也可以是无监督的(如模式分析)。
(5)深度学习使用梯度下降算法来学习与不同抽象级别相对应的多个级别的表示,由此构成概念的层次结构。
(6)深度学习通过学习将世界表示为概念的嵌套层次来实现强大的功能和灵活性,每个概念都是根据更简单的概念定义的,更抽象的表示是根据较不抽象的概念计算来的。
例如,对于图像分类问题,深度学习模型使用其隐藏层架构以增量方式学习图像类。
首先,它自动提取低层级的特征,例如识别亮区或暗区;之后,提取高层级特征(如边缘);其次,它会提取最高层级的特征(如形状),以便对它们进行分类。
每个节点或神经元代表整个图像的某一细微方面。如果将它们放在一起,就描绘了整幅图像。而且它们能够将图像完全表现出来。此外,网络中的每个节点和每个神经元都被赋予权重。这些权重表示神经元的实际权重,它与输出的关联强度相关。这些权重可以在模型开发过程中进行调整。
经典学习与深度学习
(1)手工特征提取与自动特征提取。为了用传统ML技术解决图像处理问题,最重要的预处理步骤是手工特征(如HOG和SIFT)提取,以降低图像的复杂性并使模式对学习算法更加可见,从而使其更好地工作。深度学习算法最大的优点是它们尝试以增量方式训练图像,从而学习低级和高级特征。这消除了在提取或工程中对手工制作的特征的需要。
(2)部分与端到端解决方案。传统的ML技术通过分解问题,首先解决不同的部分,然后将结果聚合在一起提供输出来解决问题,而深度学习技术则使用端到端方法来解决问题。例如,在目标检测问题中,诸如SVM的经典ML算法需要一个边界框目标检测算法,该算法将识别所有可能的目标,将HOG作为ML算法的输入,以便识别正确的目标。但深度学习方法(如YOLO网络)将图像作为输入,并提供对象的位置和名称作为输出。
(3)训练时间和高级硬件。与传统的ML算法不同,深度学习算法由于有大量的参数且数据集相对庞大,需要很长时间来训练,因此应该始终在GPU等高端硬件上训练深度学习模型,并记住训练一个合理的时间,因为时间是有效训练模型的一个非常重要的方面。
(4)适应性和可转移性。经典的ML技术有很大的局限性,而深度学习技术则应用广泛,且适用于不同的领域。其中很大一部分用于转移学习,这使得人们能够将预先训练的深层网络用于同一领域内的不同应用。例如,在图像处理中,通常使用预先训练的图像分类网络作为特征提取的前端来检测目标和分割网络。
现在来看看ML和深度学习模型在图像分类(如猫和狗的图像)方面的区别。传统的ML有特征提取和分类器,可以用来解决任何问题,如图10-1所示。
图10-1 传统的和经典的ML
图10-2所示的是深度学习网络,通过深度学习,可以看到前面讨论过的隐藏层以及实际决策过程。
图10-2 深度学习网络
10.1.3 为何需要深度学习
如前所述,如果有更多的数据,那么最好的选择就是使用性能更好的深度网络来处理。很多时候,使用的数据越多,结果就越准确。经典的ML方法需要一组复杂的ML算法,而更多的数据只会影响其精度,需要使用复杂的方法来弥补较低准确性的缺陷。此外,学习也受到影响——当添加更多的训练数据来训练模型时,学习几乎在某个时间点停止。图10-3所示的图形描述了深度学习算法与传统的机器学习算法的性能差异。
图10-3 深度学习算法与经典的机器学习算法的性能比较
本文摘自《Python图像处理实战》
[印度] 桑迪潘·戴伊(Sandipan Dey) 著,陈盈,邓军 译
- 图像处理,计算机视觉人脸识别图像修复
- 编程入门教程书籍零基础,深度学习爬虫
- 用流行的Python图像处理库、机器学习库和深度学习库解决图像处理问题。
最新上架的深度学习书
1、Python无监督学习
- 用scikit-learn、TensorFlow实现机器学习和深度学习
- 拥抱机器学习,用Python实现无监督学习算法
- 构建高效且实用的解决方案。
本书通过Python语言讲解无监督学习,全书内容包括10章,前面9章由浅入深地讲解了无监督学习的基础知识、聚类的基础知识、高级聚类、层次聚类、软聚类和高斯混合模型、异常检测、降维和分量分析、无监督神经网络模型、生成式对抗网络和自组织映射,第10章以问题解答的形式对前面9章涉及的问题给出了解决方案。
本书适合数据科学家、机器学习从业者和普通的软件开发人员阅读,通过学习本书介绍的无监督学习理论和Python编程方法,读者能够在业务实践中获得有价值的参考。
2、Python迁移学习
- 使用TensorFlow和Keras实现高级深度学习和神经网络模型
迁移学习是机器学习技术的一种,它可以从一系列机器学习问题的训练中获得知识,并将这些知识用于训练其他相似类型的问题。
本书分为3个部分:第1部分是深度学习基础,介绍了机器学习的基础知识、深度学习的基础知识和深度学习的架构;第2部分是迁移学习精要,介绍了迁移学习的基础知识和迁移学习的威力;第3部分是迁移学习案例研究,介绍了图像识别和分类、文本文档分类、音频事件识别和分类、DeepDream算法、风格迁移、自动图像扫描生成器、图像着色等内容。
本书适合数据科学家、机器学习工程师和数据分析师阅读,也适合对机器学习和迁移学习感兴趣的读者阅读。在阅读本书之前,希望读者对机器学习和Python编程有基本的掌握。
即将上架的深度学习书
PyTorch生成对抗网络编程
- 动手学深度学神经网络与深度学习
- 图像识别搭建GAN卷积图像生成,配套示例代码,图文并茂
- 用PyTorch构建自己的生成对抗网络。
生成对抗网络(Generative Adversarial Network,GAN)是神经网络领域的新星,被誉为“机器学习领域近20年来最酷的想法”。
本书以直白、简短的方式向读者介绍了生成对抗网络,并且教读者如何使用PyTorch按部就班地编写生成对抗网络。全书共3章和5个附录,分别介绍了PyTorch基础知识,用PyTorch开发神经网络,改良神经网络以提升效果,引入CUDA和GPU以加速GAN训练,以及生成高质量图像的卷积GAN、条件式GAN等话题。附录部分介绍了在很多机器学习相关教程中被忽略的主题,包括计算平衡GAN的理想损失值、概率分布和采样,以及卷积如何工作,还简单解释了为什么梯度下降不适用于对抗式机器学习。