ターミナルアトラクタを組み込んだ複製・競合メカニズムによる効率的な機械学習.
構築データ空間からランダムにデータ点が与えられたとき,そのデータ点群から元の信号を推定する.
推定方法として,複製・競合動径基底関数ネットワーク(RC-RBFN)を使用する.
しかし,RC-RBFNには複製における計算量の課題がある.そこで計算量を考慮した複製方法を提案して実装を行う.
また,従来の機械学習手法にRC-RBFNを組み込むことを提案する.
Ubuntu公式サイト( https://ubuntu.com/ )にアクセスし,「Download Ubuntu」→「Download Ubuntu Desktop」→「Download 24.04.2LTS」
と進めていくと自動的にisoファイルのダウンロードが始まる(始まらない場合は一度前の画面に戻ってもう一回やってみる).保存先はどこでも問題なし(6GB近くあるのでその分の容量が必要).
rufus( https://rufus.ie/ja/ )を使ってライブUSBメモリの作成を行う(USBに入っているデータは削除されるので必要な場合はバックアップを忘れないように).
まず,最新リリースのところから自分のpcに合う実行ファイルをダウンロードする.
ダウンロードしたファイルを実行すると下のような画面になる.参考サイト
「デバイス」でUSBメモリを選ぶ.次に「ブートの種類」から先ほどダウンロードしたisoファイルを選択し,「スタート」を押す(この後に表示されるウィンドウは「はい」を選んで進める).これには数分かかる.
「キャンセル」から「閉じる」になっていれば「閉じる」を押して終了.
ここでは有線のキーボードの方が良いと思われる(後々BIOSに行く必要が出てくる). 参考サイト Ubuntuを入れたいPCに先ほどのUSBメモリをさして起動する.
起動時に表示される選択画面で「Try or Install Ubuntu」を選ぶ.
すると,言語を選択する画面が出てくるので順次自分に必要なものを選び「Next」で進んでいく.
インストール画面では「Ubuntuをインストール」を選択
→インストールの種類は「対話式インストール」を選択
→アプリケーションでは「既定の選択」
→コンピュータを最適化では何も選ばない
→ディスクのセットアップでは「ディスクを削除してUbuntuをインストール」を選択
→アカウントの設定ではユーザーネームやPCの名前,パスワードを入力する(短くわかりやすいのが望ましい)
→タイムゾーンを選択→インストール→再起動
→「press ENTER」というプロンプトが表示されたらEnterを押す.
→ログイン画面が出てきてログインし,ソフトウェアの更新を行う.
これでUbuntuのインストールは終了.
主に使用するソフトウェアとして,テキストエディタにVisualStudioCode,仮想環境構築にAnaconda Navigatorがある.
その他入れたいもの(chromeなど)は自分で調べて入れてほしい.
ダウンロードはこのページから行う.
「.deb」と書かれているところをクリックし,インストール
→「Ctrl + Alt + T」でターミナルを開き,ダウンロードしたdebファイルが格納されているディレクトリに移動.
→「sudo apt insall ./ファイル名.deb」と入力し,インストールを実行.
→下のような画面が出てくるので「はい」を選択
デスクトップ画面の左下のマークを押してVSCを左のタスクバーに持ってくると楽.
VSCの設定は各自好きな拡張機能入れてほしい.
参考サイト Anaconda公式( https://www.anaconda.com/download )からLinux用のインストーラーをダウンロードする.
青枠で囲んである部分からアクセスできる.
ダウンロードしたら,ターミナルを開いて「cd Downloads」→「bash Anaconda3-2022.10-Linux-x86_64.sh」と入力する.
この後に表示されるメッセージはすべてEnterもしくはYes.
次に「export PATH=/root/anaconda3/bin:$PATH」でパスを通す.
「conda --version」でパスを通せていることとAnaconda Navigatorがインストール出来ていることを確認.
仮想環境の作成→「conda create -n 環境名 python=バージョン」
仮想環境の起動→「conda activate 環境名」
仮想環境の終了→「conda deactivate 環境名」
| モジュール | version | 用途 |
| pandas | データ収集やデータフレームへの格納などに用いる | |
| numpy | 数値計算を効率的に行うための拡張モジュール | |
| numba | サブセットのソースコードを高速に実行する機械語に変換するJITコンパイラ | |
| matplotlib | グラフ描写の為のライブラリ | |
| scipy | 数値解析ライブラリ |
モジュールのインストールはコマンドプロンプトでpip install モジュール名
バージョンまで指定する場合はコマンドプロンプトでpip install モジュール名==指定するバージョン でインストールする
Pythonのバージョンは3.10.14(指定しなくてもいいかもしれない)
↓動作環境(また置き換える)
テキストエディタはVisualStudioCodeを使用する.
ダウンロードはこのページ( https://code.visualstudio.com/ )から行う.
VSCの設定は各自好きな拡張機能入れてもらえれば
↑右上の「カーネルの選択」→「Python環境」で構築した環境を選べばOK
動径基底関数ネットワーク(RBFN)とは任意の非線形関数(η)に対して,基底関数(ξ:一般的にガウス関数が用いられる)に重み(w)を乗算し,足し合わせることによって推定するニューラルネットワークのこと.
↓RBFNの構造
入力ベクトル(X)がN個の変数から成る場合,j(j=1,2,...,M)番目のガウス関数ξ(X)は中心位置パラメータ(m)とξの広がりを表すパラメータ(Σ)を用いて以下のように表される.
この各パラメータを学習によって更新していくことにより目的関数の推定を行う.
通常のRBFNでは,基底関数の数が多すぎると過学習や学習時間の増加などの問題を引き起こす.そこで適者生存型学習則を適用することによって,学習の過程で競合を発生させて目的関数の推定に不要な基底関数を効率的に削除する.
この適者生存型学習則は一般Lotka-Volterra競争系をもとにしている.
詳しくはリンク先を見るといいが,簡単にまとめると「競争関係にある生物の個体数の変動を表す数理モデル」であり,生物感の弱肉強食の関係を表すようなモデルである.
この競争関係間の競合を数式で表すと次のようになる.
ここでαは内的自然増加率,γは基底関数間の競合係数を表しており,それぞれ以下のように与えられる.
これらのパラメータを計算し,重みを更新することによって適切な基底関数のみが生存するようになる.
この学習則に従うRBFNを競合動径基底関数ネットワーク(CRBFN)と呼ぶ.
競合の機能によって基底関数の数を減らすことは実現できた.しかし,基底関数の数が足りない場合については考えることができていない.そこで,複製機能を導入することによって基底関数の数を増やす.
1.シナプス結合荷重wの更新 競争を考慮したシナプス可塑性方程式(適者生存型学習則) に従って更新する。
ここでαj(ϕ)は内的自然増加率、γjk(ϕ) は競争係数を示し以下のような式で成り立つ
2.動径基底関数の中心𝑚𝑗の更新 従来のRBFNにおける更新式は以下の通りである
RC-RBFNでは自由エネルギーを考慮します。更新式は条件付確率密度関数𝑝𝛽′(𝑥𝑖∣𝑚𝑗[𝑖]) を用いて最急降下方向に従って更新されます。
3.共分散行列Σ𝑗の更新
従来のRBFNと同様に最急降下法を適用。
累積二乗誤差関数がある閾値以下になった場合、学習を終了。もし、ある閾値 𝜖>0より大きな値で収束 した場合は、次のステップへ。 Lyapunov関数により学習が進むにつれて誤差関数E(w,ϕ) は単調に減少する ことが保証されている。
新しい動径基底関数をどこに追加するべきかを確率密度関数を用いて決定する。
1.確率密度関数 𝑝𝛽′(𝑥𝑖∣𝑚𝑗[𝑖])を計算 既存の動径基底関数を用いて、教師信号 𝜂(𝑥)を近似できていない領域を特定し、条件付き確率密度関数 を利用し、動径基底関数の新しい中心𝑚𝑗を追加する位置を決定。
2.温度パラメータ𝛽′の調整 β ′を増やすことで、誤差の大きい部分に動径基底関数を配置するための影響を強くするため0 から徐々に増加させる。
温度パラメータの役割: ・低いとき:データ全体を均等に考慮 ・高いとき:誤差が大きい部分を優先的に修正
3.新たな安定点を見つける 温度パラメータ𝛽′の変化に伴い、新たな安定な収束点が現れるかどうかを確認する。安定な収束点𝑚𝑗が増えた場合、新たな動径基底関数を追加する。この点が新しい動径基底関数の複製位置となる。
RCRBFN(複製・競合動径基底関数ネットワーク)を環境の変化に適応できるようにSTEP3で決定した新たな安定点に基づいて、動径基底関数(ニューロン)を複製し、ネットワークに追加 します。
1.既存の動径基底関数のパラメータを引き継ぐ 新しい動径基底関数をスムーズにネットワークへ組み込むため新たに追加する動径基底関数𝑚𝑝のシナプス結合荷重𝑤𝑝と共分散行列Σ𝑝は、既存の動径基底関数の値を引き継ぐ。
2.ネットワークへ新しい動径基底関数を追加 新しい動径基底関数をネットワークに組み込む。
3.学習を継続(STEP1に戻る) 新しい動径基底関数を追加した後、再び STEP1(学習の更新)に戻り、ネットワーク全体の再学習を行う。このプロセスを繰り返すことで、環境の変化に適応しながら、最適な動径基底関数の配置を行う。