神经网络——计算机视觉
(一)基础知识
1、前向传播
线性得分函数:
f :每个类别的得分(类别 * 1)
W:权重参数 (类别 * 像素点)
x:图片(像素点 * 1)
b:偏置参数(类别 * 1)
损失函数:
1、损失函数 = 数据损失 + 正则化惩罚
:数据损失值
:正确类别的得分
:其他类别的得分+误差
:正则惩罚项
λ:不希望过拟合λ取大
2、Softmax分类器:将得分转化为概率
归一化:
:k类别的得分函数
计算损失值:
2、反向传播
从到逐层求偏导计算梯度判断对f的影响
(二)整体结构
input layer:输入特征矩阵
hidden layer1:特征矩阵 * 权重矩阵1
hidden layer2:hidden layer1 * 权重矩阵2
output layer:输出hidden layer2 * 权重矩阵3
非线性:每一步矩阵计算后进行非线性变换(激活函数)
激活函数:
- Sigmoid: 遇到梯度为0时,会出现梯度消失。
- Relu: 梯度好算,不会出现梯度消失。
- 作用:逼近复杂函数;将神经元的输出压缩进特定边界。
数据预处理:
- 中心化:
X -= np.mean(X, axis = 0) - 放缩或扩充:
X /= np.std(X, axis = 0)
参数初始化:
权重矩阵:W = 0.01* np.random.ramdn(D,H)
防止过拟合的方法:
DROP-OUT:在训练过程中,每层只有固定比例的神经元参与训练,依次替换。
(三)卷积神经网络原理与参数解读
卷积的作用:分出不同的小区域,选择一种方法去多通道计算对应小区域应该的特征值
输入层:输入各个通道的像素点信息,深度为通道数
卷积层:将各个通道的小区域卷积计算(与卷积核内积)后相加,再加偏秩项
池化层:通过某种筛选方法,将特征图的各个区域压缩
全连接层:将特征向量转化成各类别的概率值
1、卷积层
- 卷积核:将卷积参数共享,大幅度降低权重参数((卷积核大小 + 1) * 个数)。
- 参数:活动窗口步长小,特征丰富;卷积核尺寸小,所需参数小,卷积过程多,
特征提取更细致,加入的非线性变换多,还不会增大权重参数。 - 边界填充:填充后,让原来的边界值也可以充分的利用。
- 特征图:卷积层得出的结果,深度为卷积核F的个数,P表示边界填充了几圈。
长度
宽度
2、池化层
- 最大池化:取各个区域内的最大值,得到压缩结果
- 平均池化:取各个区域内的平均值,得到压缩结果
3、经典网络
优点:使用小的卷积核来完成特征提取操作
不足:在卷积层数超过某一临界点时,不好的特征会降低正确率
Resnet网络:将不好的卷积层结果去除,使用保留结果再继续训练,至少结果不会变差
(四)递归神经网络与词向量原理解读
1、递归神经网络模型
RNN网络:
特点:构建时间序列,将每个时刻的训练特征加入到下一个训练中
不足:不相关时刻的信息,会给往后的训练带来干扰
LSTM网络:加入控制参数C,判断保留和需要被遗忘的信息
2、词向量模型
将词语转化成向量的形式,含义相近的词,向量也相近。
1、输入:在文章中设滑动窗口,构建数据集
2、训练方式:输入的词向量与词汇表中向量匹配训练,最终训练出能够匹配的词向量
3、训练步骤:前向传播计算损失,反向传播更新权重值和输入数据
4、不足:计算量太大
常见模型:
CBOW:输入上下文,预测中间词。
Skipgram:输入中间词,预测上下文。
改进方法:
负采样模型:配对的输入输出概率设为1,再添加5个不配对的输出概率设为0,通过训练将模型概率接近1。
训练步骤:
- 初始化词向量矩阵;
- 通过神经网络反向传播来计算更新,更新权重参数矩阵W,和输入数据;
- 最终得到每一个词的向量表达。