0
点赞
收藏
分享

微信扫一扫

神经网络基础--反向传播与梯度下降--word2vec 词向量神经网络


神经网络基础--反向传播与梯度下降--word2vec 词向量神经网络_Tensor flow

文章目录

  • ​​一、概述神经网络​​
  • ​​1.1 项目背景:个性化推荐意义​​
  • ​​1.2 神经网络基础知识精讲​​
  • ​​1.3 word2vec 词向量原理​​
  • ​​word2vec 神经网络模型​​
  • ​​1.4 协同过滤:item embedding​​
  • ​​1.5 应用方向​​
  • ​​二、反向传播​​
  • ​​2.1 DNN反向传播算法​​
  • ​​2.2 CNN反向传播算法​​
  • ​​2.3 卷积层的反向传播​​
  • ​​2.4 推导卷积层梯度(W,b)​​
  • ​​2.5 CNN反向传播算法总结​​

一、概述神经网络

1.1 项目背景:个性化推荐意义

注册商标问题,papi酱 网名被注册
初始词向量


Python和Tensorflow

python: pip install tensorflow


Anaconda: conda install tensorflow


1.2 神经网络基础知识精讲

基础知识

  • 是一个黑箱算法,可解释性不强
    hidden layer 隐藏层,不可见,数值不是训练前可以知道的
    inputlayer 输入层:都是实数
  • 输入–>函数:线性函数(可以嵌套)但是还是线性函数,
    所以引用非线性函数(activation function)增强神经网络表达能力
    激活函数不可导的梯度函数,在求极值的时候,无法使用梯度下降法(求导数来求极值)
  • 神经网络表达能力和可解释性:
    足够的深度和宽度可以拟合任何一个复杂的函数(神经网络 manifold 理论),反之则拟合不足
    若宽度不足,深度很深也不行

反向传播与梯度下降法

  • loss 损失函数
    机器学习/数据挖掘模型 的目的,拟合一个函数,通过构造损失函数(loss),希望损失尽可能小,找一个函数使得loss尽可能小
    用导数求极小值,求导就叫做反向传播
  • 梯度问题
  • 导数链式法则
    若导数(变化率)小,经过很多层网络求导,他们的积接近于零,–>梯度消失
    若导数(变化率)大,经过很多层网络求导,他们的积接近无限大,–>梯度爆炸
  • 激活函数导数
  • 梯度下降方法:
    在神经网络中,参数初始值的选取,是优化的重要参数
    随机选取n个初始值,进行n次迭代
  • 梯度下降(Gradient Descent),步长抖动(步长不能太大,太小收敛太慢)
  • 解决梯度的方法:
    1–Lstm(long short-term memory)长短期记忆,用来解决RNN模型梯度问题
    (recursive/recurrent neural network 递归/周期神经网络,早期的记忆也会成为输入)
    2–选择特殊的激活函数ReLU(修正线性单元)
    Batch size 训练样本大小
    迭代算法对每一批样本,只走一步
    Batch size太小抖动大,太大则训练不明显,收敛满,要适当的小
1.3 word2vec 词向量原理
  • 对词进行编码及评价效果–连续性
    用夹角的余弦值表示词意思之间的距离,余弦值越大,两个词之间的意思越接近
  • 传统方法:利用term-doc matrix(词-文档矩阵)对词进行编码
    只能表示词出现的频次,词与词之间的距离无法体现

纬度高,新词没有对应的编码

因为onehot编码很多位是0,最终神经网络计算量不大


可以只考虑高频词,从而避免过分膨胀

word2vec优点 1 分布假说(只考虑近距离的词,语境/上下文)

2 在小范围内,可以不考虑字的顺序


3 试验表明,考虑太多细节(比如语法)效果不一定更好


word2vec 神经网络模型


cbow(continuous bag of words l连续词袋)

与BoW一样,抛弃了词序信息,然后窗口在语料上滑动,成就了连续词袋


输入上下文—> 输出中心词

skip-gram 方法的网络模型 1 三层神经网络 2 中间层(第二层)没有激活函数(sigmoid)。避免语义过度抽象 3 输出层(第三层)又激活函数softmax

采样过程,忽略一部分的词


输入中心词—> 输出上下文

从 onehot 编码–>自编码 word2vec 代码剖析 skip-gram

word2vec 之cbow


word2vec 运行结果分析


模型训练标准


模型测试标准


1.4 协同过滤:item embedding


1 关键词 textrank 根据两个词互相投票来确定一个词的重要性 pagerank’财经’,‘发展’,‘银行’/3 来计算平均向量 2 投票用词向量夹角余弦来计算 3 textrank

优点:不管一片文章中两个词的相隔距离,根据相应的词向量,计算相似度

4 归类,计算平均向量 与各个类别向量的距离 可以对文章进行归类

1.5 应用方向
  • 初始推荐系统
  • 推荐系统知识
    新浪网:猜你喜欢
    网易: 今日点击
    新闻T字形标签提取
    新闻推荐
  • 总结和拓展
    总结
    自编码网络

二、反向传播

2.1 DNN反向传播算法

神经网络基础--反向传播与梯度下降--word2vec 词向量神经网络_Tensor flow_02

2.2 CNN反向传播算法

对比深度神经网络反向传播算法,卷积神经网络反向传播算法需要解决以下几个问题。

神经网络基础--反向传播与梯度下降--word2vec 词向量神经网络_神经网络_03


由于卷积层可以有多个卷积核,各个卷积核之间的处理方式是完全相同的,为了简化算法公式的复杂度,下面推导时只针对卷积层中若干卷积核中的一个。

  1. 池化层的反向传播
    池化层没有激活函数可以直接看成用线性激活函数,即,所以 。接下来看看池化层如何递推
    在前向传播时,我们一般使用 max或 average对输入进行池化,而且池化区域大小已知。反向传播就是要从缩小后的误差,还原池化前较大区域对应的误差 。根据(2)式子,在DNN中是已知的,所以我们可以直接通过矩阵乘法将 层的误差映射回 层的误差,但对于池化层,要求

用一个例子可以很清楚的解释这一过程:假设现在我们是步长为1的 2×2 池化,4×4大小的区域经过池化后变为2×2。如果 的第 k个子矩阵为:

首先我们对 进行还原。 如果是max pooling,我们只需要记录前向传播中最大值的位置,然后将误差放回去即可。如果最大值位置分别为 2×2 的左上,右下,右上,左下进行转换:

如果是average pooing,我们只需要将池化单元的误差平均值放回原来的子矩阵即可:

神经网络基础--反向传播与梯度下降--word2vec 词向量神经网络_神经网络_18

2.3 卷积层的反向传播

神经网络基础--反向传播与梯度下降--word2vec 词向量神经网络_Tensor flow_19


列出a,W,z的矩阵表达式如下:

利用卷积的定义,很容易得出:(是卷积计算哦,不是点乘)

神经网络基础--反向传播与梯度下降--word2vec 词向量神经网络_Tensor flow_22


神经网络基础--反向传播与梯度下降--word2vec 词向量神经网络_Tensor flow_23

2.4 推导卷积层梯度(W,b)

神经网络基础--反向传播与梯度下降--word2vec 词向量神经网络_池化_24


神经网络基础--反向传播与梯度下降--word2vec 词向量神经网络_池化_25

2.5 CNN反向传播算法总结

输入:m个图片样本,CNN模型的层数L和所有隐藏层的类型。对于卷积层,要定义卷积核的大小K,卷积核子矩阵的维度F,填充大小P,步幅S。对于池化层,要定义池化层区域大小k和池化标准(Max或Average)。对于全连接层,定义全连接层的激活函数(输出层除外)和各层神经元的个数。梯度迭代步长α,最大迭代次数Max和停止迭代阈值ϵ。

输出:CNN模型各隐藏层与输出层的W,b。

神经网络基础--反向传播与梯度下降--word2vec 词向量神经网络_池化_26


举报

相关推荐

0 条评论