Mugichoko's blog

Mugichoko’s blog

しがない研究者のプログラミングを中心としたメモ書き.

今更PyTorchマスターへの道 (5) - Softmax / 交差エントロピー / 活性化関数

今日もPython Engineerのチュートリアルをこなしていきます.11と12をやりました.

Tutorial 11

Softmax And Cross Entropy - PyTorch Beginner 11」では,Softmaxと交差エントロピー (Cross-entropy) ロス及びその使い方においての注意点が学べる.

用語

  • Softmax
    • np.exp(x) / np.sum(np.exp(x), axis=0)
    • つまりtorch.softmax(x, dim=0)
    • 0から1に収まるので確率として解釈される
  • Cross-entropy
    • -np.sum(actual * np.log(predicted)) / float(predicted.shape[0])
    • つまりnn.CrossEntropyLoss()
  • One-hot
    • あるカテゴリは1でそれ以外が0の配列
    • 例:[0, 1, 0]

nn.CrossEntropyLoss()の注意点

  • nn.LogSoftmaxnn.NLLLoss (negative log likelihood loss) の組み合わせ
  • クラスラベルはOne-hotではなく,どのクラスIDの配列
  • 予測値は確率 (Softmax) ではなく,スコアそのもの

Tutorial 12

Activation Functions - PyTorch Beginner 12」では,

  • 非線形性を加えるために活性化関数 (Activation Function) が必要になる
    • 線形変換のみだと,多数の層をつなげても結局は線形回帰に帰着する
    • 何を使うかいい理由付けがなければReLUを使う
    • 上手く学習が進まなければLeaky ReLUを使ってみる
  • 実装方法は2つ
    • nn.ReLU__init__で用意してforward関数で使う
    • torch.reluforward関数で使う
      • ただし,たまに存在しない関数もある(例えばLeaky ReLU)
      • その場合,torch.nn.functional内を探す

今日はこんなところで.