Pythonで動かして学ぶ!あたらしい線形代数の教科書
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
分類問題
- 本シリーズは分類問題を扱っていく予定。
- 機械学習のカテゴリわけを簡単に説明。
- 分類問題について簡単に説明。
- 分類手法について列挙。
- この中のパーセプトロンをベースに話を進める。
形式ニューロン
- 形式ニューロンを把握するためのロードマップを提示。
- ヘヴィサイド関数、形式ニューロン、誤差関数、決定境界直線、総当たり法について解説。
- 実際のプログラムのフローを記載。
MATLAB
- 形式ニューロンをMATLABで実現。
- ANDの真理値表と同じ結果が得らえれた。
- しかし、決定境界線はギリギリな感じ。
Python
- 形式ニューロンをPython(NumPy)で実現。
- ANDの真理値表と同じ結果が得らえれた。
- そして、決定境界線はギリギリな感じはMATLABのときと一緒。
Scilab
- 形式ニューロンをScilabで実現。
- ANDの真理値表と同じ結果が得らえれた。
- そして、決定境界線はギリギリな感じはMATLABのときと一緒。
Julia
- 形式ニューロンをJuliaで実現。
- ANDの真理値表と同じ結果が得らえれた。
- コードレベルでMATLABと近似。
決定境界直線の安定化
- 形式ニューロンのプログラムでは決定境界直線がギリギリのラインに来ていたで、どうあるべきか。について説明。
- 決定境界直線をいい感じのところに持っていくにはヘヴィサイド関数を差し替える必要がある。
- ヘヴィサイド関数の原点近辺に傾斜を付けたカスタムヘヴィサイド関数(造語)が良さげ。
MATLAB
- 形式ニューロンの活性化関数をカスタムヘヴィサイド(造語)関数にしたものをMATLABで作成。
- 狙い通りの位置に決定境界直線が移動。
- コードはヘヴィサイド関数をカスタムヘヴィサイド関数に変えただけ。
Python
- 形式ニューロンの活性化関数をカスタムヘヴィサイド(造語)関数にしたものをPython(NumPy)で作成。
- おおよそMATLABと同じ結果に。
- 毎度おなじみの表示上の誤差は出る。
Scilab
- 形式ニューロンの活性化関数をカスタムヘヴィサイド(造語)関数にしたものをScilabで作成。
- おおよそMATLABと同じコード。
- 毎度おなじみのグラフ表示部分に差が出る。
Julia
- 形式ニューロンの活性化関数をカスタムヘヴィサイド(造語)関数にしたものをJuliaで作成。
- 例に漏れずMATLABコードのコピペがベース。
シグモイドによる決定境界安定化
- 決定境界直線の一般的な安定化方法がある。
- シグモイド関数を使用する方法。
- シグモイド関数の定義について説明。
- カスタムヘヴィサイドとシグモイドの比較。
- 総当たり法では効能の差は出ないが、誤差逆伝播法を使い始めるとシグモイドじゃないと都合が悪い。
MATLAB
- 活性化関数をシグモイド関数にした形式ニューロンをMATLABで実現。
- 結果はカスタムヘヴィサイドの時と一緒。
Python
- 活性化関数をシグモイド関数にした形式ニューロンをPython(NumPy)で実現。
- 結果はカスタムヘヴィサイドの時と一緒。
Scilab
- 活性化関数をシグモイド関数にした形式ニューロンをScilabで実現。
- 結果はカスタムヘヴィサイドの時と一緒。
Julia
- 活性化関数をシグモイド関数にした形式ニューロンをJuliaで実現。
- 結果はカスタムヘヴィサイドの時と一緒。
連鎖律の前準備
- 最適化アルゴリズムを使用するには連鎖律が必要。
- 連鎖律を把握するための知識を列挙。
- まずは逆数の微分公式。
- 積の微分公式を導出。
- 商の微分方式の話。
- 逆数の微分公式と積の微分公式の合わせ技で導出。
- いままでの公式達を再掲。
- 商の微分公式を使ってシグモイド関数の導関数を求めた。
- シグモイド関数、シグモイド関数の導関数の再掲と、シグモイド関数のオイラー法による微分の数式を確認する予定。
MATLAB
- シグモイド関数、シグモイド関数の導関数、シグモイド関数のオイラー法での微分をMATLABで算出。
- グラフで比較し、導出した導関数は正しいと言える結果となった。
Python
- シグモイド関数、シグモイド関数の導関数、シグモイド関数のオイラー法での微分をPythonで算出。
- グラフで比較し、導出した導関数は正しいと言える結果となった。
Scilab
- シグモイド関数、シグモイド関数の導関数、シグモイド関数のオイラー法での微分をScilabで算出。
- グラフで比較し、導出した導関数は正しいと言える結果となった。
Julia
- シグモイド関数、シグモイド関数の導関数、シグモイド関数のオイラー法での微分をJuliaで算出。
- グラフで比較し、導出した導関数は正しいと言える結果となった。
多変量関数の連鎖律
- 多変数関数の連鎖律に突入したが、これを理解するのに必要な知識があるため、それらを列挙。
- 合成関数について説明。
- 合計関数の微分(連鎖律)について説明。
- 合成関数の微分(連鎖律)の証明を実施。
- 多変数関数の連鎖律について説明。
- ニューラルネットワークを想定した場合の多変量関数の連鎖律について説明。
- ニューラルネットワークの学習を想定した場合、暗黙的に追加される関数として入力群がある。
勾配降下法
- 勾配降下法に概念レベルの説明。
- 勾配降下法をプログラム的に確認する方法としてニューラルネットワークではなく、任意の関数に試す方法がある。
- 勾配降下法プログラムのフローで分かりにくいところを説明。
MATLAB
- 勾配降下法の実験をMATLABで実施。
- 予想通り局所最適解に陥った。
- 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。
- モーメンタム、AdaGrad、Adamなどなど。
Python
- 勾配降下法の実験をPythonで実施。
- 予想通り局所最適解に陥った。
- 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。
- モーメンタム、AdaGrad、Adamなどなど。
Scilab
- 勾配降下法の実験をScilabで実施。
- 予想通り局所最適解に陥った。
- 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。
- モーメンタム、AdaGrad、Adamなどなど。
Julia
- 勾配降下法の実験をScilabで実施。
- 予想通り局所最適解に陥った。
- 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。
- モーメンタム、AdaGrad、Adamなどなど。
逆伝播
- 誤差逆伝播法とか単純パーセプトロンに関連する用語を確認。
- 逆伝播を行う単純パーセプトロンの構成を確認。
- 一連の合成関数について書き出し。
- 合成関数を構成する各数式を書き出し。
- 合成関数の微分こと連鎖律について説明。
- 学習データを加味した場合の多変量関数の連鎖律について簡単に説明。
- 連鎖律に於ける誤差関数の位置づけと偏導関数を確認。
- 活性関数(シグモイド関数)のブロック図と連鎖律上の位置づけと偏導関数を確認。
- 入力層のブロック図と連鎖律上の位置づけと偏導関数を確認。
- バイアスのブロック図と連鎖律上の位置づけと偏導関数を確認。
- 全体の位置づけと各偏導関数を確認。
- 入力、出力(ラベル)が複数であるが故に連鎖律のルートが複数になる。
- 入力、出力が複数であるが故の連鎖律の事情のもう一つの考え方。
- 逆伝播の確認用プログラムのフローを記載。
MATLAB
- 逆伝播を行った際の重みの動き方を確認するプログラムをMATLABで作成。
- おおよそ狙ったところに収束。
Python
- 逆伝播を行った際の重みの動き方を確認するプログラムをPythonで作成。
- おおよそ狙ったところに収束。
Scilab
- 逆伝播を行った際の重みの動き方を確認するプログラムをScilabで作成。
- おおよそ狙ったところに収束。
Julia
- 逆伝播を行った際の重みの動き方を確認するプログラムをJuiaで作成。
- おおよそ狙ったところに収束。
まとめ
MATLAB,Python,Scilab,Juliaどれもとても優秀な電卓であり、シミュレータであり、データビューアとなる。
Pythonをガッツリ学習したい場合はオンライン学習サービスなどもあります。
オンラインPython学習サービス「PyQ(パイキュー)」公式ページ
ポイント
- 環境構築不要
- ブラウザだけで学習を始められる。
- 申し込みから4ステップで登録を完了
- 申し込み完了待ちとかない。すぐ始められる。
- 1,000問以上の実践的な課題がある。
Pythonで動かして学ぶ!あたらしい線形代数の教科書
https://amzn.to/3OE5bVp
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
https://amzn.to/3OBiaax
ゼロからはじめるPID制御
https://amzn.to/3SvzuyR
OpenCVによる画像処理入門
https://amzn.to/498ZUgK
恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]
https://amzn.to/3STAe2i
Pythonによる制御工学入門
https://amzn.to/3uskuK5
理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析
https://amzn.to/3UAunQK
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/
コメント