Dieses Projekt wurde von Y. Tangs Deep Learning using Linear Support Vector Machines (2013) inspiriert.
Der vollständige Artikel zu diesem Projekt kann auf arXiv.org gelesen werden.
Convolutional Neural Networks (CNNs) ähneln „normalen“ neuronalen Netzwerken in dem Sinne, dass sie aus verborgenen Schichten bestehen, die aus Neuronen mit „lernbaren“ Parametern bestehen. Diese Neuronen empfangen Eingaben, bilden ein Skalarprodukt und folgen diesem dann mit einer Nichtlinearität. Das gesamte Netzwerk drückt die Zuordnung zwischen Rohbildpixeln und ihren Klassenwerten aus. Herkömmlicherweise ist die Softmax-Funktion der Klassifikator, der auf der letzten Ebene dieses Netzwerks verwendet wird. Allerdings wurden Studien (Alalshekmubarak und Smith, 2013; Agarap, 2017; Tang, 2013) durchgeführt, um diese Norm in Frage zu stellen. Die zitierten Studien stellen die Verwendung der linearen Support-Vektor-Maschine (SVM) in einer künstlichen neuronalen Netzwerkarchitektur vor. Dieses Projekt ist eine weitere Interpretation des Themas und ist inspiriert von (Tang, 2013). Empirische Daten haben gezeigt, dass das CNN-SVM-Modell unter Verwendung des MNIST-Datensatzes eine Testgenauigkeit von ~99,04 % erreichen konnte (LeCun, Cortes und Burges, 2010). Andererseits konnte CNN-Softmax mit demselben Datensatz eine Testgenauigkeit von ~99,23 % erreichen. Beide Modelle wurden auch anhand des kürzlich veröffentlichten Fashion-MNIST-Datensatzes (Xiao, Rasul und Vollgraf, 2017) getestet, bei dem es sich vermutlich um einen schwierigeren Bildklassifizierungsdatensatz handelt als bei MNIST (Zalandoresearch, 2017). Dies erwies sich als der Fall, da CNN-SVM eine Testgenauigkeit von ~90,72 % erreichte, während CNN-Softmax eine Testgenauigkeit von ~91,86 % erreichte. Die besagten Ergebnisse könnten verbessert werden, wenn Datenvorverarbeitungstechniken auf die Datensätze angewendet würden und wenn das Basis-CNN-Modell relativ ausgefeilter wäre als das in dieser Studie verwendete.
Klonen Sie zunächst das Projekt.
git clone https://github.com/AFAgarap/cnn-svm.git/
Führen Sie setup.sh
aus, um sicherzustellen, dass die erforderlichen Bibliotheken in der Umgebung installiert sind.
sudo chmod +x setup.sh
./setup.sh
Programmparameter.
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
Gehen Sie dann in das Verzeichnis des Repositorys und führen Sie das Modul main.py
gemäß den gewünschten Parametern aus.
cd cnn-svm
python3 main.py --model 2 --dataset ./MNIST_data --penalty_parameter 1 --checkpoint_path ./checkpoint --log_path ./logs
Die in diesem Projekt verwendeten Hyperparameter wurden manuell zugewiesen und nicht durch Optimierung.
Hyperparameter | CNN-Softmax | CNN-SVM |
---|---|---|
Chargengröße | 128 | 128 |
Lernrate | 1e-3 | 1e-3 |
Schritte | 10000 | 10000 |
SVM C | N / A | 1 |
Die Experimente wurden auf einem Laptop-Computer mit Intel Core(TM) i5-6300HQ-CPU bei 2,30 GHz x 4, 16 GB DDR3-RAM und NVIDIA GeForce GTX 960M 4 GB DDR5-GPU durchgeführt.
Abbildung 1. Trainingsgenauigkeit (links) und Verlust (rechts) von CNN-Softmax und CNN-SVM bei der Bildklassifizierung mit MNIST.
Das orangefarbene Diagramm bezieht sich auf die Trainingsgenauigkeit und den Verlust von CNN-Softmax mit einer Testgenauigkeit von 99,22999739646912 %. Andererseits bezieht sich das blaue Diagramm auf die Trainingsgenauigkeit und den Verlust von CNN-SVM mit einer Testgenauigkeit von 99,04000163078308 %. Die Ergebnisse bestätigen nicht die Ergebnisse von Tang (2017) zur MNIST-Klassifizierung handschriftlicher Ziffern. Dies kann auf die Tatsache zurückgeführt werden, dass für den Datensatz für dieses Projekt keine Datenvorverarbeitung oder Dimensionsreduzierung durchgeführt wurde.
Abbildung 2. Trainingsgenauigkeit (links) und Verlust (rechts) von CNN-Softmax und CNN-SVM bei der Bildklassifizierung mit Fashion-MNIST.
Das rote Diagramm bezieht sich auf die Trainingsgenauigkeit und den Verlust von CNN-Softmax mit einer Testgenauigkeit von 91,86000227928162 %. Andererseits bezieht sich das hellblaue Diagramm auf die Trainingsgenauigkeit und den Verlust von CNN-SVM mit einer Testgenauigkeit von 90,71999788284302 %. Das Ergebnis auf CNN-Softmax bestätigt die Feststellung von zalandoresearch auf Fashion-MNIST.
Um den Artikel zu zitieren, verwenden Sie bitte den folgenden BibTex-Eintrag:
@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}
}
Um das Repository/die Software zu zitieren, verwenden Sie bitte den folgenden BibTex-Eintrag:
@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.