模式识别系列(六)多分类策略

1.多分类问题引入

  在此篇之前,如果大家还有印象,我们会发现 处理的都是二分类问题,也就是标签y的取值只能是0,1或者-1,1。不论是我们的pla,线性回归,logistic回归,还是svm,最后都是找到一个由权重构成的分类面,它自身的限制导致了这些所有的算法只能处理二分类问题。但是我们在实际运用中,往往处理的不仅仅是“是或不是”的问题,很多时候是“是什么”的问题,那么这就是多分类问题,比如:
在这里插入图片描述这是一个四类的分类,我们用肉眼很容易看出来它们之间的区别,但是如何让算法区分出这四类不同的点呢?在这一篇,我们来看几种策略,分别是1vN,1v1,softmax。

2.1vN策略

  1vN策略的目的是把多分类问题转化为一系列二分类问题,从而推广到多分类问题。这句话怎么理解呢?看下面这张图就明白了。
在这里插入图片描述每一类和其他类都能化成两类问题,因此,对于每一类,可以获得一个分类面,因此就把样本化为了不同的区域。当输入一个特征向量,只需要分别用每一个分类面对特征向量进行判别,取其中得分最高的区域,就可以得出最后的分类结果。但是,这个方法不好的地方我们可以看到,将分类面叠加起来后,是有盲区的,按照分类面来说,这些区域不属于任何一类。
因此,1vN策略的过程就可以描述如下:

  1. 对于任意的k属于Nclass
  2. 将属于k类的样本点作为正样本,将其他的点作为负样本,由此得出Nclass个分类面
  3. 将未知的样本特征向量分别计算 w k T x w_k^Tx wkTx,取值最大的第i类作为最后的分类结果

3.1v1策略

  1V1是另外一种策略,不同于1vN,1v1有点像打积分赛,每次挑两类上来比较,那么位次怎么出来呢?就是看最后的胜负场。比如说我有三类样本,分别为1,2,3,那么就能生成三个分类面:12,13,23,假如此时有一个样本,12觉得它是1,13觉得它是1,23觉得它是2,那么这个样本就被分为了1类。1v1遵从的是投票的策略。

4.Softmax

4.1概念与方法

  此节才是真正的重点,大家有了解过深度学习的或多或少都听过softmax这个概念。实际上,softmax在深度学习中运用极其广泛,像pytorch里头的cross-entropy loss这一多分类损失函数直接集成了softmax层在里头,因此,了解什么是softmax,为什么要用softmax是理解深度网络反向传播等算法的关键。
  关于softmax,下面这张图很好的说明了它的过程:
在这里插入图片描述其中 x x x是最后的特征向量,而 S i S_i Si是特征向量关于每一类的一个线性变换,随后通过一个函数映射:
y ^ i = e S i ∑ i = 1 N e S i \hat{y}_i = \frac{e^{S_i}}{\sum_{i=1}^Ne^{S_i}} y^i=i=1NeSieSi
得到分属各个类别的概率。需要强调的是,softmax实质上是一种函数映射,它本身是没有参数的。至于为什么使用指数函数,可能是因为指数函数有良好的求导性质,且正样本的影响力会更大。最后在分类的时候,取预测概率最大的一类即可。

4.2softmax梯度传播

softmax的学习方法也就是梯度下降法,因此如何求导是一个关键的问题。首先,我们采用的loss函数自然是交叉熵损失:
E = − ∑ j = 1 N y j l n y j ^ E = -\sum_{j=1}^N y_j ln\hat{y_j} E=j=1Nyjlnyj^
而我们的 y y y是一个除了目标维度是1,其他维度都是0的这么一个标签向量,假设这个样本属于类别k,那么损失函数就变为了:
E = − l n y k ^ E = -ln\hat{y_k} E=lnyk^
因为只有y_k为1,其他的都为0。于是乎,我们得到了:
s j = w j T x , ; y j ^ = e s j ∑ i = 1 N e s i ; E = − l n y k ^ s_j = w^T_jx,;\quad \hat{y_j} = \frac{e^{s_j}}{\sum_{i=1}^Ne^{s_i}}; \quad E= -ln\hat{y_k} sj=wjTx,;yj^=i=1Nesiesj;E=lnyk^
让我们求个导看一看,根据链式法则:
∂ E ∂ w j = ∂ E ∂ y k ^ ∂ y k ^ ∂ s j ∂ s j ∂ w j \frac{\partial E}{\partial w_j} = \frac{\partial E}{\partial \hat{y_k}} \frac{\partial \hat{y_k}}{\partial s_j} \frac{\partial s_j}{\partial w_j} wjE=yk^Esjyk^wjsj
∂ E ∂ y k ^ = − 1 y k ^ ; ∂ s j ∂ w j = x ∂ y k ^ ∂ s j = ∂ e s k ∂ s j ∑ i = 1 N e s i − e s j e s k ( ∑ i = 1 N e s i ) 2 = e s k ∑ i = 1 N e s i ( 1 − e s k ∑ i = 1 N e s i ) = y k ^ ( 1 − y k ^ ) , j = k = − e s j e s k ( ∑ i = 1 N e s i ) 2 = − y j ^ y k ^ , j ≠ k \begin{aligned} \frac{\partial E}{\partial \hat{y_k}} &= -\frac{1}{\hat{y_k}};\quad \quad \frac{\partial s_j}{\partial w_j} = x \\ \frac{\partial \hat{y_k}}{\partial s_j} &= \frac{\frac{\partial e^{s_k}}{\partial s_j}\sum_{i=1}^Ne^{s_i} - e^{s_j}e^{s_k}}{(\sum_{i=1}^Ne^{s_i})^2}\\ &=\frac{e^{s_k}}{\sum_{i=1}^Ne^{s_i}} (1 - \frac{e^{s_k}}{\sum_{i=1}^Ne^{s_i}})=\hat{y_k}(1-\hat{y_k}), j=k\\ &=- \frac{e^{s_j}e^{s_k}}{(\sum_{i=1}^Ne^{s_i})^2} = -\hat{y_j}\hat{y_k}, j \ne k \end{aligned} yk^Esjyk^=yk^1;wjsj=x=(i=1Nesi)2sjeski=1Nesiesjesk=i=1Nesiesk(1i=1Nesiesk)=yk^(1yk^),j=k=(i=1Nesi)2esjesk=yj^yk^,j=k
这样一来,求导的结果就变成了了:
∂ E ∂ w j = { ( y j ^ − 1 ) x , j = k y j ^ x , j ≠ k \frac{\partial E}{\partial w_j} =\left\{ \begin{aligned} (\hat{y_j} -1)x \quad,j=k\\ \hat{y_j}x\quad,j\ne k \end{aligned} \right. wjE={(yj^1)x,j=kyj^x,j=k
通过梯度下降就可以逐步优化了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TensorFlow 1D卷积神经网络(1D CNN)被广泛应用于故障分类。故障分类是指根据不同的故障类型将输入数据进行分类和识别。 1D CNN适用于时间序列数据的处理,它可以对输入数据在时间维度上进行卷积操作。对于故障分类问题,输入数据通常是一维的,例如传感器数据或振动信号。1D CNN可以学习数据中的时间特征和模式,并通过训练来区分不同的故障类型。 使用TensorFlow的1D CNN进行故障分类有以下几个关键步骤: 1. 数据预处理:首先,对原始数据进行预处理。这可能包括去除噪声、标准化数据或进行特征提取。预处理有助于减少噪声对模型性能的影响。 2. 模型设计:在TensorFlow中,可以使用tf.keras.Sequential()来构建1D CNN模型。模型包括一系列的卷积层、池化层和全连接层。卷积层用于提取数据的局部特征,池化层用于降低数据维度,全连接层用于输出分类结果。 3. 模型训练:使用训练数据对模型进行训练。在训练过程中,通过调整模型的权重和偏置来最小化模型的损失函数。可以使用不同的优化器和损失函数来优化模型的性能。 4. 模型评估:使用测试数据对训练好的模型进行评估。可以计算准确率、召回率、F1分数等指标来评估模型的性能。同时,可以通过查看混淆矩阵来了解模型在各个类别上的分类情况。 TensorFlow提供了丰富的工具和库来支持1D CNN的故障分类任务。通过合理的数据处理、模型设计和训练策略,可以有效地进行故障分类,并为工业领域的故障检测和维修提供有力支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值