バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia4-backnumber/
はじめに
形式ニューロンの決定境界直線がギリギリのところにある問題の対策。
どうあるべきか、どにように対策していくかの話。
今回は、
「決定境界直線をいい感じのところに持っていくには?」
「実際に使用する活性化関数」
について。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
【再掲】形式ニューロンの決定境界直線安定化へ至る道
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
形式ニューロンの決定境界直線安定化は以下の順番で解説中。
- どこに決定境界直線があると良さげか?(済)
- そもそもなんで決定境界直線がギリギリになるのか?
- 決定境界直線をいい感じのところに持っていくには?
- 実際に使用する活性化関数
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
今回は、
「決定境界直線をいい感じのところに持っていくには?」
と
「実際に使用する活性化関数」
決定境界直線をいい感じのところに持っていくには?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
決定境界直線がギリギリのところになるのは、
ヘヴィサイド関数のせいってのはわかったけど、
じゃー、何を使うのってなるな。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そうだね。
ヘヴィサイド関数を差し替えることになるが、
どういう関数であれば、問題が解消できるかを考えてみよう。
実際に使用する活性化関数
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
この問題の原因は、ヘヴィサイド関数が0からいきなり1になることなんだと思うんだよね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/はてなフクロウ.png)
中々鋭いね。
じゃー、どうすべきか?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
なんかこうじわっとした感じにすれば良いんじゃない?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
少し勾配を付けるってことだな。
おそらくこのイメージだろう。
![カスタムヘヴィサイド、原点に近づいた方が誤差関数もより小さくなる。](https://www.simulationroom999.com/blog/wp-content/uploads/2023/12/02_カスタムヘヴィサイド-1024x355.png)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
こうすると、原点に近付く方がより誤差関数が小さくなるという状況が作れる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
総当たりで確認するけど、より誤差が小さい結果があれば、それと差し替えるから、
より原点に適正な位置に決定境界直線が移動するってことか。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
この関数を便宜上、カスタムヘヴィサイド関数と名付けよう。
当然ながら造語だ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
(勝手な造語をしやがった・・・。)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
次回から試しにこれで、いい感じの位置に決定境界直線が来るか確認してみよう。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- 決定境界直線をいい感じのところに持っていくにはヘヴィサイド関数を差し替える必要がある。
- ヘヴィサイド関数の原点近辺に傾斜を付けたカスタムヘヴィサイド関数(造語)が良さげ。
バックナンバーはこちら。
コメント