基于深度学习的情感分析

深度学习的情感分析

基于机器学习与深度学习方法的情感分析算法实现与对比,包括决策树,贝叶斯,KNN, SVM ,MLP, CNN, LSTM实现

预处理:

1.语料
电影评论,训练集合20000(正向10000,负向10000)
电影评论,测试集合20000(正向3000,负向3000)
2、语料处理
使用jieba进行分词
3、输入向量化
使用预先训练的wordvector.bin文件进行向量化
对于传统机器学习算法,要求输入的是N维向量, 采用句子向量求和平均
对于CNN,RNN深度学习算法,要求输入的是N*M维向量,分别对应查找并生成向量

———————————————————————————————————

深度神经网络(DNN)模型与前向传播算法

从感知机到神经网络

感知机是线性变化+激活函数,只有一个神经元

 

DNN是感知机扩展:

加入了隐藏层,隐藏层可以有多层,增强模型的表达能力;

输出层的神经元也可以不止一个输出,可以有多个输出,这样模型可以灵活的应用于分类回归,以及其他的机器学习领域比如降维和聚类等。

DNN的基本结构

上一节我们了解了神经网络基于感知机的扩展,而DNN可以理解为有很多隐藏层的神经网络。这个很多其实也没有什么度量标准, 多层神经网络和深度神经网络DNN其实也是指的一个东西,当然,DNN有时也叫做多层感知机(Multi-Layer perceptron,MLP), 名字实在是多。后面我们讲到的神经网络都默认为DNN。

从DNN按不同层的位置划分,DNN内部的神经网络层可以分为三类,输入层,隐藏层和输出层,一般来说第一层是输入层,最后一层是输出层,而中间的层数都是隐藏层。从小的局部模型来说,还是和感知机一样,即一个线性关系z=∑wixi+bz加上一个激活函数σ(z)

DNN前向传播算法数学原理

DNN前向传播算法

 

DNN前向传播算法小结

单独看DNN前向传播算法,似乎没有什么大用处,而且这一大堆的矩阵WW,偏倚向量bb对应的参数怎么获得呢?怎么得到最优的矩阵WW,偏倚向量bb呢?这个我们在讲DNN的反向传播算法时再讲。而理解反向传播算法的前提就是理解DNN的模型与前向传播算法。

————————————————————————————

深度神经网络(DNN)反向传播算法(BP)

 

DNN反向传播算法要解决的问题

对DNN的损失函数用梯度下降法进行迭代优化求极小值的过程即为我们的反向传播算法。

DNN反向传播算法的基本思路

梯度下降,修改权重,反向传播

————————————————————————————

深度神经网络(DNN)损失函数和激活函数的选择

 均方差损失函数+Sigmoid激活函数的问题

均方差+Sigmoid的反向传播算法中,每一层向前递推都要乘以σ′(z)σ′(z),得到梯度变化值。Sigmoid的这个曲线意味着在大多数时候,我们的梯度变化值很小,导致我们的W,bW,b更新到极值的速度较慢,也就是我们的算法收敛速度较慢。

使用交叉熵损失函数+Sigmoid激活函数改进DNN算法收敛速度

使用对数似然损失函数和softmax激活函数进行DNN分类输出

比如假设我们有一个三个类别的分类问题,这样我们的DNN输出层应该有三个神经元,假设第一个神经元对应类别一,第二个对应类别二,第三个对应类别三,这样我们期望的输出应该是(1,0,0),(0,1,0)和(0,0,1)这三种。即样本真实类别对应的神经元输出应该无限接近或者等于1,而非改样本真实输出对应的神经元的输出应该无限接近或者等于0。或者说,我们希望输出层的神经元对应的输出是若干个概率值,这若干个概率值即我们DNN模型对于输入值对于各类别的输出预测,同时为满足概率模型,这若干个概率值之和应该等于1。

梯度爆炸梯度消失与ReLU激活函数

学习DNN,大家一定听说过梯度爆炸和梯度消失两个词。尤其是梯度消失,是限制DNN与深度学习的一个关键障碍,目前也没有完全攻克。

简单理解,就是在反向传播的算法过程中,由于我们使用了是矩阵求导的链式法则,有一大串连乘,如果连乘的数字在每层都是小于1的,则梯度越往前乘越小,导致梯度消失,而如果连乘的数字在每层都是大于1的,则梯度越往前乘越大,导致梯度爆炸。

DNN其他激活函数

DNN损失函数和激活函数小结

重要的点有:1)如果使用sigmoid激活函数,则交叉熵损失函数一般肯定比均方差损失函数好。2)如果是DNN用于分类,则一般在输出层使用softmax激活函数和对数似然损失函数。3)ReLU激活函数对梯度消失问题有一定程度的解决,尤其是在CNN模型中。

————————————————————————————

深度神经网络(DNN)的正则化

 和普通的机器学习算法一样,DNN也会遇到过拟合的问题,需要考虑泛化,这里我们就对DNN的正则化方法做一个总结。

DNN的L1&L2正则化

DNN通过dropout 正则化

DNN通过增强数据集正则化

————————————————————————————

卷积神经网络(CNN)模型结构

CNN的基本结构

初识卷积

CNN中的卷积层

 对于卷积后的输出,一般会通过ReLU激活函数,将输出的张量中的小于0的位置对应的元素值都变为0。

CNN中的池化层

————————————————————————————

卷积神经网络(CNN)前向传播算法

回顾CNN的结构

CNN输入层前向传播到卷积层

隐藏层前向传播到卷积层

 和上一节唯一的区别仅仅在于,这里的输入是隐藏层来的,而不是我们输入的原始图片样本形成的矩阵。

隐藏层前向传播到池化层

隐藏层前向传播到全连接层

————————————————————————————

卷积神经网络(CNN)反向传播算法

CNN的反向传播算法思想

————————————————————————————

循环神经网络(RNN)模型与前向反向传播算法

————————————————————————————

LSTM模型与前向反向传播算法

从RNN到LSTM

————————————————————————————

————————————————————————————

————————————————————————————

————————————————————————————

————————————————————————————

———————————————————————————————————

TextCNN:

在“卷积神经⽹络”⼀章中我们探究了如何使⽤⼆维卷积神经⽹络来处理⼆维图像数据。在之前的语⾔模型和⽂本分类任务中,我们将⽂本数据看作是只有⼀个维度的时间序列,并很⾃然地使⽤循环神经⽹络来表征这样的数据。其实,我们也可以将⽂本当作⼀维图像,从而可以⽤⼀维卷积神经⽹络来捕捉临近词之间的关联。本节将介绍将卷积神经⽹络应⽤到⽂本分析的开创性⼯作之⼀:textCNN

textCNN模型主要使⽤了⼀维卷积层可以二维多通道和时序最⼤池化层。假设输⼊的⽂本序列由n个词组成,每个词⽤d维的词向量表⽰。那么输⼊样本的宽为n,⾼为1,输⼊通道数为d。textCNN的计算主要分为以下⼏步。

1. 定义多个⼀维卷积核,并使⽤这些卷积核对输⼊分别做卷积计算。宽度不同的卷积核可能会捕捉到不同个数的相邻词的相关性。

2. 对输出的所有通道分别做时序最⼤池化挑出最大特征可以异步实现,再将这些通道的池化输出值连结送入全连接层

3. 通过全连接层将连结后的向量变换为有关各类别的输出。这⼀步可以使⽤Dropout层应对模型过拟合。通过softmax做二分类或多分类。

• 可以使⽤⼀维卷积来表征时序数据。

• 多输⼊通道的⼀维互相关运算可以看作单输⼊通道的⼆维互相关运算。

• 时序最⼤池化层的输⼊在各个通道上的时间步数可以不同。

• textCNN主要使⽤了⼀维卷积层和时序最⼤池化层。

———————————————————————————————————

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页