换种方式来认识深度神经网络!
用Python定义深度神经网络?
在了解Python中的深层神经网络之前,让我们了解下人工神经网络。
人工神经网络
ANN(人工神经网络)受生物神经网络的启发。它可以通过观察示例来学习执行任务,而我们不需要使用特定于任务的规则对它们进行编程。ANN可以查看标记为“猫”或“无猫”的图像,并学习识别更多图像本身。
这样的网络是人工神经元连接节点的集合; 这些模型是生物大脑中的神经元。连接就像大脑中的突触,能够将信号从一个人工神经元传递到另一个。这个神经元处理它接收到的信号,并将信号发送给它所连接的更多的人工神经元。
这样,我们就可以拥有输入、输出和隐藏层。
人工神经网络的一些应用是计算机视觉、语音识别、机器翻译、社交网络过滤、医疗诊断以及游戏板和视频游戏。
深度神经网络
回过头来看,深度神经网络是一种在输入和输出层之间有多层的人工神经网络。这样的网络筛选多个层并计算每个输出的概率。
DNN能够对复杂的非线性关系建模。
深度神经网络的结构
DNN通常是前馈网络,这意味着来自输入层的数据流向输出层而不需要回滚。
这种仅具有一个隐藏层的网络将是非深(或浅)前馈神经网络。在深度神经网络中,隐藏层的数量可以是1000。但它必须大于2才能被视为DNN。
DNN创建虚拟神经元的映射,并随机为这些神经元之间的连接分配权重。此外,它将权重与输入相乘,以返回0到1之间的输出。如果它无法识别模式,则使用算法来调整权重。
基于Python的深度神经网络的类型
从广义上讲,我们可以将Python深度神经网络分为两类:
递归神经网络(RNN)
递归神经网络是一种ANN,其节点之间的连接沿着序列形成有向图。RNN可以使用其内部状态/存储器来处理输入序列。因此,我们可以将它用于未分割,连接手写识别和语音识别等任务。各种RNN-
- 有限脉冲递归网络- 有向无环图(DAG),我们可以用严格的前馈神经网络代替。
- 无限脉冲周期性网络——一个我们无法展开的有向循环图。
基本RNN是保持在层中的神经元网络,其中层中的每个节点单向(并且直接)连接到下一层中的每个其他节点。在RNN中,数据可以在任何方向上流动。我们利用LSTM(长短期记忆)并在语言建模等应用中使用RNN。
卷积神经网络(CNN或ConvNet)
CNN是一种前馈的深度ANN。我们将其用于分析视觉图像、计算机视觉、自动语音识别(ASR)声学建模、推荐系统和自然语言处理(NLP)等应用。
CNN使用多层感知器进行最少的预处理。在这样的网络中,神经元之间的连接模式模仿动物视觉皮层的组织方式。CNN学习过滤器,因此几乎不需要预处理。它具有以下架构-
深度神经网络面临的挑战
深度神经网络与Python面临的两大挑战:
过度拟合
由于DNN具有添加的抽象层,因此它可以对训练数据中的罕见依赖关系建模。为了解决这个问题,我们可以-
- 使用正则化方法,如Ivakhnenko的单位修剪,权重衰减或稀疏性。
- 使用dropout正则化在训练时随机忽略隐藏层中的单位。
- 使用裁剪和旋转等方法来增加数据;扩大较小的训练集。
计算时间
扫描参数空间(大小,学习速率,初始权重)可能导致需要更多的计算资源和时间。为了解决这个问题,我们可以:
- 执行批处理,一次计算多个训练样例的梯度。
- 使用多核架构来实现其大型处理能力以及矩阵和矢量计算的适用性。
深度信念网络
在我们开始退出之前,让我们谈谈另一件事- 深度信念网络。DBN是一种深层神经网络,它包含多层潜在变量或隐藏单元。这样的网络观察的是层之间的连接而不是这些层之间的单元之间的连接。
如果我们在没有监督的情况下在一组示例上训练DBN,我们可以让它学会以概率方式重构输入。 您可以调用图层特征检测器。 在此之后,我们可以监督它进行分类。
所以,这一切都是使用Python的深层神经网络完成的。
结论
在这篇Python深度神经网络教程中,我们研究了深度学习,它的类型、面临的挑战以及深度信念网络。