私は次のようなセットのペアを持っています
A = { L, M, N, P } = { <"Lll", 47, 0.004>, <"Mm", 60, 0.95>, <"Nnnn", 33, 0.2892>, <"P", 47, 0.0125> }
B = { l, m, n, o } = { <"l", 46, 0.004>, <"m", 0, 0.95>, <"nn", 33, 0.2892>, <"oOo", 33, 0.5773> }
...そして、セットメンバーを次のようにリンクする方法を知るために、既知の適切なデータに基づいてアルゴリズムを自動的にトレーニングしたいと考えています
{ <L, l>, <M, m>, <N, n>, <?, o>, <P, ?> }
... どちらかのセットの各要素に対して最大で 1 つの一致があります。セットは同じサイズである必要はなく、オーバーラップについての保証もありません。一致しない場合もあれば、すべて一致する場合もあれば、一致するものと一致しないものが混在する場合もあります。しかし、多くの場合、人間を識別できる一致が期待されており、コンピューターはそれを近似する必要があります。
これまでに試した
H(a, b, w1, w2, w3)
ここで、、、およびは手作りで<a1, a2, a3>
、、、およびはパラメータ化された重みです。すべてのペアをスコアで並べ替え、どちらのメンバーもスコアの高いペアで表されていないペアを取得します。トレーニング データが期待するように、結果のペアがマッピングされるように、大まかな山登り法を使用して重みをトレーニングします。完全な重み付け構成には、正しいペア スコアと正しくないペア スコアを区別するしきい値があります。このアルゴリズムは、約 800 のトレーニング データを数百または数千回繰り返した後、完璧な構成を定期的に見つけます。A
<b1, b2, b3>
B
f1(a1, b1) * w1 + f2(a2, b2) * w2 + f3(a3, b3) * w3
f1
f2
f3
w1
w2
w3
A × B
t
S_ab
(A, B)
合計 2500 ペアの 8 アップルをセットします (図の 3 アッププルの代わりに)。このメソッドがどれだけオーバーフィットしているかを調べるために、まだ検証データセットを提供する必要があります。
問題のセットネスの側面のハードコーディングされた処理には満足していません。ペアをスコアリングするための機械学習手法しか想像できませんが、その後のマッピングは手作りであり、セット マッピング全体を考慮する理想的なソリューションほどスマートではない可能性があります。機械学習の部分はセット全体を考慮していないため、より良い決定を下すために使用できる情報を見逃しているように思えます。
上記の図をリファクタリングして、最初に (n タプルの場合) すべてのペアをスコアリングしA × B
、S_ab = < f1(a1, b1), f2(a2, b2), ..., fn(an, bn) >
次に各[n, ?, 1]
S_ab による一致と不一致でニューラル ネットワーク トレーニングを使用できると思います。これはペアを考慮し、一致/不一致を出力し、セット全体を考慮することは何もしません。
ニューラル ネットワークが可変サイズの入力を処理しないことは理解していますが、上限を選択して、未使用のノードをパディングするための中立的なエンコーディングを見つける||A||
ことができるかもしれません。出力は、たとえば、側面と底面に沿っ||B||
た要素にインデックスを付ける軸に沿った一致のマトリックスになる可能性があります。しかし、それでもネットは要素の順序に敏感ですよね?A
B
そう ...
この方法でセットをセットに確実にマッピングできる機械学習手法はありますか? それは明らかな方法でレコードのリンケージに関連しています。これは、各要素が最大 1 回しか一致しないという制約充足問題です。将来の結果を改善するためのフィードバックとして、人間による結果の修正を組み込むことができれば理想的です。私は機械学習の概念に精通していないので、方法があれば詳しく教えてください。