中間に向けてやること
・TAの関数近似がうまくいかないときは基底関数の数が足りない説
・基底関数の数増やしたら振動が抑えられてる
・分配関数の話(https://ja.wikipedia.org/wiki/%E5%88%86%E9%85%8D%E9%96%A2%E6%95%B0)
・複製の流れ
最初betaは0.01
1.w,sの更新は無しで,mのみ式(32)で更新→mが収束したら(100回回したら、とかで対処)累積2乗誤差関数を計算→収束判定を下回ってたら終了、上回ってたら2.へ
2.式(36)をbetaの値を大きくしながら計算→mが増えたらそのmの位置に基底関数を複製→1.へ
・pythonの非線形方程式を解くモジュールは,その方程式が複数の解をもつ場合でも初期値に近い1つの解しか出力しないため,解の範囲を絞って複数回適用する??
➡-20<x<20な訳だから,式(36)をx=-20からx=20まで計算して式(36)=0となる点を探す??それか-から+または+から-になる点を探せばゼロ点を探せる説
➡×
➡-20から20まで0.1刻みとかで数百個のデータ点を発生させて,それぞれのデータ点に対する式(36)の左辺の値を算出する.→-から+,+から-になる点をピックアップすれば非線形方程式を解かなくても大丈夫説
・sympyで方程式を解く(newton法)( https://watlab-blog.com/2020/05/17/newton-raphson/ )
➡sympyは解析的に非線形方程式を解けるけどめっっっっちゃ遅い
➡numpyでnewton法するしかない??
・・数値解
・SymPyのfsolve…初期値依存する
・newton法…初期値に依存する,式(36)にnewton法を適用して根を求めたところでstep2の時点のmが複製されるだけ→newton法でわざわざやる意味ない??
・・解析解
・SymPyのsolve…超遅い,というか式(36)が超越方程式だからsolveで解けない
➡-20から20まで0.1刻みとかで数百個のデータ点を発生させて,それぞれのデータ点に対する式(36)の左辺の値を算出する.→絶対値が閾値以下になればその点を新しいmとして複製
・PSOとRBFNの組み合わせは2通りある。1つ目はRBFNのパラメータの最適化にPSOを用いるパターン。2つ目はPSOで未知の目的関数が与えられたときに、それを近似するためにRBFNを用いるパターン。
・2次元sの一撃アルゴリズムを作る ・w,m,sを組み合わせて上手く関数近似できてるか確かめる+高速化前後の比較データ取る ・機械学習との絡みを見つける ・その機械学習を使った応用事例を見つけてそれに適用してみる。