ソフトウェア設計における因果関係の明確化。条件分岐や状態遷移の数理的な記述。並列処理やバッチ処理の自然な導入。AIモデルとの構造的な共通性の理解。
シミュレーションで実物を扱わなくても仕事ができる環境を目指す。つまり家に引きこもって外に出なくてもOKな世界。
MATLAB,Python,Scilab,Julia比較 その74【PID制御③】
PID制御の基本式を確認。 上記の積分を外側に追いやった変形式を確認。 積分を外側に追いやる方がワインドアップ対策がし易いので、こちらが使用されることが多い。
MATLAB,Python,Scilab,Julia比較 その73【PID制御②】
これまでの状態空間モデルの構成を確認。 オープンループ制御になっている。 今回の構成を確認。 PID制御でクローズループにする。 角速度ωをフィードバックすることで角速度制御をすることが分かる。
MATLAB,Python,Scilab,Julia比較 その72【PID制御①】
DCモータ状態空間モデルを制御すべくPID制御器を追加予定。 上記に至るロードマップ提示。 「PID制御器の離散化」がやや数式まみれになるためちょっと鬼門。 オイラー法による微分解法するだけなので比較的簡単にするつもり。
DCモータ状態空間モデルをJuliaでシミュレーション。 かなりMATLABと近似のコードになる。 linspaceがrangeになってるくらい。 シミュレーションも同一であり、想定通り。
【入門】状態空間モデル(DCモータ)Scilab【数値計算】
DCモータ状態空間モデルをScilabでシミュレーション。 演算自体はMATLABと同一。 差はグラフ表示の微調整のところ。 シミュレーションも同一であり、想定通り。
【入門】状態空間モデル(DCモータ)Python【数値計算】
DCモータ状態空間モデルをPython(Numpy)でシミュレーション。 流れとしてはMATLABと一緒。 状態空間モデルの演算用関数が変化しない特徴も一緒。 シミュレーションも同一であり、想定通り。
【入門】状態空間モデル(DCモータ)MATLAB【数値計算】
DCモータ状態空間モデルをMATLABでシミュレーション。 状態空間モデルを演算する関数自体はそのまま使い回し。 シミュレーションとしては想定通りの結果。
MATLAB,Python,Scilab,Julia比較 その71【状態空間モデル㉙】
DCモータ状態空間モデルをJuliaでシミュレーション。 かなりMATLABと近似のコードになる。 linspaceがrangeになってるくらい。 シミュレーションも同一であり、想定通り。
MATLAB,Python,Scilab,Julia比較 その70【状態空間モデル㉘】
DCモータ状態空間モデルをScilabでシミュレーション。 演算自体はMATLABと同一。 差はグラフ表示の微調整のところ。 シミュレーションも同一であり、想定通り。
MATLAB,Python,Scilab,Julia比較 その69【状態空間モデル㉗】
DCモータ状態空間モデルをPython(Numpy)でシミュレーション。 流れとしてはMATLABと一緒。 状態空間モデルの演算用関数が変化しない特徴も一緒。 シミュレーションも同一であり、想定通り。
MATLAB,Python,Scilab,Julia比較 その68【状態空間モデル㉖】
DCモータ状態空間モデルをMATLABでシミュレーション。 状態空間モデルを演算する関数自体はそのまま使い回し。 シミュレーションとしては想定通りの結果。
DCモータ状態空間モデルを導出するため以下を実施。 状態量の定義。 各種微分方程式。 微分方程式の変形。 状態方程式の作成。 出力方程式の作成。 確からしさはシミュレーションで確認。
MATLAB,Python,Scilab,Julia比較 その67【状態空間モデル㉕】
出力方程式を導出。 基本は、出力させたい項を出力行列で指定するだけ。 実験段階では全状態を見たいことが多いので全部出力指定にすることが多い。 各種行列を列挙。 シミュレーションしないと確からしさはわからないが、以前のシミュレーションコード使い回しでいけそう。 これが状態空間モデルの良いところ。
MATLAB,Python,Scilab,Julia比較 その66【状態空間モデル㉔】
状態量と各種微分方程式を再掲。 上記の情報から状態方程式を組み上げた。 表現がベクトル行列になっただけで、導出した微分方程式と一緒。 状態空間モデルも見慣れてしまえばそれほど不可思議なものではない。
MATLAB,Python,Scilab,Julia比較 その65【状態空間モデル㉓】
キルヒホッフの第2法則に則って電圧導出式を合体さえた。 単純に加算。 しかし、今回は逆起電力なので、結果的には引き算にはなる。 電流から電圧を求める式に変形。 電流が1階微分されているが、元々電流の1回微分が欲しいのでちょうど良い。
MATLAB,Python,Scilab,Julia比較 その64【状態空間モデル㉒】
各種必要な微分方程式を特定 角度→角速度、電流→角速度、を特定。 電圧→電流はオームの法則とキルヒホッフの第2法則の組み合わせで導出する。 とりあえず、電気回路として見た場合と、逆起電力の部分を特定。 次回これらを合体させる予定。
MATLAB,Python,Scilab,Julia比較 その63【状態空間モデル㉑】
状態空間モデルでもうちょっと複雑なものを取り扱う。 とりあえずDCモータを採用。 導出の流れは運動方程式の時と一緒。 まずは状態量を特定。 状態量の特定は入力から期待する出力に至るために必要なパラメータをイメージすると良い。
MATLAB、Python、Scilab、Julia比較ページはこちらはじめにの、MATLAB,Python,Scilab,Julia比較 その62【状態空間モデル⑳】を書き直したもの。ニュートンの運動方程式を状態空間モデルを離散化したもの
Juliaでベクトル、行列演算による状態空間モデルの演算実施。 MATLABとほぼ同一。 添え字、ドット演算子に違いあり。 シミュレーション結果も想定通り。
【入門】状態空間モデルで微分解決(Scilab)【数値計算】
Scilabでベクトル、行列演算による状態空間モデルの演算実施。 MATLABと同一。 グラフ表示の部分に差異があるだけ。 シミュレーション結果も想定通り。
【入門】状態空間モデルで微分解決(Python)【数値計算】
Python(Numpy)でベクトル、行列演算による状態空間モデルの演算実施。 流れとしてはMATLABと同一。 内積の演算子が「@」な点に注意。 シミュレーション結果も想定通り。
【入門】状態空間モデルで微分解決(MATLAB)【数値計算】
MATLABでベクトル、行列演算による状態空間モデルの演算実施。 導出した数式のまんまでコードが組める。 このルールに即していれば、さまざまな振る舞いを規定できる。 シミュレーション結果も想定通り。
MATLAB,Python,Scilab,Julia比較 その62【状態空間モデル⑳】
Cコードによるベクトル、行列演算による状態空間モデルの演算実施。 MATLAB Coderで出力。 シミュレーション結果も想定通り。 コード自体は複雑になるが、多変量の微分方程式になった際に効果は大きくなる。
MATLAB,Python,Scilab,Julia比較 その61【状態空間モデル⑲】
Juliaでベクトル、行列演算による状態空間モデルの演算実施。 MATLABとほぼ同一。 添え字、ドット演算子に違いあり。 シミュレーション結果も想定通り。
MATLAB,Python,Scilab,Julia比較 その60【状態空間モデル⑱】
Scilabでベクトル、行列演算による状態空間モデルの演算実施。 MATLABと同一。 グラフ表示の部分に差異があるだけ。 シミュレーション結果も想定通り。
MATLAB,Python,Scilab,Julia比較 その59【状態空間モデル⑰】
Python(Numpy)でベクトル、行列演算による状態空間モデルの演算実施。 流れとしてはMATLABと同一。 内積の演算子が「@」な点に注意。 シミュレーション結果も想定通り。
MATLAB,Python,Scilab,Julia比較 その58【状態空間モデル⑯】
MATLABでベクトル、行列演算による状態空間モデルの演算実施。 導出した数式のまんまでコードが組める。 このルールに即していれば、さまざまな振る舞いを規定できる。 シミュレーション結果も想定通り。
状態空間モデルの状態方程式と出力方程式の微分解決を実施。 基本的には状態方程式側の微分解決をし、その結果を出力方程式に代入する。 MATLAB、Python、Scilab、Juliaで上記をプログラムとして実装予定なので、よくわからん人は参照すべし。
MATLAB,Python,Scilab,Julia比較 その57【状態空間モデル⑮】
出力方程式の微分解決を実施。 とはいっても、出力方程式側には微分方程式は居ないのでxを代入しただけ。 これで、状態空間モデルのままで演算できる状態になったと言える。 しかし、これでもプログラム化のイメージは湧きにくい。 よって、次回から各ツール、各言語で書くとどうなるかを確認。
MATLAB,Python,Scilab,Julia比較 その56【状態空間モデル⑭】
状態空間モデルのまま微分解決可能なはず。 まずは状態方程式の微分解決を実施。 両辺を積分して、その後にオイラー法で微分解決。 とりえずはオイラー法でも精度が十分なことは多い。
状態空間モデルを使用せず、微分方程式のままシミュレーションを試みる。 Simulinkがあれば、ブロック図のままでもシミュレーションできるが…。 その後、ブロック図を離散化。 この段階でオートコード生成したりもする。 漸化式導出。 Cコード化とシミュレーション実施。 もっとも原始的なモデルベース開発?
「ブログリーダー」を活用して、KEIさんをフォローしませんか?
ソフトウェア設計における因果関係の明確化。条件分岐や状態遷移の数理的な記述。並列処理やバッチ処理の自然な導入。AIモデルとの構造的な共通性の理解。
exoファイルを使えば、立ち絵の設定をテンプレ化して何度でも使い回せる。キャラごと・表情ごとのexoパターンを作っておけば、配置も口パクも一瞬。拡張編集にドラッグ&ドロップするだけで、作業時間が爆速短縮。
G検定まとめ記事はこちらはじめに結構昔にG検定向けの動画で、「JDLAジェネラリスト検定(G検定)さっくり対策(究極カンペの作り方)カンペを見なくても問題が解ける自分の作り方。」というのを公開しているのだが、これに対しての問い合わせがちょく...
動画作成関連のバックナンバー用ページ。立ち絵を作ったり、動画作ったり、アイキャッチ画像作ったりなどを掲載していく。
画像認識の全体像を因果関係図で整理し、AlexNetを起点に各モデルの進化をたどる。一般物体認識から物体検出・セグメンテーション・姿勢推定まで、各カテゴリの代表モデルと技術を解説。モデル同士の構造的なつながりや技術的背景を踏まえ、因果関係をもとに体系的に理解を深めていく。
究極カンペの作り方についての問い合わせが増えている。G検定の評判を確認し、ネガティブな意見を問題提起として捉える。勉強のステージを定義し、語彙力と因果関係の把握が重要であることを説明。
フーリエ変換には角周波数を扱うものと周波数を扱うものがある。角周波数と周波数の間には角度と1回転という差があるのみ。よって、周波数に2πをかければ角周波数となる。
MATLAB,Python,Scilab,Julia比較するシリーズの第4章。第4章では分類問題で最終的にはニューラルネットワークや最適化アルゴリズムの話だった。第5章はフーリエ解析学から高速フーリエの話がメインとなる。
立ち絵の配置: PSDファイルをAviUtlに配置し、画面サイズやフレームレートを設定。のっぺらぼう化: 目と口を消して、アニメーション効果を追加。アニメーション効果: 目パチと口パクの設定を行い、リップシンクを調整。
フーリエ変換を定義。フーリエの積分公式の一部を抜き出す。逆フーリエ変換を定義。フーリエの積分公式にフーリエ変換を代入するだけ。
Δωで刻みにしたので、極限を利用して連続系へ。数式上は連続ではあるが、一般的な表現ではない。区分求積法とリーマン積分について。フーリエの積分公式を導出した。
VOICEVOXとAivisSpeechキャラと一緒に!AviUtlを使った動画作成 バックナンバーはじめに以前、AivisSpeechのAnneliというキャラの立ち絵を作成した。さらにそこに加えて、AivisSpeechのアイコン画像を...
PSDToolKitプラグインの導入の仕方を説明。PSDファイルを探してGIMPで内容を確認。GIMPで瞬き用、口パク用のレイヤー編集。
フーリエに積分公式は複素フーリエ級数と複素フーリエ係数から導出する。周期2Lの波の数を示すnを周期2πに於ける波の数である角周波数ωに変換。角周波数ωの刻みであるΔωについて説明。Δωを定義することで、離散的な係数算出が連続的な角周波数算出に近づけていっている。
区分求積法とリーマン積分について。離散と連続の分け目。フーリエの積分公式を導出した。演算したはずなのに変化しない。つまり変換、逆変換が成立することを示している。
Δωで刻みにしたので、極限を利用して連続系へ。数式上は連続ではあるが、一般的な表現ではない。よって、一般的な表現に書き換える必要がある。
角周波数ωの刻みであるΔωについて説明。Δωを定義することで、離散的な係数算出が連続的な角周波数算出に近づけていっている。
周期2Lの波の数を示すnを周期2πに於ける波の数である角周波数ωに変換。ω=nπ/Lを使用して変換するだけ。これにより少し数式がシンプルになった。
VOICEVOXとAivisSpeechキャラと一緒に!AviUtlを使った動画作成 バックナンバーはじめに以前、AivisSpeechのAnneliというキャラの立ち絵を作成した。ほぼ独自に作成したが、Anneliの画像自体はAivisS...
フーリエに積分公式は複素フーリエ級数と複素フーリエ係数から導出する。変換を想定した式に変換。複素指数関数との積と積分、総和を経由すると元に関数に戻るというイメージが重要。
ニューラルネットワークの最適化アルゴリズムAdamをJuliaにて確認。 学習率を0.001にしている都合、収束までは時間がかかる。 勾配降下法、モーメンタムでは見れなかった分類パターンが拾えた。
ニューラルネットワークの最適化アルゴリズムAdamをScilabにて確認。 学習率を0.001にしている都合、収束までは時間がかかる。 勾配降下法、モーメンタムでは見れなかった分類パターンが拾えた。
ニューラルネットワークの最適化アルゴリズムAdamをPythonにて確認。 学習率を0.001にしている都合、収束までは時間がかかる。 勾配降下法、モーメンタムでは見れなかった分類パターンが拾えた。
ニューラルネットワークの最適化アルゴリズムAdamをMATLABにて確認。 学習率を0.001にしている都合、収束までは時間がかかる。 勾配降下法、モーメンタムでは見れなかった分類パターンが拾えた。
各最適化アルゴリズムの依存関係を記載。 1次の勾配で勢いをつけて、2次の勾配で抑制するというのが全体を通しての共通点。 Adamの更新式を実現するためのプログラムフローを記載。 学習率は0.001とかなり小さめの値に設定。 これにより収束は遅くなる。 かわりに特殊な最適解が得られるのでそれを確認する。
AdaDeltaについて説明。 RMSpropの拡張版に当たる。 最適化アルゴリズムAdamについて説明。 モーメンタムとRMSpropの合わせ技。 1次の勾配と、2次の勾配の指数移動平均を使用する。
もう一個試す予定の最適化アルゴリズムAdamへ至る系譜を説明予定。 AdaGradについて説明。 更新式をモーメンタムと比較。 RMSpropについて説明。 AdaGradの完了版であるため、AdaGradと更新式を比較。
Adamの更新式を実現するためのプログラムフローを記載。 モーメンタムの部分をAdamに差し替えただけ。 学習率は0.001とかなり小さめの値に設定。 これにより収束は遅くなる。 かわりに特殊な最適解が得られるのでそれを確認する。
各最適化アルゴリズムの依存関係を記載。 1次の勾配で勢いをつけて、2次の勾配で抑制するというのが全体を通しての共通点。 Adamが1次の勾配と2次の勾配を合わせたアルゴリズムとなる。
最適化アルゴリズムAdamについて説明。 モーメンタムとRMSpropの合わせ技。 1次の勾配と、2次の勾配の指数移動平均を使用する。
AdaDeltaについて説明。 RMSpropの拡張版に当たる。 学習率というハイパーパラメータ無しで動作する。 最終的な学習率は1近傍になるため振動しやすいらしい。
RMSpropについて説明。 AdaGradの完了版であるため、AdaGradと更新式を比較。 AdaGradでは2次の勾配の累積だったものが、2次の勾配の指数移動平均に。 これにより、極小値近辺やプラトーになっても更新を続けられる。
AdaGradについて説明。 更新式をモーメンタムと比較。 更新幅は、最初は大きく、徐々に小さくなり、最終的には学習が進まなくなる欠点を抱えている。
もう一個試す予定の最適化アルゴリズムへ至る系譜を説明予定。 プログラム化して試すのはAdamだが、それに至るアルゴリズムを数式レベルで確認。 Adam以降の最適化アルゴリズムもあるが、基本はAdamベースでクリッピングが入ってる感じ。
最適化アルゴリズムを通常の勾配降下法からモーメンタムに変えた際の差分を確認。 モーメンタムの方が学習の収束が早い。 勾配降下法で500エポックのところ100エポック。 モーメンタムの場合、初期のパラメータ移動が大き目。 これにより、大域最適化を見つける可能性が高くなる。
最適化アルゴリズム モーメンタムを用いて分類の学習をJuliaで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をScilabで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をPythonで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をMATLABで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズムを通常の勾配降下法からモーメンタムに変えた際の差分を確認。 モーメンタムの方が学習の収束が早い。 勾配降下法で500エポックのところ100エポック。 モーメンタムの場合、初期のパラメータ移動が大き目。 これにより、大域最適化を見つける可能性が高くなる。