神经网络-多分类逻辑斯蒂回归模型

下面的内容只是为了帮助理解其思想方法,实际应用中,神经网络原理是极其复杂的

目录:

①认识最简单的神经网络结构

②认识二分类的逻辑斯蒂回归模型

③认识多分类的逻辑斯蒂回归模型以及其实现图像分类的原理

1、聊一聊最简单的神经网络结构

神经元可以理解为一个函数,相当于一个黑盒,我向这个函数输入数据,通过这个函数进行一系列的算法去运算,输出一个结果。

(1)这幅图里边,x1,x2,x3 表示同时输入3个值,因为只有一个神经元,所以只有一个输出,在图上,看似蓝色和粉色的是两个大神经元,其实就是一个神经元,只是分开来更好理解

(2)W*x中的W矩阵,称之为权重矩阵,W矩阵与 x1,x2,x3构成的x矩阵相乘,例如 W矩阵:[w1, w2, w3] , x矩阵[x1, x2, x3],W*x就等于 w1*x1 + w2*x2 + w3*x3

(3)h(W*x) 表示一个激活函数,我们选一个sigmoid激活函数吧,表达式是   h(x) = \tfrac{1}{1+e^{-x}}  ,意思是说,把 w1*x1 + w2*x2 + w3*x3得出的结果 当做自变量x代入 h(x) 这个激活函数中

(4)先不管这么多这个东东有啥用,是什么鬼,先照着葫芦画瓢

ForExample:举个生活中的例子吧,综合房屋面积,房屋价格,社区评分,判断这个房子该不该买,实际情况下,可能会有一些小细节的处理,例如这个房屋价格,越高应该反而会削减顾客的购买欲望,可能以倒数的形式来表示这个房屋的面积。

假设一个富人,对钱没兴趣,所以在权重矩阵里边,房屋价格的权重就会很低,只有0.17,这个富人对生活体验的要求非常高,房屋面积一定要大,社区评分必须要高,这些参数,在这个富人的心目中是很重要的,所以权重很高,分别达到了0.87和0.95 。

如果向这个富人推荐一个房屋面积很小,社区评分又很差的房子,价格一般般,那么w*x的值就会特别小,代入激活函数,值也就很小,那就不应该买这个房子了。

如果向这个富人推荐一个房屋面积很大,社区评分又特别高,房屋价格高一点没关系,因为权重小,房屋价格不会严重影响这个w*x的值,所以,这时候,这个房子就值得购买了

x = [房屋面积,1/房屋价格*50,社区评分]

x = [100, (1/100)*50, 92]

w = [0.87, 0.17, 0.95]

2、二分类的逻辑斯蒂回归模型

还是以上面那个单神经元模型来说。

(1)通过输入x1,x2,x3

(2)然后经过神经元的处理,计算w1*x2 + w2*x2 + w3*x3的值

(3)把计算结果代入sigmoid函数,sigmoid函数如下图

(4)得出一个输出,这个输出就是判断某一个分类的概率

举个例子:

假设,让这个神经网络去判断一个学生是不是好学生。

我们设x1表示学生的成绩、x2表示学生的体能、x3表示这个学生玩游戏厉不厉害,

w1表示老师对此学生的x1成绩的支持程度,w2表示老师对此学生x2的支持程度,w3表示老师对此学生x3的支持程度,如果w权重是小于0的,表示老师对此学生的某个品质持反对态度,否则持支持态度。

小明的品质:x = [3, 2, 4]

小明的老师:w = [2, 1, -5]

小明的老师以 w权重的标准去评价小明是不是好学生,可见,小明的老师对小明打游戏这个行为是嫉恶如仇的,其实小明学习还不错,绩点3.0,体能也不错及格2.0,打撸啊撸玩吃鸡就牛逼了,上4.0的战绩了。

那么老师对小明的评价是: 3*2 + 2*1 + 4*(-5) = -12

代入sigmoid函数以后,f(x) = 1 / (1 + e^12) ,显然,f(x)的值是很小的,肯定小于0.5了,那么小明有很小的概率被老师评价为好学生

3、认识多分类的逻辑斯蒂回归模型以及其实现图像分类的原理

直接看公式:(k从0开始,如图,把1改为0)

(1)其中大K表示分类的种类数量,上图是两个神经元,那么就有3种分类,0类、1类、2类,则K = 3

(2)小k表示第几类,k=0表示第0类,k=1表示第1类以此类推

(3)注意求和符号上面那个是大K - 1,不要看成小k了

(4)这两个式子的分母都是一个定值

(5)大Y是指通过w1*x1 + w2*x2 + .... + wn*xn 的计算结果,例如Y = [y0, y1, y2, y3] 假设这里有分4类,这个矩阵就表示输入一次x1,x2,.....xn的数据,跟第0类特征矩阵wk0相乘得到y0,然后跟第1类特征矩阵wk1相乘得到y1以此类推

(6)P(Y=2|x) 表示第2类的概率有多大

(7)注意,当一个小k代入进去以后,这不是有个e^-wx 这样的东东吗?注意这里的w的下标k跟第(5)的w1*x1 + w2*x2 + .... + wn*xn不是同一个东东,这里的下标k是指第k类的测试数据 yk : w1*x1 + w2*x2 + .... + wn*xn,也就是第k个w1*x1 + w2*x2 + .... + wn*xn,这个意思,x1,x2,x3....都一样,都是同一个输入,分别跟(K-1)个[w1,w2,w3....]权重矩阵相乘,得出y0,y1,.......。大T就表示w矩阵的转置。例如k=0表示猫,那么我们就把一张猫的图片作为测试数据给这个神经网络去分类,但是这个神经网络只能输出识别为猫的概率,不能直接判断就是猫

举个例子:

我们现在要让这个神经网络去识别一个字母,分类它是字母X还是字母U还是其他字母。我们定义字母X为0类,字母U为1类,其它字母归为2类。

我们的图片只有5x5这么大,只有黑白两种颜色,黑色表示1,白色表示0

下面有4张图片给神经网络识别

【这些特征矩阵分别用来匹配字母X和匹配字母U的图片】

【一下两个矩阵其实不一定是1和0,这里只是为了方便计算,这些值可能被tensorflow自动调整,实际应用场景中取值一般在-1到1,我们目前先这么理解:越希望出现黑色的像素点,设置的值越大,不希望出现黑色的像素点设置为更小的值】

识别为字母X的特征的权重矩阵: wk0 = [1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1]

识别为字母U的特征的权重矩阵: wk1 = [1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1]

但是在实际应用中,这些权重矩阵会被tensorflow自动调节参数。

第一张图片是字母X

可以表示输入 x_0 = [1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1]

第二张图片是字母U

可以表示输入 x_1 = [1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1]

第三张图片也是字母U,只是写的没那么漂亮而已

可以表示输入x_2 = [0,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,0]

第四张图片就是其它不知怎么乱七八糟了,很可能被识别为其它字母

可以表示输入x_3 = [0,0,0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0]

①当你使用x_0矩阵去输入数据的时候,去和“用来匹配字母X的特征矩阵wk0”做乘积,你会发现得出的输出很大,把输出的值通过激活函数处理,就会得出一个很大的概率,这个图片就很有可能是字母X

②当你使用x_0矩阵去输入数据的时候,去和"用来匹配字母U的特征矩阵wk1"做乘积,你会发现得出的输出很小,把输出的值通过激活函数处理,就会得出一个较小的概率,这个图片就不太可能是字母U

③当你使用x_3矩阵去输入数据的时候(第4张乱七八糟的图片),去和“用来匹配字母U的特征矩阵wk1"做乘积”,你会发现得出的输出是0,意思一个像素点都不匹配,通过激活函数处理,就会得出一个非常小的概率值,这个图片就几乎不可能是字母U

尝试计算:

那么呢,我们按照神经元的模型去计算一下w*x

首先我们来识别第一张图片(输入第一张图片的数据,就会有3个输出):

激活函数有很多种,可以选一个适合的激活函数即可,但是在真实的应用场景中可能比我们想象的复杂很多很多,这里只是举个例子。

我们希望,这个输出的值越大,概率就越大,并且概率值的结果要稍微靠谱一些,那么,我们把y0 = -y0/(y0+y1) , y1 = -y1/(y0+y1)作为第一次激活函数,sigmoid作为再一次的激活函数。

注意的是:实际应用中,激活函数不是乱选的,这里选随意选个激活函数是为了方便计算,计算得来相对看起来舒服一些的概率

y0 = x_0 * wk0 = 9  

y1 = x_0 * wk1 = 4 

通过第一次激活函数以后:

y0 = - 9

y1 = - 4/13

Y = [y0, y1] = [- 9/13, - 4/13]

第二次激活函数:

依照下面式子,算概率,其实式子中的e^-w*x , w*x就是y0,y1这些东东

分母是不变的,先算分母:1 + e^-y0 +e^-y1 + e^-y2  =  1 + e^(9/13) +e^(4/13) = 4.36

P(Y=0|x) = e^(9/13) / 4.36 = 0.458

P(Y=1|x) = e^(4/13) / 4.36 = 0.312

P(Y=2|x) = 1 - 0.458 - 0.312 = 0.23

显然,当输入为第一张图片的时候,分别与字母X的特征矩阵、字母U的特征矩阵、其它字母的特征矩阵做乘积

得到的概率分别是:识别为0类即该图为字母X的概率是0.458 ,字母U的概率是0.312,其它字母的概率是0.23,那么该神经网络就会识别为该图片为0类,识别为字母X。

如果,输入的是第4张图片的数据,再次按照上面的激活函数以及权重矩阵去计算的话,得出的结果是错的,那么这时候,就要重新选择激活函数,或者调节权重矩阵的值,tensorflow深度学习框架会自动帮我们调节权重矩阵,不再是0101了,可能是-1到1的一些小数,人为也可以去设置激活函数,让神经网络训练效果更好

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值