前段时间,跟部门同事分享了深度学习相关的一些理论基础,在此记录一下。仅供后续学习和复习。算法
目录网络
一、背景及现状ide
二、Embeding函数
三、DNN学习
四、CNN优化
五、RNN(LSTM)编码
六、应用(结合自身的应用案例)spa
(1)情感分析/类目预测(文本分类)3d
(2)NER/POS TAGGING (标注、命名实体识别)blog
(3)流量预测
(4)CTR预估
七、总结与挑战
1、背景与现状
上图基本说明深度学习的发展历史,简要说明以下:
一、MCP人工神经元模型,可是仍是比较简单的单层感知机的形式,改模型被证实是一种线性模型,只能解决线性问题,就连最简单的异或都没法正确分类。因而迎来了神经网络的第一次低谷。
二、到了1986年,因为BP算法的发明,人们提出了多层的神经网络,当时被证实是能够逼近任何一个连续的函数。(包括非线性问题)。那个时候比较有表明性的是BP神经网络;然而当时提出的网络缺少理论支持,而且又被指出BP反向传播算法存在梯度消失的状况,又一次让深度学习陷入谷底。
三、2012年,再一次ImageNet图像识别比赛中,Hinton团队采用了CNN构建的AlexNet网络,直接碾压第二名,得到比赛冠军。当时AlexNet的创新点是:(1)采用ReLU激活函数,可以解决梯度消失的问题。(2)采用GPU对计算进行加速(3)添加了DropOut层减小过拟合,加强泛化能力。
2、Embeding
(1)Word2Vec
该方法是一个三层的神经网络,分别利用CBOW(利用上下文预测当前单词)和Skip-Gram(利用当前单词预测上下文)两种方式进行训练。
CBOW:
Skip-Gram:
这里须要注意的是,
1)三层的神经网络结构。其中输出层为了减小算法的复杂度,采用Huffman编码树的形式进行编码输出。即输出一颗树型结构。
2)训练过程当中,实际是须要两次遍历预料,第一次遍历构建输出的Huffman树和字典,第二次遍历进行训练。
(2)Paragraph2Vec、Doc2vec
该方法相似word2vec,只是在训练的过程当中,增长了paragraph vector(段落向量)
(3)Glove
该方法用的是词的共现矩阵经过矩阵分解获得全局的信息,而且获得每一个词对应的全局词向量,
再根据CBOW的思想(利用上下文预测当前单词的几率,这里的几率就是共现矩阵中共现几率比值)进行优化全局词向量,进而获得最优的词向量。
3、DNN
一、神经网络的思想源于生物医学上的感知器,启用计算机模拟以下:
,
典型的DNN模型以下所示:
前向输入后向传播:
这里主要讲解一下训练过程当中是如何训练的,参数是如何更新迭代的,这里采用一个例子进行说明:
假若有这样一个网络:
第一层是输入,第二层是隐藏层,第三层是输出层。
(1)前向运算:
1)第二层输出,以下所示:
2)第三层输出:
则通常通用公式以下:
,
反向传播(BP算法):(这里须要理解为什么须要反向传播?主要是为了更新网络参数)
咱们知道前向传播的算是函数以下:
,进一步展开获得以下:
对损失函数求导可得:
咱们假设:,则导数能够变换成以下所示:
我没来看看对应的
则有:,即
获得了梯度以后,咱们便可获得每层的权重更新的方法。
4、CNN
首先来看一下CNN的网络结构及特性:(1)局部感知,(2)权值共享。从总体上,采用通讯里面的知识理解CNN,本质是一个滤波器,只是该滤波器是经过卷积的方式进行滤波。这里须要注意的地方是,卷积层的输出神经元个数分别维护一个卷积算子的权重。每一个输出的神经元能够理解成就是一个滤波器,多少个神经元就有多少个滤波器。(在分享时,发现不少人这里不是很理解。。。)
例如:
,假设咱们的卷积因子是
,则有以下所示:
5、RNN(LSTM)
经典RNN结构以下所示:这里因为篇幅的问题,原本是也想说一下它的训练过程当中参数是如何更新的。这里就略过,感兴趣的能够留言。主要跟CNN相似,不一样的地方是它加上了时间维度。称之为(BPTT算法)。
重点讲一下LSTM,这里主要讲解一下我本身对LSTM的理解,若是须要知道其余方面的内容能够网上查阅相关资料,这方面还挺详细的。这里我也把它相关的结构图贴上来:
理解经典LSTM网络结构主要包含三个部门,分别是:遗忘门,输入门,输出门
一、遗忘门:指的是上一状态的记忆,在当前状态下,有多少信息是能够遗忘的。这里主要是经过一个sigmod函数进行加权获得有多少信息做为当前状态的记忆保留下来。
二、输入门:因为上一状态记忆会有一个遗失过程,当前状态能够根据当前输入x和上一状态记忆决定当前状态下,有多少信息能够添加到记忆(信息流)中去。这里有一个加法操做和一个sigmod函数决定添加多少信息。信息时经过输入x和上一状态记忆经过tan函数获得当前状态的信息
三、输出门:根据当前状态的输入x和上一状态记忆,经过sigmod函数决定当前状态记忆信息多少能够输出。当前状态记忆信息是由输入门添加的信息+上一状态保留的信息经过tanh函数获得信息
注意:输入门和输出门对应的tanh输入的内容是不同的。输入门对应的输入时输入x和上一状态记忆;输出门对应的是加法以后的记忆信息。
6、应用
一、文本分类
LSTM
二、NER
BI-LSTM+CRF
三、流量预测
LSTM
四、CTR预估
Wide-Deep