ソニーの最先端R&D、そのウラ側に迫る! 若きエンジニアが生み出す機械学習フレームワークの価値
圧倒的スピードで浸透しつつある、機械学習。この分野にソニーが満を持して投入したOSSの背後には、ある若手エンジニアの活躍がありました。ソニーの最先端R&Dの裏側に迫ります。
いま、機械学習がすさまじいスピードで浸透しつつあります。
Chainer、Keras、TensorFlowといった、機械学習のためのフレームワークが続々とリリースされ活用されていることも、もちろん無関係ではありません。
そして、2017年6月、ソニーからオープンソースソフトウェア(OSS)として機械学習フレームワーク「Neural Network Libraries」が公開されました。動的グラフ機能というディープラーニングの最新トレンドを取り入れながら、電子機器などに組み込む使い方にも対応しやすい作りがこのフレームワークの特徴です。
ソニー社内はもちろん、関連企業でも活用されるなど、大きな存在感を発揮しつつあるこのフレームワークの開発には、2人の若手エンジニアの活躍がありました。ソニー社内で「機械学習道場」とも呼ばれるR&Dプラットフォーム、システム研究開発本部の成平拓也(なりひら・たくや)さん、吉山和樹(よしやま・かずき)さんにお話しを聞きました。
- 既存の課題を解決するために、フルスクラッチ開発に挑む
- OSSにしたことで、社内での認知が高まる効果も
- ディープラーニングというブレイクスルーで流れが変わった
- コードを書かずに機械学習を使うニーズに対応してGUIツールを提供
- 大企業ならではの知恵もフル活用
- 連載バックナンバー
既存の課題を解決するために、フルスクラッチ開発に挑む
──お二人の簡単な自己紹介をお願いします。
成平 システム研究開発本部でNeural Network Librariesの開発のリーダーをしています。
吉山 システム研究開発本部で、Neural Network Librariesや関連ツールの開発に関わっています。
──いまはどのような業務領域を担当されているのでしょうか?
成平 基盤技術を研究開発して、社内の他の部署に提供しています。他の部署との協力のやり方はケースバイケースですが、コンサルティング的に協力するパターンもあれば、技術を一緒に育てていくパターンもあります。
──どのような経緯でオリジナルのフレームワーク開発が始まったのですか?
成平 社内では2010年頃からディープラーニングのフレームワークを作っていました。Neural Network Librariesはディープラーニング向けのフレームワークとして第3世代にあたります。第2世代にだんだん不都合を感じるようになってきたことが、作り始めた背景にはあります。
2015年の秋から、社内の留学制度を使ってカリフォルニア大学バークレイ校(以下、UCB)に訪問研究員に行っていました。研究テーマはディープラーニング(深層学習)のコンピュータビジョン*1への適用です。
UCBの研究者らが開発していたディープラーニングのフレームワークとして、画像認識分野で有名なCaffeがあります。私もCaffeのOSS開発に参加していたのですが、新しい研究がどんどん出てくる中で「もっといいものが作れるだろう」と感じていました。それが今回の第3世代のフレームワークを作り始めたきっかけです。
吉山 今の第3世代のフレームワークもそうですが、実は第2世代のフレームワークも成平さんが作ったものでした。成平さんが留学していた間、僕ともう1人でサポートしていました。第3世代にあたる今のNeural Network Librariesのコアは、留学から帰ってきた成平さんが1人で作り始めたもので、初期の開発メンバーも少数です。私は半年ほど前に参加したばかりで、本気で取り組み始めたのは今年の4月から5月にかけての頃です。
──新しいフレームワークを開発するにあたり、どのような方針を立てたのですか?
成平 まず自分たちでフルスクラッチで書かないといけないと決断しました。既存のOSSのフレームワークを駆使していると、どうしても細かなカスタマイズを加える必要が出てきます。だったら最初から書こうと。
ソニーのような企業で機械学習フレームワークを活用する場合には、多様なプロセッサやデバイスに最適化して、実装を切り替えて使えるようにする必要がありました。最初の段階では普通のCPUと、NVIDIAのGPUコンピューティングプラットフォームのCUDA(Compute Unified Device Architecture)で動くように作りましたが、動作環境を増やしていけるように作っています。
それに加えて、最先端のディープラーニング向けフレームワークのいいところは全部参考にしました(笑)。
──動的グラフ機能のサポートは、ひょっとしてChainer(日本のPreferred Networksが開発したPythonを記述言語とする深層学習フレームワーク)の影響ですか?
成平 参考にしています。Caffeに動的ネットワークを付加するApollo Caffeというフレームワークがあるのですが、これも参考にしています。
OSSにしたことで、社内での認知が高まる効果も
──社内向けに開発したフレームワークをOSSで公開した理由は?
成平 ソニーでは長い間、機械学習への取り組みを続けていました。にもかかわらず、業界での存在感を発揮するには至っていませんでした。機械学習フレームワークを公開することで世の中に貢献していく立場になれるという考え方がありました。
吉山 OSSにしたことで、ソニー社内での認知も広がりました。「そういうフレームワークが出たんだ」と。
成平 社外からはもちろん、社内からの問い合わせも多いです。
OSSであれば他のフレームワークと公平に比較しやすくなったという側面があります。プロジェクトが機械学習フレームワークの採用を検討する場合は、同じ社内のフレームワークも外部のOSSフレームワークもフラットに比較検討しています。クローズな社内向けフレームワークのままでは、他のOSSのフレームワークと比較しにくい部分もありますから。
──社内でも、フラットに比較した結果として選ばれているのですね。フレームワークの利用事例は発表されているもの以外にもありますか?
成平 発表した事例は、ソニー不動産での不動産価格推定エンジン、ハンズフリーのスマートプロダクト「Xperia Ear」のヘッドジェスチャ認識、電子ペーパー端末の手書き記号認識、AR活用カメラアプリへの応用などですが、これらはほんの一部で、他にも実はたくさんあります。私たちがお手伝いした事例もありますし、私たちも知らない間にフレームワークが使われていた例もあります(笑)。
ディープラーニングというブレイクスルーで流れが変わった
──ディープラーニングのブームで、社内の雰囲気で変わった部分などありましたか?
吉山 今は、認識系はディープラーニングでやってみようという潮流ができあがっています。
成平 ブーム以前は機械学習が活用されるケースがまれで、「何に使えるの?」という空気を感じるときもありました。ある時、ディープラーニングで作った認識系が性能をガンと上げて注目されました。それ以来、社内での評価も変わってきたように感じます。
──世の中の流れと同じでディープラーニングで認識率が非常に良くなったことで、ブレイクスルーと見なされるようになったのですね。忙しくなったのではありませんか?
吉山 コンサルティング的な業務、それに事業部との連携は増えましたね。私たちの部署で機械学習の知識を蓄えて現場に持ち帰る形です。
──武者修行みたいですね。
成平 私たちの部署は「機械学習の道場」と言われることもあるようです。道場長にあたる人間は、私ではなく、別にカリスマがいます。
──ブームになったのはここ数年でも、それ以前から機械学習の研究を蓄積し続けていたのですね。
成平 特にロボットをやっている人たちは、以前から自律的に発達する知能を目指してニューラルネットワークの研究をしていました。例えばディープラーニング分野の手法として有名になったリカレントニューラルネットワーク(RNN)に早い段階から取り組んでいました。最近はソニーもこの分野への取り組みに関して「AI×Robotics」というメッセージを打ち出しています。
コードを書かずに機械学習を使うニーズに対応してGUIツールを提供
──2017年8月には、Neural Network Librariesのモデルを設計できるGUIベースの統合開発環境「Neural Network Console」の発表がありました。これはどういう役割のものですか。
成平 私たちの上司が、プログラムコードを書かずに機械学習を使えるようにするニーズがあると考え、だいぶ以前からGUIベースの機械学習ツールを社内で普及させていたんです。それを外部にも公開できる形にしたものです。
──フレームワークの「Neural Network Libraries」はC++からもPythonからも使えますが、コードを書かずに機械学習を使いたいニーズがあったわけですね。
成平 製品開発に当たる人間の全員がプログラムを自由自在に書けるわけではありません。特にモデルを設計する時にはGUIの統合開発環境が人気です。
吉山 忙しくて「コードを書く時間がない」という場合もあります。それに文系出身の人が機械学習を使いたい場合もあります。
「Neural Network Console」を使うと、画像分類なら本当にプログラミングがゼロでできてしまいます。画像のフォルダを分類別に作って、後はサンプルで付いてくるネットワークをちょっと変えて「学習」と押すだけです。
成平 自分専用の分類機ができちゃうわけです。
──ハードウェア開発者も多いし、ノンプログラミングでモデル設計ができるなら使いたいというニーズは多いのですね。例えば専用の半導体を起こしてハードウェアに機械学習を組み入れるような製品企画も増えているのでしょうか?
吉山 そのあたりは、ハードウェアを作っている会社であれば一般的なアプローチだと思います。
──GUIベースの統合開発環境が特に有効なのは、どんな場合ですか?
吉山 ディープラーニングはパラメータがたくさんあるので、モデルの作り方によって必要な演算量やメモリー量が変わります。ハードウェアに組み込む場合、リソースの制約を判断しながら設計する必要があります。コードでモデルを作る場合にはその場ではリソースが把握できませんが、GUIベースの統合開発環境の場合、全体をその場でリアルタイムに把握しながらモデルを作れます。
大企業ならではの知恵もフル活用
──成平さんは、今の仕事につくまでにはどんな形でキャリアを作ってきたのですか?
成平 入社した頃から、機械学習ベースのコンピュータビジョンの研究に取り組んでいました。
こだわっているのは、機械学習フレームワークのようなコア技術と、機械学習を応用したアプリケーションの両方を手がけることです。応用をやっていないと課題が見えない。課題を解くためにはコア技術を進展させる必要があります。
──そうすると、例えば事業部の製品開発のプロジェクトでコア技術を提供して一緒に仕事ができるのは、機械学習で課題を解く応用という意味で貴重ですね。吉山さんは、どうですか。
吉山 ソニー入社時には、今の研究開発本部の前身にあたる所にいました。最初は推薦(レコメンド)エンジンを作っていて、その後でHadoopやSparkを活用した大規模データ分析や集計基盤に関わりました。その後、今の仕事に移りました。学生時代に機械学習は勉強していたので、徐々にキャッチアップしてやっています。
成平 吉山は、基本的に高いポテンシャルを持っていて。1年ぐらいで超がつく専門家に成長しました。もともと機械学習を理論的に理解していたこともありますし、ソフトウェアエンジニアリングの力がすごく高い。
吉山 機械学習分野は、研究開発をしていても、やっていることの半分はエンジニアリングです。データ集めのためにはコードを書かないといけない。前処理も必要です。
成平 新しいことをやろうと思ったら、自分でソフトウェアを書かないとできません。世の中にあるものを動かすだけではできない。
──機械学習の分野は論文数も膨大だし動きが激しい。皆さん、どうやって情報収集をしているんですか?
吉山 論文は凄い勢いで出てくるので、ブルートフォース(総当たり)で検索するのではなくて、どこかで勝手に情報が入る仕組みが必要だと思っています。ちなみに、僕は「はてなアンテナ」を使ってます(笑)。有名な研究者のURLなどを登録していると、1~2日遅くなりますが自動的に情報が入ってきます。あとは、「ディープラーニング御三家」といわれるような人たちをTwitterでフォローしたり。
成平 最新の情報収集はソーシャルメディアを使うことがもう普通になっています。海外の研究者はTwitterでよくつぶやいているので、Twitterだけでもそうとうな情報が入ってきます。
──最後に、お二人ともそれぞれお互いを高く評価している様子が伝わってくるのですが、お互いについてのコメントを頂けますか?
成平 吉山については、めちゃくちゃ吸収が早いのが特筆すべきところ。例えばCUDAを新たに学ぶとき、1~2週間でもう分かってるように見える。さらっと分かって、実践できる。一緒に仕事をしていて心強いと思いました。
吉山 成平さんに感じるポテンシャルは、周囲を巻き込みながら自分の味方に付けてやっていけるところです。必要があれば一気に勉強する。それに、社内にいる専門家で、孤高の人のようなおっかない人にも聞きに行っちゃう。
成平 ソニーにいるメリットを最大化しようと思ったら、社内の人に聞きに行くことなので。
吉山 ソフトウェア屋なんだけど、ハードウェアにアルゴリズムを落とし込むのが職業の人とも語り合っちゃうんです。
成平 最近は、別の分野の専門家と一緒にやっていくのが楽しくなってきたと感じます。
──機械学習という基盤技術を通して、大企業のいろいろなプロジェクトに関わって専門家どうしで知識を交換できる。それは大企業のエンジニアならではの楽しさということなんですね。今回はありがとうございました。
取材:星暁雄
連載バックナンバー
コンピュータによる視覚の実現↩