🍉しいたげられたしいたけ

NO WAR! 戊争反察Ceasefire Now! 䞀刻も早い停戊を

O'REILLY『れロから䜜るDeep Learning』5章誀差逆䌝播法は芋かけに反しお意倖な難関だったその

盞倉わらずO'REILLY『れロから䜜るDeep Learning ―Pythonで孊ぶディヌプラヌニングの理論ず実装』以䞋 “テキスト”を少しず぀読んでいる。読めば読むほど、著者の 斎藀康毅 氏は、぀くづく頭のいい人なんだずいうこずを実感する。どの章も、章の初めにごく簡単な䟋を瀺しお、そこから次に、䞀気に実甚的なサンプルプログラムの説明に入る。いわば特急列車のようなものだ。

䞀方私は、頭のよくないロヌトルなので、ずおも理解が远い぀いおゆかない。そこで自分の歯に合う、易しい緎習問題をいく぀か䜜っおは解いおみるこずにより、なんずかわかった぀もりになるずいうこずを、章ごずに繰り返しおいる。いわば鈍行列車である。

もう䞀぀、章を読み進めるにしたがっお、著者の斎藀氏は、プログラマずしおも超䞀流なのだろうず、ひしひしず感じるようになった。『入門 Python 3』の監蚳者でもあるので、ひょっずしたらプログラミングの方が本業なのかも知れない。私が Python 初心者で䞍慣れなこずを倧幅に差し匕いおも、「絶察にこんな颚には曞けない」ず感じるコヌドが次々に出おくる。

スポンサヌリンク

 

 

前回の関連゚ントリヌはこちら。数倀埮分による募配法で実珟されおいるクラスを䜿っお、簡単な自䜜テストデヌタセットに察しお機械孊習をやらせおみたずいう話だ。驚いたこずに、本来その甚途に䜜られおいないクラスが、私のでっち䞊げたテストデヌタを凊理しおしたった このあたりも著者の斎藀氏の凄腕に驚かされた事䟋である。

www.watto.nagoya

ただし数倀埮分による募配法では、凊理量が増えるに埓っお動䜜が重くなり、本呜である MNISTデヌタセット盞手では、パ゜コン䞊で動かすむンタヌプリタじゃ凊理に䜕時間かかるか、䜕昌倜かかるかわかったもんじゃないこずが刀明したずころで4章が終わった。次なる「誀差逆䌝播法」ぞの導入ずしおは、できすぎず蚀えるほどのストヌリヌ展開である。

しかしお次なる5章では、凊理の高速化の手段ずしお誀差逆䌝播法ずいうのが登堎する。埮分を数倀近䌌から解析的手法に倉曎するこずにより、蚈算量の倧幅削枛を実珟しようずいうのである。

原理的には、理系人間にずっおはお銎染みのものだ。高校数孊で蚀うずころの「媒介倉数衚瀺された関数の埮分法」ずいうや぀である。

テキストP130131の䟋を匕甚させおもらうず 

f:id:watto:20170711010131p:plain

すなわち t ずいうパラメヌタ媒介倉数を甚いるこずにより、元の関数の導関数が、二぀の導関数の積によっお衚せるずいう公匏を応甚するのである。ただしテキストでは、数匏をガリガリず曞いおいくのではなく、「蚈算グラフ」ずいうので図瀺する手法が採甚されおいる。

蚈算グラフの䟋を、テキストP128から匕甚。図はオリゞナルではなく、パワヌポむントの図圢を䜿っお暡写したものです。

f:id:watto:20170711010051p:plain

1個100円のリンゎを2個買っお消費皎10%がかかるず、代金は220円ずなる。もし支払い料金に1円の倉化があったずするず、元のリンゎの料金には䜕割぀か䜕パヌセントの圱響があるか、ずいうこずを瀺す蚈算䟋である。

ただこの䟋が、珟実の買い物においお起こりうる状況を、なんら反映しおいないよねこずが、私の理解を倧きく劚げた。あくたでこうした蚈算は、損倱関数の出力倀を枛少させるために必芁な係数の倀の倉化量を蚈算する堎合においおのみ圹立぀のであっお、支払い料金が1円増枛するこずによりリンゎの倀段が2.2倍になるわけでも2.2分の1になるわけでもないよね。

ずころがテキストでは、この䟋瀺のあず、蚈算グラフず媒介倉数衚瀺関数の埮分の公匏を甚いお、機械孊習で甚いられる関数レむダの実装方法を次々ず説明し、章末でいきなり本呜MNIST関数を凊理させるクラスが瀺されるのである。しかもそのクラスずいうのが、Python ラむブラリの OrderDirect ずいう関数を䜿甚しお関数レむダを呌び出すずいう、たあようするに掗緎されたずいうか完成床が高いずいうか、シロりトが読んですっず理解できるようなコヌドではないのだ。

そんなで今回も、易しめの問題を自䜜しお解いおみた。解いおみおわかったこずが二぀あった。䞀぀めは「蚀うは易く行うは難し」ずいうのか、逆䌝播法ずいうのは理論ずしおはわかりやすいが、いざ実装ずなるず぀い混乱しお間違いが倚くおたず䞀発で動くものではないずいうこずだった。そしお二぀めは、私に曞けるコヌドがいかに汚いかずいうこずだった。比范にもならないが、もし著者の斎藀氏が同じ機胜を実装したなら、ぜっおヌぜっおヌ私が曞いたものずは䌌おも䌌぀かぬコヌドを曞いたであろうこずは想像に難くない。

それでもあえお晒そうずする理由は、同じ本の孊習者にずっお他山の石くらいにはならないかず考えおのこずず、もう䞀぀は、い぀ぞやの C++ のずきのように、誰かコメントかブコメで教えおくれないかず期埅しおのこずである。

ずいう蚳で今回も察象読者限定なので、遠慮しお新着から目立ちにくくするため日付をさかのがっお公開したす。

この項続く。

れロから䜜るDeep Learning ―Pythonで孊ぶディヌプラヌニングの理論ず実装

れロから䜜るDeep Learning ―Pythonで孊ぶディヌプラヌニングの理論ず実装

Â