0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

nnの評価関数についてとカスタム関数

Posted at

background

  • 現在参加しているコンペにて、以下の2点が疑問に上がったのでその備忘録
    1. Optimizerとcriterionって何だっけ?
    2. コンペに合わせた損失関数ってどれだ?

Optimizerとcriterion

とりあえず困った時のGemini

PyTorchにおける**Criterion(損失関数)とOptimizer(最適化アルゴリズム)は、機械学習の「学習」というプロセスにおいて、いわば「採点係」と「指導係」**のような役割を分担しています。

それぞれの具体的な役割と、学習の流れの中での立ち位置を解説します。

1. Criterion (損失関数 / 採点係)
Criterionの役割は、**「モデルの予測がどれくらい間違っているかを数値化すること」**です。

役割: モデルが出力した予測値と、実際の正解(ラベル)を比較し、その「差(誤差)」を計算します。

数学的意義: この誤差を Loss(損失) と呼びます。学習の目的は、このLossを限りなくゼロに近づけることです。

代表的な関数:

nn.MSELoss: 回帰問題用(平均二乗誤差)

nn.CrossEntropyLoss: 分類問題用(交差エントロピー誤差)

2. Optimizer (最適化アルゴリズム / 指導係)
Optimizerの役割は、**「誤差(Loss)を減らすために、モデルのパラメータをどう修正するか決めること」**です。

役割: Criterionが算出した誤差をもとに、モデル内の重み(Weight)やバイアスを更新します。

数学的意義: 勾配(Gradient)と呼ばれる「どの方向にパラメータを動かせば誤差が減るか」という情報を使い、効率的にパラメータを調整します。

代表的なアルゴリズム:

optim.SGD: 基本的な確率的勾配降下法

optim.Adam: 勾配の動きを学習率に合わせて調整する、現在最も主流な手法
  • ナールホド。"「採点係」と「指導係」"って表現とてもわかりやすいな。
  • optimizerってoptim.Adamばかり使っているけど、他にあるのかな?
  • criterionの最適化はイメージしやすいけど、"optimizerの最適化"ってあるのかな?
    上記の疑問もどこかで解消したいなと思いつつ、今回は次に進む。

コンペに合わせた損失関数

  • 基本的には回帰問題なのだが、評価が少し特殊(コンペ自体はこちら
    Plan1: 評価にMAPEが含まれているので、nn.L1lossnn.SmoothL1Lossのような評価関数を用いる
    nn.MSELossだと値が大きいデータの誤差を小さくしようとしてしまうが、今回の評価関数は / targetを行なって「値の大きさに対する比率」を重視している。
    Plan2: 微分可能性に注意しながら、自作の関数を作成して使用する

Next Action

stackingで使用する予定なので、まずはPlan1を試した上でstackingに追加し、効果が見込めそうならPlan2を実行してさらに完成度を上げていく

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?