私は現在、勾配降下の実装の問題を抱えています。私は入力値の行列を持っています。例えば、[[1,1,0,2],[2,3,5,1],[2,1,8,0]]
です。出力ベクトルに対する誤差を最小にする重みを計算したい、最小化された関数は標準線形モデルなので、私の仮説は最小である - >np.dot(input,weights)-y
です。問題は - 重みベクトルの値が特定の数、例えば2に加算されるべきである。出力のベクトルもnp.dot(input,weights)/sum(np.dot(input,weights))
のように正規化される - この結果は次に望ましい出力ベクトルと比較される。どのように私はこのタスクをpython/numpyで定義すべきですか?ヒト同調手順の一般的な最適化 - Pythonでの実装
例:
1)入力行列 [[4,0,2,0,2,0],[2,0,0,2,2,0],[2,0,0,2,2,0],[4,0,2,0,0,0],[0,0,2,0,0,2],[0,4,0,0,0,2],[0,2,0,0,0,2],[0,2,2,0,0,0],[0,0,2,0,0,2],[4,0,2,0,0,0]]
2)所望の出力[12.94275893,8.07054252,9.281123898,10.53654162,8.698251382,14.67643103,7.158870124,10.26752354,8.324615155,10.0433418]
3)np.dotように入力ベクトルを変換量(入力、重み)/合計(np.dot(入力、重み))は大丈夫です [11,21,18,0,20,14]
- 合計は84で固定されます。
4)最終出力、合理的に偏差2からテッド)あなたの例のデータの規模については[15.15,7.83,7.83,10.10,8.08,14.14,8.84,9.85,8.08,10.10]
あなたが求めていることは私には分かりません。 '' '問題は - 重みベクトルの値が特定の数、例えば2に加算されるべきであるということです' 'それはどういう意味ですか?なぜ正規化が重要か?通常、新しいデータを変換する準備が整っているノーマライザをフィッティングします。また、これは研究/学習目的のためのものですか?あなたのためにこれを行う良いソフトウェアがたくさんあるので。 – sascha
私は自分の体重が合計で固定されていることを意味しました。それらの値の合計は正確に2でなければなりません。 – tretyacv
それは一般的に解決するのは実行不可能な** np-hard **の問題のようですね!それはもはや凸最適化の問題ではない。もちろん、この値に関して偏差に作用するペナルティ項を加える近似解を得ることができます。しかし、よく..まだ非凸であると思います(これは、最適化するのが非常に難しいことを意味します)。 **編集:**多分私の気持ちが間違っていた。ペナルティー・タームを使用する場合は凸でなければなりません。 – sascha