Deep Learningの習得にはスクラッチでの実装が効果的

2017年3月8日(水)
巣籠 悠輔(すごもり ゆうすけ)狐塚 淳(こづか じゅん)

多くの業界からますます注目を集める機械学習・深層学習。2012年、東京大学の松尾 豊研究室においてDeep Learningとはじめて出会った巣籠 悠輔氏は、現在、母校東大の招聘講師としてAIの未来を担う後進の育成に力を入れている。Deep Learningに関する英文による書籍執筆経験もあり、株式会社 情報医療(MICIN, Inc.)では同社の最高技術責任者(CTO)を務める巣籠氏にお話をうかがった。

:機械学習・深層学習を医療分野に応用した新事業の開拓を目指して2015年11月に設立された。MICINは「マイシン」と読む。

Deep Learningとの出会い~2012年、松尾 豊研究室

私がDeep Learningを知ったのは2012年の秋、東大の修士2年で、現在では人工知能の世界で非常に著名な松尾 豊先生の研究室に在籍していました。松尾先生が「Deep Learningはすごい」と言って紹介してくれたのが、今では関連書籍に必ず登場する「ILSVRC(ImageNet Large Scale Visual Recognition Competition)」コンペでの画像分類タスクの結果でした。Deep Learningを使用したカナダのトロント大学のチームが他のチームのモデル性能を10%近く引き離して勝利したのです。当時、日本国内でDeep Learningに注目している研究者は松尾先生を除けば私くらいで、ほかにはほとんど誰もいなかったのではないでしょうか。

株式会社 情報医療 CTO 巣籠 悠輔氏

それを契機にDeep Learning関係の英語の論文をチェックするようになりました。「Googleが猫の画像を自動判別した」という発表も同年の6月ごろにあり、海外では急激に注目度が高まっていました。

卒論では機械学習を金融分野に応用していましたが、当時修士論文で私が取り組んでいたのはポートフォリオ理論を応用してビジネスSNSで人脈を最適化する研究でした。こちらはDeep Learningと関連はないのですが、数理ファイナンスもDeep Learningも、どちらも背景は美しい数式に支えられているという共通点があります。

修士論文と並行してDeep Learningの文献を基にさまざまな言語で実装を行い、その成果をGitHubのDeep Learningリポジトリで公開しアップデートを続けていきました。これはすべて英語です。一方、同時期にブログでは日本語でDeep Learningについて情報発信をしていました。

GitHubのDeep Learningリポジトリ
https://github.com/yusugomori/DeepLearning

編集者はGitHubを見ていた

修士を終えた私は電通に入社しました。就職は数理ファイナンス・金融工学に興味があったため、外資系の証券会社でトレーダーのインターンなどをやってみたのですが、どうもしっくりきませんでした。当時私は「社会に対する技術のアウトプットはどのような形が適しているか」を考えていたのですが、その解決には経験が不足していると感じました。そこで、アウトプット表現を常に専門的に考えている電通を選んだのです。電通ではデジタルクリエイティブ分野でアプリの企画や制作、ディレクションを主に行っていました。

並行して、GitHubではPython、C、C++、Java、Scala、Goといった様々な言語でDeep Learning実装をアップデートしていきました。そのGitHubを見たPackt Publishingの編集者から書籍執筆の打診が来たのです。当時JavaによるDeep Learningの書籍タイトルはなかったため、「Javaにフォーカスして書いてほしい」という依頼でした。現在ではPackt Publishingから“Machine Learning in Java”や“R Deep Learning Essentials”といったタイトルも出版されていて、機械学習やDeep Learningに力を入れている出版社です。

Deep Learningに使用する言語はPythonがスタンダードですが、Javaはエンジニアの数が大変多く、そうした技術者のDeep Learning入門への入り口になる本の出版には意義があると考えて引き受けました。数式やコードは通常使っているもので良いのですが、英国の出版社なので解説は英文で書かなくてはなりませんでした。

“Java Deep Learning Essentials”の上梓

執筆に取りかかる同時期に、電通からGoogleのニューヨークオフィスへ出向することになりました。ニューヨークでの仕事は短期間でしたが、グローバル企業向けの企画に実装メインで取り組みました。VRなどの実装も経験しました。

米Googleの印象として「こうしたワークライフのスタイルは良いな」と思いました。一方、当時はちょうどGoogleを子会社とする持株会社Alphabetが設立された時期だったので、社内は変化の予感で少し落ち着かない感じでもありました。

私はといえば、Googleにいた期間のプライベートな時間はすべて書籍の執筆に充てていました。これはなかなか苦しい体験でした。楽観的な性格も手伝って、これまで何をするにしても「どうにかなる」と思ってきたのですが、この時ばかりは「これは完成できないのでは……」と半分諦めかけたこともありました。当時は毎週末にシェイクシャックに行くと決め、それを楽しみに仕事や執筆を続けているという状態でしたが、どうにか12月に脱稿し、2016年5月に“Java Deep Learning Essentials”の刊行に漕ぎつけました。この本はその後自分で日本語に翻訳し(『Deep Learning Javaプログラミング 深層学習の理論と実装』(インプレス刊))、現在では日本語で読んでいただくことができます。

「Java Deep Learning Essentials」と「Deep Learning Javaプログラミング 深層学習の理論と実装」

“Java Deep Learning Essentials”ではスクラッチでDeep Learningを実装するところから始め、ライブラリDeepLearning4Jについて解説し、さらにPythonのライブラリTheane、TensorFlow、Caffeを紹介しています。スクラッチでやってみることは重要で、数式を実装に落とし込むことはより明晰な理解につながります。私自身、GitHubでもフルスクラッチで実装するという勉強法をとっていました。

Pythonの強みはライブラリとツールの充実

現在、Deep Learningに使用される言語はPythonを使用するケースが多いですが、これはライブラリやツールなどが充実しているためで、数式を実装するだけならばJavaとPythonでは大きな違いはありません。しかし、実際にDeep Learningを使用していく際にはどちらを使用するかで大きな違いが生じます。

TensorFlowはPythonで扱える代表的なライブラリですが、Python は関連したライブラリが充実しています。Deep Learningには大量の入力データが必要ですが、データを集めさえすれば効率的に学習できるわけではありません。Deep Learningに適した形にデータを加工する細々とした前処理が必要で、TensorFlowをはじめとしたPythonのライブラリにはこれを代替してくれるAPIが揃っているため、開発時間を大きく短縮できるのです。利用者が多いとこうした環境もどんどん整っていきますから、Python、TensorFlowの優位性は当分揺るぎそうにありません。もし専門的に使用している言語がない場合はPythonでDeep Learningを習得するのが早道でしょう。

データサイエンス基礎講座2017<機械学習のための数学基礎編>で講演する巣籠氏(2017年2月14日)。AI人気も相まって多くの参加者を集めた

Deep Learningの成果を役立てるために

各大学ではDeep Learningを学べる講座や研究室が増加しています。現在の学生たちが順調に育ってくれば、将来的に日本でも研究者は不足しないと思います。

しかし、一方でDeep Learningのコモディティ化は進んでいるものの、データサイエンティストに加えアプリケーションエンジニア不足が問題になってきます。効果的に学習できたモデルは学習済モデルとしてずっと利用可能ですが、現実社会でそれを役立てるためには、アプリケーションに落とし込む必要があります。

そうした場面では、現在システム開発やアプリケーション開発に携わっているエンジニアがDeep Learningを理解し、成果の利用をスムーズにできるようにしていくことが大切です。それによって今後のDeep Learningの発展、普及のスピードが決定されていくのだと思います。

次回に続く

著者
巣籠 悠輔(すごもり ゆうすけ)
Gunosy、READYFORの創業メンバーとして、エンジニアリング、デザインを担当。大学院修了後は電通にてデジタルクリエイティブの企画・制作、ディレクションに従事。Googleニューヨーク支社勤務を経て、2016年、医療ITスタートアップを共同創業。2016年9月より東京大学招聘講師。東京大学工学部システム創成学科卒(首席)、東京大学大学院工学系研究科 技術経営戦略学専攻卒。
著者
狐塚 淳(こづか じゅん)
コンピュータ系出版社の雑誌・書籍編集を経て、フリーランスのITライターに。現在は雑誌やWebメディアで、AI、ロボティクス、IoT、クラウド、データセンターなどの記事を中心に執筆している。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています