AI半導体におけるNVIDIAの強み

 AIエンジニアの間ではGPUの製造メーカーとして良く知られているNVIDIAであるが、投資家の間では、四半期ごとに発表される業績が注目されており、NVIDIAの業績によって米国の株式市場の株価の傾向だけでなく、日本をはじめとする世界中の株価の傾向を左右する状態になっている。

 今でこそ、GPUといえばNVIDIA、NDIVAといえばGPUというように、AIに利用されるGPUの代表的なサプライヤーになっているが、私がデータセンター事業会社で執行役員をしていた10年前はNVIDIAのGPUはオンラインゲームで利用されるコンピュータ向けのデバイスとして認識されていた。ディープラーニングの研究目的で、当時でそれなりにハイスペックのGPUを搭載したタワー型PCを1台だけ自作コンピュータ販売会社にネットで注文したところ、先方の法人営業担当から直接会いたいという連絡があり、面談することになった。今思えば、当時はガチャを中心としたスマホゲームが伸び盛りだったためデータセンター事業会社がGPUを購入するということは何かゲームビジネスのネタがあり、もっと大量発注が控えているかもしれないという想像をしていたのかもしれない。面談では営業担当だけでなく部長クラスの方も同席されており、一通りのアイスブレイクの会話の後、GPUの利用目的を質問された。私は「ディープラーニングの学習で使うので」と回答した。しかし、先方は怪訝な顔をされ、「社内教育向けですか・・・」と言われたので、「そっか、これはきちんと説明をしないと理解してもらえないと考え、20分ぐらいかけて、人工知能の概要と、当時の技術トレンド、なぜディープラーニングが注目されているのか、なぜGPUが必要なのかというのを簡単に説明した。反応は、「そうなんですね、いやーそんなものにGPUが使われるとは全然知りませんでした。その分野の研究機関への販売の可能性についても検討していきます。」と言われていたのを記憶している。その後、2016年になるとAI向けサーバDGX-1がNVIDIAから発売され、さらにハードウェアだけではなく、AIに関するソフトウェアを数多く無料提供することでNVIDIAは2014年ごろから始まるAIブームを牽引していくことになっている。

 AMDやIntelなど別メーカーからもGPUが販売されているが、なぜAI利用となるとNVIDIAが選ばれるのか?というと、それはCUDA(Compute Unified Device Architecture)という汎用並列コンピューティングプラットフォーム(並列コンピューティングアーキテクチャ)およびプログラミングモデルが存在するからである。簡単にいうとCUDAはアプリケーションから簡単にGPUを使うためのツールである。現在のAI/機械学習に関する研究開発環境はarXiv,githubに公開された研究結果、プログラムを参照して追加、改善するというサイクルになっているため、基本的にそれらが動作する環境に依存する。したがって、元々の環境がCUDAでGPUを使う環境であれば、その環境を求めるという流れである。学習効率を上げるには、CUDAが使えれば高性能なGPUに変えるだけでAIアプリケーションとしてはそのままでなにもせず対応できるためAIエンジニアとしてはNVIDIAのGPU一択となっている。

ビジネスとして他のメーカーのGPUを選択する際のネックになるのが、既存のAIアプリケーションを動作させるためのCUDA互換性の有無である。昨今のネット記事にあるようにAIアプリでのデータセンター利用増加により電力利用増加が予測されるため、省電力化というのが課題になるのだが、NVIDIAよりも省電力な環境を採用したとしてもその上で動作するアプリケーションがない、もしくは動作環境移行コストがかかるのは魅力的に見えないというのが問題である。

 このたぐいで似たような話は以前からあり、PCのOSでWindowsを利用するよりもLinux系のOSを利用した方がコスト的にもセキュリティ的にも安価で済むが、Office製品やその他業務系アプリで多くの人が慣れているアプリがLinux系OSでは使えないためいまだにWindowsのシェアが大きいという例が代表的なものである。

 この状況を変えていくには、Googleがクラウドで提供しているAI開発環境 ColaboratryでTensorFLow+TPU(Tensor Processing Unit)を使えばCUDAは必要なくなるというように、NVIDIA以外のAI半導体会社もしくは、そこと協業する会社がソフトウェア開発ルーツに投資をしっかりしてCUDA依存しないAIアプリケーションを開発する必要がある。もしくは、CUDA互換がある開発ツールを提供することで現状のNVIDIA優位な状況を変えることは可能かと考える。

Microsoftが世界トップクラスの言語モデル「GPT-3」の独占的ライセンス取得を発表

ちょっと前の情報だが、MicrosoftはGPT-3の独占的ライセンスを取得したことを発表した(2020年9月22日)。https://blogs.microsoft.com/blog/2020/09/22/microsoft-teams-up-with-openai-to-exclusively-license-gpt-3-language-model/

「GPT-3」とは、Tesla motorやSpaceXの創業者であるイーロン・マスクが出資者として名を連ねる団体のOpenAIが開発し公開している言語モデルであり、GPT-3は、transformerとunsupervised pre-trainingという2つの技術を組み合わせた GPTのバージョン3を指している。

Googleが開発しているBERTと競って言語モデルのSOTA(State Of The Art:最高水準)を更新しているモデルである。特に、GPT-2が公開された際には、大量のデータを用いて訓練生成したモデルは、フェイクニュースなどで悪用される恐れがあるという理由で公開されず、OpenAIの設立趣旨に反するのではないかとの議論になったほど優れたモデルである。

GPT-3は1,750億のパラメータによって構成されているため、個人や一般企業が新たにモデルをチューニングすることは現実的ではなく、OpenAIが提供するAPIを介して”利用”するということが現実的である。つまり転移学習のベースモデルとして利用することが想定される。

このモデルを用いることで言語における単語の出現を予測することが可能となり、ある単語の後に続く一番もっともらしい単語・文章の予測生成が可能となる。たとえば、ある記事の見出しを与えるだけで、その後に続く長い文章を高精度で生成することができる。transformer技術は言語だけでなく、画像や作曲などの”順序”が重要な要素となる分野においてもSOTAを更新しつつあり、transformerを応用したモデルであるBERTやGPT-3の応用が始まっている。

MicrosoftはOpenAIとパートナーシップを結んでおり、今回の独占的ライセンス取得はその流れによるものと思われる。Microsoftは6月にリリースしたAzureホストAPIにてGPT-3を提供すると発表している。今回の取引による、OpenAIのAPIサービスには影響はなく、これまで通り、OpenAIのAPIを介したGPT-3の利用も継続利用可能とOpenAIからコメントされている。

TensorFlowとは

○ TensorFlowとは

TensorFlowはGoogleのAI開発チームであるGoogle Brainによって内部利用向けに開発され、その後、機械学習向けオープンソースとして公開されたライブラリである。最初の版は、2015年11月にリリースされた。それ以前にリリースされた他の機械学習向けオープンソースライブラリにはCaffe、Torch7、Chainerなどがあるが、TensorFlowは現在、世界中でもっとも利用されていると言うことができる。

 

○ TensorFlowでできること

深層学習の処理をプログラムで実装するためには、基本的には以下の処理フローをPythonなどのプログラム言語で設計、コーディングする必要がある。

【処理フロー概要】
1 ネットワークの接続、階層の定義
2 ネットワーク入力層へのデータ入力
3 ネットワークの重み線形和の計算
4 種々の非線形活性化関数の計算
5 出力と教師データから成る種々の誤差関数値の計算
6 種々の最適化アルゴリズムを用いた重み値修正量の計算
7 重み値の更新

これらの処理は誤差関数の計算や、最適化理論に基づいた最適化アルゴリズムの実装など、その分野の専門家でなければプログラムの開発が困難なアルゴリズムによって構成されている。仮に実用的かつ様々な課題に対応するプログラムをゼロから開発するとすれば、多くの時間と経験が必要となる。

通常、深層学習の動作には、大きく分けて2つのフェーズがあり、その第一フェーズはデータに基づく学習であり、第二フェーズは学習によって得られたモデルを利用した推論(認識、識別も含む)である。TensorFlowは両方のフェーズで利用可能であるが、ブラウザで動作するTensorFlow.jsやRaspberry Piやスマホで動作するTensorFlow Liteは既に学習が完了したモデルを利用した推論のみ、もしくは軽微な追加学習を含む推論での利用を念頭に開発されているため選択する際は注意が必要である。

TensorFlowで取り扱うことができる処理は、通常の数値計算、ベクトル・マトリックス演算、機械学習処理など様々であるが、本来の目的は深層学習の処理の簡易化である。近年、深層学習は急速に進展しているが、それらの基本となる技術がCNN(Convolutional Neural Networks)とRNN(Recurrent Neural Networks)である。日々、様々なアルゴリズムが開発されているが、それらはCNNまたはRNNを応用して実現されていると言っても過言ではない。TensorFlowはCNN,RNNを簡単に実現することができる。

機能面でのCNNとRNNの大きな違いは、時間の概念の有無である。CNNは多くの画像解析で利用されており、RNNは自然言語解析や機械翻訳、文章生成で利用されている。言語関係の処理は、言葉の前後関係、つまり時間的な順序が非常に重要であり、その前後関係を考慮した学習が必要になる。

 

○ TensorFlow導入

TensorFlowがサポートしてるOS環境は、現時点(2018年6月)では以下のOS(64-bit)環境である。

・Windows7以降のバージョン

・macOS10.12.6(Sierra)以降のバージョン

・Ubuntu 16.04以降のバージョン

また、TensorFlowは開発言語として主にPythonをサポートしているが、その他、Java、C言語、Go言語もサポートしている。

TensorFlowには通常のPC/ワークステーション、サーバで動作するCPU版とNVIDIA社のGPU(Graphical Processing Unit:画像処理ユニット)を搭載したPC/ワークステーション、サーバでのみ動作するGPU版(さらにGoogleのCloud TPUでのみ動作するTPU版もあるが、ここでは説明を割愛する)がある。学習する内容にもよるがCPUに比較しGPUの方が数倍〜十数倍の速度で処理される。少ないデータ量での学習を実行する、または推論だけを実行する場合はCPU版でも十分だが、大量のデータでも学習を実行する場合にはGPU版を推奨する。一方、GPU版を動作させるためにはNVIDIA社のGPUを動作させるためのCUDA(Compute Unite Device Architecture)という環境を構築する必要があり、これは初心者には非常に難易度が高いため当初からGPU版を利用することは奨めない。学習処理のプログラムはCPU版とGPU版でほぼ差異はないため、最初にCPU版で習熟、開発、試行し本格的に大量のデータを用いた学習を実施する段階にGPU版に移行するのが最も開発効率が良い。

TensorFlowを使うためには、サイト(https://www.tensorflow.org/install/)の手順にしたがって、各OS、言語に応じたTensorFlowをインストールする。ここでは、macOSにPython向けのTensorFlowをインストールする手順を例示する。Python環境を仮想化するツールによっても手順は異なるがここでは最も簡単なpipと呼ばれるPython向けパッケージ管理システムによるインストールを想定する。

Macでターミナルを起動し、以下のコマンドを実行する。

(Pythonのバージョン確認)

上のコマンドでバージョンが表示されない場合、下のコマンドを実行する

$ pip -V  # for Python 2.7

$ pip3 -V # for Python 3.n

(TensorFlowのインストール)

$ pip install tensorflow      # Python 2.7の場合

$ pip3 install tensorflow     # Python 3.nの場合

これでインストールが完了する。(非常に簡単)

 

TensorFlowのインストールを完了し、利用するにあたっては、いくつかサンプルを動作させるとともにサンプルコードを変更してみることを奨める。サンプルコードの取得、仕組みを理解するためには、以下のサイトを参照する必要がある。

TensorFlow-Develop-TUTORIALS(https://www.tensorflow.org/tutorials/)

上記は英語のサイトだが、MNISTについて日本語翻訳を@KojiOhkiさんがされているので参考として紹介する。

TensorFlowチュートリアル-ML初心者のためのMNIST(翻訳)(https://qiita.com/KojiOhki/items/ff6ae04d6cf02f1b6edf)

TensorFlowにはTensorBoardと呼ばれる学習状況の可視化ツールがある。TensorBoardはデータフローの可視化や学習の履歴(損失関数の変化など)の可視化、途中過程で生成される画像や音声の表示を行うことができる。これにより、学習モデルの最適化やパラメーターチューニングに対するヒントが得られる。 深層学習は、大量のデータを利用し繰り返し学習処理を行うことで、それらのデータが網羅する事象について識別、認識、生成が可能になる技術である。よって、結果を得るためにはWebや業務系システムの処理時間と比較して長時間が必要となる。従来は途中結果を逐次画面またはログファイルに出力し、多くの数値データの変化をスクロール等で視認し、学習が順調か、過学習等により中断すべき状態になっていないかを確認していた。しかし、TensorBoardにより、ファイルとして出力された内部ログを別処理で可視化できるため、学習曲線が逐次グラフ表示され一目瞭然になるので非常に効率的である(図1)。また、ブラウザからアクセスとなるため、設定によってリモートのPCやスマホからも途中経過を確認することも可能である。

図1.TensorBoardによる学習曲線表示

機械学習向けライブラリーを利用するためにはそれぞれのライブラリーのコマンド記法を習得する必要がある。簡易に利用可能になっているがコマンド記法は複雑でコード量も多い。そこで、CNNやRNNに関するコマンドをまとめて簡単なコードから利用可能としたKerasというオープンソースライブラリーが2015年にGoogleのエンジニアであるFrançois Cholletを中心するチームによって開発、リリースされた。Kerasは、MXNet,Deeplearning4j、TensorFlow、CNTK、Theanoなどの主要なライブラリーの上で動作することができるインタフェース的なライブラリーであり世界中で頻繁に利用されている。特に最近ではTensorFlowとの組み合わせでの利用が増えており、Githubに公開されているTensorFlowを利用したアプリケーションコードの大部分が、Kerasでプログラムを記述しTensorFlowで動作させると言っても過言でなくほど、この組み合わせは主流になってきている。また、2017年にGoogleのTensorFlowチームもKerasのサポートを決定しており、これら2つのライブラリーは相乗効果により更に普及することが予想される。

 

<参考>

An open source machine learning framework for everyone

https://www.tensorflow.org/

 

TensorBoard: Visualizing Learning

https://www.tensorflow.org/programmers_guide/summaries_and_tensorboard

 

Keras: Pythonの深層学習ライブラリ

https://keras.io/ja/

 

pix2codeを評価した

前回の投稿からだいぶ時間が空いてしまったが、その間にpix2codeの評価が進んだので概要を書いてみようと思う。

pix2codeの概要だが、コペンハーゲンに本拠を置くスタートアップUIzard Technologiesが開発したUIのスクリーンショットからWebアプリやiOSの画面表示コードをDeepLearningで出力するというソフトウェアである。これは、2017年5月にソースコードや論文を公開すると同時にデモをYoutubeにアップしている。

ソースコード → https://github.com/tonybeltramelli/pix2code

論文 → https://arxiv.org/abs/1705.07962

Youtube →

このコードを元に米国でDeepLearning向けのPaaS環境を提供しているスタートアップのFloydhubが2018年1月に自社のクラウドで動作な設定等や学習のためのデータを追加しソースコードを追加している(※こちらはWeb向けの学習コード、データのみである)

pix2codeのベースになっているネットワークアーキテクチャは、GAN(generative Adversarial Network)の実装オープンソフトのpix2pixである。pix2pixは2016年11月に発表されたソフトウェアであり、A種(例えば航空写真)の画像からB種(例えば地形図)の画像を2つの画像群の特徴とそれらの相関をDeepLearningで学習し、自動で出力を可能とするソフトウェアである。

pix2codeは、一方を画像ではなく、HTMLなどのMarkup言語にしているところが特徴になる。詳細な違いは、pix2pixの場合は、双方とも画像であるので、特徴量抽出と生成には2つのCNNを利用しているが、pix2codeの場合は画像と言語であるため、CNNとLSTM(Long Short Term Memory)を利用してる。

LSTMは時系列(順番)データを学習するRNN(Recurrent Neural Network)の実装として自然語処理に最もよく利用されるパターンであるが、自然言語処理で利用される場合、言葉のゆらぎがあるため学習の収束が遅いという実感がある。しかし、Markup言語はブラウザのようなコンピュータが人間の意図を表現するために利用される言語であるためゆらぎが少なく、利用されるwordの種類も少なく、表記種別と構造を表現する文法だけであるため、pix2codeでは収束が比較的速いのではないかと想定した。

評価は、当初、本家のソースコードを学習データで学習させ、評価画像を入力した場合の出力HTMLをブラウザに入力し、評価画像と比較することを計画した。

ところが本家のソースコードに付属しているReadmeを読むと、公開されているソースコードはUIzard Technologies社のクライアントを考慮し、一部を意図的に削除、書き換えしてあるという旨の記述がされていた。試しに学習させ、評価したところ、出力結果のDSLをHTMLやiOSなどの目的の言語に変換するCompilerソフトかけると、エラー出力されるという状況であった。

そこでFloydhubのソースコードを参考に本家のコードをいろいろ修正した。その結果、エラー出力はされなくなった。しかし、学習が不十分であり、公開されている学習プログラムのままでは学習データに対しては高精度出力が可能となるが、それ以外の画像データに対しては汎化ができておらず低精度出力になってしまう状態、いわゆる過学習になってしまうことが判明した。そこで独自に学習アルゴリズムについてハイパーパラメータチューニングを実施した。その結果Accuracyが95%近くまで向上するだけでなく、bleu値が、学習に利用しない評価用データに対しても、0.85〜0.91まで向上することを確認した。

学習が済んでしまえば、1画面あたり数秒でBootstrapに対応したHTMLファイルが出力されてしまうという手軽さである。

今後、マーズスピリット社は更に精度向上を図り、この技術を利用したサービス提供を企画している。Webデザイン企業でこのサービスを評価したい、活用したという企業が是非ご一報下さい。

※ bleu値(bilingual evaluation understudy):自然言語の機械翻訳で利用される指標であり、人間が翻訳した場合の文章と機械が翻訳した場合の文章の一致度を評価するために指標であり、人間の翻訳に近ければ近いほど1に近づく

 

機械学習とプラットフォームビジネスについて

近年では、GoogleやMicrosoftのようなITジャイアントと呼ばれる企業が、学習済みモデルによる音声認識、音声合成、翻訳、顔識別や画像識別などの認識機能をクラウドAPIで提供するグローバルサービス提供している。

音声認識、音声合成、翻訳のように、言語別に特徴が異なり汎用的であればあるほど精度が向上する情報はグローバルサービスに適しているが、画像識別については汎化が難しく産業界でのビジネスでの利用はまだ難しいと思われる。

一方、最近、弊社をはじめ数社が個別に、よりビジネスに適した種別の情報の学習済みモデルを提供するプラットフォームサービスを開始している、こちらのプラットフォームサービスは前者のクラウドサービスと比較して、転移学習などの技術により、基礎となる学習モデルに追加学習を実施することで、ユーザそれぞれのニーズに合わせた特化をしやすく、ビジネスユースに適していると考える。

今後、産業界でAIが活用され、少子高齢社会にて効率化が推進されるには、このようなプラットフォームサービスが発展するのが最適であると考える。

機械学習におけるディープラーニングと確率モデルの関係

従来の機械学習のアプローチは確率統計モデルによるものが主流でした。

機械学習とは、分析・解析対象とする現象や行為の振る舞いを数理的に表現する”モデル”を学習によって獲得することです。学習した結果は、新たな入力データの出力値予測(regression)や分類(classification)などの推論(inference)に利用されます。

ところが、実際の現象は、様々な要因が相関しており、その要因自体も常に確定的ではなく様々なノイズを含んでいるため、その振る舞い自体は、様々な確率的要因によって構成されます。

よって、それらをそのままモデル化しようとすると非常に複雑なモデルとなってしまい、数学的表現が不可能になる、または表現できても解析的に取り扱うのが困難になります。

そこで、従来の機械学習は学習の際、その目的、対象の傾向や特徴に応じて何らかの仮説を置き、その仮説に適合する確率分布モデルのパラメータを条件付き確率論をベースに解析的、数値解析的に求めています。この方法でも80%〜90%程度の精度で推論が可能となります。

しかし、現実の状況のばらつきが大きい場合、リーズナブルな仮説は、現実とのギャップを完全には埋めることができず精度を90%以上に向上させるのは困難でありました。そこでブレイクスルーを実現したのがディープラーニングであります。

ディープラーニングは、従来の機械学習の確率分布を非線形モデルとして数値解析的にパラメータを求める手法の拡張とも考えられますが、大きく異なるのはその階層を深くすることでネットワーク内に複数のモデルを実現することが可能となることであります。その場合、パラメータを数値解析的に求めるのは難しいですが、バックプロパゲーションなどの探索アルゴリズムを繰り返し実行し最適化を図ることで精度が高いモデルを構築することが可能となっています。

ただし、柔軟性が高いのでモデルを確定させるのは、その分、大量のデータと学習演算処理が必要となります。また、現実でもデータのばらつきが小さいと想定される問題にディープラーニングを適用した場合は、確率モデルによるアプローチと精度の差は大きくなく、逆に導出コストが高くなると想定されます。

つまり、課題の傾向と目標精度を理解し、適切な学習手法を選択するのが、コストが重要となるビジネスで機械学習を活用するコツと考えられます。

 

 

Googleから「すべてを学ぶ1つのモデル」が発表

我々が、ものを考える際は、様々な記憶やイメージに思い浮かべながら考えている。たとえば、山に行き、ホトトギスの鳴き声を聞けば、同時に過去に見たホトトギスの画像や、実物の記憶、その聞いた季節や周辺の様子、場合によっては、ホトトギスの漢字表記(杜鵑、不如帰など)も思い浮かべる。それらは、すべて脳の「学習」機能によるものと考えられるが、同時に学習しているわけではない、それらの情報(エビデンス)は別々のタイミングで、視覚や聴覚などのセンサーから脳に入力され学習される。その際に、次々と学習後のモデルが統合されていくと考えられている。その様に様々な形態(モード)を持つモデルは「マルチモーダルモデル」と呼ばれている。

近年のディープラーニングでは学習による認識の精度は高くなっているが、その結果のモデルは、機械翻訳や、音声認識、画像認識、といった個々の識別の「シングルモードモデル」に留まっている。

しかし、今月、Googleから(DeepMind社ではない)そのような「マルチモーダルモデル」の学習に向かうと思われる論文が発表された。

一つの事象を多面的に捉えているというわけではないが、異なるセンサー(感覚器)からの入力による学習を同じモデル(同一のネットワーク上)に実施しても、学習成績が低下することはなく、むしろ向上したという報告である。

これは、ネットワークの規模を大きくすることで単一のネットワークで、様々な認識が可能なAIが実現できるということであり、現状の様な、1ネットワーク、1タスクのような特化型AIではなく、人間のように様々なタスクをこなすことが可能な汎用AIに向かう試みであると考える。

以下、「One Model To Learn Them All」のabstractの翻訳である(Google翻訳による)

深層学習は、音声認識、画像分類、翻訳まで、多くの分野で大きな成果をあげている。しかし、それぞれの問題についてモデルをうまく機能させるには、アーキテクチャーの研究と長時間のチューニングが必要である。本論文では、複数のドメインにわたるいくつかの問題について、良い結果をもたらす単一のモデルを提示する。特に、この単一のモデルは、ImageNet、複数の翻訳タスク、画像キャプション(COCOデータセット)、音声認識コーパス、および英語解析タスクで同時に訓練されている。このモデルアーキテクチャは、複数のドメインのビルディングブロックを組み込んでいる。これには、畳み込みレイヤ、アテンションメカニズム、まばらなゲートレイヤーが含まれている。これらの計算ブロックはそれぞれ、訓練するタスクのサブセットにとって非常に重要である。興味深いことに、ブロックがタスクにとって重要ではない場合でも、それを追加するとパフォーマンスが損なわれることはなく、ほとんどの場合、すべてのタスクでパフォーマンスが向上する。また、データの少ないタスクは他のタスクとの共同訓練に大きな恩恵をもたらすが、大規模なタスクのパフォーマンスはまったく低下しない。

8種類の問題を同時に学習した際(左側)のそれぞれの問題の認識精度と単一問題を学習した際(右側)のそれぞれの問題の認識精度の比較では、左側がわずかに向上しているのが見て取れる。

https://arxiv.org/abs/1706.05137

国の研究所からスピンアウトしたスタートアップDescartes Labsは衛星画像の分析データを農業分野などに売る

合衆国政府の研究機関で7年間仕事をした連中がこのほど、深層学習(deep-learning, ディープラーニング)による画像分析を行うスタートアップ(非公開企業)Descartes Labs(デカルトラブス)としてスピンオフし、330万ドルの資金を獲得した。

Descartes Labsが主に行うのは、衛星画像を分析してそこに写っているものを理解し、それらから有意なデータを取り出す仕事だ。Descartes LabsはLos Alamos National Lab(ロスアラモス国立研究所)から昨年8月に公式にスピンオフした。

Descartes LabsのCEO Mark Johnsoはこう言う: “うちがやっているのは、ふつうの画像認識技術ではない。うちでは画像に対して物理学を適用し、犬やコーラの缶を探したりはしない。遠隔探査と天体物理学には共通の部分が多いことが、分かってきた。空でたくさんの写真を撮る場合は、センサが正しく調製されていなければならないし、それらの写真を正しく縫い合わせて、大量の分析をしなければならない[天体物理学]。そしてそのときの望遠鏡を地球方向に向けたら、(地球〜地表に対して)それとまったく同じ問題を抱えることになる[遠隔探査]”。

同社はこれから、地球全体の農業を調べ始める。合衆国などでは農業のデータが充実しているが、そういうところは全地表のごく一部にすぎない。だから、データを衛星の画像に頼ることになる。そしてそうなると、それはお役所の問題ではなくて、Descartes Labsが機械学習を駆使して取り組むビッグデータの問題になる。

衛星から来るデータは、可視スペクトルのものだけではない。たとえば赤外線領域のデータは、農作物を調べるためにとても役に立つ。

ビジネスの展望はすでにはっきりとある。たとえば衛星画像から得られる農業に関するデータは、商品取引などの業界で珍重される。彼らはその限られたデータから、世界中の主要作物の作柄を予測したりするのだ。そういうデータの質を高めることの方が、各作物の栽培や輸出入に関する大雑把なデータよりも、同社のビジネスにとって価値がある。

衛星画像の応用分野はもっと多様だが、同社はとりあえず農業からスタートすることにしている。農業の分野も、同社がやってるような大きな視野のデータは、まだどこにもないからだ。Johnsonによると、330万ドルはプロダクトを世に出すためには十分な額であり、スタートアップにつきものの多少の失敗やその修正も許される、という。

 

 

http://jp.techcrunch.com/2015/05/02/20150501deep-learning-image-analysis-startup-descartes-labs-raises-3-3m-after-spinning-out-of-los-alamos-national-labs/

Deep LearningによるGoogleの猫認識

YouTubeにアップロードされている動画から、ランダムに取り出した200×200ピクセルサイズの画像を1000万枚用意し、これを用いてDeep Learning を行った(3%前後の画像に人間の顔が含まれていた。猫が含まれる画像もたくさんあった)。
Deep Learning とは、ここ最近になってその有効性が注目されている新しい機械学習の手法で、多段階のニューラルネットワークを構成する。ニューラルネットワークの最初の層の入力は各画素(200×200=40,000)のRGBの値で、9つの階層を構築した。1000台のコンピュータで3日間かけて学習を行った。その結果、人間の顔、猫の顔、人間の体の写真に反応するニューロンができた