テクノロジー

今更聞けないTensorFlow初心者が知っておきたいTensorBoardの使い方入門

今更聞けないTensorFlow初心者が知っておきたいTensorBoardの使い方入門

機械学習のプログラムを作るうえで、TensorFlowはとても便利ですよね。でも、プログラムを記述していくと、だんだんプログラムが複雑になっていって、よくわからない状態になることがあります。

また、学習の進行度合いをうまく測りたいのだけど、ちょうどよい方法が見当たらないということもあるのではないでしょうか。

実は、機械学習用フレームワークであるTensorFlowには、TensorBoardという可視化ツールが付属しています。これを使うことで、機械学習プログラムの計算過程や学習の進行度合いを可視化できます。

TensorBoardはとても有効なツールで、これを活用すれば、情報がスッキリまとまってわかりやすくなり、プログラムの改善点などが見つけやすくなることもあります。ぜひ、その使い方をマスターしましょう。

ですから今回は、TensorBoardの基本的な機能と、その使い方をお伝えします。

TensorFlowの機能TensorBoardとは

TensorBoardのイメージ

TensorBoardは、TensorFlowに付属しているダッシュボードツールです。非常に多機能なツールではありますが、その大きな役割は、機械学習の中身の可視化であるといって差し支えないでしょう。

たとえば、データフローグラフによってデータの値がどのようにやりとりされているかを可視化したり、学習の進行にともなう、損失関数(精度に深く関係する値)の推移を可視化したりできます。

TensorBoardのよくある使い方は、損失関数の変化の過程を、学習ステップごとに折れ線グラフによって表すというものです。損失関数の低下が収まったところで学習を終了することで、効率よく判定の精度を最大化することができます。そのため、TensorBoardのグラフがいつ機械学習を終わらせれば良いのかの判断の基準になるでしょう。

他にも、機械学習プログラム上で処理された画像を一覧として出力したり、音声を出力したりすることもできます。

TensorBoardって何ができるの

何ができるかのイメージ

TensorBoardを使うと、さまざまな可視化をおこなうことができます。

TensorBoardによる可視化形式のひとつに、データフローグラフがあります。データフローグラフは、定数を円、演算を楕円、定数と演算の関係を矢印で表すなどした図であり、データの流れを表しています。機械学習のプログラムによる記述はしばしば複雑になりますから、データフローグラフによってその流れを可視化すると、簡明に内容を把握できるでしょう。

この使い方は、TensorFlowに付帯したツールとしてのTensorBoardの優位性をよく活かした使い方でしょう。というのも、他の方法でデータフローグラフを作成しようとすると、専用の描画ツールを使うなどの方法を採用することになりますが、その場合だとどうしても新たな技術が必要ですし、作成の手間もかかるからです。それに対して、TensorBoardであれば、TensorFlowをもともと使っているのであれば、TensorBoardを呼び出すコードを少し書くだけでブラウザ上でグラフなどの可視化がおこなえますから、非常に簡単です。

TensorBoardの機能とは

機能のイメージ

TensorBoardの機能として、他に損失関数の可視化の機能もあります。

損失関数とは、教師あり学習の過程において、正解からどの程度外れているかを表す関数です。学習の過程では、損失関数を最小化するように学習を進めていくことで、より精度の高いAI(人工知能)を開発できるでしょう。

よって、学習ステップごとに損失関数の値は小さくなっていきます。損失関数の値が小さくなるのが収束したところで学習を終了するのが、最適な方法になります。

損失関数の可視化機能では、横軸に学習ステップ数、縦軸に損失関数の値を取った折れ線グラフを描画します。これによって、学習をどの程度のステップで終了するのか判断することができるのです。

TensorBoardの使い方例

例のイメージ

ここまで、TensorBoardの使い方のうち、データフローグラフの描画および損失関数の可視化をおこなえる折れ線グラフについて言及しました。ここでは、最も基本的なデータフローグラフの描画方法について確認しましょう。

まず、データフローグラフの可視化機能のコードを示します。

import tensorflow as tf
sess = tf.InteractiveSession()
const1 = tf.constant(10, name=’const1′)
const2 = tf.constant(20, name=’const2′)
val = const1 + const2
tf.summary.scalar(‘val’, val)
summary_writer = tf.summary.FileWriter( ‘/log/dir/’ , sess.graph)
print(sess.run(val))
summary_writer.close()

このコードでは、値10の定数const1と値20の定数const2を足すという演算を実行(sess.run(val))し、そのデータフローグラフを描画しています。そして、描画したグラフのデータをログディレクトリ(ここでは/log/dir/)に保存しています。データフローグラフを可視化したい場合には、FileWriter関数の第2引数に[セッション名].graphを指定します。

そして、保存したデータをTensorBoard上で確認しましょう。

次のコマンドをターミナルで実行し、ログディレクトリを指定してTensorBoardを起動します。

tensorboard –logdir=/log/dir/

画面上のGRAPHSタブから、さきほどのたし算のグラフを確認できます。

このような使い方で、TensorBoardによってデータフローグラフを確認できました。

TensorBoardを使う上で気をつけたいこと

気をつけたいことのイメージ

ここまで、TensorBoardの使い方について確認してきました。TensorBoardを活用することで、自分が作っているAI(人工知能)のことがよくわかり、作業がもっと楽しくなるに違いありません。

ただ、TensorBoardを使う上で気をつけたいこととして、ブラウザの問題があります。TensorBoardはブラウザ上で動作しますが、Googleが開発しているということもあってか、Microsoft系のブラウザでは動作しないこともあります。

実際に動作が保証されているブラウザはGoogle ChromeやFirefoxなので、この点には注意しましょう。

他に、損失関数の推移を描画する場合には、同時に過学習の問題についても注意する必要があります。過学習というのは、学習用データセットにAI(人工知能)が過剰に適合する減少のこと。このとき、未知のデータに対する予測の精度が上がらないという問題が起きます。

※詳しくはこちら

この問題を回避する方法として、損失関数に正則化項を加えたものを採用するという方法があります。これ自体は難しいことではないのですが、知らないと引っかかってしまうポイントなので注意しましょう。

まとめ

さて今回は、TensorBoardの使い方についてお伝えしました。

TensorflowのTensorBoardにはさまざまな可視化機能がありますが、その代表的な使い方として、データフローグラフの描画と損失関数の描画が存在することを確認しました。

特に、データフローグラフの描画に関して、コードを用いてその使い方を確認できましたから、TensorBoardを使う上でスタートラインに立ったといえるでしょう。

TensorBoardは何かと便利なのですが、それだけでなくカッコいいというのも魅力でしょう。機械学習は中で何が起こっているか非常にわかりにくい側面もあるんですが、それがグラフ化されるとスマートな印象がしますよね。

TensorBoardの使い方を1つ身につけたので、まずはデータフローグラフの可視化から挑戦しましょう。

トップへ戻る
タイトルとURLをコピーしました