ソフトウェア設計における因果関係の明確化。条件分岐や状態遷移の数理的な記述。並列処理やバッチ処理の自然な導入。AIモデルとの構造的な共通性の理解。
シミュレーションで実物を扱わなくても仕事ができる環境を目指す。つまり家に引きこもって外に出なくてもOKな世界。
【VTI】MATLAB、Pythonで株価予測 その39【周波数解析③】
Python(Numpy)でVTIチャートにFFT、IFFTをブチかます。 MATLABと同一の結果が得られた。 これによりMATLABとPython(Numpy)の両方で同じレベルで実験が進められる。 Numpyにcsv読み込みの機能がある。 他にも手段はあるが、今回はNumpyで実施。
【VTI】MATLAB、Pythonで株価予測 その38【周波数解析②】
FFTの出力をローテーションしている都合、サンプリング数は偶数が望ましい。 頑張って調整すれば奇数でも行けるはずだがメンドイのでやらない。 無事、VTIチャートの周波数特性及びそこからのVTIチャートへの逆変換ができた。 しかし、VTIチャートの周波数特性自体に何かしら問題が・・・。
【VTI】MATLAB、Pythonで株価予測 その37【周波数解析①】
FFT,IFFTの使い方及び、特定周波数の抽出方法が分かったところで今後の方針を考える。 とりあえずVTIチャートにFFTかけて周波数特性見て見る。 後のことは見てから考える。 大雑把すぎる方針だが、ホントやってみないとなんもわからん。
【FFT】MATLAB、Pythonで株価予測 その36【IFFT⑮】
Python(Numpy)によるバンドパスフィルタのコード作成。 上記コードを実行して見た。 MTALABと同じ結果が得られることを確認。 よって、MATLAB、Python双方でFFT、IFFTによる特性周波数の抽出が可能と言える。
【FFT】MATLAB、Pythonで株価予測 その35【IFFT⑭】
Python(Numpy)による論理インデックス検索と線形インデックス検索が可能か確認。一応、可能そう。ただし、行列に対する線形インデックス検索はちゃんと行と列を指定する必要あり。MATLABと同様にするいはrehapeでベクトルに直す必要がある。あと、MATLABは1オリジン、Pythonは0オリジンな点も注意。
【FFT】MATLAB、Pythonで株価予測 その34【IFFT⑬】
MATLABのインデックス検索には線形インデックス検索と論理インデックス検索がある。 線形インデックス検索はC言語の配列の添え字の考え方と一緒だが、添え字に設定できる値がベクトルにできる。 C言語はスカラーのみ。 論理インデックス検索は渡すベクトルの1かtrueのところだけが参照できる。 それぞれ書き換えも可能。
【FFT】MATLAB、Pythonで株価予測 その33【IFFT⑫】
MATLABで超簡易バンドパスフィルタ実施。 コード開示&結果確認。 想定通り、3Hzだけ抽出で来た。 3[Hz]と-3[Hz]以外を0にしてる部分のコードが妙。 論理インデックス検索という手法を使っている。
【FFT】MATLAB、Pythonで株価予測 その32【IFFT⑪】
Python(Numpy)でFFT出力の周波数分布をローテーションするコードを作成。 上記の動作確認。 MATLABの結果と同じく、負の周波数側に複素共役を持ってくれた。 これで超簡易バンドパスフィルタの事前準備が整った。
【FFT】MATLAB、Pythonで株価予測 その31【IFFT⑩】
Python(Numpy)によるベクトルのローテーションをお試し。 無事ローテーション可能。 Pythonはベクトルに種類がある。 ベクトル。 転置等の行列由来の演算ができない。 行ベクトル。 列ベクトル。 行列演算を意識する際はベクトル以外の定義をする必要がある。 ※ 今回は「ベクトル」でOK。
【FFT】MATLAB、Pythonで株価予測 その30【IFFT⑨】
FFT出力の周波数分布をローテーションをMATLABで実施。 複素共役が0点を中心とした線対称になるように配置。 この配置の方が確認し易さ、処理のし易さが増す想定。 よって、配置が意識できていればやらなくてもOK。 効能は実際の処理をする際に確認。
【FFT】MATLAB、Pythonで株価予測 その29【IFFT⑧】
MATLABでベクトルローテーションをさせたい場合はcircshift関数を使えばOK。 ただし、次元指定の罠がある。 デフォルト次元が列方向なので、行ベクトルに対して行うとローテーションされない。 (実際には列方向にローテーションはされてると思う) [0,3]のように列行それぞれにローテーション数を指定する。
【FFT】MATLAB、Pythonで株価予測 その28【IFFT⑦】
IFFTにも活躍してもらうため簡易的なバンドパスフィルタを実施予定。 周波数分布関数の後半に複素共役が居るため、これも同等の処置が必要。 複素共役の位置を分かりやすくするため、マイナス側に持ってくる予定。 ベクトルに対するシフト、ローテーションで対応可能。なはず。
【FFT】MATLAB、Pythonで株価予測 その27【IFFT⑥】
複数の周波数のsin波を合成したもの大してFFT&IFFT実施のPython版。 当然ではあるが、同一の結果が得られた。 加えて、入力サンプリング期間を延ばしたものも実施。 これも当然、同一の結果が得られた。 FFT,IFFTの理屈は兎も角として使い方に関してはなんとなく慣れてきたところ。
【FFT】MATLAB、Pythonで株価予測 その26【IFFT⑤】
複数の周波数のsin波を合成したもの対してFFT&IFFT実施。 波形の合成は単純に足し算するだけ。 想定通りの周波数分布になった。 試しに入力サンプリング期間を2倍に伸ばしてみた 想定通り、周波数が2倍になる分布に変化。
【FFT】MATLAB、Pythonで株価予測 その25【IFFT④】
これまでMATLABで実験してきたので、Python版コードも作成。 結果は同一と見なせる。 MATLABとPython(Numpy)のFFT、IFFTは同一の数式を元にしている。 よって、互換性ありと見なしてOKそう。 演算誤差の方が異なるが無視してもOKなレベル。
【FFT】MATLAB、Pythonで株価予測 その24【IFFT③】
引き続きsin波をFFTに入れる実験継続。 今回は入力期間を2πから4πに増やしてみた。 これにより、結果的に期間内のsin(x)の振動は増える。 よって、FFTの結果としてのsin(x)の周波数は1Hzではなく2Hzとなる。 あくまで、入力サンプリングを1周期とした周波数である点に注意。 物理的な周波数とは異なる。
【FFT】MATLAB、Pythonで株価予測 その23【IFFT②】
sin波でFFT、IFFTを実施。 パッと見ちゃんと元に戻ってるのは確認。 FFTの出力である周波数の分布は前半と後半で意味が異なる。 後半が前半の複素共役に当たり、IFFT時に虚数部を相殺する役割を追っている。 特定周波数を取り出すばあは複素共役部分も一緒に取り出す必要がある。
【FFT】MATLAB、Pythonで株価予測 その22【IFFT①】
FFT、IFFTの入出力って実は良く分かってない。 よって、自明且つシンプルな波形を入れて評価して見た方が良い。 自明且つシンプルな波形はsin波とかそれらの合成波。 実験はMATLABで実施するが、Pythonコードを起こす予定。 ぶっちゃけメンドクサイとは思ってるけど頑張ってやる。
【ETF】MATLAB、Pythonで株価予測 その21【VTI⑥】
データ整形方針。 単純に平均値を出して、各要素から平均値を引く。 バイアス除去になり、周波数0[Hz]が無くなる。 MATLABのVersionによってはcvs読み込みに難点があるので、可能な限りシンプルなデータに整形しておく。 グラフ表示してみた。 ずっと右肩上がり。 本来であれば、一回投資したら放置が正解。
【ETF】MATLAB、Pythonで株価予測 その20【VTI⑤】
チャート取得範囲は2020年10月~2021年9月とする。 直近の米国事業年度。 VTIチャート各列を確認。 各列 Open(始値) High(最高値) Low(最安値) Close(終値) Adj Close(調整後終値) Volume(売買高) Close(終値)を元に分析、予測を実施する予定。
【ETF】MATLAB、Pythonで株価予測 その19【VTI④】
VTIチャートを取得する必要がある。 各証券会社だけでなくGoogle検索もでチャート自体はすぐ見れる。 分析する上でcsv形式でチャートが公開されてるとうれしい。 Yahooファイナンスの英語サイトでcvs形式で公開されている。 この手のURLは変わる可能性が高いので、探し方の一連の操作を確認。
【ETF】MATLAB、Pythonで株価予測 その18【VTI③】
シミュレーションを恐らくやると思うので、その前提条件を揃えるため手数料とか税金について調査。 SBI証券の情報をベースに調査。 手数料。 買付手数料\0 売却手数料0.45% 税金。 譲渡所得。 合計で約20% 所得税15%。 住民税5%。 NISA枠は一旦無視する。
【ETF】MATLAB、Pythonで株価予測 その17【VTI②】
VTIについて少し掘り下げを開始。 ベンチマークは「CRSP USトータル・マーケット・インデックス」。 米国株の4000銘柄の変動。 バンガード社は他の指標を元にした商品も出している。 VTIとよく比較されるのがVOO。 VOOはS&P500という米国株500銘柄と連動。
【ETF】MATLAB、Pythonで株価予測 その16【VTI①】
やっと株の話に突入 採用する商品はVTIという米国ETF 理由としては、「外乱を可能な限り減らし、分析難易度を下げたい。」 それでも外乱は0ではないが、コロナ禍、某戦争、円安、円高など比較的分かり易いものとなる。 個別銘柄だと、その市場や競合他社動向など調べるべきことが細かくなりすぎる。
【FFTへ】MATLAB、Pythonで株価予測 その15【至る道⑬】
バタフライ演算を図示した。 演算が交差している様が蝶々のようなのでバタフライ演算と呼ばれている。 入力サンプリングの入れ替えルールはビットリバースに準じている。 これら一連の流れを「CooleyTukey型FFTアルゴリズム」と呼ぶ。 このアルゴリズムは入力サンプリングが2のべき乗であることが前提。
【FFTへ】MATLAB、Pythonで株価予測 その14【至る道⑫】
Nの回転因子にN/2の回転因子を含めることが可能 複数段の行列に分解可能。 つまり、演算を分解できる。 最終的に残る値はかなり限られる。 これを利用してバタフライ演算を行うことになる。
【FFTへ】MATLAB、Pythonで株価予測 その13【至る道⑪】
回転因子を元に行列表現してみた。 回転位置による最適化が可能。 必ず実数になる点が存在することによる最適化が可能。 対角線による最適化が可能。 ここまででもかなり便利ではあるが、さらにバタフライ演算をするための最適化もある。
【FFTへ】MATLAB、Pythonで株価予測 その12【至る道⑩】
タイトル詐欺にならないようにMATLAB、Pythonを使って各回転因子を算出して見た。 1/√2のような計算結果にはならないので1/√2=0.7071を想定した見方になる。 前回の回転因子と同一の結果が得られた。 虚数表現はMATLABはi、Pythonはjとなっている。
【FFTへ】MATLAB、Pythonで株価予測 その11【至る道⑨】
FFT、IFFTの数式上のバリエーションはDFT、IDFTと一緒。 元にしている数式自体は同一。 FFT、IFFTはバタフライ変換による高速化を行ってる点で異なるのみ。 バタフライ変換を理解するためには回転因子のイメージが重要。 オイラーの公式のおかげで複素指数関数と三角関数が紐づく。
【FFTへ】MATLAB、Pythonで株価予測 その10【至る道⑧】
離散フーリエ変換、逆離散フーリエ変換のバリエーションについて。 フーリエ変換、逆フーリエ変換の時と同じく数式対称性によるバリエーション。 1/Nをどちらによせるか、折半するか。 よって、対になってる離散フーリエ変換、逆フーリエ変換を使用する必要がある。
【FFTへ】MATLAB、Pythonで株価予測 その9【至る道⑦】
大雑把に逆離散フーリエ変換と離散フーリエ変換の導出を説明。 サンプリング都合で積分範囲をプラス側へ。 逆変換を想定した逆行列都合でサンプリング数と係数の数を合わせて正方行列が作れる状態にしておく。 逆離散フーリエ変換の行列演算形式に対してエルミート転置を利用して逆変換を求める。 これが離散フーリエ変換になる。
「ブログリーダー」を活用して、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...
フーリエに積分公式は複素フーリエ級数と複素フーリエ係数から導出する。変換を想定した式に変換。複素指数関数との積と積分、総和を経由すると元に関数に戻るというイメージが重要。
はじめに MATLAB,Python,Scilab,Julia比較するシリーズの第4章。 第3章では画像処理、座標変換の話がメインだった。 第4章は分類問題関連の話がメインとなる。基本的には以下の流れとなる。 形式ニューロン 決定境界線の安
分類問題を扱って第4章終了。 最も原始的なニューラルネットワークをやったことでディープラーニングの基礎部分は把握できたかもしれない。 次の章はこれから考える。
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で実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。