見出し画像

ニューロモノリスを「写経」した

お疲れ様です。Y研究員です。桜開花のニュースを見るようになりました。春です。世の中には心配なニュースも流れています。花見でもして落ち着きたいものです。

さて今日の「写経」は引き続きニューラルネットの学習です。英語の文字列の中から1文字だけ独立したものを取り除きます。冠詞のaとかです。いくらでも簡単な方法はありますが、スタイルの勉強としてニューラルネットを使います。これまで取り組んできた課題が単語の出現頻度だったので、その前処理です。

ニューラルネットの層が多数重なった物を深層学習といいます。パラメータが多くなりがちです。今回のネットワークはなんと711万ものパラメーターがありました。本の解説でも書いてありますが、無駄に多いです。タスクについて考えずにニューラルネットを作る例です。

ニューロモノリスは、「ニューラルネットのモノリス」という意味です。モノリスとはいろいろな機能を全部一つに詰め込んだスタイルです。なので一つのネットワークに何でもやらせる状態を意味しています。

「写経」して分かったのですが、これをCPUだけで学習するのはかなり時間がかかります。幸いにも"Google Colab"は無料でGPUが使えるので使ってみました。まずは「Change runtime type」からT4 GPUを選びました。Epochが4なので4回やります。1回あたり7から8分かかりました。学習に時間がかかるので、途中でこのブログの記事を書き始めたくらいです。。。

デフォルトはCPUでした。TPUも使ってみましたが、GPUの方が早かったです。

リソースの無駄遣いと書いたので、どれくらいか見てみました。GPUのメモリは10%も使ってなかったので、まだ余裕がありました。GPUのメモリが15GBも使えるのはかなり太っ腹です。大きい深層学習のモデルも動かせます。いちおう、「この勢いで使うと3時間で無料枠は終わりますよ」という但し書きもありました。

リソースの消費具合。メモリーにはまだまだ余裕があります。

学習が終わってモデルを使おうとしたらエラーが出ました。どうやら学習データを作成するプログラムに間違いがあったようです(行列のサイズが合わない深層学習あるあるです)。機械学習の辛いところは、時間をかけて学習させたモデルが動かないことです。今回は30分くらいで済みますが、1日とか2日間ずっとパソコンを回し続けて得たモデルが意図したとおりに動かないとダメージが大きいです。できるだけ早く誤りに気が付きたいので、最初は手短に学習させて様子を見るのが良いです。転ばぬ先の杖です。

気を取り直してもう一回学習しなおしです。面倒になったのでエポックは1に減らしました。今度は無事に動いたので「写経」を終えました。

次回はもう少し賢いネットワークを「写経」します。それではまた!

無料のプログラミングクラブCoderDojoを運営するにあたり寄付を受け付けています。お金は会場費・Wifiの費用・教科書に使用します。