問題タブ [loss-function]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tensorflow - 教師なし学習のためのデータのミニバッチ (ラベルなし) のトレーニング
教師なし学習の問題のためにデータのミニバッチをトレーニングした人はいますか? feed_dict はラベルを使用し、教師なし設定で使用します。それをどのように克服しますか?損失関数に寄与しない偽のラベルを使用できますか?
基本的に、巨大なデータセットを反復処理してから、カスタム損失関数を最適化したいと考えています。ただし、データから明示的に新しいミニバッチを使用するときに、トレーニング パラメーター (重み) を保持する方法がわかりませんでした。
たとえば、データセット全体は 6000 ポイントで、ミニバッチ サイズは 600 です。現在、ミニバッチごとに、このミニバッチのデータ ポイントに基づいて重みが初期化されるため、新しい独立した重みパラメーターしか使用できませんでした。600 データ ポイントの最初のミニバッチで損失を最適化すると、最適化された重みが得られます。これらの重みをどのように使用して、次の 600 データ ポイントのミニバッチを最適化するのでしょうか。問題は、共有グローバル変数を使用できないことです。
stackoverflow フォーラムで調査しましたが、教師なしデータのミニバッチに関連するものは見つかりませんでした。
'f' は私のデータセット全体で、次元 D の N 点のテキスト データを言います U は次元 D の K クラスターを持つクラスター重心です
変数を次のように定義します。
次に、カスタム損失または目的関数を「目的」として定義します
次にオプティマイザを使用します
最後に、変数を次のように評価します
私が行き詰まっているのは、最終的にオプティマイザtrain_Wで使用されるデータ「f」のバッチを反復処理することです。これらのミニバッチに for ループがある場合、これらの反復ごとに新しい変数 train_W を割り当てます。次のミニバッチで使用できるように、この値を渡すにはどうすればよいですか?
この点に関するヘルプやポインタは本当にありがたいです。前もって感謝します!
numpy - Outliers treatment in nonlinear Least squares (scipy) for a 5PL curve
I am currently in need of fitting a 5PL curve to some datapoints that I have. 5PL is an asymmetric logistic function often used in bioassays analysis. Its formula is as follow:
F(x) = D+(A-D)/((1+(x/C)^B)^E)
I was able to obtain a fit using scipy in python (duh). In a first time I use knowledge on my data to determine the starting parameters for the function: -
With this I then use res = least_squares(residuals, p0,bounds=bnd args=(x, y))
where residuals is the function that computes the residuals between my data and the 5PL function, p0 contains my initial parameters, bnd the bounds of the problem and args= are the arguments passed to residuals (my data).
Now the result is acceptable but I suspect my measurements to have strong outliers and I would like to get a more robust outcome. I found that you can do that by adding a loss function and modify the nonlin LS (as explained here.
The line for solving this problem becomes res_loss = least_squares(residuals, p0, bounds=bnd,loss='soft_l1', f_scale=1000, args=(x, y))
where loss='soft_l1' determines the type of loss function I use and f_scale the threshold between inliners and outliers.
Now in every example that I could find, people just generate data using the curve that they whant to fit and add noise to that signal. They can then set f_scale value equal to the noise they introduced.
That is nice and all but how should f_scale be chosen if there is no knowledge on what are the values for outliers? Is there a way to automatically determine that for every dataset using the data spread?
If my problem was linear I would just use the SD of the data at each X to create a weight matrix and solve a weighted least squares. Is there a similar method for nonlinear problems?
Thanks in advance