Googleが昨年11月にオープンソース化したマシンラーニング(機械学習)ライブラリの「TensorFlow」。Googleの60を超えるプロダクトで活用されており、オープンソース化は深層学習や機械学習をまだ活用していない企業にとって大きな意味を持つ。
同社の活用例で代表的なものといえばGoogleフォトだろう。人の顔やペット、建造物の特徴を学習し、その精度を高めていく。同サービスを利用している人であればわかると思うが、自分が撮影した写真でよく出てくる人物を抽出できている割合は非常に高い。では、この”学習”はどのように行われているのだろうか?
システムに”覚えさせる”機械学習
機械学習やディープラーニング(深層学習)はニューラルネットワーク、つまり脳の神経回路を模したプログラムで構成されている。人間が「Cat」と定義する画像を覚えこませ、「Cat」と機械が返す関数を定義させることが、まさに機械学習のアルゴリズムとなる。
以下の画像は、青とオレンジの螺旋模様だが、これを機械に描かせようとする場合、既存のプログラミングコードで言えば「(a,b)には青」といった条件子の設定を行っていた。一方で機械学習では、二重螺旋がどのように描かれているのか”分析”する。最初はエラーだらけだが、左上の傾向、右下の傾向といったように、細かいニューロン(神経細胞)プログラムが担当の領域の傾向を掴みとり、二重螺旋の構造を描けるようにする。
二重螺旋こそわかりやすい例だが、猫などのペット、ひいては冒頭で触れた人間の顔などは、より複雑な特徴抽出を必要とする。そのため、ある画像認識のモデルではニューロンの階層が40段にも及んでいる。これがまた、更なる特徴抽出の高度化に繋がるとも言えるだろう。
Googleでは、Googleフォト以外にも同社の基幹サービス「Google検索」でも機械学習アルゴリズム「RankBrain」を利用しており、過去2年以上に渡るさまざまな検索ランク付けの品質改善作業の中で最大の成果を示したという。
これ以外にも、Gmailで簡潔な返信文をレコメンドする「スマートリプライ機能(日本未提供)」や音声認識機能で大きな成果を残しているとしており、グーグル クラウドプラットフォーム デベロッパーアドボケイト データ&分析チーム テックリードの佐藤 一憲氏は「(音声認識は特に)ここ2~3年でレベルが急激に向上していると思う」と手応えを口にする。
Google Cloud PlatformのAPIで簡単に利用できる機械学習
こうしてGoogleで全社的に利用されている機械学習だが、同社は簡単に機械学習を利用できる「Cloud Vision API(Google Cloud Platformのいち機能)」と、作り込みが可能となる「TensorFlow」の2つの形態で顧客の利用をサポートする。
Cloud Vision APIは、画像認識の学習済みモデルをAPI経由で利用できる。画像をAPIに送ると「2~3秒で認識結果が返ってくる」(佐藤氏)もので、1カ月1000認識まで無償で利用できる。それ以上の利用も1000認識ごとに2.5ドルと低価格であり、機械学習を詳しく理解していなくても、その技術を活用してビジネスしたいという場合に有効なソリューションといえる。
検知は6種類に分かれており、「物体検知」や「有害コンテンツ検知」「ロゴ検知」「ランドマーク検知」「OCR」「顔検知」が用意されている。有害コンテンツ検知機能は、日本のソーシャルメディア事業者が活用している実績もあるなど、すでにサービスの実運用に利用できる段階へと進んでいることが伺える。
佐藤氏はここで、Wikimedia Commonsの画像認識とキーワードへの関連付けを行うデモンストレーションを披露した。キーワードとの関連付けでは、実に8万点近い数のデータを処理しており、例えば「Pet」というキーワードの近くに「犬」や「猫」といった画像をピックアップするといった挙動を、このAPI利用によって実現している。
Google Cloud Platform(GCP)では、Androidの音声認識APIをそのまま利用できるCloud Speech APIも提供しており、「国内であれば、コールセンター業務などで引き合いがある」(佐藤氏)といった利用シーンが存在する。単純に音声をテキストに変換するだけでなく、会話ログの収集・分析、内容把握を深めるために利用できるため、業務効率化以上に利用価値があるだろう。
なお、Googleのサービスは一般的に、ユーザー同意のもと、サービスの改善・改良にデータを利用することが多いが、「GCPでは、利用規約にある通り、Googleがユーザーの同意なくデータを利用することはない。あくまでコンシューマ向け製品の応用」(佐藤氏)だという。
より細かくカスタマイズできるTensorFlow
多くのことがこなせるGCPのAPIだが、音声や画像以外のデータ分析が幅広い業種・業態で使われ始めている状況では、APIだけで対処できないものもある。
例えば、ゲーム会社のユーザー利用動向のログ分析や、さまざまなセンシング情報を分析する必要があるIoTなどがそれにあたり、これを機械学習について学んだ技術者が専門のニューラルネットワークの設計・学習を行う必要性が出てくる。そこでTensorFlowが必要となるわけだ。
TensorFlowのライブラリは「Googleで使えなくなった古いモデルと言う人がいるが、社内の実環境で利用している最新の技術です(笑)」(佐藤氏)というように、そのポテンシャルは非常に高い。Google以外にも米IBMのWatsonや米MicrosoftのAzureがAPIによる機械学習モデルの提供を行っているが、GoogleはTensorFlowのオープンソース化によって「機械学習のデファクトスタンダード」を目指している。
同社のオープンソース化戦略は、Androidですでに成功を収めており、二匹目のドジョウを狙ったものといえるだろう。もちろんこれは、さまざまな技術者にとってもチャンスであり、TensorFlowをいち早く使いこなすことが機械学習やその先にあるAI時代のトップ技術者としてのキャリアに繋がる可能性もある。
一方で企業の「機械学習時代」への方策として佐藤氏は「データサイエンティストを採用して数理モデルを理解し……という時代ではない」と指摘。現状は数理モデルの理解やプログラミング、単体マシンで学習させたあとにデータの大量処理を行うHadoopなどの分散システム開発・分散学習という重厚長大な作業を必要としている。
複雑な大規模プログラムを走らせることなく、TensorFlowを活用することで簡素に機械学習を業務に利用できる |
機械学習システムは、機会が自己学習するため「ブラックボックス」となりがちだが、TensorBoardと呼ばれる可視化ツールによって「なぜその回答を導くように学習したのか」を人間が把握できるようにする |
TensorFlowについては、すでにアルゴリズムのライブラリが用意されており、簡単にニューラルネットワークの構築・学習が可能となる。サンプルコードを見ながら、クラウド環境での分散学習も容易に実行できるため「早期の実運用への移行も可能だ」と、佐藤氏は時間・コスト両面の削減に繋がるメリットを指摘する。
具体的な活用シーンについては、「CTやMRIの病変検知」や、工場のオートメーション化に繋がる「異物・異常検知」といった特定用途特化型、先ほどのゲームログや流通、製造、IoTなどの膨大なデータを蓄積した上で傾向を分析する必要がある分野が挙げられる。OCRや顔検知などのGCPでも利用できる機能についても、例えば「機密文書のテキスト化」や「小売店における認識データ」など、社外へのデータ送信を内規で禁じているケースでは、TensorFlowのライブラリを利用する機会もあるだろう。