为了解决二元分类问题,下面将介绍logistic回归,它通常用于监督学习问题的输出标签是0或1时,即一个二元分类问题时。 Logistic回归其实是一个很小的神经网络,对于每一张照片我们将它当作输入向量x,然后我们需要给出预测值a,即我们需要找到一种很好的关系来使得我们的预测值 尽可能接近实际的标签。而Logistic回归需要不断通过正向传播和反向传播来学习参数( 即学习到一种关系)。从输入x到给出预测值的过程称为正向传播,而通过得到的预测值从后往前对w和b进行求导叫做反向传播过程。 对于一张图片,将它转换为特征向量x输入算法后,我们期望算法告诉我们这张图是否是一只猫,算法通常会给出一个预测值a,a通常是一个概率值,表示这张图片为正类 (即为1)的概率,为了决定这个预测的结果是正类还是负类,我们通常还需要设定一个阈值,任何大于这个阈值的都为正类,否则,为负类 那么已知输入x和参数w,b,我们如何计算预测值a呢? 如果我们计算a =,即w是x的线性函数。事实上,如果你这么做的话,你其实是在用线性回归算法,线性回归算法并不是一个好的二元分类算法。在此,给出一个不正式的证明,直观上来说,你期望算法的输出a是一个概率,它表示这张图是1的概率,所以a应该是位于0 ~1 之间的,但实际上可能是负值,也可能是比1大得多的值,这并不符合我们的要求。所以我们可以对线性回归的值再用一层激活函数σ,让a = σ(wx + b) ,σ函数的值域是0~1,因此这也使得我们的预测值a永远在(0,1)之间。 在logistic回归中,定义的损失函数为L(a,y)=−[yloga+(1−y)log(1−a)]L(a,y)=−[yloga+(1−y)log(1−a)] ,这里的log表示以自然数e为底,它起着与平方误差函数相似的作用,并且会使问题变为凸优化问题,这会让我们得到全局最优值,而不会陷入局部最优的问题 (((补充损失函数的介绍:均方误差(Mean Squared Error)MSE通常在线性回归问题中用于衡量模型预测值与真实值之间的差异。在逻辑分类问题中,通常更常用的是交叉熵损失函数(Cross-Entropy Loss),尤其是在二分类或多分类任务中。 在多类单标签: 每一个batch的loss为: 在多标签分类中使用 : loss=−ylog(y^)−(1−y)log(1−y^) 上式只是针对一个节点的计算公式。这一点一定要和单分类loss区分开来。 loss(batch) = loss1 + loss2 + loss3 每一个batch的loss就是:
loss=∑ ( ylog(y^)−(1−y)log(1−y^) )
))) 常见的激活函数包括上面列出的Sigmoid、tanh、ReLu、 softplus以及softmax函数。 Softmax函数(将输入值进行指数运算)用于多分类问题,即从多个分类中选取一个正确答案。Softmax综合了所有输出值的归一化,***因此得到的是不同概率之间的相互关联***。 sum(P(i)) = 1 损失函数用交叉熵即CrossEntropyLoss() loss = -ylog(y_hat) (softmax(x)+log(x)+nn.NLLLoss====>nn.CrossEntropyLoss) 所以F.crossentropy()函数包含了log_softmax和nll_loss sigmoid函数用于多标签分类问题,选取多个标签作为正确答案,它是将任意值归一化为[0-1]之间,并不是不同概率之间的相互关联。 特征的概率无关联都在0——1之间
Relu函数
2. CNN convolutional nerual network
卷积核是一个四维张量(m , n, h, w) m组卷积核每组里有n个h*w尺寸的卷积
卷积核的通道数n由输入通道数决定,输出的通道数决定了卷积核的组数m
常见的运算
maxpooling最大池化 输出通道尺寸减半,减小维度特征减半,stride=kernel_size
padding 在输入通道加一卷0 3x3 padding=1-----5x5维持输入尺寸=输出尺寸
padding大小由卷积核尺寸mxm决定 m/2取整 关注边缘特征
前后尺寸不变 padding = f-1 /2 f = kernel_size
stride 步长即做卷积的间隔
1x1卷积能够简化计算
1x1卷积的组数决定了输出通道的个数图中16可为任意数由卷积核数量决定
高级CNN
①GoogleNet——————inspection module
多条路线进行不同操作,比较结果得出最优解
②residual network---消除梯度消失问题