[キャンプAI技術の誘導]U-stage2-2


📌 けいしゃかこう


📄 微分は何ですか。


微分は変数の移動に伴う関数値の変化を測定するツールであり,最適化で最もよく用いられる方法である.
最近はsympyモジュールがあり,微分を容易に計算できる.
f′(x)=lim⁡h→0f(x+h)−f(x)hf'(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}f′(x)=h→0lim​hf(x+h)−f(x)​

📄 微分は私たちに何の意味がありますか?


微分は関数fffの与えられた点(x,f(x))(x,f(x))(x,f(x))上の接線の傾斜である.接線がある点で傾斜していることを知っていれば、どの方向に移動点を上げるかを知ることができ、関数値が増加/減少します.

その意味はy=x 2 y=x^2 y=x 2によって理解され、傾きが2の場合、正方向に点を移動すると関数値が増加/逆方向に移動して減少し、傾きが-2の場合、負方向に点を移動すると関数値が増加/逆方向に移動して減少する.

📄 だから傾斜降下法は何ですか?


すなわち、チルトダウン法は、微分値の反対方向(関数値が減少する方向)に移動して関数の極値を探す方法であり、またチルトアップ法は、微分値の順方向(関数値が増加する方向)に移動して関数の極値を探す方法である.要するに,傾斜降下法は,極値で微分値が0であり,目的関数が更新されなくなるまで(損失が減少できるまで)最適値を探す方法である.


📄 複数の独立変数がある場合はどうしますか?


ベクトルが入力された多変数関数の場合、偏微分(partial differentiation)を使用し、各変数は偏微分勾配ベクトル(Gradient vector)8711 fnabla8711 fを使用します.
∂xif(x)=lim⁡h→0f(x+hei)−f(x)h\partial_{x_i}f(\textbf{x})=\lim_{h\to0}\frac{f(\textbf{x}+h\textbf{e}_i)-f(\textbf{x})}{h}∂xi​​f(x)=h→0lim​hf(x+hei​)−f(x)​
f(x,y)=x2+2xy+cos(x+2y)⇒∂xf(x,y)=2x+2y−sin(x+2y)f(x,y)=x^2+2xy+cos(x+2y)\\\Rightarrow\partial_{x}f(x,y)=2x+2y-sin(x+2y)f(x,y)=x2+2xy+cos(x+2y)⇒∂x​f(x,y)=2x+2y−sin(x+2y)
⇒∇f=(∂x1f,∂x2f,…,∂xdf)\Rightarrow\nabla{f}=(\partial_{x_1}f,\partial_{x_2}f,\dots,\partial_{x_d}f)⇒∇f=(∂x1​​f,∂x2​​f,…,∂xd​​f)

📄 どのように傾斜降下法で線形回帰係数を求めますか?





📄 傾斜降下法は万能ですか?


理論的には,傾斜降下法は微分可能であり,凸(凸)関数に対して適切な学習率と学習回数を選択すると収束を保証できる.特に線形回帰,目的式‖y87 Xβ∥2\left\|\textbf{y}-\textbf{X}\beta\right\|_2∥y−Xβ‖2は回帰係数であるβ\betaβ 凸関数なので収束が保証されています.しかし,非線形回帰では,ターゲット式が凸でない可能性があるため,収束が常に保証されるわけではない.

📌 かくりつこうばいこうかほう


📄 バッチとミニバッチ


ミニデプロイモデルのデプロイ時に一度に処理されるデータの集合を学習し、毎回データのセットを使用します.これは、学習データ全体をレイアウトサイズで等分するデータセットの集合です.

📄 セットチルトダウンほう


名前のbatchは混同される可能性があるため、ここでいうbatchは学習データセット全体を意味する.したがって,BGD(Batch Gradient Descent)は学習データ全体を1つのレイアウトに組み合わせて学習する傾斜降下法である.以下はBGDの特徴です.

  • 全データで学習するため,モデルパラメータの更新回数は少ない(Epoch毎の更新).しかし、1つのステップはすべての学習データを使用するので、学習には長い時間がかかります.

  • データ全体が一度に処理されるため、メモリが最も必要です.

  • 常に同じデータ(すべてのデータ)に対して傾斜を求めるため,収束は安定である.

  • しかし、局所極小状態に陥ると、抜け出すのは難しい.

  • 📄 かくりつけいしゃこうかほう


    勾配設計は,データ全体でランダムに選択された1つのデータ(配置寸法=1)を用いて学習する傾斜降下法である.以下はSGDの特徴です.
  • BGDと比較して、データが少なく、速度が速いという利点がある.
  • データは1つ1つ処理され,GPUの性能を完全に利用することはできない.
  • は収束速度が速いが、各データの損失値の傾きがわずかに異なるため、ターゲットが発生する.
  • 射撃は局所的に極小に陥る確率を減少させた.
  • は一般に学習データ全体に対して良い方向に収束するが,グローバル極小値に収束することは困難である.

  • ▼ミニ放置確率傾斜降下法


    SGDとBGDのトレードオフ方式により,データ全体を配置サイズ(ユーザ指定)に分割し,ミニ配置の傾斜降下法として学習した.
    例えば、全てのデータが100のデータを学習する場合、レイアウトサイズが10の場合、全ての100個を10束に分割したミニレイアウトとし、Epoch毎に10回学習する.以下にMSGDが持つ特徴を示す.
  • 個の構成の損失値の平均値で学習したので,射撃はSGDより少なかった.
  • が局所的に極小に陥るリスクは小さい.
  • SGDよりGPU並列演算が有利である.
  • 配置寸法を設定します.通常2の平方数を使用して、自分のGPUによるメモリオーバーフローが発生しないことを確認します.
  • の配置寸法は、学習データの数より少ないことを推奨します.最後に残ったレイアウトが異なるサイズであれば、そのレイアウトのデータの学習における比重が大きくなるからです.

  • 📄 複雑すぎます。片付けましょうか。



    カスタムレイアウト寸法傾斜降下法全体学習データBGD 1 SGD、通常2の平方数MSGD
    <참고>
    엄밀히 따지면 MSGD 와 SGD는 다른 알고리즘이지만 요즘엔 MSGD를 SGD라고 혼용하여 부르기도 한다.

    📚 Reference


    グレディントって何?
    けいしゃこうかほう
    ベクトル
    レイアウトとミニレイアウト、確率傾斜降下法1
    配置とミニ配置、確率傾斜降下法2
    レイアウトとミニレイアウト、確率傾斜降下法3
    配置とミニ配置、確率傾斜降下法4