単純パーセプトロンの構造について復習。 今回扱うのは活性化関数をシグモイド関数に差し替えたもの。 逆伝播の復習。 重みとバイアスの逆伝播は途中まで一緒。 よって表現の最適化が可能。
シミュレーションで実物を扱わなくても仕事ができる環境を目指す。つまり家に引きこもって外に出なくてもOKな世界。
MATLAB,Python,Scilab,Julia比較 第4章 その65【単純パーセプトロンで分類①】
単純パーセプトロンの構造について復習。 今回扱うのは活性化関数をシグモイド関数に差し替えたもの。 逆伝播の復習。 重みとバイアスの逆伝播は途中まで一緒。 よって表現の最適化が可能。
MATLAB、Python、Scilab、Julia比較ページはこちら はじめに の、 MATLAB,Python,Scilab,Julia比較 第4章 その64【逆伝播⑮】 を書き直したもの。 単純パーセプトロンに対する逆伝播を行う。まず
逆伝播を行った際の重みの動き方を確認するプログラムをScilabで作成。 おおよそ狙ったところに収束。
逆伝播を行った際の重みの動き方を確認するプログラムをPythonで作成。 おおよそ狙ったところに収束。
逆伝播を行った際の重みの動き方を確認するプログラムをMATLABで作成。 おおよそ狙ったところに収束。
MATLAB,Python,Scilab,Julia比較 第4章【バックナンバー】
はじめに MATLAB,Python,Scilab,Julia比較するシリーズの第4章。 第3章では画像処理、座標変換の話がメインだった。 第4章は分類問題関連の話がメインとなる。基本的には以下の流れとなる。 形式ニューロン 決定境界線の安
MATLAB,Python,Scilab,Julia比較 第4章 その64【逆伝播⑮】
逆伝播を行った際の重みの動き方を確認するプログラムをJuiaで作成。 おおよそ狙ったところに収束。
MATLAB,Python,Scilab,Julia比較 第4章 その63【逆伝播⑭】
逆伝播を行った際の重みの動き方を確認するプログラムをScilabで作成。 おおよそ狙ったところに収束。
MATLAB,Python,Scilab,Julia比較 第4章 その62【逆伝播⑬】
逆伝播を行った際の重みの動き方を確認するプログラムをPythonで作成。 おおよそ狙ったところに収束。
MATLAB,Python,Scilab,Julia比較 第4章 その61【逆伝播⑫】
逆伝播を行った際の重みの動き方を確認するプログラムをMATLABで作成。 おおよそ狙ったところに収束。
全体の位置づけと各偏導関数を確認。 入力、出力(ラベル)が複数であるが故に連鎖律のルートが複数になる。 入力、出力が複数であるが故の連鎖律の事情のもう一つの考え方。 逆伝播の確認用プログラムのフローを記載。
連鎖律に於ける誤差関数の位置づけと偏導関数を確認。 活性関数(シグモイド関数)のブロック図と連鎖律上の位置づけと偏導関数を確認。 入力層のブロック図と連鎖律上の位置づけと偏導関数を確認。 バイアスのブロック図と連鎖律上の位置づけと偏導関数を確認。
誤差逆伝播法とか単純パーセプトロンに関連する用語を確認。 逆伝播を行う単純パーセプトロンの構成を確認。 一連の合成関数について書き出し。 合成関数を構成する各数式を書き出し。 合成関数の微分こと連鎖律について説明。 学習データを加味した場合の多変量関数の連鎖律について簡単に説明。
MATLAB,Python,Scilab,Julia比較 第4章 その60【逆伝播⑪】
逆伝播の確認用プログラムのフローを記載。 逆伝播の挙動を確認するため、重みの開始位置とバイアスは固定。 ベクトル、行列演算をプログラム都合に合わせて表現しなおし。
MATLAB,Python,Scilab,Julia比較 第4章 その59【逆伝播⑩】
入力、出力が複数であるが故の連鎖律の事情のもう一つの考え方。 誤差関数は二乗和誤差関数であり、本来であればΣが含まれる。 よって、連鎖律にもΣが含まれる形を取ると前回と同一の数式が得られる。
MATLAB,Python,Scilab,Julia比較 第4章 その58【逆伝播⑨】
入力、出力(ラベル)が複数であるが故に連鎖律のルートが複数になる。 上記の図示と数式を説明。
MATLAB,Python,Scilab,Julia比較 第4章 その57【逆伝播⑧】
全体の位置づけ確認。 各偏導関数を再掲。 各偏導関数を連鎖律に則して結合。
MATLAB,Python,Scilab,Julia比較 第4章 その56【逆伝播⑦】
バイアスのブロック図と連鎖律上の位置づけを確認。 バイアスの偏導関数を確認。 もとの式がシンプルな上、1次で係数もないので1になる。
MATLAB,Python,Scilab,Julia比較 第4章 その55【逆伝播⑥】
入力層のブロック図と連鎖律上の位置づけを確認。 入力層の偏導関数を確認。 もとの式がシンプルなので偏導関数もシンプル。
MATLAB,Python,Scilab,Julia比較 第4章 その54【逆伝播⑤】
活性化関数の微分について説明。 活性関数のブロック図と連鎖律上の位置づけを確認。 シグモイド関数の導関数を復習。 シグモイド関数の偏導関数を確認。
MATLAB,Python,Scilab,Julia比較 第4章 その53【逆伝播④】
連鎖律に於ける誤差関数の位置づけを確認。 ブロック図的には一番後ろだが、連鎖律としては先頭。 誤差関数の確認。 誤差関数の偏導関数の確認。
MATLAB,Python,Scilab,Julia比較 第4章 その52【逆伝播③】
合成関数の微分こと連鎖律について説明。 学習データを加味した場合の多変量関数の連鎖律について簡単に説明。 詳細は後日。
MATLAB,Python,Scilab,Julia比較 第4章 その51【逆伝播②】
一連の合成関数について書き出し。 合成関数を構成する各数式を書き出し。 誤差関数、活性化関数、入力と重みの内積。
MATLAB,Python,Scilab,Julia比較 第4章 その50【逆伝播①】
誤差逆伝播法とか単純パーセプトロンに関連する用語を確認。 様々な都合で、単純パーセプトロンに対する誤差逆伝播法を「逆伝播」と呼称することに。 逆伝播を行う単純パーセプトロンの構成を確認。 誤差関数は二乗和誤差関数を1/2にしたもの。 1/2により微分後の数式がシンプルになる。
勾配降下法の実験をScilabで実施。 予想通り局所最適解に陥った。 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。 モーメンタム、AdaGrad、Adamなどなど。
勾配降下法の実験をScilabで実施。 予想通り局所最適解に陥った。 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。 モーメンタム、AdaGrad、Adamなどなど。
勾配降下法の実験をPythonで実施。 予想通り局所最適解に陥った。 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。 モーメンタム、AdaGrad、Adamなどなど。
勾配降下法の実験をMATLABで実施。 予想通り局所最適解に陥った。 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。 モーメンタム、AdaGrad、Adamなどなど。
MATLAB,Python,Scilab,Julia比較 第4章 その49【勾配降下法⑦】
勾配降下法の実験をScilabで実施。 予想通り局所最適解に陥った。 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。 モーメンタム、AdaGrad、Adamなどなど。
MATLAB,Python,Scilab,Julia比較 第4章 その48【勾配降下法⑥】
勾配降下法の実験をScilabで実施。 予想通り局所最適解に陥った。 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。 モーメンタム、AdaGrad、Adamなどなど。
MATLAB,Python,Scilab,Julia比較 第4章 その47【勾配降下法⑤】
勾配降下法の実験をPythonで実施。 予想通り局所最適解に陥った。 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。 モーメンタム、AdaGrad、Adamなどなど。
MATLAB,Python,Scilab,Julia比較 第4章 その46【勾配降下法④】
勾配降下法の実験をMATLABで実施。 予想通り局所最適解に陥った。 局所最適解の回避方法としては学習率を状況に応じて変更する様々は最適化アルゴリズムがある。 モーメンタム、AdaGrad、Adamなどなど。
勾配降下法に概念レベルの説明。 勾配降下法をプログラム的に確認する方法としてニューラルネットワークではなく、任意の関数に試す方法がある。 勾配降下法プログラムのフローで分かりにくいところを説明。
MATLAB,Python,Scilab,Julia比較 第4章 その45【勾配降下法③】
勾配降下法プログラムのフローで分かりにくいところを説明。 入力初期値は学習のスタート地点。 ハイパーパラメータは学習アルゴリズムの設定値。 グラフへのプロットは履歴付きで。 プログラムの振る舞いをアニメーションgifで確認。
MATLAB,Python,Scilab,Julia比較 第4章 その44【勾配降下法②】
勾配降下法をプログラム的に確認する方法としてニューラルネットワークではなく、任意の関数に試す方法がある。 三角関数と二次関数を合成したもので試す。 プログラムのフローを記載。
MATLAB,Python,Scilab,Julia比較 第4章 その43【勾配降下法①】
勾配降下法に概念レベルの説明。 連鎖律含めた一連の流れを誤差逆伝播法と言う。 ただし、単純パーセプトロンの段階では逆伝播という言葉にしておく。 まずは勾配降下法のみの実験をやってみる。
多変数関数の連鎖律について説明。 ニューラルネットワークを想定した場合の多変量関数の連鎖律について説明。 ニューラルネットワークの学習を想定した場合、暗黙的に追加される関数として入力群がある。
多変数関数の連鎖律に突入したが、これを理解するのに必要な知識があるため、それらを列挙。 合成関数について説明。 合計関数の微分(連鎖律)について説明。 合成関数の微分(連鎖律)の証明を実施。
MATLAB,Python,Scilab,Julia比較 第4章 その42【多変量関数の連鎖律⑥】
ニューラルネットワークの学習を想定した場合、暗黙的に追加される関数として入力群がある。 イメージ的に1層増える感じになる。 これはバッチ学習、ミニバッチ学習時の起きる現象。 と言っても、微分すると重みが消えるので足し算に化ける。
MATLAB,Python,Scilab,Julia比較 第4章 その41【多変量関数の連鎖律⑤】
ニューラルネットワークを想定した場合の多変量関数の連鎖律について説明。 入力から見た際の関数の伝達ルートが複数になる。 変化させたいのは入力ではなく重み。
MATLAB,Python,Scilab,Julia比較 第4章 その40【多変量関数の連鎖律④】
多変数関数の連鎖律について説明。 数が増えるだけで普通の連鎖律と変わらない。 図示&数式があると分かり易い。
MATLAB,Python,Scilab,Julia比較 第4章 その39【多変量関数の連鎖律③】
合成関数の微分(連鎖律)の証明を実施。 途中、いろいろトリッキーなことをする。 結果としては、中間変数を微分、中間変数での微分の組み合わせで表現しなおせるというもの。
MATLAB,Python,Scilab,Julia比較 第4章 その38【多変量関数の連鎖律②】
合計関数の微分(連鎖律)について説明。 まずは1入力1出力な合成関数。 合計関数の微分をするための公式はあるが、一応証明もしてみる予定。
MATLAB,Python,Scilab,Julia比較 第4章 その37【多変量関数の連鎖律①】
多変数関数の連鎖律に突入したが、これを理解するのに必要な知識があるため、それらを列挙。 合成関数につい説明。 単純パーセプトロンも入力層の内積、活性化関数、誤差関数の組み合わせが合成関数と言える。
シグモイド関数、シグモイド関数の導関数、シグモイド関数のオイラー法での微分をJuliaで算出。 グラフで比較し、導出した導関数は正しいと言える結果となった。
シグモイド関数、シグモイド関数の導関数、シグモイド関数のオイラー法での微分をScilabで算出。 グラフで比較し、導出した導関数は正しいと言える結果となった。
シグモイド関数、シグモイド関数の導関数、シグモイド関数のオイラー法での微分をPythonで算出。 グラフで比較し、導出した導関数は正しいと言える結果となった。
シグモイド関数、シグモイド関数の導関数、シグモイド関数のオイラー法での微分をMATLABで算出。 グラフで比較し、導出した導関数は正しいと言える結果となった。
MATLAB,Python,Scilab,Julia比較 第4章 その36【連鎖律の前準備⑩】
シグモイド関数、シグモイド関数の導関数、シグモイド関数のオイラー法での微分をJuliaで算出。 グラフで比較し、導出した導関数は正しいと言える結果となった。
MATLAB,Python,Scilab,Julia比較 第4章 その35【連鎖律の前準備⑨】
シグモイド関数、シグモイド関数の導関数、シグモイド関数のオイラー法での微分をScilabで算出。 グラフで比較し、導出した導関数は正しいと言える結果となった。
MATLAB,Python,Scilab,Julia比較 第4章 その34【連鎖律の前準備⑧】
シグモイド関数、シグモイド関数の導関数、シグモイド関数のオイラー法での微分をPythonで算出。 グラフで比較し、導出した導関数は正しいと言える結果となった。
MATLAB,Python,Scilab,Julia比較 第4章 その33【連鎖律の前準備⑦】
シグモイド関数、シグモイド関数の導関数、シグモイド関数のオイラー法での微分をMATLABで算出。 グラフで比較し、導出した導関数は正しいと言える結果となった。
商の微分方式の話。 逆数の微分公式と積の微分公式の合わせ技で導出。 いままでの公式達を再掲。 商の微分公式を使ってシグモイド関数の導関数を求めた。 シグモイド関数、シグモイド関数の導関数の再掲と、シグモイド関数のオイラー法による微分の数式を確認する予定。
最適化アルゴリズムを使用するには連鎖律が必要。 連鎖律を把握するための知識を列挙。 まずは逆数の微分公式。 積の微分公式を導出。
MATLAB,Python,Scilab,Julia比較 第4章 その32【連鎖律の前準備⑥】
シグモイド関数、シグモイド関数の導関数の再掲と、シグモイド関数のオイラー法による微分の数式を確認。 上記を実現するプログラムを作成して、似た波形になればOKと見なす。 シグモイド関数の導関数は有名なので間違っていることは無いはず。
世の中にAI実装検定A級の問題集が存在しないようなので、サクッと作ってみた。 とりあえず63問ほど放り込んでる。 (問題を解いてこのページに飛んできた場合、解答はこのページの下部に表示されてます。) AI実装検定A級のまとめ記事はこちら 解
世の中にAI実装検定A級の問題集が存在しないようなので、サクッと作ってみた。 とりあえず63問ほど放り込んでる。 (問題を解いてこのページに飛んできた場合、解答はこのページの下部に表示されてます。) AI実装検定A級のまとめ記事はこちら 解
AI実装検定A級に合格しました。 合格率、テキスト、勉強時間、試験日について解説。 なぜか問題集も作った。 公式テキスト範囲外もあらかじめ認識しておけば怖く無い。
MATLAB,Python,Scilab,Julia比較 第4章 その31【連鎖律の前準備⑤】
いままでの公式達を再掲。 商の微分公式を使ってシグモイド関数の導関数を求めた。 本当に導関数になっているか、オイラー法で求めたシグモイド関数の微分のプロットと比較してみる。
MATLAB,Python,Scilab,Julia比較 第4章 その30【連鎖律の前準備④】
商の微分方式の話。 逆数の微分公式と積の微分公式の合わせ技で導出。 商の微分方式はシグモイド関数の導関数導出で生きてくる。
MATLAB,Python,Scilab,Julia比較 第4章 その29【連鎖律の前準備③】
積の微分公式を導出。 少しトリッキーなことをする。 f(x)の極限と、g(x)の極限に分けられるような細工。
MATLAB,Python,Scilab,Julia比較 第4章 その28【連鎖律の前準備②】
連鎖律を把握するための知識を列挙。 恐らく数式ラッシュになる。 まずは逆数の微分公式。 途中、式を分解してそれぞれの導関数を求めてから代入で導出できる。
MATLAB,Python,Scilab,Julia比較 第4章 その27【連鎖律の前準備①】
総当たり法では非効率なので最適化アルゴリズムを使用する。 最適化アルゴリズムを使用するには連鎖律が必要。 連鎖律を利用するには損失、活性化関数、各層の入力の導関数を求める必要がある。
【入門】シグモイドによる決定境界安定化(Julia)【数値計算】
活性化関数をシグモイド関数にした形式ニューロンをJuliaで実現。 結果はカスタムヘヴィサイドの時と一緒。
【入門】シグモイドによる決定境界安定化(Scilab)【数値計算】
活性化関数をシグモイド関数にした形式ニューロンをScilabで実現。 結果はカスタムヘヴィサイドの時と一緒。
【入門】シグモイドによる決定境界安定化(Python)【数値計算】
活性化関数をシグモイド関数にした形式ニューロンをPython(NumPy)で実現。 結果はカスタムヘヴィサイドの時と一緒。
【入門】シグモイドによる決定境界安定化(MATLAB)【数値計算】
活性化関数をシグモイド関数にした形式ニューロンをMATLABで実現。 結果はカスタムヘヴィサイドの時と一緒。
MATLAB,Python,Scilab,Julia比較 第4章 その26【シグモイドによる決定境界安定化⑥】
活性化関数をシグモイド関数にした形式ニューロンをJuliaで実現。 結果はカスタムヘヴィサイドの時と一緒。
MATLAB,Python,Scilab,Julia比較 第4章 その25【シグモイドによる決定境界安定化⑤】
活性化関数をシグモイド関数にした形式ニューロンをScilabで実現。 結果はカスタムヘヴィサイドの時と一緒。
MATLAB,Python,Scilab,Julia比較 第4章 その24【シグモイドによる決定境界安定化④】
活性化関数をシグモイド関数にした形式ニューロンをPython(NumPy)で実現。 結果はカスタムヘヴィサイドの時と一緒。
MATLAB,Python,Scilab,Julia比較 第4章 その23【シグモイドによる決定境界安定化③】
活性化関数をシグモイド関数にした形式ニューロンをMATLABで実現。 結果はカスタムヘヴィサイドの時と一緒。
決定境界直線の一般的な安定化方法がある。 シグモイド関数を使用する方法。 シグモイド関数の定義について説明。 カスタムヘヴィサイドとシグモイドの比較。 総当たり法では効能の差は出ないが、誤差逆伝播法を使い始めるとシグモイドじゃないと都合が悪い。
MATLAB,Python,Scilab,Julia比較 第4章 その22【シグモイドによる決定境界安定化②】
シグモイド関数の定義について説明。 特に理屈はなく、そういうものが存在するって程度。 カスタムヘヴィサイドとシグモイドの比較。 総当たり法では効能の差は出ないが、誤差逆伝播法を使い始めるとシグモイドじゃないと都合が悪い。
MATLAB,Python,Scilab,Julia比較 第4章 その21【シグモイドによる決定境界安定化①】
決定境界直線の一般的な安定化方法がある。 シグモイド関数を使用する方法。 ヘヴィサイド関数のように0,1を表現することを目的とした関数だが、シグモイド関数は全域で勾配がある。
形式ニューロンの活性化関数をカスタムヘヴィサイド(造語)関数にしたものをJuliaで作成。 例に漏れずMATLABコードのコピペがベース。
形式ニューロンの活性化関数をカスタムヘヴィサイド(造語)関数にしたものをScilabで作成。 おおよそMATLABと同じコード。 毎度おなじみのグラフ表示部分に差が出る。
形式ニューロンの活性化関数をカスタムヘヴィサイド(造語)関数にしたものをPython(NumPy)で作成。 おおよそMATLABと同じ結果に。 毎度おなじみの表示上の誤差は出る。
形式ニューロンの活性化関数をカスタムヘヴィサイド(造語)関数にしたものをMATLABで作成。 狙い通りの位置に決定境界直線が移動。 コードはヘヴィサイド関数をカスタムヘヴィサイド関数に変えただけ。
MATLAB,Python,Scilab,Julia比較 第4章 その20【決定境界直線の安定化⑦】
形式ニューロンの活性化関数をカスタムヘヴィサイド(造語)関数にしたものをJuliaで作成。 例に漏れずMATLABコードのコピペがベース。
MATLAB,Python,Scilab,Julia比較 第4章 その19【決定境界直線の安定化⑥】
形式ニューロンの活性化関数をカスタムヘヴィサイド(造語)関数にしたものをScilabで作成。 おおよそMATLABと同じコード。 毎度おなじみのグラフ表示部分に差が出る。
MATLAB,Python,Scilab,Julia比較 第4章 その18【決定境界直線の安定化⑤】
形式ニューロンの活性化関数をカスタムヘヴィサイド(造語)関数にしたものをPython(NumPy)で作成。 おおよそMATLABと同じ結果に。 毎度おなじみの表示上の誤差は出る。
MATLAB,Python,Scilab,Julia比較 第4章 その17【決定境界直線の安定化④】
形式ニューロンの活性化関数をカスタムヘヴィサイド(造語)関数にしたものをMATLABで作成。 狙い通りの位置に決定境界直線が移動。 コードはヘヴィサイド関数をカスタムヘヴィサイド関数に変えただけ。
形式ニューロンのプログラムでは決定境界直線がギリギリのラインに来ていたで、どうあるべきか。について説明。 決定境界直線をいい感じのところに持っていくにはヘヴィサイド関数を差し替える必要がある。 ヘヴィサイド関数の原点近辺に傾斜を付けたカスタムヘヴィサイド関数(造語)が良さげ。
MATLAB,Python,Scilab,Julia比較 第4章 その16【決定境界直線の安定化③】
決定境界直線をいい感じのところに持っていくにはヘヴィサイド関数を差し替える必要がある。 ヘヴィサイド関数の原点近辺に傾斜を付けたカスタムヘヴィサイド関数(造語)が良さげ。
MATLAB,Python,Scilab,Julia比較 第4章 その15【決定境界直線の安定化②】
決定境界直線がギリギリなる理由。 ヘヴィサイド関数の性質に原因がある。 ヘヴィサイド関数の性質は入力0を境に出力0,1が切り替わるのみで勾配が無い。 これにより程度の表現ができず、境界直線も適正位置が探せない。
MATLAB,Python,Scilab,Julia比較 第4章 その14【決定境界直線の安定化①】
形式ニューロンのプログラムでは決定境界直線がギリギリのラインに来ていた。 上記を解消するため、どうあるべきか。について説明。 この後に、なぜこうなったか、どうすればかいしょうできるかの話が続く予定。
形式ニューロンをJuliaで実現。 ANDの真理値表と同じ結果が得らえれた。 コードレベルでMATLABと近似。
形式ニューロンをScilabで実現。 ANDの真理値表と同じ結果が得らえれた。 そして、決定境界線はギリギリな感じはMATLABのときと一緒。
形式ニューロンをPython(NumPy)で実現。 ANDの真理値表と同じ結果が得らえれた。 そして、決定境界線はギリギリな感じはMATLABのときと一緒。
形式ニューロンをMATLABで実現。 ANDの真理値表と同じ結果が得らえれた。 しかし、決定境界線はギリギリな感じ。
MATLAB,Python,Scilab,Julia比較 第4章 その13【形式ニューロン⑪】
形式ニューロンをJuliaで実現。 ANDの真理値表と同じ結果が得らえれた。 コードレベルでMATLABと近似。
MATLAB,Python,Scilab,Julia比較 第4章 その12【形式ニューロン⑩】
形式ニューロンをScilabで実現。 ANDの真理値表と同じ結果が得らえれた。 そして、決定境界線はギリギリな感じはMATLABのときと一緒。
MATLAB,Python,Scilab,Julia比較 第4章 その11【形式ニューロン⑨】
形式ニューロンをPython(NumPy)で実現。 ANDの真理値表と同じ結果が得らえれた。 そして、決定境界線はギリギリな感じはMATLABのときと一緒。
MATLAB,Python,Scilab,Julia比較 第4章 その10【形式ニューロン⑧】
形式ニューロンをMATLABで実現。 ANDの真理値表と同じ結果が得らえれた。 しかし、決定境界線はギリギリな感じ。
形式ニューロンを把握するためのロードマップを提示。 ヘヴィサイド関数、形式ニューロン、誤差関数、決定境界直線、総当たり法について解説。 実際のプログラムのフローを記載。
MATLAB,Python,Scilab,Julia比較 第4章 その9【形式ニューロン⑦】
総当たり法について解説・・・と思いきや、名前のまんま。 プログラム化の前提だけ決めた。 実際のプログラムのフローを記載。
MATLAB,Python,Scilab,Julia比較 第4章 その8【形式ニューロン⑥】
決定境界直線の必要性について。 推論するだけだったら不要だが、学習済みモデルの性能を評価する際は必要。 決定境界直線の特定方法を説明。 ヘヴィサイド関数の出力が0.5であることを仮定して数式を解けばOK。
MATLAB,Python,Scilab,Julia比較 第4章 その7【形式ニューロン⑤】
決定境界直線について説明。 分類する上で仕分けを行う境界線。 ANDゲートの場合の想定される決定境界直線を図解。 境界線を境にtreu,falseに分かれる。 この性質がヘヴィサイド関数と相性が良い。
MATLAB,Python,Scilab,Julia比較 第4章 その6【形式ニューロン④】
代表的な誤差関数について説明。 MSE:分散と一緒であり、統計的に意味のある数値。 SSE:シンプルであり、利用しやすい。 RMSE:標準偏差的位置づけであり、人間から見て意味のある数値になりやすい。
MATLAB,Python,Scilab,Julia比較 第4章 その5【形式ニューロン③】
分類問題のHelloWorld総統はANDゲート。 ANDゲートを形式ニューロンで実現するための構成を説明。 2入力1出力の構成になる。
「ブログリーダー」を活用して、KEIさんをフォローしませんか?
単純パーセプトロンの構造について復習。 今回扱うのは活性化関数をシグモイド関数に差し替えたもの。 逆伝播の復習。 重みとバイアスの逆伝播は途中まで一緒。 よって表現の最適化が可能。
MATLAB、Python、Scilab、Julia比較ページはこちら はじめに の、 MATLAB,Python,Scilab,Julia比較 第4章 その64【逆伝播⑮】 を書き直したもの。 単純パーセプトロンに対する逆伝播を行う。まず
逆伝播を行った際の重みの動き方を確認するプログラムをScilabで作成。 おおよそ狙ったところに収束。
逆伝播を行った際の重みの動き方を確認するプログラムをPythonで作成。 おおよそ狙ったところに収束。
逆伝播を行った際の重みの動き方を確認するプログラムをMATLABで作成。 おおよそ狙ったところに収束。
はじめに MATLAB,Python,Scilab,Julia比較するシリーズの第4章。 第3章では画像処理、座標変換の話がメインだった。 第4章は分類問題関連の話がメインとなる。基本的には以下の流れとなる。 形式ニューロン 決定境界線の安
逆伝播を行った際の重みの動き方を確認するプログラムをJuiaで作成。 おおよそ狙ったところに収束。
逆伝播を行った際の重みの動き方を確認するプログラムをScilabで作成。 おおよそ狙ったところに収束。
逆伝播を行った際の重みの動き方を確認するプログラムをPythonで作成。 おおよそ狙ったところに収束。
逆伝播を行った際の重みの動き方を確認するプログラムをMATLABで作成。 おおよそ狙ったところに収束。
全体の位置づけと各偏導関数を確認。 入力、出力(ラベル)が複数であるが故に連鎖律のルートが複数になる。 入力、出力が複数であるが故の連鎖律の事情のもう一つの考え方。 逆伝播の確認用プログラムのフローを記載。
連鎖律に於ける誤差関数の位置づけと偏導関数を確認。 活性関数(シグモイド関数)のブロック図と連鎖律上の位置づけと偏導関数を確認。 入力層のブロック図と連鎖律上の位置づけと偏導関数を確認。 バイアスのブロック図と連鎖律上の位置づけと偏導関数を確認。
誤差逆伝播法とか単純パーセプトロンに関連する用語を確認。 逆伝播を行う単純パーセプトロンの構成を確認。 一連の合成関数について書き出し。 合成関数を構成する各数式を書き出し。 合成関数の微分こと連鎖律について説明。 学習データを加味した場合の多変量関数の連鎖律について簡単に説明。
逆伝播の確認用プログラムのフローを記載。 逆伝播の挙動を確認するため、重みの開始位置とバイアスは固定。 ベクトル、行列演算をプログラム都合に合わせて表現しなおし。
入力、出力が複数であるが故の連鎖律の事情のもう一つの考え方。 誤差関数は二乗和誤差関数であり、本来であればΣが含まれる。 よって、連鎖律にもΣが含まれる形を取ると前回と同一の数式が得られる。
入力、出力(ラベル)が複数であるが故に連鎖律のルートが複数になる。 上記の図示と数式を説明。
全体の位置づけ確認。 各偏導関数を再掲。 各偏導関数を連鎖律に則して結合。
バイアスのブロック図と連鎖律上の位置づけを確認。 バイアスの偏導関数を確認。 もとの式がシンプルな上、1次で係数もないので1になる。
入力層のブロック図と連鎖律上の位置づけを確認。 入力層の偏導関数を確認。 もとの式がシンプルなので偏導関数もシンプル。
活性化関数の微分について説明。 活性関数のブロック図と連鎖律上の位置づけを確認。 シグモイド関数の導関数を復習。 シグモイド関数の偏導関数を確認。
∇を使用して、二次形式の微分(勾配)を求める。 二次形式を多項式表現し、偏微分。 偏微分した結果を行列形式に戻す。 結果としてシンプルな偏導関数が求められる。
二次形式の微分についての話へ突入。 ∇(ナブラ)について説明。 ベクトルに対しての偏微分。 各要素に対しての微分を行うだけなので、複雑な概念ではない。
二次形式の多項式表現と行列表現の計算をJuliaで実施。 3Dグラフを表示する際は、"projection" => "3d"が必要。 meshgridが無いので自作した。
二次形式の多項式表現と行列表現の計算をScilabで実施。 基本的にはMATLABと一緒。 ただし、reshapeの代わりにmatrixを使う必要がある。
二次形式の多項式表現と行列表現の計算をPythonで実施。 3Dグラフを表示する際は、projection='3d'が必要。 plot_wireframeでワイヤーフレームでグラフ表示ができる。
二次形式の多項式表現と行列表現の計算をMATLABで実施。 meshgridにx軸とy軸を入力とすることで平面座標が得られる。 平面座標を元に2変数の演算を実施。 演算結果をmesh関数を使用して3Dグラフに表示。
二次形式の多項式表現と行列表現の計算をJuliaで実施。 3Dグラフを表示する際は、"projection" => "3d"が必要。 meshgridが無いので自作した。
二次形式の多項式表現と行列表現の計算をScilabで実施。 基本的にはMATLABと一緒。 ただし、reshapeの代わりにmatrixを使う必要がある。
二次形式の多項式表現と行列表現の計算をPythonで実施。 3Dグラフを表示する際は、projection='3d'が必要。 plot_wireframeでワイヤーフレームでグラフ表示ができる。
二次形式の多項式表現と行列表現の計算を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だけでも分散は取得可能。