前段时间,跟部门同事分享了深度学习相关的一些理论基础,在此记录一下。仅供后续学习和复习。

目录

1、背景及现状

2、Embeding

3、DNN

4、CNN

5、RNN(LSTM)

6、应用(结合自身的应用案例)

(1)情感分析/类目预测(文本分类)

(2)NER/POS TAGGING (标注、命名实体识别)

(3)流量预测

(4)CTR预估

7、总结与挑战

一、背景与现状

上图基本说明深度学习的发展历史,简要说明如下:

1、MCP人工神经元模型,但是还是比较简单的单层感知机的形式,改模型被证明是一种线性模型,只能解决线性问题,就连最简单的异或都无法正确分类。于是迎来了神经网络的第一次低谷。
2、到了1986年,由于BP算法的发明,人们提出了多层的神经网络,当时被证明是可以逼近任何一个连续的函数。(包括非线性问题)。那个时候比较有代表性的是BP神经网络;然而当时提出的网络缺乏理论支持,并且又被指出BP反向传播算法存在梯度消失的情况,又一次让深度学习陷入谷底。
3、2012年,再一次ImageNet图像识别比赛中,Hinton团队采用了CNN构建的AlexNet网络,直接碾压第二名,获得比赛冠军。当时AlexNet的创新点是:(1)采用ReLU激活函数,能够解决梯度消失的问题。(2)采用GPU对计算进行加速(3)添加了DropOut层减少过拟合,增强泛化能力。

二、Embeding

(1)Word2Vec

该方法是一个三层的神经网络,分别利用CBOW(利用上下文预测当前单词)和Skip-Gram(利用当前单词预测上下文)两种方式进行训练。

CBOW:

Skip-Gram:

 

这里需要注意的是,

  1)三层的神经网络结构。其中输出层为了减少算法的复杂度,采用Huffman编码树的形式进行编码输出。即输出一颗树型结构。

  2)训练过程中,实际是需要两次遍历预料,第一次遍历构建输出的Huffman树和字典,第二次遍历进行训练。

(2)Paragraph2Vec、Doc2vec

  该方法类似word2vec,只是在训练的过程中,增加了paragraph vector(段落向量)

(3)Glove

  该方法用的是词的共现矩阵通过矩阵分解得到全局的信息,并且得到每个词对应的全局词向量,

  再根据CBOW的思想(利用上下文预测当前单词的概率,这里的概率就是共现矩阵中共现概率比值)进行优化全局词向量,进而得到最优的词向量。

 

 三、DNN

1、神经网络的思想源于生物医学上的感知器,启用计算机模拟如下:

典型的DNN模型如下所示:

前向输入后向传播:

这里主要讲解一下训练过程中是如何训练的,参数是如何更新迭代的,这里采用一个例子进行说明:

假如有这样一个网络:

第一层是输入,第二层是隐藏层,第三层是输出层。

(1)前向运算:

  1)第二层输出,如下所示:

  

  2)第三层输出:

  

则一般通用公式如下:

  

反向传播(BP算法):这里需要理解为何需要反向传播?主要是为了更新网络参数)

 我们知道前向传播的算是函数如下:

,进一步展开得到如下:

对损失函数求导可得:

我们假设:,则导数可以变换成如下所示:

我没来看看对应的

 

则有:,即

得到了梯度之后,我们即可得到每层的权重更新的方法。

四、CNN

  首先来看一下CNN的网络结构及特性:(1)局部感知,(2)权值共享。从整体上,采用通信里面的知识理解CNN,本质是一个滤波器,只是该滤波器是通过卷积的方式进行滤波。这里需要注意的地方是,卷积层的输出神经元个数分别维护一个卷积算子的权重。每个输出的神经元可以理解成就是一个滤波器,多少个神经元就有多少个滤波器。(在分享时,发现很多人这里不是很理解。。。)

例如:

,假设我们的卷积因子是,则有如下所示:

五、RNN(LSTM)

经典RNN结构如下所示:这里由于篇幅的问题,本来是也想说一下它的训练过程中参数是如何更新的。这里就略过,感兴趣的可以留言。主要跟CNN类似,不同的地方是它加上了时间维度。称之为(BPTT算法)。

 

 重点讲一下LSTM,这里主要讲解一下我自己对LSTM的理解,如果需要知道其他方面的内容可以网上查阅相关资料,这方面还挺详细的。这里我也把它相关的结构图贴上来:

理解经典LSTM网络结构主要包含三个部门,分别是:遗忘门,输入门,输出门

1、遗忘门:指的是上一状态的记忆,在当前状态下,有多少信息是可以遗忘的。这里主要是通过一个sigmod函数进行加权得到有多少信息作为当前状态的记忆保留下来。

2、输入门:由于上一状态记忆会有一个遗失过程,当前状态可以根据当前输入x和上一状态记忆决定当前状态下,有多少信息可以添加到记忆(信息流)中去。这里有一个加法操作和一个sigmod函数决定添加多少信息。信息时通过输入x和上一状态记忆通过tan函数得到当前状态的信息

3、输出门:根据当前状态的输入x和上一状态记忆,通过sigmod函数决定当前状态记忆信息多少可以输出。当前状态记忆信息是由输入门添加的信息+上一状态保留的信息通过tanh函数得到信息

注意:输入门和输出门对应的tanh输入的内容是不一样的。输入门对应的输入时输入x和上一状态记忆;输出门对应的是加法之后的记忆信息。

 六、应用

 1、文本分类

LSTM

2、NER

BI-LSTM+CRF

3、流量预测

LSTM

4、CTR预估

Wide-Deep