深度学习与神经网络学习笔记(二)
三、logistic 回归
1、二分分类
首先如果给你一张图片,你来判断它是否是猫:
对于我们来说这看一眼就会说这是猫,而对于机器来说它会做的判断就会是:是猫(1)和不是猫(0)而这个就是我们要输出的y值,其实大部分时候一直输出的都是一个概率值,而我们只是通常把概率最大的值作为1输出。
其实机器识别一个图片和我们肉眼识别是不一样的,比如说上面这样的一张图片,对于机器来说,它将会被看成三个不同的颜色矩阵(见下图),分别是红色、绿色和蓝色,每一个矩阵中的一个数字对应的就是图片在这个像素点(64*64,为了在图片中能够表示清楚,三基色的图片中用4*5的矩阵表示,其实是一样的意思)上的对应颜色的强度值,比如红色第一个像素点的255就表示图片在该像素点的红色强度值为255(强度值在0-255的范围内,255表示最大,0表示没有此颜色)
然后,我们可以把矩阵表示成一个 (x,y) 输入给机器x为:
x=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪255231...255134...25513493...⎫⎭⎬⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪x∈RNX
y的取值为:
y∈(0,1)
这样我们所采用的样本集m可以表示为:
m={(x(1),y(1)),(x(2),y(2)),⋅⋅⋅,(x(m),y(m))}
如果我们对应的每一个输入值
x
有n 个(表示我们所构建的影响因子有
n
个)那x 可以表示为一个
m∗n
的矩阵:
而y可以直接表示为一个 1∗n :
y={y(1),y(2),⋅⋅⋅,y(m)}
2、logistic 回归
输入:
参数:
(ω,b)
输出:
y^
映射(函数):
y^=σ(ωTx+b)
其中:
σ(z)=1/1+e−z
这里的 σ(z) 函数就是一个激励函数,其图像为:
这就保证了当 ωTx+b 值越大(趋近无穷)最后计算出来的 y^ 就会越接近于1,而 ωTx+b 值越小(负无穷)最后计算出来的 y^ 就会越接近于0,最后达到一个输出 (0,1) 结果的目的。
所以现在我们机器学习所要做的就是去学习这个函数中的参数: (ω,b)
3、logistic 回归损失函数
机器学习将会一次又一次地训练我们所给出的样本,最后产生
(ω,b)
,但是我们用训练过程出来的
(ω,b)
却也计算不出完全正确每个样本的
y
值,因此我们需要通过对(ω,b) 所计算出来的
y^
与实际的
y
值做比较,而给他们做比较的这个函数就叫做损失函数:L(y^,y)=−(ylogy^+(1−y)log(1−y^))
当y=1时,L(y^,y)=−logy^,y^越接近0损失函数越大y越接近1损失函数越小
当y=0时,L(y^,y)=log(1−y^),y^越接近0损失函数越小y越接近1损失函数越大
损失函数反应的是其学习后得出的
(ω,b)
所计算出来的预测值:
y^
相对于实际值
y
所损失的一个度量。
这样对每个样本进行计算,最后计算出所有样本的损失函数的均值就是我们所说的成本函数:
即为:
J(ω,b)=−1m∑i=1n{y(i)logy^(i)+(1−y(i))log(1−y^(i))}
4、梯度下降法
我们首先还是上图,这里是成本函数、 ω和b 所模拟的一个三维图像,我们就是通过图像中每个小红点一步一步去找到使 J(ω,b) 最小的那个解的。而我们所要用的就是通过斜率(通过导数求得)来进行判断
我们先通过二维函数来理解梯度下降,如图可知,当导数
dJ(ω)dω<0
时我们将会向右边方向进行
ω
值的变化,如果大于0就向左边进行变化,最终找到值为0的点就是我们所要找到的最优解,而每次变换的△=αdJ(ω)dω ,这里的α为学习率,也就是梯度下降的变化率。
同样我们可以直接投影到三维图像上去解决这个问题。这时候就应该是:
⎧⎩⎨⎪⎪⎪⎪⎪⎪ω:=ω−∂J(ω,b)∂ωb:=b−∂J(ω,b)∂b⎫⎭⎬⎪⎪⎪⎪⎪⎪