手軽に試せるTensorFlow本
――今回、翔泳社から4月に発売した『現場で使える!TensorFlow開発入門 Kerasによる深層学習モデル構築手法』の著者陣であるブレインパッドの太田満久さん、小田大輔さん、須藤広大さん、黒澤匠雅さんにお話をうかがいます。最初に皆さんの自己紹介をお願いできますか?
太田:ブレインパッドで深層学習と機械学習を専門に扱っている部署の部長を務めています。もともとは開発エンジニアとして新卒で入社しましたが、研究開発を手がけることになり、そこから深層学習や機械学習に取り組むようになりました。
須藤:私も太田と同じ部署で、主に深層学習案件や、システムの開発に携わっています。大学院では深層学習を用いた自然言語処理の研究をしていました。現在は深層学習を用いた画像処理案件を担当しています。
小田:私も同じ部署で、仕事では深層学習のプロジェクトに関わることが多いです。深層学習の面白みの一つは、本書でもテーマの中心となっている画像処理への適用だと思います。画像はアウトプットが分かりやすいのもいいですね。
黒澤:私は受託でのデータ分析が主業務である部署に所属しています。本書のテーマである深層学習に関わるプロジェクトにはまだ携われていませんが、実際どのように深層学習が使われているのかを知りたかったので、本書の執筆に手を挙げました。
――ありがとうございます。ではさっそく、本書の狙いについて教えてください。
太田:現在、深層学習やそのためのソフトウェアライブラリであるTensorFlowの書籍はたくさん刊行されています。その中でも多いのは、理論をちゃんと勉強し、理解してから深層学習のモデルを作っていくというアプローチの書籍です。
ですが、エンジニアとしては、初めは理論にこだわらず、「とりあえず体験」してみることの価値も大きいと思っていたんです。実際に体験し試行錯誤することで、モデルがどう動くのかを知ってから理論を学ぶというアプローチですね。本書はこちらのアプローチに基づいています。
それに、TensorFlowの理論や機能を解説した入門書はありますが、さまざまなタイプのモデルを紹介している本はあまりありません。そこで本書では、ノイズ除去、超解像、画風変換、自動着色、画像生成の五つの応用的なモデルを紹介しています。
本書でも基礎知識を解説していますが、網羅的に解説しているわけではなく、いま挙げた五つのモデルを試してみるのに必要な知識に絞って解説しています。また、深層学習のアーキテクチャはいろいろなものが提案されているのですが、最低限の知識でモデルが構築できるように、すべてのモデルをAutoencoderというシンプルなモデルをベースとしたものとしました。
自動着色などはもっと精度のいいモデルも研究されているのですが、本書では扱っていません。単に最新の手法を紹介するのではなく、Autoencoderというシンプルなモデルでこんなにいろいろなことができるんだ、ということを伝えるのが僕の裏のテーマでもあったんです。
小田:あと、本書は数式がほとんどないのが特徴ですね。
太田:最後に少し出てきますが、できるだけ数式を使わないことも意識しました。
小田:企画段階から手軽に試せるTensorFlow本を書こうと考えていました。でき上がった書籍を見て、けっこう意図どおりに仕上がったと思っています。
――手軽というのはどれくらいでしょうか?
太田:「深層学習の面白いところだけやろう」みたいな感じですね(笑)。機械学習について学ぼうとすると、サンプルデータの分類や回帰といった、(表現は悪いですが)堅苦しい内容になりがちです。深層学習の場合は「着色する」「画風を変えてみる」といった分かりやすい応用があります。
もちろん、深層学習をきちんと学ぶなら理論から理解すべきです。しかし、入門書で理論から始めると基礎ばかりで応用まで説明しきれません。本書は基礎の説明を最低限に絞って、いろいろな応用例を紹介することで、気に入ったところをつまみ食いしてもらうことを狙いました。
須藤:たしかに深層学習を全然知らない、別分野の人が本書だけ読んでもできてしまいます。数式がなく、どんなエンジニアでも試せるという点では気軽ですね。
太田:それでも、本書の半分は基礎の解説になってしまいましたが(笑)。
GCPでも深層学習を試せる
――深層学習を気軽に体験できる本だとのことですが、推奨される動作環境として高価なCPU(Intel Xeon E5-1650 v4 3.60GH、6コア)とGPU(Geforce GTX 1080 Ti)が必要だとあります。これはちょっと敷居が高いのではと思いました。
太田:そうかもしれません。ですので、今回はマシンスペックに不安がある方のために、GCP(Google Cloud Platform)で環境を構築するための補足資料を用意しました。
同じページで配布しているサンプルプログラムは、まずGeforce GTX 1080 Tiを使用した環境で試したあと、GCPを利用した環境でも確認しています。ハイエンドのGPUを持っていない方は、こちらで体験してもらえればと思います。
須藤:本書での実行環境(Tesla K80×1、CPU4コア、メモリ15GB)だとGCPは1時間50円ほどで利用できます。
太田:本書で紹介しているモデルだと、学習に何時間かかりますか? 僕の担当したモデルはだいたい数時間なので、数百円ですね。
須藤:どれも何千円までにはならないと思います。
小田:自動着色はいくらでできるんですか?
須藤:かかった時間が12時間くらいなので……それでも600円です。
――そう聞くと、金銭面でもとてもハードルが低いように感じます。そうした工夫はやはり読者層を想定してのことだと思いますが、具体的にどういう方を読者としてイメージされていますか?
太田:深層学習に少しでも興味があるエンジニアの方ですね。深層学習と聞くと難しそうなイメージを持つかもしれませんが、そうではないと知ってもらいたいです。たしかに理論を理解しようとするとたいへんでも、本書で紹介するKerasというPythonのニューラルネットワークライブラリを使えば、コーディングはブロックを組み合わせるようにできるので意外と簡単なんです。
それと、逆説的ですが、実際にやってみると手間のかかる部分もあるので、それも体験して感じてみてもらえればと。そうした感覚は、ある程度実用的なモデルを触ってみないと分かりませんから。
小田:自分から関心を持って勉強してみたいという方のほかに、社長や上司から「エンジニアならAIで何かしてくれ」と言われている方にもお薦めしたい内容ですね。そういう方がTensorFlowに行き着いてドキュメントを読んでも、自分でどんなことができるのか簡単にはイメージしにくいのではないかと思います。
そんなとき、本書で実用的な深層学習モデルを試してみて「これくらいならできそう」「これだと難しい」といった感覚を掴んでもらえるといいですね。そうした経験があるだけで、上司に対してAIの利用について、的確な意見ができるようになります。
――では、本書を読むにはどんな前提知識が必要でしょうか。
太田:まずはPythonです。数学は高校レベルであれば十分です。どちらかというと、そうした技術や数学的な知識よりは実際にコーディングをしてみるというマインドセットが大事ですね。
入門書を読んで次に何をしたらよいのか分からないということがよくあると思いますが、本書では応用的なサンプルを多く用意しているので、興味のあるモデルについては実際に自分で手を動かしてみていただきたいです。
――読者には本書を読んでサンプルプログラムを試してもらったあと、どんなことをしてもらいたいですか?
太田:パラメーターを変えたり、データを入れ替えたりしてみてほしいです。深層学習はパラメーターが少し違うだけで、結果がまったく異なることがよくあります。あるいは、データを入れ替えただけで、パラメーターの調整が必要となる場合もあります。単純にサンプルプログラムを動かすだけでなく、そうした試行錯誤も体験してもらいたいです。
小田:例えば、インプットする画像のサイズを変えるだけでもネットワークを変えなくてはいけません。自分で何か新しいデータを入れようとするとちょっとだけハードルが高くなりますが、それを少しずつ越えていくうちに対応や工夫の仕方が分かってくると思います。
本書で画像処理はだいたいのことができるようになる
太田:僕から執筆陣に質問ですが、この五つのモデル(ノイズ除去、超解像、画風変換、自動着色、画像生成)のうち、どれがお気に入りですか?
黒澤:僕は超解像ですね。結果が分かりやすいですし、なにより趣味で写真をやっているので関心があります。ピンボケしているところをあとから修正できそうですし(笑)。
太田:第12章で紹介したGAN(Generative Adversarial Network)を応用した、CycleGANという手法を使えば、全体にピントが合っている写真でメインの被写体に焦点を合わせ、背景だけボカすことができます。本書では扱っていませんが、ぜひ実装してJupyter Notebookで公開してください(笑)。
小田:GANは面白いですね。
太田:入門者が試すには面白いんですが、仕事で自動着色や画像生成をそのまま使うことはまだ少ないですよね。実際の仕事では、画像分類やセマンティックセグメンテーション(画像のピクセル単位でのラベリング)が多いです。
小田:私が担当した「第6章 学習済みモデルの活用」は、初めての方にはけっこうインパクトがあるかもしれません。ここで紹介するモデルを使うと、画像を読み込むだけでそれが何なのかを分類してくれます。
黒澤:画像処理のモデルばかりなので、結果が分かりやすいのがいいですよね。
太田:そもそも深層学習が注目されたのはImageNet Large Scale Visual Recognition Challenge 2012という画像解析のコンペティションで、深層学習モデルの一つであるCNN(Convolution Neural Network)が使われていたことがきっかけです。
なので、本書でも基本となるCNNは押さえておきたかったので、紹介するのは画像処理に絞りました。自然言語処理や強化学習も応用例が面白いんですが、今回はあえて扱っていません。
須藤:自然言語処理をするなら、RNN(Recurrent neural network)などのモデルを学ぶ必要があるため、CNNがメインの本書が画像処理の領域に絞ったのは正解だと思います。
太田:最初に本書は網羅的ではないと言いましたが、画像処理に関しては広く押さえてあるので、読み通せばだいたいのことができるようになります。
深層学習は怖くない
――ありがとうございます。それでは最後に、記事の読者に向けてメッセージをいただけますか?
黒澤:深層学習をそれほど利用していない立場から言うと、わりと短いコードで書けてしまうのが驚きでした。その点は、取っかかりやすさにつながると思います。
須藤:本書は深層学習を用いた画像処理の基本となるCNNとAutoencoderから始めているので、数式が分からなくても、論文に掲載されている図を見るだけで、ある程度モデルの組み方が分かるようになると思います。先ほどのCycleGANの話のように、本書を通して応用例を自分で考えて、活用してもらえると最高に嬉しいです。
太田:僕はとにかく「深層学習は怖くない」ということを知ってもらいたいですね。もし自分にはできそうにないと思っている方がいたら、ぜひ本書から始めてみてください。
小田:本当にやってみると意外と易しいと思うので、とりあえずサンプルプログラムだけでも動かしてみてほしいです。そこから新しい道が開けるかもしれません。