前言:对深度学习有个直观的了解,类似于信号处理里面FFT展开后的常数项,接下来要就某一个算法进行研究这是一次项,然后就是二次项、三次项·····
感知机是神经网络的雏形,但是无法解决复杂函数例如异或问题,因此出现了多层感知机,多层感知机可以摆脱早期离散传输函数的束缚,使用sigmod或tanh等连续函数模拟神经元对激励的响应,在训练算法上则使用BP反向传播算法,对啦!这就是我们现在名声大噪的神经网络NN啦!
ps. 额,其实就是换了个超叼的名字····
多层感知机给我们的启示是:神经网络的层数决定了它对现实的刻画能力,利用每层更少的神经元拟合更复杂的函数;
同时面临的问题是:
- 层数增加,越易陷入局部最优解;
- 数据有限的情况下,性能可能还不如浅层的;
- 梯度消失问题,sigmod每反向传递一层梯度就衰减为原来的0.25(假设原来是1);
2006年Hinton李勇预训练方法缓解了局部最优解问题,隐含层推至7层,开启了深度学习的热潮;
为了克服梯度消失问题,ReLU、maxout等传输函数代替了sigmod,形成了如今DNN(深度神经网络)的基本形式,也就是说:单从结构上来说,全连接的DNN和上面说的多层感知机是没有任何区别的。
高速公路网络和深度残差学习进一步避免了梯度消失问题,网络层数达到了前所未有的一百多层;
CNN
慢慢地深度网络向图像迁移,但是图像很大啊,比如1K1K的图像,当我们使用全连接*的时候,隐含层是不是就有1M个节点啊:
光是第一层就有10^12个权重需要训练,这不仅计算量太巨大,而且特别容易过拟合陷入局部最优啊!
图像中有轮廓的概念,这是先人的研究成果,因此结合神经网络,就捯饬出了一个所谓的卷积核出来,用卷积核来处理轮廓单元等其他一些操作(从直觉来看,不同的卷积核是可以学习到不同的结构特征的),注意卷积核移动时是全局共享的,且卷积后图像位置是不变的。
CNN限制参数个数,并挖掘了局部特征。
RNN
上面模式的全连接DNN无法处理时间序列的数据,为了处理带时间特性的数据如语音,因此出现了RNN循环神经网络;
在普通的全连接网络或者CNN中,每层的神经元信号只能向上一层传播,样本的处理在各个时刻独立,因此前向传播由此而来。而RNN神经元的输出可以在下一个时间戳直接作用到自身。
(t+1)时刻网络的最终结果O(t+1)是该时刻输入和所有历史共同作用的结果!从而实现对时间序列的建模。
然而,RNN是一个在时间上传递的神经网络,它的深度是时间的长度,boom!!!梯度消失再次出现,发生在时间轴上,因此为了解决时间上的梯度消失,长短时记忆单元LSTM就闪亮登场了,它通过门的开关实现时间上记忆功能,并防止梯度消失。