TensorFlow は Machine Intellligence のためのオープンソースソフトウェア・ライブラリ (翻訳)
翻訳 : (株)クラスキャット セールスインフォメーション
日時 : 01/15/2016
* 本ページは、TensorFlow の本家サイト https://www.tensorflow.org/ のトップページを翻訳したものです。
原題は: TensorFlow is an Open Source Software Library for Machine Intelligence
* 訳注 : Machine Intelligence は人工知能 (Aritifical Intelligence) と機械学習 (Machine Learning) を統合する概念です。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
TensorFlow について
TensorFlow™ はデータフローグラフを使用した数値計算のためのオープンソースなソフトウェアライブラリです。グラフのノードは数学的な操作を表し、グラフ・エッジ(辺・線・枝)はノード間の多次元データ配列(テンソル)を表します。柔軟なアーキテクチャは一つの API でデスクトップ、サーバ、モバイルデバイス上の一つあるいはそれ以上の CPU や GPU に計算を配備することを可能にします。TensorFlow は元々は機械学習と深層ニューラルネットワーク研究を行う目的で Google の Machine Intelligence 研究組織の Google Brain チームで働く研究者やエンジニアにより開発されましたが、システムは多種多様な他の領域でも適用可能な汎用性が十分にあります。
データフローグラフとは何か
データフローグラフはノード(頂点)とエッジ(辺・線・枝)から成る有向グラフの数学的な計算を表現します。ノードの集合は一般に数学的な操作を実装しますが、データを消費し、結果を送り込み、永続的な変数の読み書きを行うエンドポイントも表します。エッジはノード間の入出力関係を表します。これらのデータ・エッジは動的なサイズの多次元データ配列、あるいはテンソルを運搬します。グラフ経由のテンソルの流れ(フロウ)は TensorFlow と命名された所以(ゆえん)でもあります。ノードは計算デバイスに割り当てられ非同期に実行します。並行して、内向きの (incoming) エッジ上の全てのテンソルが利用可能になります。
TensorFlow の特徴
深い柔軟性
TensorFlow は硬直したニューラルネットワーク・ライブラリではありません。貴方の計算がデータフローグラフとして表現できるのであれば TensorFlow が利用できるでしょう。グラフを構築し、計算を駆動する内部ループを書くことができます。ニューラルネットワークに共通なサブグラフを集める有用なツールを提供していますが、ユーザは TensorFlow 上に自身の高レベルなライブラリを書くこともできます。便利な新しいオペレータの構成を定義することは Python 関数を書くように簡単でパフォーマンスにおけるコストもありません。そして必要な低レベルのデータオペレータがない時は、新しいものを追加するために少しだけ C++ コードを書いてください。
真のポータビリティ
TensorFlow は CPU あるいは GPU で動作し、デスクトップ、サーバあるいはモバイルコンピューティング・プラットフォームで動作します。特別なハードウェアなしにラップトップ上で機械学習のアイデアで遊んでみたいですか? TensorFlow に任せてください。
スケールアップの準備ができて GPU 上でコード変更なしにそのモデルをより速く学習させますか? TensorFlow に任せてください。
学習したモデルをあなたの製品の一部としてモバイルに配備したいですか? TensorFlow に任せてください。
考えを変更してモデルをクラウドのサービスとして走らせたいですか? Docker でコンテナ化すれば TensorFlow は普通に動きます。
研究と製品の連結
機械学習のアイデアを研究から製品に移行する際に大きな書き直しを必要とする日々は過去のものです。Google では、研究科学者は新しいアルゴリズムを TensorFlow で実験し、製品チームは TensorFlow を使用してモデルを学習させ実際のカスタマーにサービス提供します。TensorFlow の利用は工業的な研究者にアイデアをより早く製品にすることを可能にし、学術的な研究者に大きな科学的な再現性とともにコードを直接的に共有することを可能にします。
自動微分
勾配法ベースの機械学習アルゴリズムは TensorFlow の自動微分機能の恩恵を受けるでしょう。TensorFlow ユーザとして、貴方は予測モデルの計算アーキテクチャ定義しそれを目的関数と結合し、そしてデータを追加するだけです — TensorFlow はあなたのために導関数の計算を処理してくれます。モデルにおける他の値に関連するある値の導関数の計算はグラフの拡張だけですから、何が起きているのかを常に正確に見ることができます。
言語オプション
TensorFlow は計算グラフをビルドし実行するために利用しやすい Python インターフェイスと実用的な C++ インターフェイスを兼ね備えています。スタンドアロンな TensorFlow の Python あるいは C++ プログラムを書いてみましょう。あるいはインタラクティブな iPython notebook で色々と試してみましょう。notebook では論理的にグループ化されたノート、コード、視覚化を保持することができます。これらは単なるスタートラインです — あなたのお気に入りの言語に SWIG インターフェイスで貢献されることを望んでいます — Go、Java、Lua、JavaScript あるいは R などにです。
* 訳注 : SWIG (Simplified Wrapper and Interface Generator) は C/C++ プログラムを他の言語に接続するためのツールです。
パフォーマンスの最大化
32 CPU コアと 4 GPU カードを持つワークステーションの全ての能力を利用したいですか?スレッド、キューそして非同期計算の最上級のサポートにより、TensorFlow は利用可能なハードウェアを最大限活用することを可能にします。貴方の TensorFlow グラフを異なるデバイスに計算要素を自由に割り当て、TensorFlow にコピーを処理させます。
TensorFlow を誰が利用可能か?
TensorFlow は全ての人のためにあります。学生、研究者、趣味の人 (hobbyists)、ハッカー、技術者、開発者、発明家 (inventors) そして革新者 (innovators) のためにあり、そして Apache 2.0 オープンソース・ライセンスの元でオープンソースにされました。TensorFlow は完結はしていません; 礎(いしずえ)にされ、拡張されることを意図しています。ソースコードの初期リリースを行ない、より良いものにするために活発に作業し続けます。フィードバックの提供や積極的にソースコードに貢献することによりによって、このライブラリの未来を駆動するような、活発なオープンソース・コミュニティを作ることを望みます。
何故 Google はオープンソースにしたのか?
TensorFlow は非常に良いものですが、では何故プロプライエタリとして保持せずにオープンソースにしたのでしょうか?答えは、おそらくは貴方が考えるよりもシンプルなものです: 我々は機械学習は革新的な製品と未来のテクノロジーへの鍵となる材料であると信じています。この分野の研究はグローバルで急速に成長していますが、標準的なツールが不足しています。世界でベストな機械学習ツールボックスの一つであるものを共有することにより、研究アイデアを交換し製品に機械学習を導入するためのオープンスタンダードを作ることを望みます。Google 技術者はユーザ向け製品とサービスにおいて実際に TensorFlow を使用しています。そして研究グループは多くの研究発表と一緒に TensorFlow 実装を共有することを意図しています。
以上