神经网络初步
写在前面
这个笔记记录了激活函数,梯度求解,反向传播算法。
主要是讲了反向传播算法,这个算法传播的是误差,从后往前计算。
目录
- 写在前面
- 第一课:神经网络初步与调参技巧
- 神经网络和深度学习的动机
- 一、线性分类器:数据D维 映射到 K类
- 二、Softmax
- 三、 交叉熵损失函数 Cross-Entropy Loss
- 四、 Hinge Loss 折页损失
- 五、 Regularization正则化
- 六、 计算梯度
- 七、优化
第一课:神经网络初步与调参技巧
神经网络和深度学习的动机
深度学习的任务:给定大量数据,自动地学习有层次的特征。
一、线性分类器:数据D维 映射到 K类
需要一个K*D矩阵W,再加上一个bias b W*D+b=K
向量点积:表征相似度,cos 相似度。
Wx + b = f
矩阵每一行表示输入x的每个维度的 权重
比如,将输入图片转化为特征向量x, x的维度为D;需要将照片分为猫狗轮船等等K类;KD的权重矩阵W;
W*x + b = f 所以输出的f哪一个维度的值大,表明结果对;如果结果不对,主要是W不准确。
二、Softmax
上面得到的f是个score,我们要将这个score转化为概率分布的形式y;即我们要将f转为值在0-1的概率分布
三、 交叉熵损失函数 Cross-Entropy Loss
W*x + b = f; f——>y
(xi , yi )是一组训练例子,xi∈RD 是一个 D维的训练数据, yi∈RK 是一个向量,是真实值,K维, 向量中只有一个1,对应true class 的索引;
假设y^\hat{y}y^i∈RK 是 after Softmax 计算出来的预测值,则cross-entropy loss为:
Li = - yi · log( y^\hat{y}y^i )
损失函数的参数永远只有两个——算法的预测值和真实值
比如要为一张图片分为3类,y的三维分别为cat、dog、ship;一张图片为dog;则真实值y=[0,1,0);
- 加入预测值为
y^\hat{y}y^=[0.9,0.1,0]; 根据Li = -yi · log( y^\hat{y}y^i )得到1; - 若加入预测值为
y^\hat{y}y^=[0,0.9,0.1]; 根据Li = -yi · log( y^\hat{y}y^i )得到-1*log(0.9)<1;
显然情况2的结果 y^\hat{y}y^ 更准确,所以其损失函数越小
预测对了,损失函数越小;
四、 Hinge Loss 折页损失
注意到cross-entropy loss需要Softmax,即需要指数计算,计算量太大,而且有时候我们只需要得到分数f,不需要概率y
因此,Hinge Loss解决了这个问题
- 先不考虑△\bigtriangleup△
把真实类yi即W中对应真实类别的那一行的分数 与 其他所有类 的分数作比较;
当真实类yi的分数 比 其他所有类 的分数 都大,即真实类的分数最大,则损失函数为0; - △\bigtriangleup△是什么,避免真实类的分数与某一类太相近,设置一个margin,即余裕;
Hinge Loss里面的分数都是计算出来的,没有真实值,其中 yiy_iyi 对应的是 真实情况对应的W的那一行的计算
五、 Regularization正则化
正则化是为了防止model learning过拟合;选择简单的W
L2 Norm是最常见的正则化
六、 计算梯度
**Li 是一个标量 ,标量对向量求导,结果是一个向量向量函数的求导问题
wj 是指除了正确类别所在的yi那一行权重。
Li是个关于w和x的标量函数,是针对计算出来的类别向量中的第i维,要计算这个第i维的损失函数结果。和wyi指的是同一行。
假设有三类,Li则由两个max()计算结果加起来,包含wyi两次。
公式中的1是一个函数,当()中的值小于0取0,大于0的时候取自身。
这个公式与上一个公式相比少了求和符号,因为,Li对于某一个wj(j≠wi),只包括一次。
xi是一个向量, 这样计算结果也是一个向量,维数和xi一样,也即和wj一样。
七、优化
神经网络的介绍
一、 前向传递
- 神经元的作用:做非线性变换
- z=Wx+b;
激活函数a=σ(z);做的非线性变换
假如使用Hinge Loss作为目标函数
二、反向传播重点
l 指第l层,即;
k 是前面神经元的index,即是输入权重的第几维;
j 是后面神经元的index, 即计算输出的第几维;
结论
三、反向传播算法【核心】
- x是神经网络的输入
- s是神经网络的输出
- 第k层 的 第j个神经元输入标量 z, 产生激活输出 a;
- 输入层 x = z = a; 即不考虑权重和激活函数;
- W是转换/权重矩阵,将第k层的激活输出ak 映射到 第(k+1)层输入zk+1;
- Important: δ(k)j是在 z(k)j处的反向传播误差,计算公式:
δ\deltaδj(k) = ∂J∂zj(k)\frac{\partial J} { \partial z^{(k)}_j }∂zj(k)∂J - 经过非线性变换之前的是z------经过非线性变换之后的是a
至此,我们可以将Loss Function J 对 权重矩阵 W的梯度写成 误差δ\deltaδ 和 激活后的 a 的乘积;
传播的是误差 δ\deltaδ , 是由后向前计算的;
反向传播的梯度仅仅受它们贡献的值影响
神经网络的正则化 - Dropout
- 训练:在整个神经网络中采样一个子网络
- 测试:without dropout 所有子网络的ensembles
四、神经网络的调参
- Loss-Iteration
长尾分布:
调学习率----先调大后调小,这样让一开始loss下降快,后来再精细调整;
调batch size----调大,减小振荡; - Training accuracy-Epoch
training accuracy 和 validation accuracy 之间没有 gap—欠拟合
增加训练数据集;
或者采用数据扩增技术;
总结
线性分类器:W权重就是世界观;
神经网络:Loss Function J 对 W 的梯度;
反向传播;
- Machine Learning(五—1)神经网络初步
- 神经网络初步学习手记
- 神经网络与推荐系统初步简介
- 深度学习初步(一)——colab和简单的二分类神经网络
- NB多项式模型、神经网络、SVM初步—斯坦福ML公开课笔记6
- 深度学习笔记之神经网络、激活函数、目标函数和深度的初步认识
- 斯坦福cs231n学习笔记(6)------神经网络初步
- NB多项式模型、神经网络、SVM初步—斯坦福ML公开课笔记6
- 神经记忆网络、神经机器翻译和神经图灵机的初步探讨
- 【深度学习_2.3_1】神经网络之TensorFlow初步应用
- 神经网络与推荐系统初步简介
- NB多项式模型、神经网络、SVM初步—斯坦福ML公开课笔记6
- 【转】NB多项式模型、神经网络、SVM初步—斯坦福ML公开课笔记6
- 斯坦福机器学习公开课8-1 2 神经网络初步了解
- Coursera_Stanford_ML_ex3_多标度分类和神经网络初步 作业记录
- 神经网络初步认识(一)
- 神经网络 初步
- 7.朴素贝叶斯的多项式事件模型,SVM初步,神经网络初步
- Stanford大学机器学习公开课(六):朴素贝叶斯多项式模型、神经网络、SVM初步
- 机器学习入门(一)初步认识了解神经网络