构建一个简单的网络,先从线性函数开始:
1. 从输入----->输出的映射
图片(32*32*3=3072) 经过 f(xi|W)+b 映射 每个类别的得分
我们来解析一下这个映射函数:f(xi|W)=Wx+b
a: xi 是输入的参数,在此例中就是图片像素点矩阵(32*32*3=3072),根据计算机的存储规则,可看成3072*1的矩阵;
W: W 是权重矩阵,决定着分类边界的走势;
b: 偏执,可以对决策边界做一个微调;
2. 要根据每次分类的结果调整权重矩阵W、偏执b,那如何衡量每次分类的分类结果呢?----构建损失函数
a. Loosi = ∑j≠yi max (0, sj-syi+1),将分类得分大于正确分类得分的,想减后做一个累加,最后加的1相当于引入一个错误。
一般损失函数的定义:损失函数 = 数据损失 + 正则化惩罚项
loss = 1/N ∑Ni=1 ∑j≠yi max (0, f(xi;W)j - f(xi;W)yi+1) + λR(w)
其中,R(w)=∑k ∑l W2kl,我们总是希望模型不要太复杂,过拟合的模型是没用的。
3. softmax 分类器
现实中,我们总希望输出图片后,输出的是一个关于类别判定的概率,而不是关于每个类别的得分,所以我们使用分类器
将得分换算成概率。
a. 常用的分类器: ,z是关于每个类别的得分。
b. 升级版,目的:我们希望突出类别之间的差距。
归一化: where
计算损失值:
至此,我们通过前向传播,在给入一张图片后,计算出了图片属于的类别概率,当然当然,一开始我们的权重矩阵肯定不会那么准确
分类的类别不那么准确,所以我们怎么调整权重矩阵来让分类算法预测的准确率更高呢?
4. 反向传播(梯度下降法最常用)
question1: 当我们得到了一个目标函数后,如何进行求解?直接求解?
answer1: 常规套路:机器学习的套路就是我交给机器一堆数据,然后告诉它什么样的学习方式是对的 question2: 如何优化? answer2: 一口吃不成个胖子,我们要静悄悄的一步步的完成迭代.事实上,并不是经过一次权重矩阵就能达到想要的效果,经过多层权重矩阵w后(不同的w关注的点不同),根据输出层结果的好坏,在反向传播,更新权重矩阵。一般用的方法就是梯度下降法。
标签:得分,xi,权重,--,分类,矩阵,例子,深度,类别 From: https://www.cnblogs.com/zcg-learning/p/17357733.html