Softmax和SVM、卷积神经网络的区别

目前解决图像分类问题,比较流行的方法是 卷 积 神 经 网 络 \color{red}{卷积神经网络} 上。这种方法主要有两部分组成:一个是 评 分 函 数 ( s c o r e f u n c t i o n ) \color{red}{评分函数(score function)} scorefunction,它是原始图像数据到类别分值的映射。另一个是 损 失 函 数 ( l o s s f u n c t i o n ) \color{red}{损失函数(loss function)} lossfunction,它是用来量化预测分类标签的得分与真实标签之间一致性的。该方法可转化为一个最优化问题,在最优化过程中,将通过更新评分函数的参数来最小化(梯度下降)损失函数值

sigmod:
在这里插入图片描述
ReLU激活函数:
在这里插入图片描述

1.线性分类器

在这里插入图片描述

定义:每个分类类别的分值是权重和图像的矩阵乘,得到分数数值。
损失函数:多类支持向量机损失 Multiclass Support Vector Machine Loss
SVM的损失函数定义:在这里插入图片描述

用预测错误的得分减去预测正确的得分加上一个容错
在这里插入图片描述
N为图片样本的个数,损失函数的大小不和样本图片的数量有关系。

正则化

解决相同的评分结果的权重参数w可能是无穷多个的,加入正则化惩罚(将W中所有元素平方后求和)
在这里插入图片描述

损失函数的最终版:

在这里插入图片描述

2.Softmax分类器

在这里插入图片描述
该元素的softmax值,就是该元素的指数与所有元素指数和的比值。

定义:最后的输出是每个分类被取到的概率,归一化保证和为1。
损失函数:整个数据集的loss的计算公式与Multiclass SVM相同:

在这里插入图片描述

对单个样本 x i x_i xi的loss的形式都是
在这里插入图片描述
在这里插入图片描述

3.卷积神经网络(CNN)

定义:是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。 它包括卷积层(convolutional layer)和池化层(pooling layer)。组成:输入层、卷积层、激活函数、池化层、全连接层。
卷积:在原始的输入上进行特征的提取。在原始输入上用多个filter这个固定尺寸的助手一个小区域一个小区域进行特征的提取,最终得到多个特征图。(得到的特征图是来自一个RGB三个通道的特征图之和)

在这里插入图片描述
在这里插入图片描述

所谓的权值共享就是说,给一张输入图片,用一个filter去扫这张图,filter里面的数就叫权重,这张图每个位置是被同样的filter扫的,所以权重是一样的,也就是共享。

在这里插入图片描述

池化:对特征图进行特征压缩,池化也叫做下采样。选择原来某个区域的max或mean代替那个区域,整体就浓缩了。
卷积神经网络中,softmax层通常用于分类问题。如果要将softmax层替换为SVM层,可以考虑使用支持向量机(SVM分类器。以下是一个简单的matlab代码示例,演示如何将softmax层替换为SVM层: ```matlab % 加载数据集 load mnist_uint8; % 将数据集转换为double类型 train_x = double(train_x) / 255; test_x = double(test_x) / 255; % 将标签转换为向量形式 train_y = double(train_y); test_y = double(test_y); % 构建卷积神经网络 cnn.layers = { struct('type', 'i') % 输入层 struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) % 卷积层1 struct('type', 's', 'scale', 2) % 下采样层1 struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) % 卷积层2 struct('type', 's', 'scale', 2) % 下采样层2 struct('type', 'c', 'outputmaps', 12, 'kernelsize', 4) % 卷积层3 struct('type', 's', 'scale', 2) % 下采样层3 struct('type', 'c', 'outputmaps', 16, 'kernelsize', 4) % 卷积层4 struct('type', 's', 'scale', 2) % 下采样层4 struct('type', 'c', 'outputmaps', 16, 'kernelsize', 4) % 卷积层5 struct('type', 's', 'scale', 2) % 下采样层5 struct('type', 'f', 'length', 100) % 全连接层1 struct('type', 'f', 'length', 10) % 全连接层2 struct('type', 'softmax') % softmax层 }; % 将softmax层替换为SVM层 cnn.layers{end}.type = 'svm'; % 初始化卷积神经网络 opts.alpha = 1; opts.batchsize = 50; opts.numepochs = 20; cnn = cnninit(cnn, train_x, train_y); % 训练卷积神经网络 cnn = cnntrain(cnn, train_x, train_y, opts); % 使用测试集评估模型 [er, bad] = cnntest(cnn, test_x, test_y); % 打印错误率 disp(['测试集错误率: ', num2str(er * 100), '%']); % 显示一些错误分类的样本 figure; for i = 1:20 im = test_x(:, :, bad(i)); im = reshape(im, 28, 28); subplot(4, 5, i); imshow(im); title(['真实标签:', num2str(test_y(bad(i))), ', 预测标签:', num2str(cnn.layers{end}.class(bad(i)))]); end ``` 在这个例子中,我们将softmax层替换为SVM层。通过将SVM层添加到卷积神经网络中,我们可以将softmax分类器替换为支持向量机分类器。 请注意,这只是一个简单的示例代码,您可以根据需要进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值