全体の位置づけと各偏導関数を確認。 入力、出力(ラベル)が複数であるが故に連鎖律のルートが複数になる。 入力、出力が複数であるが故の連鎖律の事情のもう一つの考え方。 逆伝播の確認用プログラムのフローを記載。
シミュレーションで実物を扱わなくても仕事ができる環境を目指す。つまり家に引きこもって外に出なくてもOKな世界。
MATLAB,Python,Scilab,Julia比較 その55【状態空間モデル⑬】
バックナンバーはこちら。はじめに前回から、運動方程式を元に、ブロック図を作成上記ブロック図の離散化上記を元に漸化式導出漸化式まで出てるとCコード化が可能になる。このCコードを今回確認する。登場人物博識フクロウのフクさんイラストACにて公開の
MATLAB,Python,Scilab,Julia比較 その54【状態空間モデル⑫】
バックナンバーはこちら。はじめに前回から、状態空間モデルの掘り下げの話に突入。まずは状態空間モデルを使用しないパターンをやってみる。漸化式は前回出したので、ブロック図、C言語化にチャレンジ。登場人物博識フクロウのフクさんイラストACにて公開
MATLAB,Python,Scilab,Julia比較 その53【状態空間モデル⑪】
バックナンバーはこちら。はじめに前回はまでで、各ツール、各言語による状態空間モデルのシミュレーションを実施した。シミュレーションできたので、これはこれでOKなのだが、元々、本シリーズはベクトル、行列を駆使してなんとかする動機で始まっている。
Juliaで状態空間モデルをシミュレーション。 Pythonと同じくMATLAB Control System Toolboxの仕様を踏襲したControlSystemsパッケージを使用。 結局はMATLAB Control System Toolboxの仕様がデファクトスタンダード感がある。
【入門】Scilab状態空間モデル(運動方程式)【数値計算】
Scilabで状態空間モデルのシミュレーションをするにはsyslinとcsim関数を使用する。 MATLABに寄せてるかと思いきや、この分野はかなり異なる仕様になっている。 今回の状態空間モデルに限定するとたまたま流れが似ていただけ。
【入門】Python状態空間モデル(運動方程式)【数値計算】
Pythonで状態空間モデルを扱うには、controlライブラリのmatlabモジュールが必要。 仕様的にはMATLABのControl System Toolboxを踏襲している。 ss関数に各行列を渡し、システムオブジェクトを取得。 lsimに入力のstep信号をシステムオブジェクトを渡してシミュレーション。
MATLAB,Python,Scilab,Julia比較 その52【状態空間モデル⑩】
Juliaで状態空間モデルをシミュレーション。 Pythonと同じくMATLAB Control System Toolboxの仕様を踏襲したControlSystemsパッケージを使用。 他のツール、言語と同じ結果が得られた。
MATLAB,Python,Scilab,Julia比較 その51【状態空間モデル⑨】
Scilabで状態空間モデルのシミュレーションをするにはsyslinとcsim関数を使用する。 MATLABに寄せてるかと思いきや、この分野はかなり異なる仕様になっている。 想定通りのシミュレーション結果を得られた。
MATLAB,Python,Scilab,Julia比較 その50【状態空間モデル⑧】
Pythonで状態空間モデルを扱うには、controlライブラリのmatlabモジュールが必要。 仕様的にはMATLABのControl System Toolboxを踏襲している。 ss関数に各行列を渡し、システムオブジェクトを取得。 lsimに入力のstep信号をシステムオブジェクトを渡してシミュレーション。
MATLAB,Python,Scilab,Julia比較 その49【状態空間モデル⑦】
バックナンバーはこちら。はじめに前回は、状態空間モデルをシミュレーションする上で必要な情報を整理。各ツール、各言語で実際に試してみる。※ ただし、MATLABはControl System Toolboxが手元に無いので、Simulinkの
状態空間モデルに苦手意識持ってる人向けに超シンプルな微分方程式に対して適用して見た。 ニュートンの運動方程式を採用。 状態量が求まる微分方程式を作成すると、それを状態方程式として表現できる。 参照したい状態量を出力行列で設定できる。
MATLAB,Python,Scilab,Julia比較 その48【状態空間モデル⑥】
状態空間モデルを確認するにはシミュレーションしてみるしかない。 まじめにシミュレーションしようと思うとベクトル、行列に対する微分を解決する必要がある。 (これもやる予定だが後で) 各ツール、各言語で状態空間モデルが扱えそうなので、それらで動かしてみる。 ただし、MATLABに関してはSimulinkの状態空間モデルブロックで実施予定。
MATLAB,Python,Scilab,Julia比較 その47【状態空間モデル⑤】
状態方程式、出力方程式を組み上げた。 状態方程式は前回の運動方程式から導出した微分方程式を元に作成。 出力方程式は参照したい状態量に合わせて出力行列Bを調整するのみ。
MATLAB,Python,Scilab,Julia比較 その46【状態空間モデル④】
まずは状態量を定義。 速度、距離を状態量とした。 運動方程式を紐解く。 距離、速度、加速度の関係性が微分を吸収する。 状態量の内訳である速度、距離の方程式が求まったところ。
MATLAB,Python,Scilab,Julia比較 その45【状態空間モデル③】
状態空間モデルの各要素は分かれど使い方はわからない。 使い方を見てもよくわからない。 よって、超シンプルな微分方程式を対象に状態空間モデルを作ってみる。 ニュートンの運動方程式を対象とする。
MATLAB,Python,Scilab,Julia比較 その44【状態空間モデル②】
状態空間モデルの数式について説明。 方程式。 状態方程式と出力方程式。 変数。 状態量、入力量、出力量 パラメータ。 状態行列、入力行列、出力行列、直達行列。 各呼び名が揺れるのは使用する領域が広く、観点が異なるため?
MATLAB,Python,Scilab,Julia比較 その43【状態空間モデル①】
状態空間モデルの話に突入予定。 その前に微分の記法について疑問点浮上。 微分記法は以下がある。 ライプニッツ記法。 ラグランジュ記法。 オイラー記法。 ニュートン記法。 状態空間モデルではニュートン記法が一般的。 暗黙的に時間微分であることがわかるため。
JuliaはPlotsかPyPlotで波形表示。 PyPlotsはmatplotlibのラッパーらしく、使い勝手が他の環境と似ている。 PyPlotsの描画パラメータは個別に指定する必要あり。 基本的にはMATLABに寄せている。
MATLAB,Python,Scilab,Julia比較 その42【波形表示方法④】
JuliaはPlotsかPyPlotで波形表示。 PyPlotsはmatplotlibのラッパーらしく、使い勝手が他の環境と似ている。 PyPlotsの描画パラメータは個別に指定する必要あり。
MATLAB,Python,Scilab,Julia比較 その41【波形表示方法③】
Scilabの波形表示はMATLABと同一。 特殊なグラフ表示は乖離する可能性が高いが、そこまで複雑使い方はしない予定。
MATLAB,Python,Scilab,Julia比較 その40【波形表示方法②】
pythonで波形表示する場合はmatplotlibを使用する。 matplotlibはMATLAB仕様に合わせこんでくれている。 マーカに関しては、MATLABにはない指定子もある。
MATLAB,Python,Scilab,Julia比較 その39【波形表示方法①】
ユーザ関数定義に引き続き、波形表示も人間向け機能。 MATLABによる波形表示を確認。 plotで表示。 hold onで同一グラフに表示させる設定が可能。 subplotでグラフ分割。 ラインスタイル、色、マーカの指定が可能。
雰囲気はPythonに似ている。 関数を定義した段階でJITコンパイルが走る。 対話モード、スクリプトで定義する方法があるが、考え方は一緒。
MATLAB,Python,Scilab,Julia比較 その38【ユーザ関数④】
Juliaの場合の場合のユーザ関数作成方法について実施。 基本的にはPythonに似ている。 2変数以上を戻す場合は、明示的にreturn文を使用する必要がある。 他のファイルで関数を定義している場合はinclude文を使用する。 C言語のincludeに似ている。
MATLAB,Python,Scilab,Julia比較 その37【ユーザ関数③】
Scilabの場合のユーザ関数作成方法について。 MATLABと似ていると思いきや、全く異なる仕組みっぽい。 スクリプトに記載したとしても、明示的にワークスペースに関数を展開する必要がある。 仕組みは異なるが、関数として展開してしまえば使い方は一緒と言える。
MATLAB,Python,Scilab,Julia比較 その36【ユーザ関数②】
Pythonの場合のユーザ関数作成方法。 対話モードで作成する場合とスクリプトファイル上で作成する場合がある。 が、実際は対話モード時のルールが共通で適用されてるだけ。 他のスクリプトファイルで定義した場合はimportを使用。 エイリアスで名称変更可能。
MATLAB,Python,Scilab,Julia比較 その35【ユーザ関数①】
ベクトル、行列から離れて、少しプログラミングより話にシフト。 各ツール、各言語でユーザ関数の作成方法を確認する。 MATLABは関数名と同名のmスクリプトファイル名にする必要あり。
ほぼMATLABと一緒。 以下が異なる。 配列添え字のカッコが丸カッコじゃなくて角カッコな点。 flipdimは使えなくて、代わりにreverseという関数を使用する点。 以前はflipdimは存在していたようだが、現在では無くなってる。
MATLAB,Python,Scilab,Julia比較 その34【行列演算⑰】
Juliaで基本的な行列演算を実施。 大体MATLABと一緒だが、以下の違いがある。 配列添え字のカッコが丸カッコじゃなくて角カッコ。 flipdimは使えなくて、代わりにreverseという関数を使用する。 以前はflipdimは存在していたようだが、現在では無くなってる。
「ブログリーダー」を活用して、KEIさんをフォローしませんか?
全体の位置づけと各偏導関数を確認。 入力、出力(ラベル)が複数であるが故に連鎖律のルートが複数になる。 入力、出力が複数であるが故の連鎖律の事情のもう一つの考え方。 逆伝播の確認用プログラムのフローを記載。
連鎖律に於ける誤差関数の位置づけと偏導関数を確認。 活性関数(シグモイド関数)のブロック図と連鎖律上の位置づけと偏導関数を確認。 入力層のブロック図と連鎖律上の位置づけと偏導関数を確認。 バイアスのブロック図と連鎖律上の位置づけと偏導関数を確認。
誤差逆伝播法とか単純パーセプトロンに関連する用語を確認。 逆伝播を行う単純パーセプトロンの構成を確認。 一連の合成関数について書き出し。 合成関数を構成する各数式を書き出し。 合成関数の微分こと連鎖律について説明。 学習データを加味した場合の多変量関数の連鎖律について簡単に説明。
はじめに MATLAB,Python,Scilab,Julia比較するシリーズの第4章。 第3章では画像処理、座標変換の話がメインだった。 第4章は分類問題関連の話がメインとなる。基本的には以下の流れとなる。 形式ニューロン 決定境界線の安
逆伝播の確認用プログラムのフローを記載。 逆伝播の挙動を確認するため、重みの開始位置とバイアスは固定。 ベクトル、行列演算をプログラム都合に合わせて表現しなおし。
入力、出力が複数であるが故の連鎖律の事情のもう一つの考え方。 誤差関数は二乗和誤差関数であり、本来であればΣが含まれる。 よって、連鎖律にもΣが含まれる形を取ると前回と同一の数式が得られる。
入力、出力(ラベル)が複数であるが故に連鎖律のルートが複数になる。 上記の図示と数式を説明。
全体の位置づけ確認。 各偏導関数を再掲。 各偏導関数を連鎖律に則して結合。
バイアスのブロック図と連鎖律上の位置づけを確認。 バイアスの偏導関数を確認。 もとの式がシンプルな上、1次で係数もないので1になる。
入力層のブロック図と連鎖律上の位置づけを確認。 入力層の偏導関数を確認。 もとの式がシンプルなので偏導関数もシンプル。
活性化関数の微分について説明。 活性関数のブロック図と連鎖律上の位置づけを確認。 シグモイド関数の導関数を復習。 シグモイド関数の偏導関数を確認。
連鎖律に於ける誤差関数の位置づけを確認。 ブロック図的には一番後ろだが、連鎖律としては先頭。 誤差関数の確認。 誤差関数の偏導関数の確認。
合成関数の微分こと連鎖律について説明。 学習データを加味した場合の多変量関数の連鎖律について簡単に説明。 詳細は後日。
一連の合成関数について書き出し。 合成関数を構成する各数式を書き出し。 誤差関数、活性化関数、入力と重みの内積。
誤差逆伝播法とか単純パーセプトロンに関連する用語を確認。 様々な都合で、単純パーセプトロンに対する誤差逆伝播法を「逆伝播」と呼称することに。 逆伝播を行う単純パーセプトロンの構成を確認。 誤差関数は二乗和誤差関数を1/2にしたもの。 1/2により微分後の数式がシンプルになる。
勾配降下法の実験をScilabで実施。 予想通り局所最適解に陥った。 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。 モーメンタム、AdaGrad、Adamなどなど。
勾配降下法の実験をScilabで実施。 予想通り局所最適解に陥った。 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。 モーメンタム、AdaGrad、Adamなどなど。
勾配降下法の実験をPythonで実施。 予想通り局所最適解に陥った。 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。 モーメンタム、AdaGrad、Adamなどなど。
勾配降下法の実験をMATLABで実施。 予想通り局所最適解に陥った。 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。 モーメンタム、AdaGrad、Adamなどなど。
勾配降下法の実験をScilabで実施。 予想通り局所最適解に陥った。 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。 モーメンタム、AdaGrad、Adamなどなど。
二次形式の多項式表現と行列表現の計算をMATLABで実施。 meshgridにx軸とy軸を入力とすることで平面座標が得られる。 平面座標を元に2変数の演算を実施。 演算結果をmesh関数を使用して3Dグラフに表示。
対称行列と二次形式について説明。 二次形式は多項式表現と行列表現ができる。 行列表現ができると計算がしやすくなる。 しかし、全座標を入れるにはfor文を使用する必要がある。 for文を削除するための仕掛けを入れておいた。
二次形式の行列表現をfor文を使用せずに一括計算するための仕掛けを考える。 内積を分解してアダマール積と定数関数との内積にする。 これにより、x^Tとxの直積的な結果を抑制。
二次形式の行列表現と多項式表現の関係性を示した。 行列Aが対称行列になることを制約とすると行列表現と多項式表現に可逆性を付加することができる。 これに伴い、等しいものとして扱うことが可能となる。 実際に行列表現と多項式表現が等しいかを各ツール、各言語で確認したいが、その前にベクトル、行列のまま演算する仕掛けを考える必要がある。
二次形式について確認。 すべての候の次数が2である多項式。 二次形式を一般化して行列表現。 行列表現できた方が計算しやすい。
対称行列について説明。 対角部を中心に対象となっている正方行列。 単位行列も対称行列の一種ではある。 厳密には対称行列の一種である対角行列の一種が単位行列。 対称行列は二次形式、二次形式の微分、グラム行列で使用する予定。
1次関数最小二乗法こと単回帰分析のあとは重回帰分析、多項式回帰分析にチャレンジ。 重回帰分析、多項式回帰分析を行うには正規方程式が必要。 正規方程式を導出するまでの因果関係を図示した。
1次関数最小二乗法こと単回帰分析のあとは重回帰分析、多項式回帰分析にチャレンジ。 重回帰分析、多項式回帰分析を行うには正規方程式が必要。 正規方程式を導出するまでの因果関係を図示した。
平均分散共分散を使用した一次関数最小二乗法をJuliaで記載。 covとvarを使用する。 covは共分散を返す。 MATLABのように分散共分散行列にはなっていない。 パラメータを2列に並べて渡すと分散共分散行列を返す。
平均分散共分散を使用した一次関数最小二乗法をScilabで記載。 covとmtlb_varを使用する。 分散取得用の関数にvarianceは不偏分散しか返さない。 covは共分散だけでなく、分散共分散行列が取得される。 よって、covだけでも分散は取得可能。
平均分散共分散を使用した一次関数最小二乗法をPython(Numpy)で記載。 covとvarを使用する。 covは共分散だけでなく、分散共分散行列が取得される。 よって、covだけでも分散は取得可能。
平均分散共分散を使用した一次関数最小二乗法をMATLABで記載。 covとvarを使用する。 covは共分散だけでなく、分散共分散行列が取得される。 よって、covだけでも分散は取得可能。
平均分散共分散を使用した一次関数最小二乗法をJuliaで記載。 covとvarを使用する。 covは共分散を返す。 MATLABのように分散共分散行列にはなっていない。 パラメータを2列に並べて渡すと分散共分散行列を返す。
平均分散共分散を使用した一次関数最小二乗法をScilabで記載。 covとmtlb_varを使用する。 分散取得用の関数にvarianceは不偏分散しか返さない。 covは共分散だけでなく、分散共分散行列が取得される。 よって、covだけでも分散は取得可能。
平均分散共分散を使用した一次関数最小二乗法をPython(Numpy)で記載。 covとvarを使用する。 covは共分散だけでなく、分散共分散行列が取得される。 よって、covだけでも分散は取得可能。
平均分散共分散を使用した一次関数最小二乗法をMATLABで記載。 covとvarを使用する。 covは共分散だけでなく、分散共分散行列が取得される。 よって、covだけでも分散は取得可能。
標本分散と不偏分散について説明。 証明方法は割愛。 図を見て、不偏分散の必要性を察っするレベルで確認。 各ツール、各言語で分散を求める関数等があるが、大体が不偏分散。 オプション指定で標本分散にすることも恐らく可能。
標本分散と不偏分散について説明。 証明方法は割愛。 図を見て、不偏分散の必要性を察っするレベルで確認。 各ツール、各言語で分散を求める関数等があるが、大体が不偏分散。 オプション指定で標本分散にすることも恐らく可能。
総和、平均、分散、共分散を元に1次関数最小二乗法の係数算出が可能。 ただし、各数式の変形が必要なため、変形式を導出。 係数b(切片)を求めたあとに係数a(傾き)を求める。 一般的な連立方程式の解き方と一緒。
平均、平均の変形、分散の変形、共分散の変形を用いて係数aを求めた。 共分散、分散の計算式を元に図解すると四角形の面積で表現できる。 x,y方向の差の積による四角形、x方向の差の二乗による四角形の比なので、傾きを求めるのと同一となる。