2020-05-27に更新

機械学習で出てくるクロス・エントロピー誤差関数の真実を書こうぜ☆(^~^)?

ぶっぱらぱ☆(^~^) こんな記事を真面目に読むなだぜ☆(^~^) 公開下書き

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 自習をしたんで、アウトプットしようぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 マイペースだな……☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 何これ? グーグルの検索ワードを英語にして "PhD" ってキーワードも付けとくと 記事のレベルが上がるんだけど?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ハックだよな☆」

20200525math1.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ で、 機械学習 の……、特に 教師付き学習 の雰囲気を なんか いい加減に説明したのが上図だぜ☆
ずれ を 0 にしたいわけだぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 正しい答えなんか 信じてはいけないのに……☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 そこは信用しようぜ☆」

20200525math2.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ また、ずぼらに説明すると、ずれた分を、ずれていないように ちょっと修正するのが 学習だぜ☆
この調整を自動でやらせるために PyTorch のようなフレームワークを使っているわけだから、ここでは 地力実装しなくていい☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 もっと ドカンッ と一発で ずれを全部 調整したらいけないの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 1問5点の問題が20個あって、1問は必ず正解するが 残りの19問外す、みたいな知能に憧れがあるなら そうしろだぜ☆
多分 最後に学習した問題だけ正解して それ以前の記憶は失うだろうなんだぜ☆」

20200525math3.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 むしろ、学習率という割合を設けて、調整量を減らそうとまでするぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 変なの!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 コーヒーに角砂糖3個入れたら 甘くなるだろ☆ もう少し甘くしようと思って また角砂糖3個入れたら 砂糖水におまけでコーヒーが入ってた水になるだろ☆」

20200525math4.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ 今回、わたしたちが着目したいのは、上図の中の ずれ だぜ☆
ひとくちに ずれ と言っても、どれぐらい ずれているか の測り方は いろいろある、ということだぜ☆」

20200525math5.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ 例えば 身長なら 引き算すれば ずれ が求まるが、これは スカラー だからだぜ☆」

20200525math7.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ どこが どう ずれてて、 ずれはいくつ、 と言いにくいこともあるだろ☆ これは ベクトル だからだぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 そんなもんに ずれはいくつ、とか言えんの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 言わないと 学習できない……☆ この ずれはいくつ、と言うやつが 損失関数 だぜ☆」

  • 平均二乗誤差(Mean Squared Error)
  • 平均絶対誤差(Mean Absolute Error)
  • 交差エントロピー誤差 (Cross Entropy Loss)

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 損失関数は いろいろあって、例えば ↑ 上のリスト のようなものがあるぜ☆
Error と呼ぶか Loss と呼ぶかは まちまち で、方言だから好きにしろだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 で、交差エントロピー誤差 は、なんか 他のやつに比べて むずかしいんだぜ☆
ぱっと 話を聞いただけでは分からない……☆
もちろん 数式をパクるだけなら どれでも むずかしくないが……☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 呪文は 考えずに 唱えるだけでいいのに……☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 そこで、交差エントロピー誤差 の登場人物を紹介しようと思う☆」

  • 確率分布 (Probability Distribution)
  • 自然対数 (Natural Logarithm)
  • トレーニング・データ (Training Data)
  • 総和 (Sum)
  • 負 (Negative)

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ この5つが分かれば、ようやく いい勝負ができそうな感じだぜ☆
うーん、さっぱり分からん、というところから、うーん、なんとなく ぼんやり、まで 進める☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 1つ1つは簡単なのに……☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 でも結局 呪文なのだから、分かって使おうが 分からず使おうが 唱えれば 成果物に差は出ないんじゃないの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 唱えなくていいときに 呪文 唱えてるやつ いるよな☆
分かってないからだぜ☆
このケースだから この呪文を唱えていて、別のケースでは また別の呪文を唱える、という使い分けができていれば 言うことはない☆ OKだぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 オーベルシュタインみたいだな☆」

確率分布 (Probability Distribution)

20200525math8.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 サイコロは 振れば 振るほど 3.5 が出続けているのと 変わんない気分になるから
すごろく は スタート から 上がり までのマスを極端に長くすると みんな団子状態になるので 2マス戻る とか ばらつかせているんだが、
この 3.5 は 期待値 だぜ☆ では、 確率 とは何だろうか☆?」

KIFUWARABE_80x100x8_01_Futu.gif
「 例えば サイコロの出目に偏りがないとき 1の目 が出るのは 6分の1 なんで 1の目が出る 確率 は 6分の1、 0.16666666… だぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 では、 確率分布 とは何だろうか☆?」

20200525math9.png

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑ サイコロを1つ 振っているだけでは、 ありがたみ が分かんないのよ」

20200525math10a1.png

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑ サイコロを 2つ以上 振るようになると、 確率分布 が出てくるのよ。
2 が出るのは 36通りの中の1通り だけど、 7 が出るのは 36通りの中の6通り なのよ」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ドミノで遊びたくなってきた……☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 並べて 倒して遊ぶものだと思われてるよな、ドミノ☆」

20200525math11.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ サイコロ2個を転がしてコロコロ回っているというのがイベントで、サイコロがピタッと止まるのがオカレンスで、
上の面に出た4と3の目を足して7 というのが アウトカム だぜ☆」

20200525math12a1.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ どんなケースがあるか並べたx軸の要素たちの入れ物を 大文字の S で表すようだな☆
S の中身は 小文字で s ☆」

20200525math13a1.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ 関数の形をグラフにすると、例えば p(4) は 36分の3 になるわけだぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 このとんがったグラフは 微分できるのかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 とんがってるとこ どうなってるんだろうな☆?」

20200525math13a3.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 この三角形の面積を見てみると、 絵が歪んでしまったが ちゃんと 36等分 できることを確認してくれだぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 定規を使って 引きなさいよ!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 36分の1、つまり 0.027777777…、有効桁数はどこなんだろな、0.02 としておくかだぜ☆ これが、 0 を除けば 一番小さい数 で、
36分の36、つまり 1.00 が 一番大きな数 と思ってくれだぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 フーン☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 例えば 1 - 0.02 と出てくれば、36分の35 の面積だと思ってくれだぜ☆
ちゃんと計算すると 0.97222222…、で 0.97 ぐらいなんだが☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 式で書くと 1 - p(2) みたいに書かれるぜ☆ p(2) は上図と照らし合わせろだぜ、 1/36 のことだぜ☆
こういう書き方が 知ってるものとして 説明なくでてくるから ふだんから使い慣れておけだぜ☆」

自然対数 (Natural logarithm)

20200525math14.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 自然対数は わたしが もっとも得意とするとこなんで 100ページぐらい しゃべれるんだが、
今回は クロス・エントロピー誤差関数 で使うとこだけ説明するぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 いつも そうしてくれだぜ☆」

20200525math14a1.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ さっき、確率は 最小が 0.02 で 最大が 1.00 という話をしただろ☆
あれが そのまま x軸 に当てはまるぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 log_e は y は どこまで下がんの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 y は ネガティブ・インフィニティ に向かうぜ☆ x は 0.00000000000…… と小さな数になるんで 0 と思ってても実用上問題ないぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 でも、 log_e は x=0 にはならないから、 0.00000001 やらなんやら 適当に 決して0ではない 微小な正の数を xの下限としてくれだぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 フーン」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 今日は疲れてるんで ここまでな☆」


KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 起きてきた☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 寝てればいいのに……☆」

20200525math14a2.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ で、 x軸も y軸も たかだか 6つ しか 刻みを使わないわけだが……☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 自然対数の特徴は y軸の間隔が、
最後の区間は、 前2つ分の間隔 に、ピッタリ同じなんだぜ☆
それ以前のところは ずれているが、だんだん 近づいていってると考えてくれだぜ☆
刻みが 6個 しかないんで けっこう ずれてるように見えるが、
刻みが 100個、 1000個 増えてきたときに うまみが 出てくるぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 何が うまい んだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 加速に加速が付いているから だんだん大きく ぎゅいーん と伸びていくが、
ぎゅいーんと伸びていくやつの中でも 加速の加速が ゆるやか な方だろ☆
大きくても 前2つ分の間隔だぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ぎゅいーん、じゃ 分かんないのよ!」

20200525math15.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ 人の言語には これを表す言葉が無いと思うんだが、もう少し 感覚的な説明を与えるなら……☆」

20200525math14a3.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ こういう ぎゅいーん だぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 分からん☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 別のところから攻めるか……☆」

20200526math16.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ こうなってるだろ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 わらう☆」

20200526math17.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ こうなってるのも 分かるだろ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 うーん?」

20200526math17a1.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ y軸も 鏡面に改造するぜ☆ ゼロは無くなった☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 やりたい放題☆」

20200526math17a3.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ 仮に こういう風に ブロックを取るとしようぜ☆?」

20200526math17a2.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ こういうブロックの取り方をすると こうなるんだが、 厚みがまちまち で、多分 この方法ではダメで、歪んでいて説明がむずかしいぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 厚みが揃ってる方から ブロックを切り取りなさいよ」

20200526math18a1.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ このブロックの取り方は 良さそうだ……☆
計算してみると 面積は……☆」

20200526math18a2.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ うーん☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ブロックが でこぼこ してんじゃないの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 log_e はカーブを描いているからな☆ 液体でも流し込まなければ ちゃんと面積を測れないぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 これでは 自然対数 をなんで使うのか わからないぜ☆」

20200526math18a5.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ こうなってるんだぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 どうなってんの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 1個 遠くへ行くには、2倍のちから がいる感じだぜ☆ ぴったり ではない☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 じゃあ サイコロのモデルに 自然対数は 合ってないのでは☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 まったくだぜ☆ ガウス分布ではないからな……☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 サイコロのモデルにあった分布モデルは 何なんだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 なんだろな あれ……☆ 指数関数的ではないと思うが……☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 じゃあ リニア分布モデル なんじゃないの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 そんな 社会現象で見かけなさそうなモデル 資料を掘りだせるかだぜ……☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 Triangular Distribution というのが それっぽいな☆ Triangular Function というのもあるぜ☆ 似たような分野 いっぱい出てきた……☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 サイコロの分布は例が悪いのよ。 自然対数が使える分布の例を出しなさいよ!」

20200526math19.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 むしろ そっちの方が簡単……☆
サイコロは6面あって タイヘンなので、 コインにしようぜ☆ 表裏の2面だぜ☆」

20200526math20.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ サイコロが Senary なのに対して、コインは Binary だぜ☆」

20200526math21.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ コイン3枚 投げるのは こんな感じ☆」

20200527math22.png

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑ コイン4枚 投げると 三角形が 崩れてきたぜ☆ ガウス分布の始まりだぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 4回投げることが重要なの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 そうだぜ☆ サイコロだと 6倍 6倍 6倍 なんで 嫌になるんで コイン にしたんだぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 20回ぐらい 投げなければ ガウス分布が 大数の法則から受けて ベルカーブを描く性質が 見えてこなくないかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 104万8576パターンの20枚のコインな☆ 描かないぜ☆」

<書きかけ>

何度でもクリック!→

むずでょ

光速のアカウント凍結されちゃったんで……。ゲームプログラムを独習中なんだぜ☆電王戦IIに出た棋士もコンピューターもみんな好きだぜ☆▲(パソコン将棋)WCSC29一次予選36位、SDT5予選42位▲(パソコン囲碁)AI竜星戦予選16位

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

むずでょ の最近の記事