構築しよう!機械学習に最適な環境を

前回は、機械学習について学んだ知識を試してみるにあたって、データをどうやって入手し、学んだ成果をどうやって図るのかについて、考えてみました。

今回は、入手したデータを実際に処理するための、開発環境について、自分なりに学んだことを、アップしていきたいと思います。

結論から言うと、Python+Google Colaboratory(Google Colab)を使ってみたいと、思います。

得意の言語?いやいや、そこはあの言語で

あなたには、得意なプログラミング言語が、ありますか?Javaでしょうか。.NET(C#)でしょうか。「TIOBE Index」*1によると、この何年かずーっと1位な言語は、Javaです。もしかしたらあなたは、機械学習を始めるにあたって、こんな風に考えたことは、ないでしょうか?

プログラミング言語なんて所詮どれも同じ、とりあえず得意な言語で、仕組みから理解しよう

と。とても真面目なアプローチですが、これは大いに危険な可能性があります。あなたが学生時代から数学を学んでおり、高度な数式をプログラミング言語のアルゴリズムに落とし込めるほど数学・プログラミングに長けているならば、これは良いアプローチかもしれません。しかし、そうでないならば、難しすぎて挫折する可能性が、あります。まぁ、

全部私のことなんですが

例えて言えば、車を運転するにあたって、まずは車の仕組みから理解して、車の組み立てからやってみようとしているようなもの。初心者がいきなりやるには、だいぶハードルが高すぎます。一般人は、大体の車の概要を理解して、後は実際に運転できれば十分でしょう。同様に、機械学習も、大まかに仕組みを理解して、後はやってみる方が、挫折せずに身につけれるのではないかと、個人的な結論に至りました。

ここで、組み立て済みの車にあたるのが、ライブラリになります。一般人は、組み立て済みの車を運転できれば、自分で組み立てれる必要がないように、機械学習も、まずはライブラリを使いこなせれば、初級者としては、それで十分なのではないでしょうか。つまり、自分の得意な言語ではなく、ライブラリが充実している言語を選ぶことが、機械学習を身に着けるための第一歩だと、思いました。

機械学習のライブラリが充実している言語というと・・・そう、Pythonですね。月並みですが、やはりそういう結論に至りました。

一時期は、Javaで自力で機械学習のアルゴリズムを組むのに挫折して、Watson StudioやNeural Network Consoleのような、ノンプログラミング系のものにしようかと思いましたが・・・これはこれで、簡単にそれなりの精度は出るものの、その後どうすればいいのか、路頭に迷ってしまいました。

ライブラリを使ってプログラミングするのが、ほどほどに簡単で、工夫も出来てスキルが向上している感も持て、バランスが取れているのかな、なんて思いました。

IDEは一択。に見えて・・・

Pythonで機械学習をするならば、やっぱりAnnacondaとJupyter Notebookです。Java屋さんに分かるように表現すると(?)、Annacondaはmavenがもっと便利になったもの(つまり、ライブラリ管理ツール)で、Jupyter Notebookは、EclipseがWebになったもの「のようなもの」(つまり、IDE)と言えば、当たらずとも遠からずな感じでしょうか・・・

基本的には、Annacondaをダウンロードしてインストールして、Annaconda経由で、機械学習に必要なライブラリやJupyter Notebookをインストールすれば、学習環境は出来ます。書籍やネットにも手順はたくさん書いてあるので、特に問題はありません。ありませんが・・・

機械学習には、それなりのマシンパワーが、必要になります。昨今、「ネットが見れればまぁ十分」と、ご自宅のPCには、そこまでハイスペックのものを用意していない人も、多いのではないでしょうか。あるいは、会社PCだと、会社特有のプロキシ設定にひっかかって、やっぱり環境の構築に色々と面倒だったりも、するかもしれません。

そこで、本ブログで試してみたいのが、Google Colaboratory略して、Google Colab。クラウド版のJupyter Notebookになります。クラウド版のJupyter Notebookというと、AWSやAzure、Watson Studioなど、各社主要クラウドベンダーも出していますが・・・無料で、しかもGPUまで使えるというのは、今のところ、Google Colabだけではないでしょうか。90分ルール*2や12時間ルール*3など、注意すべき制限はいくつかあるみたいですが、それを差し引いても魅力的なツールです。なんだったら、

iPad Proで機械学習を行う

なんてシャレオツなことも、出来てしまいます。ということで早速、セットアップしてみました。

Google Colabをセットアップしよう!

Googleアカウントの作成

まずは、Googleアカウントを作成する必要があります。以下のURLから、Googleアカウントを作成しましょう。・・・とはいえ、今のご時世、大半の人がgmail使ってると思いますし、既に持っている人が多いのではと、思いますが。
accounts.google.com

Google ドライブへアクセス

基本的に、Google Colabは、Google ドライブから使うみたいです。以下のURLからGoogle ドライブにアクセスし、「Google ドライブへアクセス」というボタンを押しましょう。
www.google.com

f:id:tatsu_mk2:20190407110442p:plain
Google Driveへアクセス

Google Colabを追加

Google ドライブにアクセスしたら、新規ボタンをクリックします。

f:id:tatsu_mk2:20190407120021p:plain
図2 新規ボタンをクリック

すると、以下のようなポップアップメニューが表示されるので、その他⇒アプリを追加を、クリックします。

f:id:tatsu_mk2:20190407122101p:plain
図3 アプリを追加

続いて、以下のような画面がポップアップされるので、Colabを検索し、「+ 接続」ボタンをクリックします。

f:id:tatsu_mk2:20190407121838p:plain
図4 ドライブにアプリを追加

追加が完了したら、以下の画面が表示されるので、OKボタン及び×ボタンを押して、画面を閉じます。

f:id:tatsu_mk2:20190407121459p:plain
図5 追加完了

これで、Google Colabを使う準備が、出来ました。

ノートブックの追加

試しに、ノートブックを追加してみたいと、思います。図2~図3の手順で、新規⇒その他を選択すると、今度はその中に「Colabolatory」というものがあると思うので、それをクリックします。

f:id:tatsu_mk2:20190407122539p:plain
図6 ノートブックの追加

すると、ノートブックが開きます。

f:id:tatsu_mk2:20190407122807p:plain
図7 追加されたノートブック

Jupyter Notebookっぽくはありますが、若干アレンジされていることが分かるかと思います。試しになんか実行してみると・・・

f:id:tatsu_mk2:20190407123224p:plain
図8 試しにPythonコードを実行

実行できました。とてもセットアップが簡単だと、思いませんか?

ノートブックが追加された場所の確認

既にご想像されているかもしれませんが、Google ドライブの「マイドライブ」上で新規追加したため・・・

f:id:tatsu_mk2:20190407123940p:plain
図9 ノートブックが新規追加された場所

マイドライブ直下に、新しいノートブックが、追加されています。追加直後なのでUntitledとなっていますが、通常のJupyterと同じように、名前を変更することが出来ます。標準でメニューが日本語になっているのは、嬉しいですね!

f:id:tatsu_mk2:20190407130300p:plain
図10 追加したノートブックの名前変更


・・・というわけで、Google Colabは基本、Google ドライブをファイルシステムとして、使用します。なので、無料ではありますが・・・Google ドライブの容量には、要注意です。

次回予告:Google ColabのちょっとしたTIPS

ちょっと長くなってきたので、今回はここらへんで一旦、終了にしようと思います。前述したとおり、Google Colabは、ローカルのディレクトリではなく、Google ドライブを使用することを前提としています。ですので、ファイルの読み書きで、通常のJupyterとはちょっとした違いが、あります。次回は、実際の機械学習に入る前に、一旦以下当たりの「Google Colabの癖」について、整理してみたいと思います。

  • 追加のライブラリの導入方法
  • ファイルの読み書き
  • コード補完のやり方*4
  • GPUの使い方
  • キーボードショートカット
    • とりあえず、Jupyterでよく使っていた、セルの追加・削除、セルの種類の変換あたり。

最後まで読んでいただいて、ありがとうございました。

*1:TIOBE Software社が公開する、複数の検索エンジンの検索結果から、各言語がどれだけ話題になっているのかを評価したランキング。

*2: 放置しておくと、90分で強制シャットダウンします。

*3: 実行中でも、12時間立てば、強制シャットダウンします。

*4: 通常のJupyterの場合、nbextensionsという拡張機能を、入れます。