神经网络基础

二分分类

二分分类问题指数据样本的标签只有两种的分类问题。比如给出一张图片,判断图片的动物是否是猫。如果这张图片大小为64*64,颜色通道为RGB,那么可以定义这张图片的特征向量为所有像素的组合,特征向量的长度为3*64*64。

定义二分分类问题使用的数学符号。对于某个样本(x,y)xRnx是样本的特征向量,y{0,1}是样本的标签。对于有m个样本的数据集{(x(1),y(1)),(x(2),y(2)),,(x(m),y(m))},第i个样本为(x(i),y(i))。使用矩阵XRnx×m来保存数据集的特征向量

X=[x(1),x(2),,x(m)]

使用矩阵YR1×m来保存数据集的标签
X=[y(1),y(2),,y(m)]

logistic 回归

logistic 回归是解决二分分类问题的一种解决方法,通过样本的特征向量计算出一个分数,通过分类来预测这个样本的标签,准确来说,这个分数表示样本的标签为1的概率。

定义参数wRnxbR。预测的结果y^可以这样计算:

y^=wTx+b

这样计算得到的y^在实数范围内,而概率的范围应该是[0,1],因此在此公式上加上sigmoid函数, sigmoid(z)(0,1)
z=wTx+by^=sigmoid(z)=11+ez

sigmoid函数曲线如下图
神经网络基础

  • 如果zy^0
  • 如果z=0y^=0.5
  • 如果z+y^1

logistic 回归损失函数

对于数据集{(x(1),y(1)),(x(2),y(2)),,(x(m),y(m))},我们希望对于第i个样本,y^(i)y(i)

定义损失函数(loss/error function)来表示预测结果与实际结果的误差

l(y^,y)=(ylog(y^)+(1y)log(1y^))

这个损失函数可以保证,当y^y接近时,l(y^,y)0,当y^远离y时,l(y^,y)+

定义成本函数(cost function)J(w,b)表示数据集的预测结果与实际结果的误差

J(w,b)=1mi=1ml(y^(i),y(i))=1mi=1m(y(i)log(y^(i))+(1y(i))log(1y^(i)))

梯度下降法

下图是成本函数J(w,b)的图像
神经网络基础
成本函数J(w,b)是凸函数,只有一个极小值,即全局最小值。机器学习的过程就是找到J(w,b)函数最小值的w和b。通过不断进行如下操作,可以使得J(w,b)函数值不断减少,这个过程的表现效果如同上图中的红点不断往谷底移动。

w:=wαJ(w,b)wb:=bαJ(w,b)b

其中,α是学习率,控制J(w,b)的下降速度。J(w,b)w是w的梯度,用dw表示。J(w,b)b是b的梯度,用db表示。

计算图

根据导数的链式法则,导数可以反向传播,如图:
神经网络基础

logistic 回归的梯度下降法

对于一个样本的损失函数,logistic回归的梯度如下:
神经网络基础

对于m个样本,logistic回归的梯度只需累加后除以m。求logistic回归的梯度的算法如下:
神经网络基础

向量化

使用向量化简化求logistic回归梯度的过程(减少一个循环)
神经网络基础

向量化实现求J(w,b)

X=[x(1),x(2),,x(m)]Y=[y(1),y(2),,y(m)]Z=wTX+bA=sigmoid(Z)dZ=AYdw=1mXdZTdb=1mi=1mdZ(i)

向量化的logistic回归的梯度下降法
神经网络基础

logistic 损失函数解释

y=1时,y^表示P(y=1|x)。当y=0时,1y^表示P(y=0|x)。合并起来

P(y|x)=y^y(1y^)1y

我们期望P(y|x)尽可能大,两边取对数为
logP(y|x)=ylogy^+(1y)log(1y^)

因为我们求损失函数的最小值,因此两边加上负号。

如果训练集每个的标签概率是独立分布的,那么

P(label in training set)=i=1mP(y(i)|x(i))

根据极大似然估计法,要使概率最大,则log之后要最大化
logP(label in training set)=i=1mlogP(y(i)|x(i))

最后加上负号改成求最小值,这便是logistic成本函数的由来。