深度学习| 神经网络初步

发布时间 2023-03-30 07:51:11作者: kris12

线性分类器

线性分类器比如逻辑回归、线性SVM,我们会拿到一个决策边界

线性分类器得分函数 

图像数据(32 * 32 * 3的输入矩阵)——图像数据 权重/参数f(x, W) ——>  CIFAR-10中的10个类别的得分向量

 f(x, W) = Wx  (10*1  = 10* 3072   3072*1),其中W叫做参数或者权重,f(x, W) 叫做假设函数x -> y映射关系的函数; 

线性分类器得分函数

损失函数也叫代价函数/cost function 、客观度/objective 

衡量和标准答案差异的函数

  • 给定w,可以由像素映射到类目得分;
  • 可以调整参数/ 权重W,使得映射的结果和实际类别吻合;
  • 损失函数是用来衡量吻合度的;

损失函数1:hinge loss / 支持向量机损失

  • 对于训练集中的第i张图片数据x是一个向量; 
  • 在W下会有一个得分结果向量f(xi, W) 是一个向量;
  • 第j类的得分为我们记作f(xi, W)是一个标量scalar; 
  • 则在该样本上的损失我们由下列公式计算得到;

 

假设我们现在有三个类别,而得分函数计算某张图片的得分为f(xi, W) = [13, -7, 11],而实际的结果是第一类(yi = 0);

假设△ = 10,上面的公式把错误类别(j != yi) 都遍历了一遍,求值加和: Li = max(0, -7 -13 + 10) + max(0, 11 - 13 + 10)

 因为是线性模型,因此可以简化成:

 

 

 线性分类器得分函数

 

 

损失函数2:交叉熵损失(softmax分类器)

  • 对于训练集中的第i 张图片数据xi
  • 在W下会有一个得分结果向量fyi 
  • 则损失函数记作:

 

2种损失函数的理解

 

通用的学习框架

 

神经网络

一般神经网络的结构

 

 从逻辑回归到神经元“感知器”

 

 添加少量隐层 => 浅层神经网络

 

 

 增多中间层  => 深度神经网络(DNN)

 

 

 神经网络非线性切分

 

 神经元完成【逻辑与】

 

 

 

 

 神经元完成【逻辑或】

 

 

 

神经网络非线性切分

对线性分类器的AND 和OR的组合

完美对平面样本点分布进行分类

 

 

 

 神经网络表达力与过拟合

  • 理论上说单隐层神经网络可以逼近任何连续函数(只要隐层的神经元个数足够多);
  • 虽然从数学上表达能力一致,但是很多隐藏层的神经网络比单隐藏层的神经网络工程效果好很多;
  • 对于一些分类数据(比如CTR预估里),3层神经网络效果优于2层神经网络,但是如果把层数再不断增加(4,5,6层),对最后结果的帮助就没有那么大的跳变了;
  • 图像数据比较特殊,是一种深层(多层次)的结构化数据,深层次的卷积神经网络,能够更充分和准确地把这些层级信息表达出来;

 

  • 提升隐层层数或者隐层神经元个数,神经网络“容量”会变大,空间表达力会变强;
  • 过多的隐层和神经元节点,会带来过拟合问题;
  • 不要试图通过降低神经网络参数量来减缓过拟合,用正则化或者dropout;

 

 

 神经网络结构

 

 传递函数

 

 BP算法

  • “正向传播”求损失,“反向传播”回传误差;
  • 根据误差信号修正每层的权重;

 

  •  BP算法也叫δ算法;
  • 以3层的感知器为例

 

 

 

 

 

 

 SGD

误差E有了,怎么调整权重让误差不断减小?

E是权重W的函数,我们需要找到使得函数值最小的W;

 

 

 BP算法例子

 

 前向(前馈)运算

 

 反向传播

 

 反向传播与参数更新