ゼロから作るDeep Learning(13日目)
こんにちは、筋肉めがねです。
本日2本目の記事でございます。
前回の記事ではBrexitについて、来週12月11日に大事な投票が実施されると書きました。この記事では、具体的に誰が何に対して投票するのか書いていきます。
Theresa May英国首相は、11月26日に欧州議会において、27ヵ国のEU首脳から、UKのEU離脱における協定案に対する承認を取り付けました。具体的に付議された協定案は以下の二つで、一つはUKのEU離脱における全体的な合意内容、そしてもう一つは離脱後のUKとEU間の関係を示すものです。
1. 離脱における全体的な合意内容
例えば、UKがEUにどれだけ借金をしていて、どういう予定で返済していかなければならないか、とか、現在UKに住んでいるEUの人々はどうなるのか、とか、現在EUのUK外に住んでいるUKの人々はどうなるのか、という内容が書かれております。一つ例を挙げると、現在ドイツに住んでいるUKの人々の、ドイツにおける住民権、およびドイツにおけるSocial Security権利(医療など)は保証されておりますが、ドイツ外のEUにおける住民権、Social Securityについては、具体的に言及されておりません。またスペインの南に位置するUK領ジブラルタルについても、同案は言及しており、UKがEUを離脱する際には、ジブラルタルについても同様の条件が適用される、と書かれております。
2. 離脱後のUKとEU間の関係に関する宣言書
そこまで具体的な内容は書かれておりませんが、例えば関税については、これまで通り0としましょう、という内容が書かれております。
これら二つの案をTheresa Mayはイギリス下院に付議し、そして議員の過半数の賛成を得る事ができれば、晴れてwith dealでのBrexitへと一直線な訳でございますが、もしも否決された場合、その後21日以内に次のアクションを決める必要があるようです。それについては、次の記事で書きましょう。
それでは、「ゼロから作るDeep Learning」を進めていきましょう。
4章最後の記事ですね。
前回の記事では、2層のニューラルネットワークを一つのクラスとして実装し、そして、MNISTのデータセットを使用してニューラルネットワークに学習させました。
この記事では、前回学習をさせてニューラルネットワークが過学習を起こしていないか、検証して行きます。
過学習とは何なのか。お絵描きして理解してみましょう。
例えば、xy座標に幾つかのデータがあり、それらのデータを表す二次曲線を求めるという最適化問題があった場合、 外れ値の無いデータ群であれば、特に問題なくニューラルネットワークに学習させ、それらのデータを表す最適なモデルを作ってくれそうです。
では、さらにデータの数が増え、そして外れ値が含まれるデータ群となり、そしてニューラルネットワークがその外れ値に対しても適合するモデルを作ってしまった場合、そのモデルは汎化なものではなくなってしまいますね。つまり、ニューラルネットワークが学習し過ぎた事により、不適切なモデルが出来上がってしまった、という訳です。
これが過学習ですね。
では、前回の記事で学習させたニューラルネットワークが過学習を起こしていないか検証していきます。
2層ニューラルネットワークについては、前の記事で一つのクラスとして実装した通りです。という事で、ニューラルネットワークが過学習をしたのか、検証するためのコードを以下に書きます。
結果、以下が出力されました。
今回は100個の訓練データ(本書では100個ごとに1epochと読んでいる)を検証し、つまり100個の画像データの認識を行い、それを各々のデータラベルと比較し、その検証結果をtrain_accとして出力しました。その結果、accuracyは0.10868であると。そして、訓練データではなくて、テストデータを用いて同様に検証してみると、検証結果は0.1153であると。検証結果がほぼほぼイコールである事が確認できました。
本来であれば、1epoch(100個のデータ)だけでなく、本書で示されている通り100epoch程度の検証結果を比較し、それらの検証結果をx軸epoch数、y軸、検証結果の認識精度でグラフ化すべきではありますが、いかんせん、僕のmacでは、計算に多大な時間を要するようです。
という事で4章まで終えました。全8章ある本書のようやく半分でございます。
次回は5章ですね。
それでは、本日は以上でございます。