加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

请别再把深度学习与机器学习混为一谈了!

发布时间:2020-02-08 12:04:56 所属栏目:编程 来源:站长网
导读:副标题#e# 【51CTO.com快译】众所周知,虽然同属于人工智能的范畴,但是深度学习是一种特殊的机器学习形式。从流程上说,机器学习和深度学习都是从运用测试数据来训练某个模型开始,通过一系列的优化过程,进而找到最适合模型的数据权重。显然,这两种方法

在Python中,Spark MLlib(https://www.infoworld.com/article/3141605/review-spark-lights-up-machine-learning.html)和Scikit-learn(https://www.infoworld.com/article/3158509/review-scikit-learn-shines-for-simpler-machine-learning.html)都是机器学习库的最佳选择。在R语言中,常见的机器学习包有CARAT、randomForest、e1071和KernLab。而在Java中,您可以用到Java-ML、RapidMiner和Weka。

细说深度学习

作为机器学习的一种应用形式,深度学习在被训练模型的输入和输出之间存在着不止一个隐藏层。在大多数讨论场合中,深度学习意味着使用深度技术的神经网络。当然,除了神经网络,深度学习还会使用一些算法来实现其他类型的隐藏层。

“人工”神经网络的概念由来已久,它是由相互连接的阈值开关,构成了人工神经元网络,可以像动物大脑和神经系统(如:视网膜)那样学习识别模式。

Backprop

当两个神经元在训练中同时活跃(active)时,学习基本上是通过加强两个神经元之间的连接来实现的。在当前的神经网络软件中,最常见的方法是:使用一种称为误差反向传播(或称backprop、BP)的规则,来增加神经元之间连接的权值。

人工神经网络中的神经元

每一个神经元都拥有一个传播函数。该函数可通过加权来转换连接神经元的输出。传播函数将输出传递给激活函数,激活函数在输入超过阈值时就会被触发。

神经网络中的激活函数

在上个世纪40、50年代,人工神经元普遍使用的是被称为感知器(perceptrons)的一步式激活函数。如今的神经网络引入了诸如:逻辑函数、s形函数(sigmoid function)、双曲正切函数、修正线性单元(ReLU)等平滑激活函数。其中,ReLU虽然存在着“在学习率设置过高时,神经元会在训练中‘死亡’”的问题,但是它仍然是快速收敛的最佳选择。

激活函数的输出可以传递给某个输出函数,进行附加整形。不过,输出函数通常是恒等函数,因此激活函数的输出会直接被传递给连接在下游的神经元中。

神经网络拓扑结构

常见的神经网络拓扑结构是:

1. 在前馈网络中,神经元可分为:一个输入层、n个隐藏处理层和一个输出层。每一层的输出都只会输入到下一层。

2. 在具有快捷连接的前馈网络中,一些连接可以跳过一到多个中间层。

3. 在递归神经网络中,神经元可以直接或间接地通过下一层来影响自己。

训练神经网络

神经网络的监督学习和其他机器学习类似:我们用一组训练数据来表示网络,将网络输出与期望的输出进行比较,以生成错误向量,接着根据错误向量再对网络进行修正。在应用纠正之前,那些共同运行的批量训练数据被称为epoch。

在实现细节上,相对于模型的权值和偏差方面的梯度,反向传播使用误差(或成本)函数,来发现正确的方向,从而最小化误差。因此,应用的正确性取决于优化算法和学习速率的变量。正如前面提到的,该变量通常需要足够的小,以保证收敛性,并避免造成ReLU神经元“死亡”。

神经网络的优化器

通常,神经网络的优化器会使用某种形式的梯度下降算法,来驱动反向传播。同时,它会用到一种避免陷入局部极小值的机制,例如:只优化那些随机选择的小批量(随机梯度下降),以及对梯度使用动量修正的方式。另外,一些优化算法(如:AdaGrad、RMSProp和Adam)还会通过查看梯度的历史,来调整模型参数的学习率。

与所有的机器学习类似,您需要根据一个单独的验证数据集,来检查神经网络的预测。如果不这样做的话,您所创建的神经网络可能只能记住输入的信息,而无法学习并成为广义的预测器。

深入学习的各种算法

一个针对真实问题的深度神经网络,可能由十多个隐藏层所组成,其拓扑结构也可能繁简不同。一般而言,网络中的层级越多,其优势是能够识别的特征就越多,而劣势则为计算所需的时间就越长,训练也就越困难。

卷积神经网络(CNN)常被用于机器视觉等应用之中。该网络通常使用卷积、池化、ReLU、全连接、以及丢失层来模拟视觉的皮层。其中,卷积层主要是对于许多小的重叠区域进行积分。池化层执行的是一种非线性的下采样(down-sampling)形式。ReLU层用到了非饱和激活函数f(x) = max(0,x)。在一个完全连接的层级中,神经元与前一层的所有激活都有联系。丢失层主要负责计算网络训练如何“惩罚”那些预测标签和真实标签之间的偏差,使用Softmax或交叉熵(cross-entropy)损失函数来进行分类,或使用欧式(Euclidean)损失函数进行回归。

递归神经网络常被用于自然语言处理(NLP)、序列处理、长短时记忆(LSTM)网络、基于注意力的神经网络。在前馈神经网络中,信息通过隐藏层从输入流向输出。这有效地限制了该网络一次性只能处理一个状态。

在递归神经网络(RNN)中,信息通过反复循环,让网络只记住最近的一次输出,以便对序列和时序进行分析。当然,RNN存在着两个常见的问题:爆炸性的渐变(我们很容易通过夹持来修复)和消失的渐变(不太容易修复)。

在LSTMs中,该网络能够用forgetting和gating来修改以前信息的权重,并记住它们。通过此类长、短期记忆,该网络解决了梯度消失的问题。同时,LSTMs也可以处理数百个过去输入的序列。

注意力模块是一些将权重应用到输入向量上的通用门。它的分层神经注意编码器(hierarchical neural attention encoder)使用多层注意模块,来处理成千上万的过去的输入。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读