2012-03-29 7 views
2

私は訓練を受けて、いくつかのテスト画像を送ることができる画像圧縮アルゴリズムを持っています。 このコードでは何か問題があるようです。 これをテストするには、私が訓練したのと同じテストイメージ(test set == train set)を与えようとしました。今私が持っている一般的な質問は以下の通りですアルゴリズムのトレーニングフェーズの健全性チェック

訓練したのとまったく同じデータでアルゴリズムをテストするとどうなりますか?

私の疑惑は、私はアルゴリズムを訓練したことがなかったかのように私は、同じ結果を得るべきであるということである(つまり、ちょうど全く訓練なしに元のデータとそれをテストしていた)

は、あなたがこのような状況をどう思いますか? 一般的なタイプのテスト(健全性チェックなど)では、アルゴリズムトレーニングの段階が合理的に行われることを確認することをお勧めしますか?


お返事ありがとうございました。このアルゴリズムでは、グレースケール画像のある点で0または1の確率で計算されたコンテキストツリーウェイティングが使用されます。この特定の点の前にコンテキストを使用して確率(0/1)を推定します。圧縮率(ビット/バイト)結果の良さ。 最初に、私は単一画像(x)上でctwを実行し、圧縮は0.75であり、その後、例えば6枚の画像で練習し、トレーニングセット外の同じ画像(x)で試験した。しかし、トレーニング後の圧縮率は0.80ビット/バイトです。画像は2048 * 2048グレースケールです。 これらの結果を得た後、クロスバリデーションによってctwの正しさをテストしようとしましたが、前に説明したような奇妙な結果が出ました。

私はこの情報が私に答えを与えるのに役立つことを願っています。

ありがとうございました

答えて

1

これはアルゴリズムと問題によって異なります。あるもの(例えば、最近傍アプローチを用いた分類)は、完全な答えを自明に得る。ほとんどの場合、トレーニングデータと同じディストリビューションから取り込まれた異なるテストデータよりも優れたパフォーマンスが得られますが、完全ではありません。私はそれがあなたがそれを訓練していないかのようにどこかにあるかもしれないと思うが、訓練なしでテストするほとんどのアルゴリズムでは、定義された操作でさえない、または完全にランダムな結果である。

トレーニングデータをテストすると、コードが正常に機能していることを確認することができます。しかし、テストに使用する小さなトレーニングセット/テストセットを用意し、テストセットで合理的なことを確認するだけです。分類や回帰では、通常、実際のパフォーマンス評価を行うために、クロスバリデーションのいくつかのバリエーション(トレーニングセットのテストを避けるため)を行います。コードをテストするためにすぐに実行できる小さなデータセットで行うことができます。

あなたが扱っている設定が何であるかはよく分かりませんが、あなたはもう少し説明できますか?すなわち、アルゴリズムが画像圧縮を行うためにトレーニングセットをどのように使用するのか?

2

あなたの疑惑は正しくありません。 MLアルゴリズムは、アルゴリズムがタスクに完全に不適当である場合や、誤って認識されて収束しない場合を除いて、一般的に、トレーニングに使用されたセットに対して非常に良好な結果(場合によっては完璧)を与えるべきです。

どのように圧縮アルゴリズムを教えているのかわからないので、わかりにくいです。あなたは結果の「良さ」の尺度として元のファイルサイズと出力ファイルサイズの比を使用していますか?これに基づいてアルゴリズムを調整する方法と、調整によって収束が生じることをどうやって確認していますか?ランダム効果だけではありませんか?

サニティチェックが行われる限り、アルゴリズムがそれを訓練するために使用されたセットに対して無作為より良い結果を与えない場合、アルゴリズムは機能しません。逆のことは真実ではありません。トレーニングセットテストがうまくいってもアルゴリズムがうまく動作するわけではありません。

関連する問題