2016年10月20日木曜日

Googleの人工知能専門チームDeepMindがたった数カ月で40%もGoogleデータセンターの冷却システムを効率化することに成功

これすごいな。制御とDeeplearningをどう組み合わせたのか知りたい。モデルの推定?DQN等の強化学習法を使ってベストな入力を見つけたのか?この辺が誤解されるように書いてあってよくわからん。論文早くでないかな。

http://gigazine.net/news/20160721-deepmind-reduce-google-data-center-energy/




人工知能開発を行うスタートアップだった「DeepMind」は、Googleに買収された後もイギリス・ロンドンに拠点を置きつつ独自に人工知脳研究を続けています。DeepMindが開発する人工知能技術は、自己学習してゲームが上達するアルゴリズム「DQN」や囲碁の世界チャンピオンを打ち破るソフトウェア「AlphaGo」などのように時折発表されるとその度に世間を騒がせるのですが、Googleのデータセンターのエネルギー削減にも大きな威力を発揮していることが明らかになりました。

Google DeepMind
https://deepmind.com/blog


Google検索、Gmail、YouTubeなどのGoogleのさまざまなサービスを支えているのが、Googleが世界各地に持つデータセンターです。このデータセンターを効率的にすることは、Googleのサービス品質の向上につながることから、Googleはデータセンターをシステムレベルで絶えず更新し続けています。例えば、データセンターで使用するサーバーを高効率の物に置き換えたり、再生可能エネルギーで電力をまかなう取り組みが行われているとのこと。

中でもデータセンターの品質を語る上で「冷却効率」は非常に重要です。大量の熱を発生させるデータセンターを適切に冷却することはデータセンターの安定的な稼働に不可欠だからです。そして、データセンターの冷却に必要なエネルギーは、データセンターで使用されるエネルギーの大部分を占めており、冷却用のエネルギーを削減することは、環境負荷を下げることにつながります。そのためGoogleは、冷却効率を高めてエネルギーを削減することに長年取り組んでいます。なお、クラウドサービスなどでGoogleデータセンターを利用する企業にとっても、Googleのデータセンターのエネルギー削減が実現すれば、間接的な地球環境保護に役立つため、Googleはエネルギー削減に注力しているそうです。


しかし、データセンターの冷却システムは、データセンターを構成する機器があまりに複雑で非線形的に相互に影響を与えることから、机上の理論や人間の直感などを適用することが難しいという特性があります。さらに、世界中の各データセンターは環境やアーキテクチャが独自であるため、あるデータセンターに最適化された冷却モデルを他のデータセンターに適用できないという難しさもあるとのこと。そのため、データセンターの冷却システムの効率化は、ごく一般的なレベルでのフレームワークを構築するのにとどまっており、データセンターの冷却システム全体を効率化することは困難な作業と言えます。

そんなデータセンターの冷却効率化を進めるために、Googleは2年前から機械学習を取り入れてきたとのこと。機械学習によってデータセンターの使用状況を予測するモデルを立てることで、効率性を高めようというわけです。

このGoogleのデータセンターの冷却システムの効率化プロジェクトに、人工知能の専門チームであるDeepMindが数カ月間参加して、データセンターチームで働いたとのこと。DeepMindチームは、すでに数千人の技術者によって収集されていたデータセンターの気温、電力、冷却ポンプ内のクーラントの流速などのデータを多層のニューラルネットワークに落とし込むディープラーニングによって解析して、効率を高めるフレームワークを作成しました。その結果、冷却システムの消費電力をコンスタントに40%削減することに成功したとのこと。これはエネルギー指標のPower Usage Effectiveness(PUE)では15%の改善に相当します。

電力使用効率のグラフでは、ML(machine learning:機械学習)をONにした状態では、電力使用効率が格段に下がっているのが確認できます。


Googleのデータセンターチームが2年間かけて機械学習によってコツコツ高めてきた冷却効率を、わずか数カ月で4割も削減するというとんでもない仕事をやってのけたDeepMindですが、複雑な変化の中から最適な条件を探し出す機械学習の手法は汎用性を持っているため、今後、数カ月かけて発電設備の効率化、半導体部分のエネルギーの削減、水使用量の削減、スループットの向上など、データセンターの別の部分の効率化に取り組む予定だそうです。

2016年10月19日水曜日

Google DeepMind Natureへ3本目の論文発表「Differentiable neural computers」

GoogleのDeepMindが新しい手法を発表しました。名前は、「Differentiable neural computers」。Natureに投稿
これで3本目です。内容としては、Deeplearningに動的に構成されるメモリを組み合わせたみたいですが、まだよくわかっていません。

これから論文よんでみよう。

詳細解ったら、追記します。



Google発表
https://deepmind.com/blog/differentiable-neural-computers/
日本でのニュース
http://ascii.jp/elem/000/001/249/1249977/

2016年10月14日金曜日

ディープラーニングでキュウリを選別する人工知能搭載仕分け機が開発中

すばらしい。人間で判別し難いものをディープラーニングで仕分けとは。しかも、キュウリ。面白い。ひよこの仕分けもできないかな?

http://gigazine.net/news/20160901-deep-learning-cucumber-sorter/




現在で最も華やかなコンピューター技術と言えば、ディープラーニングを用いた人工知能と言えますが、農業の分野にもそんな波は訪れようとしているようです。元制御システム開発者で、現在は家業であるキュウリ農家を営んでいる小池誠さんは、GoogleのTensorFlowを使って学習させたAIを駆使することで、収穫されたキュウリを自動で選別して等級ごとに仕分けする装置を開発しています。

【CCB9】きゅうり仕分け機試作2号機 | Workpiles
http://workpiles.com/2016/08/ccb9-prototype2-complete/

Google Cloud Platform Japan 公式ブログ: キュウリ農家とディープラーニングをつなぐ TensorFlow
http://googlecloudplatform-japan.blogspot.jp/2016/08/tensorflow_5.html

小池さんが開発した「きゅうり仕分け機」は、縦型のラックの横に仕分け用のベルトコンベアが装着されている構造。右のラックにキュウリを載せるとカメラが外観を撮影してAIが等級を判別し、ベルトコンベアで所定の段ボール箱に入れられる仕組みになっています。


きゅうり仕分け機が実際に稼働している様子がコレ。従来ならば人の目と手で行っていた作業を、機械が自動で行う様子を見ることができます。

TensorFlow powered cucumber sorter by Makoto Koike - YouTube

キュウリを仕分け機のトレーの上に載せると……


複数のカメラで撮影したキュウリの外観をもとに、どの等級に仕分けるかをAIが判断。AIには事前に何千枚ものキュウリの写真を見せ、自分で等級を見極める能力を学習させてあるそうです。


判断が終わったら、キュウリを乗せていたトレーがカタンと倒れてキュウリをベルトコンベアに落とし……


ベルトコンベアがキュウリを左へ送ります。


そして、レバーが動いてキュウリを段ボールの中にシュート。段ボールは左に行くほど等級が上がるように置かれているようで、先ほど判定されたキュウリはB級品でしたが、ベルトコンベアに残された見るからに立派なキュウリはさらに高い等級の箱に入れられることになるようです。


小池さんは、Googleの人工知能「AlphaGo (アルファ碁)」が世界最強の棋士と互角に囲碁を差し合う様子を目にして「これは凄いことが起こっている」と直感したことをきっかけに、ディープラーニングを使ったキュウリ仕分け機の開発に乗り出したとのこと。


実家がキュウリ農家を営んでいるという小池さんは、繁忙期になると1日8時間にわたって延々とキュウリの仕分けを行う母親の姿を目の当たりにします。仕分けの作業が自動化されれば、その手間を本来のキュウリ作りに向けられると考えた小池さんは、わずか4か月で試作機の完成にこぎ着けたそうです。記事作成時点では試作機の2号機が完成しているとのこと。


新鮮なキュウリ作りを信条とする小池さんの父親は「棘が刺さるキュウリ」にこだわりを持っており、表面に残る凹凸の「イボ」があるキュウリこそが品質の証しと考えているとのこと。


実はキュウリの等級にはこれといった規格がなく、農家が独自に判断を下しているそうです。小池さんのところでは、キュウリの太さや色、ツヤ、キズの有無などで9等級に選別を行っているとのことで、これは人間でも簡単にできる仕事ではありません。


そんな作業を自動化させるための技術として、ディープラーニングを使ったAIが用いられているというわけです。


それまでディープラーニングや機械学習に触れる機会がなかったという小池さんは、オープンソースのライブラリである「TensorFlow」を用いることからディープラーニングの世界に入ったそうです。TensorFlowはディープラーニングの実装に必要な数理モデルや最適化アルゴリズムについて熟知していなくても、公開されているサンプルやチュートリアルを用いて「とりあえず触り始める」ことができるというもので、入門用ツールとしては最適なものといえます。

試作2号機のシステム構成は以下の通り。Webカメラによる画像撮影をRaspberry Pi 3で制御し、そこでTensorFlowによる小規模なニューラルネットによってキュウリのあり・なしを判断。そして、撮影したキュウリ画像をLinuxマシン上のTensorFlowで動作するディープラーニングによる認識エンジンに送ります。キュウリ画像の認識には、TensorFlowのサンプルコード「Deep MNIST for Experts」をベースに、若干手を加えたディープニューラルネットワークを用いているとのこと。畳み込み層とプーリング層を数回通したあと、全結合層を配置という構成で、扱う画像の解像度と分類数をキュウリ仕分け用に変更しているそうです。


現時点での判断スピードは1本あたり数秒を要している模様。さらに、学習が途上段階にあるようで、判断の正解率は70%程度ということで、改善の余地は残されている状態だそうです。しかし、これらの課題もクラウドによる分散学習でさらに多くのキュウリを学習させることで、劇的な改善が期待できるものとみられます。

かつて、農家の人々が行っていた大変な農作業を軽減させるために技術を開発したのがヤンマーなどの農機具メーカーでした。それから約1世紀がたち、21世紀の農業は以下のAlphaGoのサーバーを用いた人工知能によって負担減と効率アップが実現されるということになるのかもしれません。


なお、実際の技術の詳細などは、ページ上部の元ソースでガッツリ読み込むことが可能です。また、小池さんのキュウリ仕分け機は、Googleの英語ブログにも掲載されて世界に紹介されています。

How a Japanese cucumber farmer is using deep learning and TensorFlow | Google Cloud Big Data and Machine Learning Blog  |  Google Cloud Platform
https://cloud.google.com/blog/big-data/2016/08/how-a-japanese-cucumber-farmer-is-using-deep-learning-and-tensorflow

2016年10月7日金曜日

Ceres Solver のインストール (Windows8, Visual Studio 2013)

GoogleのCeresは非線形最適化(Non-linear Least square)として広く使われており、昨今、Visionの世界でBundle Adjustmentによく使われています。最近研究している、パスの最適化にも使えるかなってことで導入してみました。Ubuntuだともっと楽なのでしょうが、家と研究室の環境の問題から、Windowsで挑戦。
インストレーションの基本は下。
http://ceres-solver.org/building.html#windows

1. Eigen のインストール。
他のページを参照

2.Google glogのインストール
2-1. ダウンロード
以下のサイトから、glog-0.3.3.tar.gzをダウンロード。
https://code.google.com/archive/p/google-glog/downloads
アンド解凍。

2-1. コンパイル
- google-glog.slnでVisual studioを立ち上げる。
- Congifuration Manager でActive solution Platform をx64に変更する。
 <New...>押してType or select the new platformをx64に変える。
 また、今後のためにReleaseいしておく。
- [Build]->[Batch Build] ですべて選んでコンパイル
- しかし、エラーが。minがないとか言われる。そのため、そのエラーをクリックしたlogging.ccを立ち上げる。
インクルードならどこでもよいが、私の場合、64行目に
#include <algorithm>
を追加する。
無事エラーがなければ、コンパイル成功

3.gflagのインストール
3-1. ダウンロード
昔のバージョンが見つからないため、下記の場所から最新版をダウンロード(執筆時点2.1.2)
https://github.com/gflags/gflags

3-2. Cmake
slnがなくなっているのでcmakeでプロジェクトを作成。但し、ビルド用のフォルダの名前がbuildにすると、元からあるファイルとかぶりフォルダが作れない。そのため、もとからあるBUILDの名前を変えるか消す。

3-3. コンパイル
エラーがなければ。無事成功

4.ceres
4-1. ダウンロード
http://ceres-solver.org/
からlatest stable release をダウンロード。執筆時点1.11.0.

4-2. プロジェクトの作成
フォルダ作成ceres-bin
cmake起動
Advancedにチェックを入れるとすべてのオプションが出る。
EIGEN_INCUDE_DIR (自分のパス)/eigen-3.2.4
GLOG_INCUDE_DIR (自分のパス)/glog-0.3.3\src\windows
GLOG_LIBRARY_DIR (自分のパス)/glog-0.3.3\Release\libglog.lib
Installation GuideにはGFLAGSに関してもパスを入れなければならないとありましたが、何故か私は必要ありませんでした。
GFLAGS_INCLUDE_DIR
GFLAGS_LIBRARY_DIR

Configure & Generate

4-3. コンパイル
ceres-binの中のCeres.slnでVisual Studioを起動
[BUILD]->[BATCH BUILD]
でALL_BUILDとINSTALLのところにチェックを付けて、ビルド開始。

参考:
http://buaiso.blogspot.com/2013/12/ceres-solver-on-windows.html
http://www.rm.is.ritsumei.ac.jp/~mori/Shohei_Mori_Site/articles/installation/CeresSolver/CeresSolver.html
glogエラー解決
http://stackoverflow.com/questions/19439670/min-max-not-a-member-of-std-errors-when-building-opencv-2-4-6-on-windows-8

2016年10月6日木曜日

Google Open SLAM 発表

GoogleのOpenSourceのSLAMを発表した。複合センサって、これスゲーな。とりあえず、最近の研究成果が全部反映されてる感じがする。もっと詳しく読んでみて、中身を追ってみるべきだな。

https://opensource.googleblog.com/2016/10/introducing-cartographer.html

3D

2D