小澤さん卒論_backup
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[技術資料]]
ターミナルアトラクタを組み込んだ複製・競合メカニズムによ...
*目次 [#e890b3d5]
#CONTENTS
*目的 [#x38aa8d3]
構築データ空間からランダムにデータ点が与えられたとき,そ...
推定方法として,複製・競合動径基底関数ネットワーク(RC-RBF...
しかし,RC-RBFNには複製における計算量の課題がある.そこで...
また,従来の機械学習手法にRC-RBFNを組み込むことを提案する.
*Ubuntu24.04環境の構築方法 [#u1248302]
自分が使ってたPCアカウントのPC名とパスワード
PC名:pc,パスワード:pc123456789
**事前準備 [#ta19c6d2]
***Ubuntu24.04のisoファイルのダウンロード [#i0e24430]
Ubuntu公式サイト( https://ubuntu.com/ )にアクセスし,「Do...
と進めていくと自動的にisoファイルのダウンロードが始まる(...
#ref(Ubuntu公式.png,,Ubuntu1,15%)
~
#ref(Ubuntu.png,,Ubuntu2,15%)
~
#ref(Ubu.png,,Ubuntu3,15%)
***ライブUSBメモリの作成 [#i0e24430]
rufus( https://rufus.ie/ja/ )を使ってライブUSBメモリの作...
まず,最新リリースのところから自分のpcに合う実行ファイル...
#ref(rufus.png,,rufus1,25%)
~
ダウンロードしたファイルを実行すると下のような画面になる...
「デバイス」でUSBメモリを選ぶ.次に「ブートの種類」から先...
#ref(rufus2.png,,rufus2,25%)
~
「キャンセル」から「閉じる」になっていれば「閉じる」を押...
**Ubuntuインストール [#ta19c6d2]
ここでは有線のキーボードの方が良いと思われる(後々BIOSに行...
[[参考サイト:https://www.kkaneko.jp/tools/ubuntu/ubuntude...
Ubuntuを入れたいPCに先ほどのUSBメモリをさして起動する.
起動時に表示される選択画面で「Try or Install Ubuntu」を選...
#ref(Ubu1.png,,Ubu1,25%)
~
すると,言語を選択する画面が出てくるので順次自分に必要な...
インストール画面では「Ubuntuをインストール」を選択
→インストールの種類は「対話式インストール」を選択
→アプリケーションでは「既定の選択」
→コンピュータを最適化では何も選ばない
→ディスクのセットアップでは「ディスクを削除してUbuntuをイ...
→アカウントの設定ではユーザーネームやPCの名前,パスワード...
→タイムゾーンを選択→インストール→再起動
#ref(Ubu2.png,,Ubu2,25%)
~
→「press ENTER」というプロンプトが表示されたらEnterを押す.
→ログイン画面が出てきてログインし,ソフトウェアの更新を行...
これでUbuntuのインストールは終了.
**使用するソフトウェアのインストール [#ta19c6d2]
主に使用するソフトウェアとして,テキストエディタにVisualS...
その他入れたいもの(chromeなど)は自分で調べて入れてほしい.
***VSC [#ta19c6d2]
ダウンロードは[[このページ:https://code.visualstudio.com/...
「.deb」と書かれているところをクリックし,インストール
→「Ctrl + Alt + T」でターミナルを開き,ダウンロードしたde...
→「sudo apt insall ./ファイル名.deb」と入力し,インストー...
→下のような画面が出てくるので「はい」を選択
#ref(vsc.png,,vsc,25%)
~
デスクトップ画面の左下のマークを押してVSCを左のタスクバー...
VSCの設定は各自好きな拡張機能入れてほしい.
***Anaconda Navigator [#ta19c6d2]
[[参考サイト:https://qiita.com/Z0E/items/d574302747df8f0e...
Anaconda公式( https://www.anaconda.com/download )からLinu...
青枠で囲んである部分からアクセスできる.
#ref(anaconda.png,,anaconda,25%)
~
ダウンロードしたら,ターミナルを開いて「cd Downloads」→「...
この後に表示されるメッセージはすべてEnterもしくはYes.
次に「export PATH=/root/anaconda3/bin:$PATH」でパスを通す.
「conda --version」でパスを通せていることとAnaconda Navig...
仮想環境の作成→「conda create -n 環境名 python=バージョン」
仮想環境の起動→「conda activate 環境名」
仮想環境の終了→「conda deactivate 環境名」
***Pycuda [#ta19c6d2]
Pycudaのプログラミングは[[ここ:https://qiita.com/automati...
基底関数の定義部分をPycudaで書き換えたバージョンはここ
#ref(Pycuda.ipynb,,Pycuda)
PycudaとはNVIDIAが提供するcudaをPythonから利用するための...
CUDAを使用することでGPUの並列計算能力を活用し,CPUよりも...
1. セキュアブートの無効化
セキュアブートが有効になっているとNVIDIAドライバをロード...
ここではASUSのマザーボードとBIOS画面を例として出すが,マ...
PCを立ち上げる際に「F2」もしくは「Delete」を押したままに...
#ref(ASUS1.png,,ASUS1,25%)
~
「Boot」タブに移動し,「Secure Boot」を選択する.
#ref(ASUS2.png,,ASUS2,25%)
~
#ref(ASUS3.png,,ASUS3,25%)
~
「OS Type」を「Other OS」にすればセキュアブートの無効化は...
#ref(ASUS4.png,,ASUS4,25%)
~
2.cuda toolkitのインストール
Pycudaを使用するにはcudaの開発環境が必要になる.そこで,[...
このページ内の「Download Now」を押すとプラットフォームを...
画像はUbuntu24.04用のもの
#ref(cuda1.png,,cuda1,25%)
~
すると下の画像のようなコードが出てくるのでターミナルを開...
#ref(cuda2.png,,cuda2,25%)
~
#ref(cuda3.png,,cuda3,25%)
~
一度再起動してターミナルを開き,「nvcc --version」でcuda...
「command not found」などと表示される場合はcudaのパスを環...
「export PATH=/usr/local/cuda/bin:$PATH」
→「export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRA...
次にNVIDIAドライバのインストールを行う.
まず,システムがNVIDIAのGPUを認識しているか「nvidia-smi」...
#ref(cuda4.png,,cuda4,40%)
~
次にcudaに対応したドライバを「sudo ubuntu-drivers autoins...
最後に「python -c "import pycuda.autoinit"」を実行し,エ...
------------------
*使うモジュールのインストール [#u1248302]
**使用するモジュール [#ta19c6d2]
|モジュール|version|用途|
|pandas|2.2.3|データ収集やデータフレームへの格納などに用...
|numpy|2.1.3|数値計算を効率的に行うための拡張モジュール|
|numba|0.61.0|サブセットのソースコードを高速に実行する機...
|matplotlib|3.10.0|グラフ描写の為のライブラリ|
|scipy|1.15.2|数値解析ライブラリ|
モジュールのインストールはコマンドプロンプトでpip install...
バージョンまで指定する場合はコマンドプロンプトでpip insta...
でインストールする
Pythonのバージョンは3.10.14(指定しなくてもいいかもしれない)
↓動作環境
#ref(環境.png,,動作環境)
*プログラムの動かし方 [#ob3ca958]
Anacondaで仮想環境を構築し,その仮想環境上でプログラムを...
#ref(カーネル選択.png,,カーネル,35%)
↑右上の「カーネルの選択」→「Python環境」で構築した環境を...
仮想環境内の変数は下の画像中の「再起動」を押すことでリセ...
#ref(vsc2.png,,vsc2,35%)
*[理論の解説] [#gb062256]
**[RBFNの解説] [#eb3cce83]
動径基底関数ネットワーク(RBFN)とは任意の非線形関数(η)に対...
↓RBFNの構造
#ref(RBFN.png,,RBFN,15%)
入力ベクトル(X)がN個の変数から成る場合,j(j=1,2,...,M)番...
#ref(xi.png,,基底関数)
この各パラメータを学習によって更新していくことにより目的...
**[競合の解説] [#eb3cce83]
通常のRBFNでは,基底関数の数が多すぎると過学習や学習時間...
この適者生存型学習則は[[一般Lotka-Volterra競争系:https://...
詳しくはリンク先を見るといいが,簡単にまとめると「競争関...
この競争関係間の競合を数式で表すと次のようになる.
#ref(競合.png,,競合,75%)
ここでαは[[内的自然増加率:https://ja.wikipedia.org/wiki/%...
#ref(内的自然増加率2.png,,内的自然増加率2,75%)
#ref(競合係数.png,,競合係数,75%)
これらのパラメータを計算し,重みを更新することによって適...
この学習則に従うRBFNを競合動径基底関数ネットワーク(CRBFN)...
**[複製の解説] [#eb3cce83]
競合の機能によって基底関数の数を減らすことは実現できた....
**STEP1 ニューラルネットワークのパラメータ更新[#xbcf3848]
1.シナプス結合荷重wの更新
競争を考慮したシナプス可塑性方程式(適者生存型学習則) に...
#ref(パラメータw.png)
ここでαj(ϕ)は内的自然増加率、γjk(ϕ) は競争係数を示し以下...
#ref(内的自然増加率.png)
#ref(競争係数.png)
2.動径基底関数の中心𝑚𝑗の更新
従来のRBFNにおける更新式は以下の通りである
#ref(RBFNのmパラメータ.png)
RC-RBFNでは自由エネルギーを考慮します。更新式は条件付確率...
を用いて最急降下方向に従って更新されます。
#ref(RCRBFNにおけるパラメータm.png)
3.共分散行列Σ𝑗の更新
#ref(共分散行列.png)
従来のRBFNと同様に最急降下法を適用。
**STEP2 収束判定 [#xbcf3848]
#ref(累積二乗誤差関数.png)
累積二乗誤差関数がある閾値以下になった場合、学習を終了。...
Lyapunov関数により学習が進むにつれて誤差関数E(w,ϕ) は単調...
#ref(誤差の単調減少を保証するLyapunov関数.png)
**STEP3 新たなニューロンの複製位置の決定 [#xbcf3848]
新しい動径基底関数をどこに追加するべきかを確率密度関数を...
1.確率密度関数 𝑝𝛽′(𝑥𝑖∣𝑚𝑗[𝑖])を計算
既存の動径基底関数を用いて、教師信号 𝜂(𝑥)を近似できていな...
#ref(条件付き確率密度関数.png)
2.温度パラメータ𝛽′の調整
β ′を増やすことで、誤差の大きい部分に動径基底関数を配置す...
温度パラメータの役割:
・低いとき:データ全体を均等に考慮
・高いとき:誤差が大きい部分を優先的に修正
3.新たな安定点を見つける
温度パラメータ𝛽′の変化に伴い、新たな安定な収束点が現れる...
**STEP4 動径基底関数の複製 [#xbcf3848]
RCRBFN(複製・競合動径基底関数ネットワーク)を環境の変化...
1.既存の動径基底関数のパラメータを引き継ぐ
新しい動径基底関数をスムーズにネットワークへ組み込むため...
2.ネットワークへ新しい動径基底関数を追加
新しい動径基底関数をネットワークに組み込む。
3.学習を継続(STEP1に戻る)
新しい動径基底関数を追加した後、再び STEP1(学習の更新)...
*機械学習への組み込み [#na6257b3]
**強化学習 [#lf55d4e2]
あらかじめ設けられた報酬関数をもとに最適な行動を選択する...
**逆強化学習 [#y8cc6c93]
報酬関数が未知の場合、エージェントの行動履歴からその報酬...
**最大エントロピー逆強化学習 [#fc3968fa]
逆強化学習にエントロピーの要素を加えたもの
エントロピー最大化: 確率分布の不確かさを最大化することで...
最大エントロピー逆強化学習: エージェントの行動の確率分布...
逆強化学習に比べ環境の変化に柔軟に対応できるように多様な...
またこの最大エントロピー逆強化学習とRC-RBFNを組み合わせる...
*プログラムコード内の式説明 [#u1248302]
**基底関数 [#t783d7fe]
ガウス関数を用いた基底関数の初期化と可視化を行う以下がガ...
#ref(ガウス基底関数.png,,Ubuntu1,70%)
~
1.初期設定
#ref(初期設定.png,,Ubuntu1,70%)
M=1:基底関数の数の設定(今回の場合1)
w0:各基底関数の重み(初期値はすべて0)。その後、すべての...
~
2.calc_xi 関数の定義
#ref(calc_xi 関数(基底関数の計算).png,,Ubuntu1,70%)
xixi[j][p]:点 point[p] における j 番目の基底関数の値。
xixi_total[p]:すべての基底関数の重み付き合計。
3.基底関数の計算に必要な変数の初期化
#ref(基底関数の計算に必要な変数の初期k.png)
xi:各基底関数の値を格納する行列。
xi_total:基底関数の合計値。
mu_xi:基底関数の中心(平均値)。
sigma_xi:基底関数の分散・共分散
4.calc_xi を使って基底関数を計算
#ref(calc_xi を使って基底関数を計算.png,,Ubuntu1,70%)
2で定義した関数の実行
~
5.1次元の場合の可視化
#ref(可視化(1次元の場合).png,,Ubuntu1,70%)
~
6.2次元の場合の可視化
#ref(可視化(2次元の場合).png,,Ubuntu1,70%)
~
7.出力結果
#ref(基底関数出力結果.png,,Ubuntu1,70%)
**xin-she yang関数 [#z5d76a15]
ベンチマーク関数の一種である。
(ベンチマーク関数とは正解がわかっている問題を解かせどれだ...
Xin-She Yang関数は多峰性関数の特性を持つ。)
以下はXin-She Yang関数の公式である。
#ref(xin-she yang関数.png)
プログラムコード
#ref(xin-she yang関数コード.png,,Ubuntu1,40%)
~
#ref(xin-she yang関数コード2.png,,Ubuntu1,40%)
出力結果
#ref(Xin-She Yang 関数.png,,Ubuntu1,40%)
**model_w 関数 [#t783d7fe]
#ref(パラメータw.png,,Ubuntu1,70%)
以上が重みのパラメータ更新式であり下記のコードがその部分...
#ref(重みwの定義式.png,,Ubuntu1,40%)
コードと式の対応する変数
・alpha_w0[j] と𝛼𝑗(ϕ)
・gamma_w0[j][h] と 𝛾𝑗𝑘(ϕ)
・sum1[j] の計算と ∑𝛾𝑗𝑘(𝜙)𝜇𝑘𝑤𝑘
・dwdt[j] の計算と Δ𝑤𝑗
**model_m 関数 [#d40a6931]
#ref(RBFNのmパラメータ.png)
~
#ref(内的自然増加率.png)
~
#ref(𝛾𝑗𝑘(ϕ).png)
以上が中心位置のパラメータ更新式であり下記のコードがその...
#ref(中心位置mの定義式.png,,Ubuntu1,40%)
~
#ref(中心位置mの定義式2.png,,Ubuntu1,40%)
コードと式の対応する変数
alpha_m0[j] と 𝛼𝑗(ϕ):
gamma_m0[j][h] と 𝛾𝑗𝑘(ϕ):
sum1[j] の計算と ∑𝛾𝑗𝑘(𝜙)𝜇𝑘𝑤𝑘:
alpha_m0[j] - sum1[j]を用いることで∂E/∂mjを近似
alpha_m0[j] - sum1[j]を用いることで
**model_s 関数 [#i0bc71aa]
#ref(共分散行列.png)
~
#ref(内的自然増加率.png)
~
#ref(𝛾𝑗𝑘(ϕ).png)
以上が分散のパラメータ更新式であり下記のコードがその部分...
#ref(分散sの定義式.png,,Ubuntu1,40%)
~
#ref(分散sの定義式2.png,,Ubuntu1,40%)
コードと式の対応する変数
alpha_s0[j] と 𝛼𝑗(ϕ):
gamma_s0[j][h] と 𝛾𝑗𝑘(ϕ):
sum[j] の計算と ∑𝛾𝑗𝑘(𝜙)𝜇𝑘𝑤𝑘:
alpha_s0[j] - sum[j]を用いることで∂E/∂sjを近似
またγjhの総和により競争の考慮を行っている。
**ピーク検出関数 [#sfd3dabc]
#ref(ピーク検出関数.png,,Ubuntu1,40%)
mについてのピークを検出する
**culc_new_gaussian [#wb4f7ed7]
#ref(culc_new_gaussian.png,,Ubuntu1,40%)
検出されたピーク位置に新しくRBFを配置する.
新しく配置することによりモデルの精度向上が見込める。
それ以降のコードは定義した関数をもとに実際に使用される
終了行:
[[技術資料]]
ターミナルアトラクタを組み込んだ複製・競合メカニズムによ...
*目次 [#e890b3d5]
#CONTENTS
*目的 [#x38aa8d3]
構築データ空間からランダムにデータ点が与えられたとき,そ...
推定方法として,複製・競合動径基底関数ネットワーク(RC-RBF...
しかし,RC-RBFNには複製における計算量の課題がある.そこで...
また,従来の機械学習手法にRC-RBFNを組み込むことを提案する.
*Ubuntu24.04環境の構築方法 [#u1248302]
自分が使ってたPCアカウントのPC名とパスワード
PC名:pc,パスワード:pc123456789
**事前準備 [#ta19c6d2]
***Ubuntu24.04のisoファイルのダウンロード [#i0e24430]
Ubuntu公式サイト( https://ubuntu.com/ )にアクセスし,「Do...
と進めていくと自動的にisoファイルのダウンロードが始まる(...
#ref(Ubuntu公式.png,,Ubuntu1,15%)
~
#ref(Ubuntu.png,,Ubuntu2,15%)
~
#ref(Ubu.png,,Ubuntu3,15%)
***ライブUSBメモリの作成 [#i0e24430]
rufus( https://rufus.ie/ja/ )を使ってライブUSBメモリの作...
まず,最新リリースのところから自分のpcに合う実行ファイル...
#ref(rufus.png,,rufus1,25%)
~
ダウンロードしたファイルを実行すると下のような画面になる...
「デバイス」でUSBメモリを選ぶ.次に「ブートの種類」から先...
#ref(rufus2.png,,rufus2,25%)
~
「キャンセル」から「閉じる」になっていれば「閉じる」を押...
**Ubuntuインストール [#ta19c6d2]
ここでは有線のキーボードの方が良いと思われる(後々BIOSに行...
[[参考サイト:https://www.kkaneko.jp/tools/ubuntu/ubuntude...
Ubuntuを入れたいPCに先ほどのUSBメモリをさして起動する.
起動時に表示される選択画面で「Try or Install Ubuntu」を選...
#ref(Ubu1.png,,Ubu1,25%)
~
すると,言語を選択する画面が出てくるので順次自分に必要な...
インストール画面では「Ubuntuをインストール」を選択
→インストールの種類は「対話式インストール」を選択
→アプリケーションでは「既定の選択」
→コンピュータを最適化では何も選ばない
→ディスクのセットアップでは「ディスクを削除してUbuntuをイ...
→アカウントの設定ではユーザーネームやPCの名前,パスワード...
→タイムゾーンを選択→インストール→再起動
#ref(Ubu2.png,,Ubu2,25%)
~
→「press ENTER」というプロンプトが表示されたらEnterを押す.
→ログイン画面が出てきてログインし,ソフトウェアの更新を行...
これでUbuntuのインストールは終了.
**使用するソフトウェアのインストール [#ta19c6d2]
主に使用するソフトウェアとして,テキストエディタにVisualS...
その他入れたいもの(chromeなど)は自分で調べて入れてほしい.
***VSC [#ta19c6d2]
ダウンロードは[[このページ:https://code.visualstudio.com/...
「.deb」と書かれているところをクリックし,インストール
→「Ctrl + Alt + T」でターミナルを開き,ダウンロードしたde...
→「sudo apt insall ./ファイル名.deb」と入力し,インストー...
→下のような画面が出てくるので「はい」を選択
#ref(vsc.png,,vsc,25%)
~
デスクトップ画面の左下のマークを押してVSCを左のタスクバー...
VSCの設定は各自好きな拡張機能入れてほしい.
***Anaconda Navigator [#ta19c6d2]
[[参考サイト:https://qiita.com/Z0E/items/d574302747df8f0e...
Anaconda公式( https://www.anaconda.com/download )からLinu...
青枠で囲んである部分からアクセスできる.
#ref(anaconda.png,,anaconda,25%)
~
ダウンロードしたら,ターミナルを開いて「cd Downloads」→「...
この後に表示されるメッセージはすべてEnterもしくはYes.
次に「export PATH=/root/anaconda3/bin:$PATH」でパスを通す.
「conda --version」でパスを通せていることとAnaconda Navig...
仮想環境の作成→「conda create -n 環境名 python=バージョン」
仮想環境の起動→「conda activate 環境名」
仮想環境の終了→「conda deactivate 環境名」
***Pycuda [#ta19c6d2]
Pycudaのプログラミングは[[ここ:https://qiita.com/automati...
基底関数の定義部分をPycudaで書き換えたバージョンはここ
#ref(Pycuda.ipynb,,Pycuda)
PycudaとはNVIDIAが提供するcudaをPythonから利用するための...
CUDAを使用することでGPUの並列計算能力を活用し,CPUよりも...
1. セキュアブートの無効化
セキュアブートが有効になっているとNVIDIAドライバをロード...
ここではASUSのマザーボードとBIOS画面を例として出すが,マ...
PCを立ち上げる際に「F2」もしくは「Delete」を押したままに...
#ref(ASUS1.png,,ASUS1,25%)
~
「Boot」タブに移動し,「Secure Boot」を選択する.
#ref(ASUS2.png,,ASUS2,25%)
~
#ref(ASUS3.png,,ASUS3,25%)
~
「OS Type」を「Other OS」にすればセキュアブートの無効化は...
#ref(ASUS4.png,,ASUS4,25%)
~
2.cuda toolkitのインストール
Pycudaを使用するにはcudaの開発環境が必要になる.そこで,[...
このページ内の「Download Now」を押すとプラットフォームを...
画像はUbuntu24.04用のもの
#ref(cuda1.png,,cuda1,25%)
~
すると下の画像のようなコードが出てくるのでターミナルを開...
#ref(cuda2.png,,cuda2,25%)
~
#ref(cuda3.png,,cuda3,25%)
~
一度再起動してターミナルを開き,「nvcc --version」でcuda...
「command not found」などと表示される場合はcudaのパスを環...
「export PATH=/usr/local/cuda/bin:$PATH」
→「export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRA...
次にNVIDIAドライバのインストールを行う.
まず,システムがNVIDIAのGPUを認識しているか「nvidia-smi」...
#ref(cuda4.png,,cuda4,40%)
~
次にcudaに対応したドライバを「sudo ubuntu-drivers autoins...
最後に「python -c "import pycuda.autoinit"」を実行し,エ...
------------------
*使うモジュールのインストール [#u1248302]
**使用するモジュール [#ta19c6d2]
|モジュール|version|用途|
|pandas|2.2.3|データ収集やデータフレームへの格納などに用...
|numpy|2.1.3|数値計算を効率的に行うための拡張モジュール|
|numba|0.61.0|サブセットのソースコードを高速に実行する機...
|matplotlib|3.10.0|グラフ描写の為のライブラリ|
|scipy|1.15.2|数値解析ライブラリ|
モジュールのインストールはコマンドプロンプトでpip install...
バージョンまで指定する場合はコマンドプロンプトでpip insta...
でインストールする
Pythonのバージョンは3.10.14(指定しなくてもいいかもしれない)
↓動作環境
#ref(環境.png,,動作環境)
*プログラムの動かし方 [#ob3ca958]
Anacondaで仮想環境を構築し,その仮想環境上でプログラムを...
#ref(カーネル選択.png,,カーネル,35%)
↑右上の「カーネルの選択」→「Python環境」で構築した環境を...
仮想環境内の変数は下の画像中の「再起動」を押すことでリセ...
#ref(vsc2.png,,vsc2,35%)
*[理論の解説] [#gb062256]
**[RBFNの解説] [#eb3cce83]
動径基底関数ネットワーク(RBFN)とは任意の非線形関数(η)に対...
↓RBFNの構造
#ref(RBFN.png,,RBFN,15%)
入力ベクトル(X)がN個の変数から成る場合,j(j=1,2,...,M)番...
#ref(xi.png,,基底関数)
この各パラメータを学習によって更新していくことにより目的...
**[競合の解説] [#eb3cce83]
通常のRBFNでは,基底関数の数が多すぎると過学習や学習時間...
この適者生存型学習則は[[一般Lotka-Volterra競争系:https://...
詳しくはリンク先を見るといいが,簡単にまとめると「競争関...
この競争関係間の競合を数式で表すと次のようになる.
#ref(競合.png,,競合,75%)
ここでαは[[内的自然増加率:https://ja.wikipedia.org/wiki/%...
#ref(内的自然増加率2.png,,内的自然増加率2,75%)
#ref(競合係数.png,,競合係数,75%)
これらのパラメータを計算し,重みを更新することによって適...
この学習則に従うRBFNを競合動径基底関数ネットワーク(CRBFN)...
**[複製の解説] [#eb3cce83]
競合の機能によって基底関数の数を減らすことは実現できた....
**STEP1 ニューラルネットワークのパラメータ更新[#xbcf3848]
1.シナプス結合荷重wの更新
競争を考慮したシナプス可塑性方程式(適者生存型学習則) に...
#ref(パラメータw.png)
ここでαj(ϕ)は内的自然増加率、γjk(ϕ) は競争係数を示し以下...
#ref(内的自然増加率.png)
#ref(競争係数.png)
2.動径基底関数の中心𝑚𝑗の更新
従来のRBFNにおける更新式は以下の通りである
#ref(RBFNのmパラメータ.png)
RC-RBFNでは自由エネルギーを考慮します。更新式は条件付確率...
を用いて最急降下方向に従って更新されます。
#ref(RCRBFNにおけるパラメータm.png)
3.共分散行列Σ𝑗の更新
#ref(共分散行列.png)
従来のRBFNと同様に最急降下法を適用。
**STEP2 収束判定 [#xbcf3848]
#ref(累積二乗誤差関数.png)
累積二乗誤差関数がある閾値以下になった場合、学習を終了。...
Lyapunov関数により学習が進むにつれて誤差関数E(w,ϕ) は単調...
#ref(誤差の単調減少を保証するLyapunov関数.png)
**STEP3 新たなニューロンの複製位置の決定 [#xbcf3848]
新しい動径基底関数をどこに追加するべきかを確率密度関数を...
1.確率密度関数 𝑝𝛽′(𝑥𝑖∣𝑚𝑗[𝑖])を計算
既存の動径基底関数を用いて、教師信号 𝜂(𝑥)を近似できていな...
#ref(条件付き確率密度関数.png)
2.温度パラメータ𝛽′の調整
β ′を増やすことで、誤差の大きい部分に動径基底関数を配置す...
温度パラメータの役割:
・低いとき:データ全体を均等に考慮
・高いとき:誤差が大きい部分を優先的に修正
3.新たな安定点を見つける
温度パラメータ𝛽′の変化に伴い、新たな安定な収束点が現れる...
**STEP4 動径基底関数の複製 [#xbcf3848]
RCRBFN(複製・競合動径基底関数ネットワーク)を環境の変化...
1.既存の動径基底関数のパラメータを引き継ぐ
新しい動径基底関数をスムーズにネットワークへ組み込むため...
2.ネットワークへ新しい動径基底関数を追加
新しい動径基底関数をネットワークに組み込む。
3.学習を継続(STEP1に戻る)
新しい動径基底関数を追加した後、再び STEP1(学習の更新)...
*機械学習への組み込み [#na6257b3]
**強化学習 [#lf55d4e2]
あらかじめ設けられた報酬関数をもとに最適な行動を選択する...
**逆強化学習 [#y8cc6c93]
報酬関数が未知の場合、エージェントの行動履歴からその報酬...
**最大エントロピー逆強化学習 [#fc3968fa]
逆強化学習にエントロピーの要素を加えたもの
エントロピー最大化: 確率分布の不確かさを最大化することで...
最大エントロピー逆強化学習: エージェントの行動の確率分布...
逆強化学習に比べ環境の変化に柔軟に対応できるように多様な...
またこの最大エントロピー逆強化学習とRC-RBFNを組み合わせる...
*プログラムコード内の式説明 [#u1248302]
**基底関数 [#t783d7fe]
ガウス関数を用いた基底関数の初期化と可視化を行う以下がガ...
#ref(ガウス基底関数.png,,Ubuntu1,70%)
~
1.初期設定
#ref(初期設定.png,,Ubuntu1,70%)
M=1:基底関数の数の設定(今回の場合1)
w0:各基底関数の重み(初期値はすべて0)。その後、すべての...
~
2.calc_xi 関数の定義
#ref(calc_xi 関数(基底関数の計算).png,,Ubuntu1,70%)
xixi[j][p]:点 point[p] における j 番目の基底関数の値。
xixi_total[p]:すべての基底関数の重み付き合計。
3.基底関数の計算に必要な変数の初期化
#ref(基底関数の計算に必要な変数の初期k.png)
xi:各基底関数の値を格納する行列。
xi_total:基底関数の合計値。
mu_xi:基底関数の中心(平均値)。
sigma_xi:基底関数の分散・共分散
4.calc_xi を使って基底関数を計算
#ref(calc_xi を使って基底関数を計算.png,,Ubuntu1,70%)
2で定義した関数の実行
~
5.1次元の場合の可視化
#ref(可視化(1次元の場合).png,,Ubuntu1,70%)
~
6.2次元の場合の可視化
#ref(可視化(2次元の場合).png,,Ubuntu1,70%)
~
7.出力結果
#ref(基底関数出力結果.png,,Ubuntu1,70%)
**xin-she yang関数 [#z5d76a15]
ベンチマーク関数の一種である。
(ベンチマーク関数とは正解がわかっている問題を解かせどれだ...
Xin-She Yang関数は多峰性関数の特性を持つ。)
以下はXin-She Yang関数の公式である。
#ref(xin-she yang関数.png)
プログラムコード
#ref(xin-she yang関数コード.png,,Ubuntu1,40%)
~
#ref(xin-she yang関数コード2.png,,Ubuntu1,40%)
出力結果
#ref(Xin-She Yang 関数.png,,Ubuntu1,40%)
**model_w 関数 [#t783d7fe]
#ref(パラメータw.png,,Ubuntu1,70%)
以上が重みのパラメータ更新式であり下記のコードがその部分...
#ref(重みwの定義式.png,,Ubuntu1,40%)
コードと式の対応する変数
・alpha_w0[j] と𝛼𝑗(ϕ)
・gamma_w0[j][h] と 𝛾𝑗𝑘(ϕ)
・sum1[j] の計算と ∑𝛾𝑗𝑘(𝜙)𝜇𝑘𝑤𝑘
・dwdt[j] の計算と Δ𝑤𝑗
**model_m 関数 [#d40a6931]
#ref(RBFNのmパラメータ.png)
~
#ref(内的自然増加率.png)
~
#ref(𝛾𝑗𝑘(ϕ).png)
以上が中心位置のパラメータ更新式であり下記のコードがその...
#ref(中心位置mの定義式.png,,Ubuntu1,40%)
~
#ref(中心位置mの定義式2.png,,Ubuntu1,40%)
コードと式の対応する変数
alpha_m0[j] と 𝛼𝑗(ϕ):
gamma_m0[j][h] と 𝛾𝑗𝑘(ϕ):
sum1[j] の計算と ∑𝛾𝑗𝑘(𝜙)𝜇𝑘𝑤𝑘:
alpha_m0[j] - sum1[j]を用いることで∂E/∂mjを近似
alpha_m0[j] - sum1[j]を用いることで
**model_s 関数 [#i0bc71aa]
#ref(共分散行列.png)
~
#ref(内的自然増加率.png)
~
#ref(𝛾𝑗𝑘(ϕ).png)
以上が分散のパラメータ更新式であり下記のコードがその部分...
#ref(分散sの定義式.png,,Ubuntu1,40%)
~
#ref(分散sの定義式2.png,,Ubuntu1,40%)
コードと式の対応する変数
alpha_s0[j] と 𝛼𝑗(ϕ):
gamma_s0[j][h] と 𝛾𝑗𝑘(ϕ):
sum[j] の計算と ∑𝛾𝑗𝑘(𝜙)𝜇𝑘𝑤𝑘:
alpha_s0[j] - sum[j]を用いることで∂E/∂sjを近似
またγjhの総和により競争の考慮を行っている。
**ピーク検出関数 [#sfd3dabc]
#ref(ピーク検出関数.png,,Ubuntu1,40%)
mについてのピークを検出する
**culc_new_gaussian [#wb4f7ed7]
#ref(culc_new_gaussian.png,,Ubuntu1,40%)
検出されたピーク位置に新しくRBFを配置する.
新しく配置することによりモデルの精度向上が見込める。
それ以降のコードは定義した関数をもとに実際に使用される
ページ名: