とある深層学習初心者のAさんに立ちはだかる壁
Aさん「ディープラーニングの仕組み、ようやく最近わかってきた気がする!教師データは入力と正解ラベルの組。そして、予測値と正解ラベルを比較して、誤差関数を計算!それが小さくなるように勾配降下法で重みを更新!なるほどなるほど、わかってみると面白いなぁ…」 Aさん「さてさて、それじゃあお次は分類問題!まず簡単な2クラス分類問題から始めてみよう。正解ラベルはクラス番号の0か1。そして、クラス1に属する確率を予測すれば良さそうだ…今までと同じ考え方(誤差関数を小さくするように重みを調整する)で学習はうまくいきそう!どれどれ、一応入門書を…(パラパラ)」 Aさんは「まぁ分類問題もいけるっしょ」とばかりに、愛読する何冊かの入門書から1冊、おもむろに深層学習に関するものを引っ張り出し、分類問題のページを開いた… 入門書「2クラス分類問題では誤差関数としてクロスエントロピー(交差エントロピー)を用いる。すなわち、\( E({\boldsymbol w}) = -\frac{1}{n}\sum_{{\boldsymbol x}} \left[y\log{a}+(1-y)\log{(1-a)}\right] \) を誤差関数として…」 Aさん「…??」 Aさん「クロスエントロピー…??」 Aさん「2乗誤差じゃ、駄目なの…??」 しかしAさんは、どんな参考書を引っ張り出して手当たり次第にページをめくっても、「クロスエントロピーとはそもそも何なのか」「どうしてクロスエントロピーが誤差関数になるのか」について書かれているものはどこにも無かった… Aさん「なんで急に…誤差関数、クロスエントロピーになったんだよ…」
深層学習を学んでいると、初学者がかなりの確率で躓く壁
さてさて、どうもこんにちは。明松 真司と申します。
このブログの運営会社である「合同会社Haikara City」の代表を務めておりまして、
AI(特にディープラーニング)に関する教育事業なんかも最近たくさんやらせていただいています。
…と、そんなわけで。
ディープラーニングに関する講師業をやらせていただく中で、
最初のAさんのようなつまづき方をしてしまう方が
「とてもとてもとても」、多いことに気が付きました。
改めて、みなさんが躓く「問題のアイツ」について今一度再掲しておきましょう。
どんな参考書を見ても、分類問題になった途端に、得体の知れない「クロスエントロピー」というものが誤差関数に採用される。そしてその理由や正体は、どこにも書かれていない…
\[ E({\boldsymbol w}) = -\frac{1}{n}\sum_{{\boldsymbol x}} \left[y\log{a}+(1-y)\log{(1-a)}\right] \](そしてよくわからない数式)
さてさて、この「クロスエントロピー」が誤差関数として用いられるのには、結論から言えばいろーんな理由や解釈があるのです。
しかしながら、
- どの理由にしても、それなりに難解。機械学習の講座の中でこの説明をしている時間はないし、説明したらみんな混乱の渦に叩き落とされる。
- しかもそれがどっちかというと「数学」の話なので、機械学習の本筋からやや外れる。
- 「まぁ、こういうふうに誤差関数を取ればうまくいくのだろう」というふうに「よくわからず暗記」というアプローチを取ってしまえば使うだけだったらなんとなく使えてしまう。
などの理由があって、入門書や講座において
「なんでクロスエントロピー?」「クロスエントロピーってなに?」
ということに触れられることってほぼ無いのです。
でも、「気持ち悪い」ですよね…
しかし、その中で一定数の方は
「意味が分からないものを使うのは気持ちが悪い」
というふうにおっしゃって頂けることも、
最近の講師経験の中でわかってきました。
あぁ、嬉しいなぁ。
こういうふうに「根本的な理屈」をしっかり考えてくださるなんて。
このブログは、そんなみなさんのために
「なるべく分かりやすく、腰を据えてしっかりと理屈を解説する」
というコンセプトで立ち上げたブログです。
というわけで、さっそくですが、連載スタート!
題して…
「なんで誤差関数って急にクロスエントロピーになるのよ?」
クロスエントロピーで躓く、すべての機械学習を学ぶ人達へ。
日本一わかりやすい説明を、お届けします。
(おいおい、大丈夫なのか、そんなに自分でハードル上げて…)
(なるべく早く、みなさんにお届け出来るように頑張って書きます…!!)
合同会社Haikara City代表/高専映像塾ナレッジスター代表/スキルアップAI講師(数学、機械学習)/社会人向け新人研修講師(プログラミング)/その他もろもろ… 詳しくは http://haikara-city.com/works/