機械学習を始めない理由を排除する

 機械学習は、コストが掛かったり環境構築が面倒だったり、なかなか始める気になりません。機械学習を「始めない理由」を排除していきましょう。

GPUが無い、環境構築が大変

 Google Colaboratoryというサービスがあります。無料でNVIDIA Tesla K80相当のGPUと、13GBもの豊富なメモリを使うことができます。

 更に、機械学習に必須と言ってもよいPythonとTensorFlowなどの主要ライブラリがデフォルトでインストールされており、すぐに機械学習を始めることができます。

 ほか、aptコマンドが利用できたりと、非常に拡張性の高い環境なので、これさえあれば学習用途の環境はすべて満たせるはずです。

データセットを用意するのが大変

 Kaggleは、優れたデータセットを与えてくれます。現実に即した研究データが提供されているだけでなく、賞金が出るものもあります。

 機械学習の理論が分かり始めたら、狙ってみるのも良いかもしれませんね。

基礎理論がわからない

 問題ありません。例えばKerasに関して言えば、機械学習のコードはわずか数十行で完結します。

 以下は、MNISTデータセット用の深層学習部分のレイヤコードです。

from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
                 activation='relu',
                 input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))

model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.Adadelta(),
              metrics=['accuracy'])

 実際には、データクレンジングなどのコードを要しますから、このまま使うわけにはいきませんが、コードを見てみると非常に単純な気がしませんか?

理論を学習する

 先ほどのコードを走らせてみるだけでも、何も知らない座学だけで学習していたときに比べ、頭に入ってきやすいことが分かると思います。

 ここで心理的な負担は驚くほど下がります。機械学習で学習すべきことは、先ほど挙げたコードのひとつひとつが「何をやっているか」「何故そうしたか」を紐解くだけです。

 たとえば、Dropout関数は何か?と調べます。調べるうちに、「どうやらこれは過学習に効果がある」とわかります。次には「過学習とは何か?」を調べ始めるはずです。

 このように、各レイヤのコードをひとつひとつ調べるうちに、深層学習への理解は自然と深まっているものです。

 今の時点で数学を学びなおす必要はありません。今後、必要になったら学べばよく、必要になったときには、ここで調べた各層の意味を知っているだけでも、理解しやすくなるはずです。

まとめ

 機械学習を座学、基礎理論から学ぼうとすると大変ですから、まずはやってみて、「こんなものか」と、心理的な敷居を下げることが重要です。

 Google ColabやKaggleなど、優良な環境は既に存在するので、手を動かしながら学習を進めましょう!