该项目的灵感来自 Y. Tang 的《使用线性支持向量机进行深度学习》(2013)。
有关该项目的完整论文可以在 arXiv.org 上阅读。
卷积神经网络 (CNN) 与“普通”神经网络类似,因为它们由具有“可学习”参数的神经元组成的隐藏层组成。这些神经元接收输入,执行点积,然后进行非线性运算。整个网络表达了原始图像像素与其类别分数之间的映射。按照惯例,Softmax 函数是该网络最后一层使用的分类器。然而,已有研究(Alalshekmubarak 和 Smith,2013;Agarap,2017;Tang,2013)挑战了这一规范。引用的研究介绍了线性支持向量机 (SVM) 在人工神经网络架构中的使用。这个项目是对该主题的另一个尝试,灵感来自(Tang,2013)。经验数据表明,CNN-SVM 模型使用 MNIST 数据集能够达到约 99.04% 的测试精度(LeCun、Cortes 和 Burges,2010)。另一方面,CNN-Softmax 使用相同的数据集能够实现约 99.23% 的测试精度。这两个模型还在最近发布的 Fashion-MNIST 数据集(Xiao、Rasul 和 Vollgraf,2017)上进行了测试,该数据集被认为是比 MNIST(Zalandoresearch,2017)更困难的图像分类数据集。事实证明,CNN-SVM 的测试精度达到了约 90.72%,而 CNN-Softmax 的测试精度达到了约 91.86%。如果对数据集采用数据预处理技术,并且基础 CNN 模型比本研究中使用的模型相对更复杂,则上述结果可能会得到改善。
首先,克隆项目。
git clone https://github.com/AFAgarap/cnn-svm.git/
运行setup.sh
以确保环境中安装了必备库。
sudo chmod +x setup.sh
./setup.sh
程序参数。
usage: main.py [-h] -m MODEL -d DATASET [-p PENALTY_PARAMETER] -c
CHECKPOINT_PATH -l LOG_PATH
CNN & CNN-SVM for Image Classification
optional arguments:
-h, --help show this help message and exit
Arguments:
-m MODEL, --model MODEL
[1] CNN-Softmax, [2] CNN-SVM
-d DATASET, --dataset DATASET
path of the MNIST dataset
-p PENALTY_PARAMETER, --penalty_parameter PENALTY_PARAMETER
the SVM C penalty parameter
-c CHECKPOINT_PATH, --checkpoint_path CHECKPOINT_PATH
path where to save the trained model
-l LOG_PATH, --log_path LOG_PATH
path where to save the TensorBoard logs
然后,转到存储库的目录,并根据所需的参数运行main.py
模块。
cd cnn-svm
python3 main.py --model 2 --dataset ./MNIST_data --penalty_parameter 1 --checkpoint_path ./checkpoint --log_path ./logs
该项目中使用的超参数是手动分配的,而不是通过优化。
超参数 | CNN-Softmax | 支持向量机 |
---|---|---|
批量大小 | 128 | 128 |
学习率 | 1e-3 | 1e-3 |
步骤 | 10000 | 10000 |
支持向量机 | 不适用 | 1 |
实验在配备 Intel Core(TM) i5-6300HQ CPU @ 2.30GHz x 4、16GB DDR3 RAM 和 NVIDIA GeForce GTX 960M 4GB DDR5 GPU 的笔记本电脑上进行。
图 1. 使用 MNIST 进行图像分类时 CNN-Softmax 和 CNN-SVM 的训练精度(左)和损失(右)。
橙色图指的是CNN-Softmax的训练准确率和损失,测试准确率为99.22999739646912%。另一方面,蓝色图指的是CNN-SVM的训练精度和损失,测试精度为99.04000163078308%。结果并未证实 Tang (2017) 对 MNIST 手写数字分类的发现。这可能是由于该项目的数据集没有进行数据预处理或降维。
图 2. 使用 Fashion-MNIST 进行图像分类时 CNN-Softmax 和 CNN-SVM 的训练精度(左)和损失(右)。
红色图指的是CNN-Softmax的训练准确率和损失,测试准确率为91.86000227928162%。另一方面,浅蓝色图指的是CNN-SVM的训练精度和损失,测试精度为90.71999788284302%。 CNN-Softmax 的结果证实了 zalandoresearch 在 Fashion-MNIST 上的发现。
要引用该论文,请使用以下 BibTex 条目:
@article{agarap2017architecture,
title={An Architecture Combining Convolutional Neural Network (CNN) and Support Vector Machine (SVM) for Image Classification},
author={Agarap, Abien Fred},
journal={arXiv preprint arXiv:1712.03541},
year={2017}
}
要引用存储库/软件,请使用以下 BibTex 条目:
@misc{abien_fred_agarap_2017_1098369,
author = {Abien Fred Agarap},
title = {AFAgarap/cnn-svm v0.1.0-alpha},
month = dec,
year = 2017,
doi = {10.5281/zenodo.1098369},
url = {https://doi.org/10.5281/zenodo.1098369}
}
Copyright 2017-2020 Abien Fred Agarap
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.