Этот проект был вдохновлен «Глубоким обучением Ю. Танга с использованием машин линейных опорных векторов» (2013).
Полную статью об этом проекте можно прочитать на arXiv.org.
Сверточные нейронные сети (CNN) похожи на «обычные» нейронные сети в том смысле, что они состоят из скрытых слоев, состоящих из нейронов с «обучаемыми» параметрами. Эти нейроны получают входные данные, выполняют скалярное произведение, а затем следуют за ним с нелинейностью. Вся сеть выражает сопоставление между необработанными пикселями изображения и их оценками классов. Условно функция Softmax — это классификатор, используемый на последнем уровне этой сети. Однако были проведены исследования (Алалшекмубарак и Смит, 2013; Агарап, 2017; Тан, 2013), направленные на оспаривание этой нормы. В цитируемых исследованиях представлено использование линейной машины опорных векторов (SVM) в архитектуре искусственных нейронных сетей. Этот проект представляет собой еще один взгляд на эту тему и вдохновлен (Tang, 2013). Эмпирические данные показали, что модель CNN-SVM смогла достичь точности тестирования ~99,04% с использованием набора данных MNIST (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-Софтмакс | CNN-СВМ |
---|---|---|
Размер партии | 128 | 128 |
Скорость обучения | 1е-3 | 1е-3 |
Шаги | 10000 | 10000 |
СВМ С | Н/Д | 1 |
Эксперименты проводились на портативном компьютере с процессором Intel Core(TM) i5-6300HQ @ 2,30 ГГц x 4, 16 ГБ оперативной памяти DDR3 и графическим процессором NVIDIA GeForce GTX 960M 4 ГБ DDR5.
Рисунок 1. Точность обучения (слева) и потери (справа) CNN-Softmax и CNN-SVM при классификации изображений с использованием MNIST.
Оранжевый график относится к точности обучения и потерям CNN-Softmax с точностью теста 99,22999739646912%. С другой стороны, синий график относится к точности обучения и потерям CNN-SVM с точностью теста 99,04000163078308%. Результаты не подтверждают выводы Тана (2017) о классификации рукописных цифр MNIST. Это может быть связано с тем, что в наборе данных для этого проекта не проводилась предварительная обработка данных и уменьшение размерности.
Рисунок 2. Точность обучения (слева) и потери (справа) CNN-Softmax и CNN-SVM при классификации изображений с использованием Fashion-MNIST.
Красный график относится к точности обучения и потерям 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.