深度学习-线性分类

来源:互联网 发布:公司的网络架构 编辑:程序博客网 时间:2024/04/25 23:05



我们先从简单的线性分类开始讲起,一步步进入深度学习的海洋中

问题描述

现在我们有一组标签:猫 狗  飞机  汽车(有10组分类)

输入是一张图(32*32*3)

请输出图中内容的标签

我们采用线性模型来解决上述问题

f(x,w) = w*x + b

f:10*1。10行1列的矩阵,每一行都代表一种分类(10组分类),元素值的大小表示图片属于对应分类的可能性大小

x:图片的输入。我们将图片进行拉伸,变成3072*1的矩阵(3072 = 32*32*3)

w:由f和x的矩阵维度可以推出w的维度10*3072,w的结构:有10行,每一行都有图片被拉伸后的元素个数

b:10*1


故:对于图像中的每一个点,对于点对应的每一个类别,都有一个权重值

对于每一个类别,都通过图像中所有点与其对应的权重值的乘积计算之后得到



如上图,如果输入的图像被拉伸成4*1,通过线性计算后,我们得出了最后3*1的矩阵,其中哪个类别的得分数大,就说明输入图像输入哪个类别。当然,上述例子中,得到图像输入狗的结论明显是错误的。说明线性模型不适合解决此问题或者给出的权重矩阵不好。

此实例中有三组权重值(每一行对应一个类别,每一行代表一组权重值),设输入的图像点依次为x0,x1,x2,x3

则我们得到一组四元线性方程组

 0.2x0-0.5x1+0.1x2+2.0x3+1.1 + 1.1

1.5x0+1.3x1+2.1x2+0.0x3+3.2 + 3.2

0x0+0.25x1+0.2x2-0.3x3-1.2  -1.2

注意,权重参数中有正有负,负代表对某种分类的决策有抑制作用


上述得到的线性方程组相当于在整体分类中花了三条线(决策边界)


w确定斜率,b确定与y轴的交点


那么问题来了,权重矩阵是如何得到的,b又是如何设置的等等问题,在此之前,我们先来讨论什么是损失函数


损失函数

损失函数是一种衡量损失和错误程度的函数


提供一种函数来计算损失程度,结果越大,模型效果越差,公式中的加1表示容忍程度

故我们可以得到一种损失函数的表示(此损失函数还不是完全的,下面还会详细改进)




正则称惩罚项

我们要对上述的损失函数进行改进

问题:实例:x = [1,1,1,1]  w1= [1,0,0,0],w2=[0.25,0.25,0.25,0.25]

w1xT=1 w2xT=1

对于两个不同的模型,最后计算出的结果却是相同的,难道我们就可以随便选择w1和w2吗?肯定不行。对于w1,只关注w1中的第一个像素点,而对于二号模型,w2的权重综合考虑了每一个像素点,都参与了计算。二号模型关注的面更广,而不至于过多关注某点而过拟合。所以我们需要得到类似的w2的分布稍显均匀的模型

在上述例子中,损失函数前部分一样,但模型1中加上正则化惩罚项1*1+0*0+0*0+0*0=1,模型2中加了0.25*0.25+0.25*0.25+0.25*0.25+0.25*0.25 = 0.25,模型2中的损失函数结果较小,故选择w2



阅读全文
1 0
原创粉丝点击