機械学習のプログラムを作るうえで、TensorFlowはとても便利ですよね。でも、プログラムを記述していくと、だんだんプログラムが複雑になっていって、よくわからない状態になることがあります。
また、学習の進行度合いをうまく測りたいのだけど、ちょうどよい方法が見当たらないということもあるのではないでしょうか。
実は、機械学習用フレームワークであるTensorFlowには、TensorBoardという可視化ツールが付属しています。これを使うことで、機械学習プログラムの計算過程や学習の進行度合いを可視化できます。
TensorBoardはとても有効なツールで、これを活用すれば、情報がスッキリまとまってわかりやすくなり、プログラムの改善点などが見つけやすくなることもあります。ぜひ、その使い方をマスターしましょう。
ですから今回は、TensorBoardの基本的な機能と、その使い方をお伝えします。
TensorFlowの機能TensorBoardとは
TensorBoardは、TensorFlowに付属しているダッシュボードツールです。非常に多機能なツールではありますが、その大きな役割は、機械学習の中身の可視化であるといって差し支えないでしょう。
TensorBoardのよくある使い方は、損失関数の変化の過程を、学習ステップごとに折れ線グラフによって表すというものです。損失関数の低下が収まったところで学習を終了することで、効率よく判定の精度を最大化することができます。そのため、TensorBoardのグラフがいつ機械学習を終わらせれば良いのかの判断の基準になるでしょう。
他にも、機械学習プログラム上で処理された画像を一覧として出力したり、音声を出力したりすることもできます。
TensorBoardって何ができるの
TensorBoardを使うと、さまざまな可視化をおこなうことができます。
TensorBoardによる可視化形式のひとつに、データフローグラフがあります。データフローグラフは、定数を円、演算を楕円、定数と演算の関係を矢印で表すなどした図であり、データの流れを表しています。機械学習のプログラムによる記述はしばしば複雑になりますから、データフローグラフによってその流れを可視化すると、簡明に内容を把握できるでしょう。
TensorBoardの機能とは
TensorBoardの機能として、他に損失関数の可視化の機能もあります。
よって、学習ステップごとに損失関数の値は小さくなっていきます。損失関数の値が小さくなるのが収束したところで学習を終了するのが、最適な方法になります。
損失関数の可視化機能では、横軸に学習ステップ数、縦軸に損失関数の値を取った折れ線グラフを描画します。これによって、学習をどの程度のステップで終了するのか判断することができるのです。
TensorBoardの使い方例
ここまで、TensorBoardの使い方のうち、データフローグラフの描画および損失関数の可視化をおこなえる折れ線グラフについて言及しました。ここでは、最も基本的なデータフローグラフの描画方法について確認しましょう。
まず、データフローグラフの可視化機能のコードを示します。
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を起動します。
画面上のGRAPHSタブから、さきほどのたし算のグラフを確認できます。
このような使い方で、TensorBoardによってデータフローグラフを確認できました。
TensorBoardを使う上で気をつけたいこと
ここまで、TensorBoardの使い方について確認してきました。TensorBoardを活用することで、自分が作っているAI(人工知能)のことがよくわかり、作業がもっと楽しくなるに違いありません。
ただ、TensorBoardを使う上で気をつけたいこととして、ブラウザの問題があります。TensorBoardはブラウザ上で動作しますが、Googleが開発しているということもあってか、Microsoft系のブラウザでは動作しないこともあります。
他に、損失関数の推移を描画する場合には、同時に過学習の問題についても注意する必要があります。過学習というのは、学習用データセットにAI(人工知能)が過剰に適合する減少のこと。このとき、未知のデータに対する予測の精度が上がらないという問題が起きます。
※詳しくはこちら
この問題を回避する方法として、損失関数に正則化項を加えたものを採用するという方法があります。これ自体は難しいことではないのですが、知らないと引っかかってしまうポイントなので注意しましょう。
さて今回は、TensorBoardの使い方についてお伝えしました。
TensorflowのTensorBoardにはさまざまな可視化機能がありますが、その代表的な使い方として、データフローグラフの描画と損失関数の描画が存在することを確認しました。
特に、データフローグラフの描画に関して、コードを用いてその使い方を確認できましたから、TensorBoardを使う上でスタートラインに立ったといえるでしょう。
TensorBoardは何かと便利なのですが、それだけでなくカッコいいというのも魅力でしょう。機械学習は中で何が起こっているか非常にわかりにくい側面もあるんですが、それがグラフ化されるとスマートな印象がしますよね。
TensorBoardの使い方を1つ身につけたので、まずはデータフローグラフの可視化から挑戦しましょう。
【お知らせ】
当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。
御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。