マルチクラスの画像を分類するために Vowpal Wabbit を使用しています。私のデータ セットはhttp://www.cs.toronto.edu/~kriz/cifar.htmlに似ており、3000 のトレーニング サンプルと 500 のテスト サンプルで構成されています。特徴量は 32*32 画像の RGB 値です。Vowpal Wabbit ロジスティック損失関数を使用して、100 回の反復でモデルをトレーニングしました。トレーニング プロセス中の平均損失は 0.02 未満です (この数値はかなり良いと思いますよね?)。次に、出力モデルを使用してトレーニング セットのラベルを予測し、予測が非常に悪いことがわかりました。それらのほぼすべてがカテゴリ 6 です。何が起こったのか本当にわかりません。トレーニング プロセス中は予測がほとんど正しいように思えますが、モデルで予測した後、突然すべて 6 になります。
これは機能のサンプル行です。
1 | 211 174 171 165 161 161 162 163 163 163 163 163 163 163 163 162 161 162 163 163 163 163 164 165 168 168 167 168 163 160 187 153 102 96 90 89 90 91 91 92 92 92 92 92 92 92 92 92 92 92 92 92 92 92 91 90 90 90 90 90 91 92 94 95 96 99 97 97 98 127 111 71 71 71 64 66 68 69 69 69 69 69 69 69 70 70 69 69 70 71 71 69 68 68 68 68 68 68 70 72 73 75 78 78 81 96 111 69 69 68 61 64 67 67 67 67 67 67 67 68 67 67 66 67 67 68 68 68 67 66 66 67 69 69 69 69 69 71 77 89 116 74 76 71 71 72 74 74 72 73 74 74 74 74 74 74 74 72 72 74 74 76 76 76 76 75 55 74 74 74 73 73 72 73 74 85 92 123 83 86 83 82 83 83 82 83 83 82 82 82 82 82 82 81 80 82 85 85 84 83 83 85 85 85 85 85 85 86 95 127 92 93 93 93 92 91 91 91 91 91 91 90 89 89 86 86 86 86 87 89 89 88 88 88 88 92 92 93 98 100 96 98 96 132 99 101 98 98 97 95 93 93 93 93 93 95 95 96 97 95 96 96 96 96 94 100 103 98 93 98 93 95 100 105 103 103 96 139 106 108
これが私のトレーニングスクリプトです:
./vw train.vw --oaa 6 --passes 100 --loss_function logistic -c --holdout_off -f image_classification.model
これが私の予測スクリプトです(トレーニングデータセット上):
./vw -i image_classification.model -t train.vw -p train.predict --quiet
トレーニング中の統計は次のとおりです。
final_regressor = image_classification.model 重みビット数 = 18 学習率 = 0.5 initial_t = 0 power_t = 0.5 減衰学習率 = 1 cache_file を使用 = train.vw.cache テキスト入力を無視し、キャッシュ入力を優先 num sources = 1 例以降の平均
例 現在 現在 現在 現在 現在最後の損失カウンター
重量ラベル予測機能0.000000 0.000000 1 1.0 1 1 3073 0.0000000.000000 2 2.0 1 1 3073 0.0000000.000000 4 4.0 1 1 3073 0.000000 0.0000 8 8.0 1 1 3073 0.0000 0.000000 0.000000 16 16.0 1 1 3073 0.0000 1 1 3073 0.000000 0.000000 128 128.0 1 1 3073 0.000000 0.000000 256 256.0 1 1 3073 0.001953 0.003906 512 512.0 2 2 3073 0.002930 0.003906 1024 1024。0 3 3 3073 0.002930 0.002930 2048 2048.0 5 5 3073 0.006836 0.010742 4096 4096.0 3 3 3073 0.012573 0.018311 8192 8192.0 5 5 3073 0.014465 0.016357 16384 16384.0 3 3 3073 0.017029 0.019592 32768 32768.0 6 6 3073 0.017731 0.018433 65536 65536.0 6 6 3073 0.017891 0.018051 131072 131072.0 5 5 3073 0.017975 0.018059 262144 262144.0 3 3 3073014465 0.016357 16384 16384.0 3 3 3073 0.017029 0.019592 32768 32768.0 6 6 3073 0.017731 0.018433 65536 65536.0 6 6 3073 0.017891 0.018051 131072 131072.0 5 5 3073 0.017975 0.018059 262144 262144.0 3 3 3073014465 0.016357 16384 16384.0 3 3 3073 0.017029 0.019592 32768 32768.0 6 6 3073 0.017731 0.018433 65536 65536.0 6 6 3073 0.017891 0.018051 131072 131072.0 5 5 3073 0.017975 0.018059 262144 262144.0 3 3 3073終了した実行 パスあたりのサンプル数 = 3000 パス使用 = 100 加重サンプル合計 = 300000.000000 加重ラベル合計 = 0.000000 平均損失 = 0.017887 合計特徴数 = 921900000
トレーニング中は完全に予測しているように見えますが、出力されたモデルを使用した後、突然すべてがカテゴリ 6 になります。何が問題なのか本当にわかりません。