线性分类器
线性分类器比如逻辑回归、线性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张图片数据xi 是一个向量;
- 在W下会有一个得分结果向量f(xi, W) 是一个向量;
- 第j类的得分为我们记作f(xi, W)j 是一个标量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算法例子
前向(前馈)运算
反向传播
反向传播与参数更新