このプロジェクトは、Y. Tang の Deep Learning using Linear Support Vector Machines (2013) に触発されました。
このプロジェクトに関する論文全文は、arXiv.org で読むことができます。
畳み込みニューラル ネットワーク (CNN) は、「学習可能な」パラメーターを持つニューロンで構成される隠れ層で構成されているという意味で、「通常の」ニューラル ネットワークに似ています。これらのニューロンは入力を受け取り、ドット積を実行し、その後、非線形性を伴います。ネットワーク全体は、生の画像ピクセルとそのクラス スコア間のマッピングを表現します。通常、Softmax 関数はこのネットワークの最後の層で使用される分類器です。しかし、この規範に異議を唱えるために行われた研究もあります(Alalshekmubarak and 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-ソフトマックス | CNN-SVM |
---|---|---|
バッチサイズ | 128 | 128 |
学習率 | 1e-3 | 1e-3 |
ステップ | 10000 | 10000 |
SVMC | 該当なし | 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.