0

すべての機械学習関係者向け。

私が疑問に思っているのは、ユーザー設定/クリックの形で入力を使用して高次元データを検索する方法です。

特徴ベクトルから画像を生成するプログラムがあるとします。このプログラムは、N ベクトルのランダム サンプルを取得し、対応する画像を生成し、コンピューター画面上のグリッドに画像を表示します。次に、ユーザーは、(表示されている N 個の画像の中から、特定の基準に従って) 「最適」と思われる画像をクリックします。プログラムは画像の別のサンプルを生成し、これらをユーザーに表示して、プロセスを繰り返します。

このようなシステムを考えると、「最良の」特徴ベクトル (および対応する画像) を見つけるためにどのアルゴリズムを使用しますか...私が取り組んでいる場合、特徴ベクトルは長さ 512 のバイナリ値であり、グリッドは3x3 (反復ごとに選択された 9 つのベクトル)。また、ユーザーの好み、つまり「最高」は非常に主観的な測定値です。

4

3 に答える 3

1

問題空間が巨大でトレーニング セットのサイズが小さいため (kudkudak も述べているように)、これまでに見つかった知識を活用することを強調する必要があると思います。Thomson サンプリングは探索と利用のバランスをとりますが、それを機能させるには多くの反復が必要になるのではないかと心配しています。

トムソン サンプリングの代わりに、選択したベクトルのランダムな n ビットを反転してから、次のラウンドで n-1 ビットを反転するなどを試みることができます。とてつもないようです(私は思う)。

この問題には遺伝的アルゴリズムとの明確な類似点があり、クロスオーバーと突然変異が探索/活用の役割を果たします。そこにインスピレーションが見つかるかもしれません。

于 2013-09-18T11:13:21.267 に答える
1

これが私の現在の方法です:

基本的に、私が現在行っているのはNaive Bayes Classifierの作成です (これは複雑に見えるかもしれませんが、実装するのはかなり簡単です)。各機能の可能な状態 (512 個の機能 * 2 個の状態 = 1024) に対して、ベータ事前分布を割り当てます。これは、この特定の機能の状態がユーザーの「クリック」につながる確率を推定します。ユーザーが画像をクリックすると、事前情報が更新されます。

問題は、9 つ​​のサンプル ベクトルの新しいリストを生成してユーザーに表示するにはどうすればよいかということです。さて、これは多腕バンディットの問題であることに気付きました。そのために、トンプソン サンプリングは使いやすい方法です。ベクトルごと、特徴ごとに、確率 p で状態 (0 または 1) を選択します。ここで、p は、選択した状態が最良である確率に比例します (つまり、単純ベイズ分類器の最尤法が得られます)。 . これを行うには、状態 0 の機能と状態 1 の機能のベータ分布からサンプリングします。次に、どのサンプルが最大であるかに応じて機能を設定します。

これはある程度機能します。

大きな警告:

私がやっていることの主な問題は、自分の機能が独立していると仮定していることです。それ以上に、機能が独立していないこともあり、これを反復すると分布が変化します (以前のデータを部分的に無効にします)。最後に、私が Thompson サンプリングを使用している方法は最善ではないかもしれません。

今どこ?

私の大きな疑問は、単純ベイズ分類器を取得したら、どうすれば独立性の仮定を取り除くことができるかということです。そして、この更新されたモデルでは、トンプソン サンプリングのようなことを引き続き行うことができますか?

探査と搾取

トンプソン サンプリングは、探索と搾取のバランスを取るのに役立ちます。しかし、選択できる画像が 9 枚あるので、そのうちのいくつかはより搾取的である可能性があります。これは、現在のモデルを維持しながら、より搾取的なモデルにするために必要だった 1 つのアイデアです。(トンプソン サンプリングに基づいて) 機能が設定される確率がわかっている場合、その確率を指数関数的に重み付けすることで、アルゴリズムをより活用的にすることができます。すなわち: Pnew = p^w / (p^w + (1-p)^w)... 9 つの画像を表示しているので、おそらく w=[1..9] を選択できます... p (あるベータ確率変数が別のものよりも大きい確率) を推定します。そのために、モーメント マッチングを使用して正規分布を推定し、そこから確率を決定できます。これはここで説明されています - CrossValidated StackExchangeで. これをさらに強化するために、前回の反復で選択した画像を保持する場合があります (8 つの新しい画像のみを提供します)。

于 2013-09-18T01:21:46.370 に答える
0

私はあなたの質問を正しく理解していないかもしれません。ここであなたの質問の 2 つの解釈を見ています。または、3x3 グリッドごとに、またはすべての画像から最適な特徴ベクトル (画像) を見つけようとしています。どちらの場合でも機能するものを提案しようと思います。

次元が高く、おそらくトレーニングセットが小さいため、難しいようです。小さなベクトルで作業する方がはるかに簡単です。次元削減アルゴリズム (PCA、オートエンコーダーなど) を適用してみてください。

私が考えた 1 つのアプローチは、ELO 評価を行うことです。これが最終的な答えでなくても、いつでも使用できます (たとえば、特徴ベクトルの別のエントリとして)。

可能であれば、まず次元を減らします。次に、ユーザーのクリックをフォームのトレーニング セットに変換します(v_1, v_2), y。ここで、y は v_1 画像または v_2 画像が優れていることを示します (つまり、1 または 0)。次に、そのための分類器のトレーニングを試みることができます。3x3ごとに最良の特徴ベクトルが勝つと想定しており、他の例は「ペアワイズ」でのみ行われる決定には影響しません。これは非常に賢明です。

最高のものを見つけるために、すべてのn^2ペアを比較して、どの特徴ベクトルのスコアが最高かを確認できます。完全に学習されたモデルの場合、他のすべてよりも優れたモデルが存在するはずです (推移的な関係)。


別のアイデアは、すべての特徴ベクトルに実数を割り当てるニューラル ネットワーク モデルをトレーニングすることです。これで、トレーニング例 (3x3 の中から最適なものを選択) ごとに 8 つの比較を取得し、特徴ベクトルの予測された「スコア」がユーザーの好みに適合しているかどうかを確認できます。トレーニング エラーの場合: 単純に、ニューラル ネットワークに 1 だけ異なるように要求できます。または、ELO を活用して、ELO の差で差を重み付けすることもできます。これはトレーニングセット全体からの知識を使用し、より良い結果を得るはずです

于 2013-09-17T21:48:50.910 に答える