うらおSDT5に向けて徐々に手持ちの情報を公開していきます。うら王の学習部はAdaGradを用いている。勾配をgとして、gの二乗を足し合わせたものを記憶しておき、これを基準にwを更新する。\sqrt{n}\)である。nは1ずつ増えるので、初回(n=1)はetaだけwが動く。3回目は\(\frac{eta}{\sqrt{3}}\)である。このように徐々に1回にwが動く量が減衰していく仕組みとなっている。この特徴が好ましいとは限らない。そもそも最初のほう、値、動きすぎじゃね?しかし、最初のほうの動きを抑えようとetaを下げると最終的にwが変化できる量がそれに比例して減ってしまうので、好ましくない。出来ることなら動きかたがもう少し穏やかであって欲しい。リアルな問題では、gも一定だと仮定できないので100回ぐらいイテレーションを回したあとのrの値を用いたい。AdaGradではなく他の手法を使えばいいのかも知れないが、AdaGradの変数は、gとrだけで済むので、省メモリ化の観点からAdaGradは魅力的である。そこでetaを可変にする。2017etaを0から開始して、徐々に増やし、ある程度のところまで達したら、元の値(30)に戻していく。うら王(V4.76)でやるには、learnコマンドに例えば次のように指定する。500こうするとetaが0.01から始まり、200イテレーション目でetaは100になり、そのあと500イテレーション目で30になるように徐々に変化する。評価関数をゼロから学習さるような場合には、格段に効果があるようだ。このeta2の100を1000ぐらいにすると10倍ぐらい値が動く。これくらい大きな値にしても、(ゼロから学習させる)初期の段階においてはそれなりの効果があるようだ。何度も言うようにKPPT型の評価関数はもう表現力の限界付近にあるのでその限界を突破出来るわけでもなく...。:解像度の問題なら、etaを細かくするとかdoubleにするとかそういう話なのでしょうけどね。あとは特徴出すために初期値を変な値にするとか。etaとNを反比例させるとか。Wを足しこんで計算回数で割るとか。立ち入った話はよくわかりません。Orz素人にはもうついていけない領域になりつつありますねぇ。解像度の問題なら解像度の問題ではないです。etaとNを反比例させるとか。AdaGradが見かけ上、etaが1/sqrt(N)ぐらいの速度で減衰してって、それですら早すぎる(最初が大きすぎる)という話なのでetaが1/Nに比例して減衰したら、早すぎて話にならんですよ。Wを足しこんで計算回数で割るとか。それ平均化法なんですけど、その足し込むための変数がもったいないから、それはやりたくないという話をしています。ついでに言うとやねうら王で実験したところ、平均化法は、(計測できるレベルの)効果はないです。:自分はお手上げですね。アーティストになっちゃったみたいなので苦しいですね。:もうちょっと思いついたので蛇足。収束が早いならルートやめるとか、近視眼的に思いましたけどそうなると理論変わっちゃうんですよね?多分。都合のいい数式引っ張ってくるとか。逆にルートするのやめてn^2に類すれば初期はつぶせますよ?理論変わりますけど。後はイテレートできるようにほかの値も適度に大きくする?と、どうなるかなぁ。√Nをイテレート回数のX倍にするとかでもいいかなぁ?初期値が許容できるくらいまで小さくなるXを求める?って意味ないかなぁ。結局解像度のこと喋ってる気がする。そこは都合のいい数式を捏造しましょう。w=w-(blackbox);ところで生の値としてどういう傾向が良い悪いを決めるのでしょうかね??数学むずいよぉ~。近視眼的に考えて、割り算を使うのが一番の元凶に思います。足し引きで変異させる方法を考えるとかも思いました。収束が早いならルートやめるとか収束が速いのではない。見かけ上のetaの減衰が速いのだ。逆にルートするのやめてそれただのSGDだよね。全滅デース!\(^o^)/失礼しました。