ニューラルネットワークを使用してマトリックスを反転させます。
反転マトリックスは、主に活性化上の乗算や分割などの正確な算術操作を実行する際の固有の制限のために、ニューラルネットワークにユニークな課題をもたらします。従来の高密度ネットワークは、マトリックスの反転に関与する複雑さを処理するように明示的に設計されていないため、これらのタスクの助けを必要とすることがよくあります。単純な高密度ニューラルネットワークで実施された実験は、正確なマトリックスの反転を達成する重大な困難を示しています。アーキテクチャとトレーニングプロセスを最適化するさまざまな試みにもかかわらず、結果はしばしば改善が必要です。ただし、より複雑なアーキテクチャ(7層残差ネットワーク(RESNET)に移行すると、パフォーマンスが著しく改善される可能性があります。
残留接続を介して深い表現を学習する能力で知られるResNetアーキテクチャは、マトリックスの反転への取り組みに効果的であることが証明されています。数百万のパラメーターを使用すると、このネットワークは、より単純なモデルができないデータ内で複雑なパターンをキャプチャできます。ただし、この複雑さにはコストがかかります。効果的な一般化には、実質的なトレーニングデータが必要です。
図1:データセットで見られなかったマトリックス3x3のセットのニューラルネットワークの視覚化は逆マトリックスを予測しました
マトリックスの反転の予測におけるニューラルネットワークのパフォーマンスを評価するために、特定の損失関数が採用されます。
この式で:
目標は、アイデンティティマトリックスと元のマトリックスの積とその予測される逆の違いを最小限に抑えることです。この損失機能は、予測される逆が正確であることがどれだけ近いかを効果的に測定します。
さらに、if
この損失関数は、平均二乗誤差(MSE)や平均絶対誤差(MAE)などの従来の損失関数よりも明確な利点を提供します。
反転精度の直接的な測定マトリックス反転の主な目標は、マトリックスとその逆の積がアイデンティティマトリックスを生成することを保証することです。損失関数は、アイデンティティマトリックスからの偏差を測定することにより、この要件を直接キャプチャします。対照的に、MSEとMAEは、マトリックス反転の基本的な特性に明示的に対処することなく、予測値と真の値の違いに焦点を当てています。
製品A -1AA -1がIIにどれだけ近いかを評価する損失関数を使用することにより、構造的完全性に重点を置くことで、関連するマトリックスの構造的完全性を維持することを強調します。これは、線形関係を保存することが重要なアプリケーションで特に重要です。 MSEやMAEのような従来の損失関数は、この構造的側面を考慮しておらず、エラーを最小限に抑えてマトリックス反転の数学的要件を満たすことができないソリューションにつながる可能性があります。
非弦楽マトリックスへの適用性この損失関数は、本質的に反転されるマトリックスが非弦(すなわち、反転可能)であることを前提としています。特異なマトリックスが存在するシナリオでは、有効な逆を取得することが不可能であることを説明していないため、従来の損失関数は誤解を招く結果をもたらす可能性があります。提案された損失関数は、特異マトリックスを反転させようとするときに大きなエラーを生成することにより、この制限を強調します。
マトリックスの反転にニューラルネットワークを使用する場合の重要な制限の1つは、特異マトリックスを効果的に処理できないことです。特異なマトリックスには逆はありません。したがって、このようなマトリックスの逆を予測しようとするニューラルネットワークによる試みは、誤った結果をもたらします。実際には、トレーニングまたは推論中に特異なマトリックスが表示されている場合、ネットワークは引き続き出力される可能性がありますが、この出力は有効または意味がありません。この制限は、トレーニングデータが可能な限り非弦楽マトリックスで構成されていることを保証することの重要性を強調しています。
図2:特異マトリックスと擬似障害のモデル予測の比較。モデルは、マトリックスの特異点に関係なく結果を生成することに注意してください。
調査によると、ResNetモデルは、精度を大幅に失うことなく、かなりの量のサンプルを記憶できることが示されています。ただし、データセットサイズを1,000万サンプルに増やすと、重度の過剰適合につながる可能性があります。このオーバーフィッティングは、大量のデータにもかかわらず発生し、データセットサイズを単純に増加させることは、複雑なモデルの一般化の改善を保証しないことを強調しています。この課題に対処するために、継続的なデータ生成戦略を採用できます。静的データセットに依存する代わりに、サンプルはその場で生成され、作成されたときにネットワークに供給できます。過剰適合を緩和する上で重要なこのアプローチは、多様なトレーニングの例を提供するだけでなく、モデルが絶えず進化するデータセットにさらされることを保証します。
要約すると、マトリックスの反転は算術操作の制限により、ニューラルネットワークにとって本質的に困難ですが、ResNetのような高度なアーキテクチャを活用すると、より良い結果が得られる可能性があります。ただし、データ要件と過剰適合リスクには慎重に検討する必要があります。トレーニングサンプルを継続的に生成すると、モデルの学習プロセスが強化され、マトリックス反転タスクのパフォーマンスが向上します。このバージョンは、マトリックスの反転のためのニューラルネットワークのトレーニングにおける課題と戦略について議論しながら、非人格的なトーンを維持します。
DeepMatrixInversionはLGPLV3ライセンスの下で配布されます
ライセンスの仕組みを詳細に知るために、ファイル「ライセンス」を読むか、「http://www.gnu.org/licenses/lgpl-3.0.html」にアクセスしてください。
DeepMatrixinversionは現在、Giuseppe Marco Randazzoの財産です。
DeepMatrixInversionリポジトリをインストールするには、両方の方法の指示を以下に詩、PIP、またはPIPXを使用するかどうかを選択できます。
git clone https://github.com/gmrandazzo/DeepMatrixInversion.git
cd DeepMatrixInversion
python3 -m venv .venv
. .venv/bin/activate
pip install poetry
poetry install
これにより、DeepMatrixInversionを実行するために必要なすべてのパッケージで環境を設定します。
仮想環境を作成し、PIPでDeppMatrixInversionをインストールします
python3 -m venv .venv
. .venv/bin/activate
pip install git+https://github.com/gmrandazzo/DeepMatrixInversion.git
PIPXを使用する場合は、孤立した環境にPythonアプリケーションをインストールできる場合は、次の手順に従ってください。
python3 -m pip install --user pipx
apt-get install pipx
brew install pipx
sudo dnf install pipx
pipxインストールgit+https://github.com/gmrandazzo/deepmatrixinversion.git
マトリックスの反転を実行できるモデルをトレーニングするには、DMXTRAINコマンドを使用します。このコマンドを使用すると、マトリックスのサイズ、値の範囲、トレーニング期間など、トレーニングプロセスを制御するさまざまなパラメーターを指定できます。
dmxtrain --msize < matrix_size > --rmin < min_value > --rmax < max_value > --epochs < number_of_epochs > --batch_size < size_of_batches > --n_repeats < number_of_repeats > --mout < output_model_path >
dmxtrain --msize --rmin -1 --rmax 1 --epochs 5000 --batch_size 1024 --n_repeats 3 --mout ./Model_3x3
--msize <matrix_size>: Specifies the size of the square matrices to be generated for training. For example, 3 for 3x3 matrices.
--rmin <min_value>: Sets the minimum value for the random elements in the matrices. For instance, -1 will allow negative values.
--rmax <max_value>: Sets the maximum value for the random elements in the matrices. For example, 1 will limit values to a maximum of 1.
--epochs <number_of_epochs>: Defines how many epochs (complete passes through the training dataset) to run during training. A higher number typically leads to better performance; in this case, 5000.
--batch_size <size_of_batches>: Determines how many samples are processed before the model is updated. A batch size of 1024 means that 1024 samples are used in each iteration.
--n_repeats <number_of_repeats>: Indicates how many times to repeat the training process with different random seeds or initializations. This can help ensure robustness; for instance, repeating 3 times.
--mout <output_model_path>: Specifies where to save the trained model. In this example, it saves to ./Model_3x3.
モデルをトレーニングしたら、それを使用して、新しい入力マトリックスでマトリックスの反転を実行できます。推論のコマンドはdmxinvertです。これは、入力マトリックスを取り、逆を出力します。
警告:DMXInvertは、シャーマンモリソンウッドベリーマトリックスブロック反転式を介してモデルをトレーニングするために使用したマトリックスよりも大きいマトリックスを反転させることができます。この機能は、ブロックサイズをリマインダーなしでモデルトレーニングブロックサイズで分割できるマトリックスでのみ機能します。この機能は非常に実験的であり、改訂する必要がある場合があります。
dmxinvert --inputmx <input_matrix_file> --inverseout <output_csv_file> --model <model_path>
dmxinvert --inputmx input_matrix.csv --inverseout output_inverse.csv --model ./Model_3x3_*
--inputmx <input_matrix_file>: Specifies the path to the input matrix file that you want to invert. This file should contain a valid matrix format (e.g., CSV).
--inverseout <output_csv_file>: Indicates where to save the resulting inverted matrix. The output will be saved in CSV format.
--model <model_path>: Provides the path to the trained model that will be used for performing the inversion.
入力マトリックスと出力を逆転させて人工データセットを生成することが行われました。
dmxdatasetgenerator 3 10 -1 1 test_3x3_range_-1+1
これにより、サイズ3x3の10マトリックスが生成され、数値は-1から+1の範囲です。
dmxdatasetgenerator [matrix size] [number of samples] [range min] [range max] [outname_prefix]
DMXDataSetverifyを使用して、データセットを検証できます
dmxdatasetverify test_3x3_range_-1+1_matrices_3x3.mx test_3x3_range_-1+1_matrices_inverted_3x3.mx invertible
Dataset valid.
dmxdatasetverify [dataset matrix to invert] [dataset matrix inverted] [type: invertible or singular]
入力マトリックスファイルは、次のようにフォーマットする必要があります。
0.24077047370124594,-0.5012474139608847,-0.5409542929032876
-0.6257864520097793,-0.030705148203584942,-0.13723920334288975
-0.48095686716222064,0.19220406568380666,-0.34750000491973854
END
0.4575368007107925,0.9627977617090073,-0.4115240560547333
0.5191433428806012,0.9391491187187144,-0.000952683255491138
-0.17757763984424968,-0.7696584771443977,-0.9619759413623306
END
-0.49823271153034154,0.31993947803488587,0.9380291202366384
0.443652116558352,0.16745965310481048,-0.267270356721347
0.7075720067281346,-0.3310912886946993,-0.12013367141105102
END
数字の各ブロックは、個別のマトリックスを表し、その後にそのマトリックスの端を示すエンドマーカーが続きます。