
文章目录
- 一、概述神经网络
- 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反向传播算法

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

 由于卷积层可以有多个卷积核,各个卷积核之间的处理方式是完全相同的,为了简化算法公式的复杂度,下面推导时只针对卷积层中若干卷积核中的一个。
- 池化层的反向传播
 池化层没有激活函数可以直接看成用线性激活函数,即,所以 。接下来看看池化层如何递推 。 
 在前向传播时,我们一般使用 max或 average对输入进行池化,而且池化区域大小已知。反向传播就是要从缩小后的误差,还原池化前较大区域对应的误差 。根据(2)式子,在DNN中 是已知的,所以我们可以直接通过矩阵乘法将 层的误差映射回 层的误差,但对于池化层,要求 
用一个例子可以很清楚的解释这一过程:假设现在我们是步长为1的 2×2 池化,4×4大小的区域经过池化后变为2×2。如果  的第 k个子矩阵为:
首先我们对  进行还原。 如果是max pooling,我们只需要记录前向传播中最大值的位置,然后将误差放回去即可。如果最大值位置分别为 2×2 的左上,右下,右上,左下进行转换:
如果是average pooing,我们只需要将池化单元的误差平均值放回原来的子矩阵即可:

2.3 卷积层的反向传播

 列出a,W,z的矩阵表达式如下:
利用卷积的定义,很容易得出:(是卷积计算哦,不是点乘)


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


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

                










