ソフトウェア設計における因果関係の明確化。条件分岐や状態遷移の数理的な記述。並列処理やバッチ処理の自然な導入。AIモデルとの構造的な共通性の理解。
シミュレーションで実物を扱わなくても仕事ができる環境を目指す。つまり家に引きこもって外に出なくてもOKな世界。
総和、平均、分散、共分散を元に1次関数最小二乗法の係数算出が可能。 ただし、各数式の変形が必要なため、変形式を導出。 係数b(切片)を求めたあとに係数a(傾き)を求める。 一般的な連立方程式の解き方と一緒。
MATLAB,Python,Scilab,Julia比較 第2章 その22【最小二乗法㉑】
平均、平均の変形、分散の変形、共分散の変形を用いて係数aを求めた。 共分散、分散の計算式を元に図解すると四角形の面積で表現できる。 x,y方向の差の積による四角形、x方向の差の二乗による四角形の比なので、傾きを求めるのと同一となる。
MATLAB,Python,Scilab,Julia比較 第2章 その21【最小二乗法⑳】
いままでの導出した変形式と一次関数最小二乗法の連立方程式を再掲。 最小二乗法の連立方程式の片方からbを算出。 aが不明なため、このままではbも不明だが、もう片方の式のbに代入すればaが求まる。 aが求まれば、bも求まるはず。
MATLAB,Python,Scilab,Julia比較 第2章 その20【最小二乗法⑲】
共分散について簡単に説明。 2種類のデータの相関性を評価できる。 相関性について簡単に説明。 正の相関、負の相関。 強い相関、弱い相関。 共分散の式を変形した。
MATLAB,Python,Scilab,Julia比較 第2章 その19【最小二乗法⑱】
分散の定義及び変形式の確認。 複雑な変形を経た上でシンプルな変形式になる。 展開のルールと、分配のルールが使える。 Excelの表をイメージすると分かりやすいかも?
MATLAB,Python,Scilab,Julia比較 第2章 その18【最小二乗法⑰】
総和の定義を確認。 単に足すだけ。 係数×要素数をΣを使って表現するパターンもある。 平均値の定義と変形。 総和を要素数でわればOK。 要素数を右辺から左辺に持ってきた変形式が重要。
MATLAB,Python,Scilab,Julia比較 第2章 その17【最小二乗法⑯】
1次関数最小二乗法の途中過程の連立方程式を再確認。 平均値、分散、共分散の関連性の雰囲気で把握。 これを仮説としていろいろ確認していく。
MATLAB,Python,Scilab,Julia比較 第2章 その16【最小二乗法⑮】
1次関数最小二乗法の別の算出方法がある。 平均、分散、共分散を利用したもの。 上記の内容を一個ずつ説明していく予定。
1次関数最小二乗法の係数算出の式を元にJuliaで実装。 fit関数と同じと解釈できる結果が得られた。 純粋なベクトル、行列の演算に関してはMATLABとほぼ同じ書き方になる。
1次関数最小二乗法の係数算出の式を元にScilabで実装。 lsq関数と同じと解釈できる結果が得られた。 純粋なベクトル、行列の演算に関してはMATLABと同じ書き方になる。
1次関数最小二乗法の係数算出の式を元にPython(Numpy)で実装。 np.polyfitと同じと解釈できる結果が得られた。
1次関数最小二乗法の係数算出の式を元にMATLABで実装。 polyfitと同じと解釈できる結果が得られた。
MATLAB,Python,Scilab,Julia比較 第2章 その15【最小二乗法⑭】
1次関数最小二乗法の係数算出の式を元にJuliaで実装。 fit関数と同じと解釈できる結果が得られた。 純粋なベクトル、行列の演算に関してはMATLABとほぼ同じ書き方になる。
MATLAB,Python,Scilab,Julia比較 第2章 その14【最小二乗法⑬】
1次関数最小二乗法の係数算出の式を元にScilabで実装。 lsq関数と同じと解釈できる結果が得られた。 純粋なベクトル、行列の演算に関してはMATLABと同じ書き方になる。
MATLAB,Python,Scilab,Julia比較 第2章 その13【最小二乗法⑫】
1次関数最小二乗法の係数算出の式を元にPython(Numpy)で実装。 np.polyfitと同じと解釈できる結果が得られた。
MATLAB,Python,Scilab,Julia比較 第2章 その12【最小二乗法⑪】
1次関数最小二乗法の係数算出の式を元にMATLABで実装。 polyfitと同じと解釈できる結果が得られた。
Juliaにて1次関数の最小二乗法を実施。 Polynomialsパッケージのfit関数を使用。 他のツール、言語と異なり、係数ではなく、関数が取得される。 配列としてアクセスすれば、係数単体の値と取得できる。
Scilabによる1次関数の最小二乗法を実施。 MATLABと一緒と思いきや、実はコンセプトレベルで違う。 正規方程式の仕様が丸見えになってるイメージ。 正規方程式については追々説明していく予定。
Pythonによる最小二乗法はNumpyのpolyfitで実施可能。 実際にコードを作成し、動作させてみた。 ほぼ同一の係数が算出で来た。 (表示精度の都合、見た目上は違う値にはなってる。)
各種ツール、言語を使うと最小二乗法が一撃で解ける。 ライブラリ的な機能を使うことになる。 後日、ライブラリ未使用もやってみる予定。 今回はMATLABのpolyfitを使って最小二乗法を実施。
MATLAB,Python,Scilab,Julia比較 第2章 その11【最小二乗法⑩】
Juliaにて1次関数の最小二乗法を実施。 Polynomialsパッケージのfit関数を使用。 他のツール、言語と異なり、係数ではなく、関数が取得される。 配列としてアクセスすれば、係数単体の値と取得できる。
MATLAB,Python,Scilab,Julia比較 第2章 その10【最小二乗法⑨】
Scilabによる1次関数の最小二乗法を実施。 MATLABと一緒と思いきや、実はコンセプトレベルで違う。 正規方程式の仕様が丸見えになってるイメージ。 正規方程式については追々説明していく予定。
MATLAB,Python,Scilab,Julia比較 第2章 その9【最小二乗法⑧】
Pythonによる最小二乗法はNumpyのpolyfitで実施可能。 実際にコードを作成し、動作させてみた。 ほぼ同一の係数が算出で来た。 (表示精度の都合、見た目上は違う値にはなってる。)
MATLAB,Python,Scilab,Julia比較 第2章 その8【最小二乗法⑦】
各種ツール、言語を使うと最小二乗法が一撃で解ける。 ライブラリ的な機能を使うことになる。 後日、ライブラリ未使用もやってみる予定。 今回はMATLABのpolyfitを使って最小二乗法を実施。
最小二乗法の初歩として1次関数の最小二乗法を解説。 誤差関数を特定し最小化したものが求めたい線となる。 最小化方法は以下 総当たり(現実的ではない) 偏微分を使う 連立方程式の形にできれば行列で表現でき逆行列が利用できる。
MATLAB,Python,Scilab,Julia比較 第2章 その7【最小二乗法⑥】
誤差関数の偏導関数を連立方程式に。 連立方程式になったので、行列形式に表現を変えらえる。 行列形式で逆行列を解決されるために2x2の逆行列の公式を使用。 逆行列を扱えない言語の場合は、この公式を使用して逆行列を解決する必要がある。
MATLAB,Python,Scilab,Julia比較 第2章 その6【最小二乗法⑤】
1次関数に於ける最小二乗法の誤差関数の偏導関数を求めた。 項数が多く、ややこしい部分はあるが、一個一個はシンプル。 これをMATLAB等で簡単に演算させるためにベクトル、行列の形式に変形する必要がある。
MATLAB,Python,Scilab,Julia比較 第2章 その5【最小二乗法④】
偏導関数の公式の前に導関数の公式を確認。 偏導関数の公式も基本は導関数の公式と一緒。 偏微分する軸以外の変数を定数として扱う点が異なる。 Σが数式に紛れても分解すれば似たようなやり方になる。
MATLAB,Python,Scilab,Julia比較 第2章 その4【最小二乗法③】
誤差関数の最小値は偏微分を使用すると求まるはず。 a,bを振ったい場合の誤差関数の値は2次関数的になるので、極値は必ず極小値になる。 この極小値になるa,bを求めたい。
MATLAB,Python,Scilab,Julia比較 第2章 その3【最小二乗法②】
誤差関数の最小値を求める方法として総当たりがある。 しかし、時間がかかったり、精度の設定の適切性が問えないなどの問題があり現実的な手法とは言い難い。 誤差関数の最小値を求めるには偏微分を使用するのが王道。 偏微分は「変な微分」ではない。 偏微分自体は複雑なものではなく、複雑なものをシンプルに扱うためのもの。
MATLAB,Python,Scilab,Julia比較 第2章 その2【最小二乗法①】
最もシンプルな回帰分析である1次関数の最小二乗法の解説開始。 最小二乗法の理屈は「誤差の二乗の和が最小になる線」を求める。 誤差が最小になる関数を誤差関数Lとして定義。 1次関数に於いて最小になる誤差関数を求めた。 後々、シンプルな式になる予定。
「ブログリーダー」を活用して、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だけで出てくる分類結果を確認。 四角形で分類する理想的な形状。 この分類結果になる場合は、誤差関数の値が一気に跳ね上がる時。 これにより大域最適解を引き当てやすくなる。
ニューラルネットワークの最適化アルゴリズム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で実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。