本文主要是介绍001 NN(Neural Network)起源,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-
广义上说,NN(Neural Network)确实可以认为包含了CNN,RNN这些具体的变种形式。在实际应用中,所谓的深度神经网络DNN,往往融合了多种已知的结构,包含卷积层或是LSTM单元。
-
从起源理解NN:
20世纪五六十年代,叫做感知机(perceptron),拥有输入层,输出层和一个隐含层。输入的特征向量通过隐含层变换到达输出层,在输出层得到分类结果。但是会引发一些很严重问题,对稍微复杂函数无能为力,比如典型的“异或”操作。
80年代,出现了多层感知机(multilayer perceptron),就是多个隐含层的感知机。
摆脱了早期离散传输函数的束缚,在训练算法上使用BP算(就是我们所说的神经网络NN) 。解决了之前无法模拟异或逻辑的缺陷,同时更多的层数也让网络更能刻画现实世界中的复杂情形。但出现了新问题,随着神经网络层数的加深,优化函数越来越容易陷入局部最优解,并且这个“陷阱”越来越偏离真正的全局最优。有时候深层网络,性能还不如浅层网络。另外一个严重问题就是 “梯度消失”现象更加严重,例如:幅度为1的信号,在BP网络传播梯度时,没传递一层梯度衰减为原来的0.25,层数一多,梯度指数衰减后低层基本上接收不到有效的训练信号。
2006年,利用预训练方法缓解了局部最优解问题,将隐含层推动到了7层。神经网络真正意义上有了“深度”,由此揭开了深度学习的热潮。今年出现的 高速公路网络(highway network) 和 深度残差学习(Deep Residual Learning) 进一步避免了梯度消失,网络层数达到了前所未有的100多层。
CNN的引入:全连接DNN的结构里下层神经元和所有上层神经元都能形成连接,带来问题是参数数量的膨胀。如:输入是一幅像素为1K*1K的图像,隐藏层有1M个节点,光这一层就有10^12个权重需要训练,不仅容易过拟合,且极容易陷入局部最优解。此外,利用图像中有固有的局部模式(如轮廓,边界,人的眼睛、鼻子、嘴等)和神经网络技术相结合。此时引入CNN,并不是所有上下层神经元都能直接相连,而是 通过“卷积核”作为中介,同一个卷积核在所有图像内是共享的,图像通过卷积操作后仍然保留原先的位置关系。
RNN的引入:全连接的DNN还存在着另一个问题–无法对时间序列上的变化进行建模。然而,样本出现时间顺序对于自然语言处理、语音识别、手写体识别等应用给常重要。于是就出现了RNN。在RNN中,神经元的输出可以在下一个时间戳直接作用到自身,即第i层神经元在m时刻的输入,除了(i-1)层神经元在该时刻的输出外,还包括其自身在(i-1)时刻的输出!
这篇关于001 NN(Neural Network)起源的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!