学習曲線の可視化(matplotlib, TensorBoardなど)

PyTorchにおける学習曲線の可視化は、モデルの学習状況(損失関数の変化、精度の向上など)を視覚的に確認し、過学習や学習の停滞を早期に把握するための重要な手法です。代表的な可視化ツールには matplotlibTensorBoard があり、それぞれ以下のように活用されます。


1. matplotlibによる学習曲線の可視化

概要

matplotlib はPythonの標準的な可視化ライブラリで、訓練中に記録した損失値や精度をグラフとして描画する際に使われます。

実装例

python
import matplotlib.pyplot as plt train_losses = [] val_losses = [] for epoch in range(num_epochs): train_loss = train_one_epoch(model, train_loader) val_loss = validate(model, val_loader) train_losses.append(train_loss) val_losses.append(val_loss) # 可視化 plt.plot(train_losses, label='Train Loss') plt.plot(val_losses, label='Validation Loss') plt.xlabel('Epoch') plt.ylabel('Loss') plt.title('Training and Validation Loss') plt.legend() plt.show()

利点

  • 軽量で実装が簡単

  • 柔軟なカスタマイズが可能


2. TensorBoardによる学習曲線の可視化

概要

TensorBoard は元々TensorFlowの可視化ツールですが、PyTorchでも torch.utils.tensorboard モジュールを通じて利用可能です。ログを保存し、Webブラウザでインタラクティブに確認できます。

セットアップ手順

  1. ライブラリのインポートとSummaryWriterの準備

python
from torch.utils.tensorboard import SummaryWriter writer = SummaryWriter(log_dir='runs/experiment1')
  1. 損失や精度の記録

python
for epoch in range(num_epochs): train_loss = train_one_epoch(model, train_loader) val_loss = validate(model, val_loader) writer.add_scalar('Loss/Train', train_loss, epoch) writer.add_scalar('Loss/Validation', val_loss, epoch)
  1. TensorBoardの起動(コマンドライン)

bash
tensorboard --logdir=runs
  1. ブラウザでの確認

  • http://localhost:6006 にアクセス

利点

  • 訓練の進行状況をリアルタイムで監視可能

  • 複数の実験を比較しやすい

  • スカラー値、画像、ヒストグラム、モデルグラフなど多様なログが可能


比較と選択のポイント

指標 matplotlib TensorBoard
設定の簡便性 高い やや複雑
表示の柔軟性 高い 高い(Webベース)
リアルタイム性 低い 高い
多機能性 中程度 非常に高い

結論

  • 軽量な確認Jupyter Notebook上のグラフ描画には matplotlib が適しています。

  • 本格的な実験記録長期間にわたるモデルのトラッキングには TensorBoard の利用が効果的です。

どちらの手法でも「訓練と検証の損失・精度の推移を追跡する」ことで、モデルの改善に有用な洞察を得ることができます。必要に応じて両方を組み合わせて使うことも可能です。

生成日:2025/05/22