TensorFlowとは
TensorFlowとは、Google社が開発した機械学習用フレームワークを指します。ニューラルネットワークの構築・訓練のために開発されました。機械学習モデルの開発とトレーニング(学習)に使用します。Pythonに限定されず、C・C++やJavaでも利用できます。機械学習や数値解析・ディープラーニングに対応し、人気があります。 【参考】:TensorFlow
TensorFlowの特徴
TensorFlowはGoogleのサービスでも広く活用されています。その特徴は、以下のような点が挙げられます。
・ニューラルネットワークの構築・訓練向けに開発 ニューラルネットワークは数理モデルの一種で、脳の神経回路の一部を模しています。TensorFlowは、ニューラルネットワークの要件をクリアするために開発されたため、ニューラルネットワークやディープラーニングでの利用に適しています。
コアモデルのデータフローグラフを複製して並列実行することで、大規模なデプロイにも対応可能です。
・言語、デバイスを問わず利用可能 JavaScript向けのライブラリや、C++・Pythonに対応するコアライブラリが提供されています。モバイル・IoT向けのTensorFlow Liteでは、iOSやAndroidが利用できます。デバイスや言語に応じて言語バインディングをビルドすることができます。
・豊富なテストツールやライブラリ 複雑なモデル作成のKerasやModelサブクラスAPIが提供されます。デバッグを効率的に行うために、Eager Executionが提供されます。この他にもアドオンライブラリが充実しているため、ニーズに応じてライブラリを選択できます。
TensorFlowでできること
TensorFlowは、ニューラルネットワークやディープラーニングでの利用に適しています。そのため以下の用途に利用が可能です。
・パターンを認識する ニューラルネットワークでは、データを学習することで人間の脳の様に音声や画像のパターンを認識することができます。それにより情報の蓄積と識別が可能です。用途としては音声認識やそれにもとづく自動翻訳等が可能となります。自動運転や不審者の特定等にも利用されています。
・データを分類する 信号や画像のデータを蓄積し、正しいデータを識別します。医療での病状を画像から判断したり、産業システムのエラー検知や品質検査等に利用したりと様々です。公共建築物の劣化状況を検査することにも役立てられています。
・将来を予測する データ変動の蓄積により、今後の傾向を精度よく予測します。用途としては、金融では株式売買の上下動から将来の株価変動を予測することに使われています。
人間の言語水準に近いものを高レベル、機械の言語水準に近いものを低レベルとした場合、高レベルAPIは簡単に扱うことができ、低レベルAPIは細かい操作が可能です。TensorFlowは高レベルAPIと低レベルAPIを兼ね備えているため、多様なニーズに対応できます。
Kerasとの違い
Kerasとは、オープンソースのニューラルネットワークライブラリを指します。Pythonで書かれた深層学習APIで、TensorFlow上で動作します。Googleのエンジニアが中心となって開発したKerasですが、Google社内で開発されたTensorFlowと結びつきが強く、TensorFlow 2.0において、Kerasが統合されています。 【参考】:Keras
TensorFlowとKerasの違いは、TensorFlowが機械学習のフレームワークで、Kerasがニューラルネットワークライブラリであることです。TensorFlowはKerasをライブラリとしてサポートします。TensorFlowの高レベルAPIはKeras API仕様をベースにしています。
Kerasはライブラリの位置づけであり、TensorFlow以外でも動作します。EclipsのDeeplearning4jやマイクロソフト社のCNTK上で動作させることもできます。
TensorFlow以外の深層学習フレームワーク
TensorFlow以外の深層学習フレームワークとして、Facebook(現Meta)のAI Reserarch Lab(FAIR)で開発されたPyTorchがあります。PyTorchとは、Torchを元に作られたPython用深層学習フレームワークソフトウェアを指します。グラフベースの実行・分散学習・モバイル展開・量子化の機能を持ちます。 【参考】:PyTorch
PyTorchは、低レベルAPIによりトレーニング時間が高速なため、短い時間で完了するのが特徴です。TensorFlow以外の選択肢として比較するのも良いでしょう。
TensorFlow入門
TensorFlowを利用するために、TensorFlowにおける機械学習の分類手順を説明します。 【参考】:Machine Learning Introduction
・データの収集 必要なデータを収集していきます。精度を高めるためにはサンプル数を増やす必要があります。
・データの探索 データの特性や分布を理解します。ある程度手作業で期待に沿うものか確認していきます。
・モデルの選択 収集したデータセットの特性からモデルを決定します。
・データの準備 モデルに合わせてデータを調整・変換します。
・モデルの構築・学習・評価 データ処理のビルディングブロックとなる入力層・中間層・最終層を組み立てていきます。モデルの学習(トレーニング)では、モデルの現在の状態に基づいて予測を行い、その予測との誤差を最小にするためにネットワークの重みまたはパラメータを更新していきます。この手順をモデルが収束するまで繰り返します。
TensorFlowでは、データ収集以降の手順を効率的に行えるようAPIを提供しています。
TensorFlowのインストール
最初にインストール要件を確認しておきます。TensorFlow 2はOSとして、Windows 7以降・MacOS 10.12.6(Sierra)以降・Ubuntu 16.04以降がサポートされています。Python 3.6〜3.9で動作します。Pythonのパッケージマネージャpipを使用します。 【参考】:TensorFlow インストール
インストールが完了したら、Pythonで”tensorflow”をインポートし、使用します。
import tensorflow as tf
【参考】:初心者のための TensorFlow 2.0 入門
TensorFlowの使い方
TensorFlowは、「データの収集」「データの探索」「モデルの選択」「データの準備」を経て、「モデルの構築・学習・評価」を繰り返し精度を上げていきます。最初に使い方を学ぶにはチュートリアルをおすすめします。 【参考】:TensorFlow Core チュートリアル
チュートリアルを進めるにあたり、人工知能の学習に必要なデータセットと呼ばれる学習データが必要です。手書き数字データベースMNISTは、6万例の学習セットと1万例のテストセットから構成されており、学習技術やパターン認識手法を試してみたいという方におすすめです。 【参考】:THE MNIST DATABASE
Kerasからは、”tensorflow.keras.datasets.mnist.load_data()”でデータセットのロードが可能です。
CSVのデータをデータセットにロードする場合は、”tensorflow.keras.utils.getfile()”でCSVファイルを指定します。”tensorflow.data.experimental.makecsv_dataset()”でCSVからデータセットを作成することもできます。 【参考】:tf.data を使って CSV をロードする
TensorFlowの活用例
TensorFlowはディープラーニングに強みがあり、パターン認識に基づく音声認識・自動翻訳や自動運転・防犯等に活用されています。データ分類による医療画像分析・製造業のエラー検知や品質検査、将来の動向分析などに活用されています。
TensorFlowの事例紹介サイトでは、以下の様に実際の活用例が紹介されています。 【参考】:TensorFlow 事例紹介
・Coca-Cola社の購入証明機能 モバイルファーストの体験としてCoke.comを立ち上げ、閲覧行動の変化に対応しました。ボトルキャップや冷蔵庫のパックに貼られた数千の製品コードスキャンによって得られた、不正確なコード予測をAI学習により迅速に修正できるようなユーザーエクスペリエンスを提供可能としました。 【参考】:How Machine Learning with TensorFlow Enabled Mobile Proof-Of-Purchase at Coca-Cola
・GEヘルスケア社のニューラルネットワーク学習 MRIの画質や外観に影響する要因に影響されにくく、病院間で堅牢なシステム化が可能となりました。これにより、検査全体の時間が短縮され、検査の診断品質が向上しました。
TensorFlowは、医用画像ボリューム処理の主要要件である2Dおよび3DのCNN(Cascaded Neural Networks)をサポートしていることと、画像操作と最適化されたテンソル計算のための豊富なビルトインライブラリ関数の要件をクリアしています。 【参考】:Intelligent Scanning Using Deep Learning for MRI
・Twitter社によるTweetのランク付け Twitterを開いたときに、最も重要なツイートを見逃してしまうことがあり、この問題に対処するため、最も関連性の高いツイートをタイムラインの最上部に表示する「ランク付きタイムライン」に、TensorFlowを活用しています。
選定においてはJava APIが利用できることと、TensorFlowのツールのエコシステムが成功のカギとなりました。ユーザーが最高のツイートを見逃すことがないようにするために機能しています。 【参考】:Ranking Tweets with TensorFlow
・AIRBUS社の衛星画像からのデータ抽出・分析 コロンバス管制センターのオペレーションチームは、エアバス社と共同で24時間365日何千ものパラメータを追跡しています。これはクルーの健康状態を確認するために必要なデータです。
オペレーターが異常を検知した場合、異常報告書を作成し、エアバス社のシステム専門家が解決します。エアバス社のチームは、異常検出のワークフローの一部を自動化するために、Kubeflow上でTFXを利用しデータ処理と変換を行っています。 【参考】:How Airbus Detects Anomalies in ISS Telemetry Data Using TFX
上記の他にもGoogle社AIリサーチLabのBlogも多岐に渡り、実際に有益であることを実証しています。ご興味があれば以下のリンクをご確認ください。 【参考】:Google AI Blog
需要高まる人工知能の対応能力を高めましょう
TensorFlowは、Google社が開発した機械学習用フレームワークです。Google社自らが活用しており、事例で分かるように実際の業務活用も進んでいます。研究者から実際の業務利用まで多様な活用が期待できます。
チュートリアルではドキュメントのほか、動画がブログやYouTubeチャンネルに公開されています。学ぶだけの方にも有益ですので、将来の可能性を高めるためにも準備をしましょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから