バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia4-backnumber/
はじめに
形式ニューロンについての解説。
今回は総当たり法による分類について説明。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
【再掲】形式ニューロンへ至る道
まずは、形式ニューロンへ至る道を再掲。
- ヘヴィサイド関数(済)
- 形式ニューロン(済)
- 分類問題のHelloWorld(済)
- 誤差関数(済)
- 決定境界直線(済)
- 決定境界直線の特定方法(済)
- 総当たり法による分類
今回は総当たり法による分類について説明する。
総当たり法
総当たり法の説明をするが・・・。
ロードマップの最後だね
これはもう名前の通りなんだよね・・・。
まぁ、そうだろうとは思ったけど・・・。
・・・。
・・・
・・・。
なんか説明無いの?!
気を付けるところとか!?
総当たり法を実施する条件
特に注意点も無いんだよなぁ。
まぁ、今回実施する条件を確認しておこう。
プログラム化するから、何かしらの条件は必要そうだよね。
決めるのは以下。
- 入力とそれに対する期待される結果
- 動かすパラメータ
- 値を振る範囲
- 値の刻み
「入力」と「期待される結果」は、ANDゲートの真理値表だよね。
パラメータは\(w_1,w_2,b\)とか?
そうそう。
値を振る範囲は-4~4の範囲にしておこう。
値の刻みは細かすぎても時間がかかるだけだらか0.1くらいが良いだろう。
プログラムの流れ
これでプログラムを作れる情報はそろったのかな?
そうだね。
あとはフローを記載しておこう。
- 入力データセットの定義
- 出力データセットの定義
- パラメータ変数の定義(重み、バイアス)
- 学習率定義
- 重みとバイアスの総当たり計算(ループ)
- 重みとバイアスを使用して予測値を算出
- 損失の計算
- 損失の更新
- 最も損失が小さいパラメータの記憶
- 学習結果の表示
- 出力結果の確認
まあまあ処理することはあるな・・・。
コード量は大したことないが、
3重ループを形成することになるはずだ。
3重ループってことはfor文が3段ネストするってこと?
そうそう。
このネストの数は値を振るパラメータの数に依存する。
今回だと\(w_1,w_2,b\)の3つパラメータの値に対しで全域で振るんで3重ループになる。
そうか。
総当たりで、片っ端から試し打ちするから、そういうことになるのか。
というわけで、次回以降はこれをプログラムで実現する話に突入だ。
まとめ
まとめだよ。
- 総当たり法について解説・・・と思いきや、名前のまんま。
- プログラム化の前提だけ決めた。
- 実際のプログラムのフローを記載。
バックナンバーはこちら。
コメント