이 프로젝트는 Y. Tang의 선형 지원 벡터 머신을 사용한 딥 러닝(2013)에서 영감을 받았습니다.
이 프로젝트에 대한 전체 논문은 arXiv.org에서 읽을 수 있습니다.
CNN(컨벌루션 신경망)은 "학습 가능한" 매개변수를 가진 뉴런으로 구성된 숨겨진 레이어로 구성된다는 점에서 "일반" 신경망과 유사합니다. 이러한 뉴런은 입력을 받고 내적을 수행한 다음 비선형적으로 이를 따릅니다. 전체 네트워크는 원시 이미지 픽셀과 해당 클래스 점수 간의 매핑을 표현합니다. 일반적으로 Softmax 함수는 이 네트워크의 마지막 계층에서 사용되는 분류자입니다. 그러나 이러한 규범에 도전하기 위해 수행된 연구(Alalshekmubarak 및 Smith, 2013; Agarap, 2017; Tang, 2013)가 있었습니다. 인용된 연구에서는 인공 신경망 아키텍처에서 선형 지원 벡터 머신(SVM)의 사용을 소개합니다. 이 프로젝트는 이 주제에 대한 또 다른 해석이며 (Tang, 2013)에서 영감을 받았습니다. 경험적 데이터에 따르면 CNN-SVM 모델은 MNIST 데이터 세트를 사용하여 ~99.04%의 테스트 정확도를 달성할 수 있었습니다(LeCun, Cortes, and Burges, 2010). 반면 CNN-Softmax는 동일한 데이터 세트를 사용하여 ~99.23%의 테스트 정확도를 달성할 수 있었습니다. 두 모델 모두 최근 발표된 Fashion-MNIST 데이터세트(Xiao, Rasul, and 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-SVM |
---|---|---|
배치 크기 | 128 | 128 |
학습률 | 1e-3 | 1e-3 |
단계 | 10000 | 10000 |
SVM C | 해당 없음 | 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%입니다. 결과는 MNIST 손글씨 숫자 분류에 대한 Tang(2017)의 연구 결과를 확증하지 않습니다. 이는 이 프로젝트의 데이터세트에 대해 데이터 전처리나 차원 축소가 수행되지 않았기 때문일 수 있습니다.
그림 2. Fashion-MNIST를 사용한 이미지 분류에 대한 CNN-Softmax 및 CNN-SVM의 훈련 정확도(왼쪽)와 손실(오른쪽).
빨간색 플롯은 CNN-Softmax의 훈련 정확도와 손실을 나타내며 테스트 정확도는 91.86000227928162%입니다. 반면 연한 파란색 플롯은 CNN-SVM의 훈련 정확도와 손실을 나타내며 테스트 정확도는 90.71999788284302%입니다. CNN-Softmax의 결과는 Fashion-MNIST에 대한 zalandoresearch의 결과를 확증합니다.
논문을 인용하려면 다음 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.