大学・微分積分・微分・積分

勾配と方向微分の練習問題

勾配ベクトルと方向微分を求め、勾配降下法の考え方が分かる。

考え方

多変数関数がいちばん急に増える向き(勾配ベクトル)と、好きな向きへの変化の割合(方向微分)を求められるようになります。機械学習の勾配降下法で、損失を小さくする向きを決めるしくみそのものです。

勾配 ∇f\nabla f
偏微分を並べたベクトル (∂f∂x,∂f∂y)\left(\dfrac{\partial f}{\partial x}, \dfrac{\partial f}{\partial y}\right)。∇\nabla は「ナブラ」と読む。
方向微分
長さ 1 のベクトル u\boldsymbol{u} の向きに進んだときの ff の変化の割合。∇f⋅u\nabla f \cdot \boldsymbol{u}。
勾配降下法
勾配の逆向きに少しずつ進んで、関数の値を小さくしていく方法。

山の斜面に立っていると想像してください。東西方向の傾き(xx で偏微分)と南北方向の傾き(yy で偏微分)を並べた矢印が勾配 ∇f\nabla f です。勾配は、その場所でいちばん急な上り坂の向きを指し、長さがその傾きの大きさを表します。

ほかの向き(長さ 1 のベクトル u\boldsymbol{u})に進んだときの傾き(方向微分)は、内積 ∇f⋅u\nabla f \cdot \boldsymbol{u} で求まります。内積は向きがそろうほど大きいので、勾配の向きが最も急な上り、逆向きが最も急な下りです。勾配は等高線と垂直に交わります。

勾配降下法では、パラメータを xk+1=xk−η∇f(xk)\boldsymbol{x}_{k+1} = \boldsymbol{x}_k - \eta\nabla f(\boldsymbol{x}_k) と更新します。η\eta(学習率)は1回に進む歩幅です。勾配が 0\boldsymbol{0} に近づくと、谷底に近づいたことになります。

勾配を求めるには、まず ∂f∂x\dfrac{\partial f}{\partial x} と ∂f∂y\dfrac{\partial f}{\partial y} を式で求め、最後に点の座標を代入します。bxybxy のような項は、xx で偏微分すると byby、yy で偏微分すると bxbx です。

楕円の等高線 x² + 2y² = 2, 6, 12 と、点 P(2, 1) から右上へ伸びる勾配 ∇f の矢印、左下へ伸びる −∇f の矢印。矢印は等高線に垂直-4-22-22OxyP∇f−∇f
f(x,y)=x2+2y2f(x, y) = x^2 + 2y^2 の等高線(楕円)と、点 P(2, 1) での勾配 ∇f=(4,4)\nabla f = (4, 4) の向き。勾配は等高線に垂直で上り坂を指し、勾配降下法ではその逆向き −∇f-\nabla f に進みます。

ポイント

∇f(x,y)=(∂f∂x,∂f∂y)\nabla f(x, y) = \left(\dfrac{\partial f}{\partial x}, \dfrac{\partial f}{\partial y}\right)

方向微分: Duf=∇f⋅uD_{\boldsymbol{u}}f = \nabla f \cdot \boldsymbol{u}(∣u∣=1|\boldsymbol{u}| = 1)

勾配降下法: xk+1=xk−η ∇f(xk)\boldsymbol{x}_{k+1} = \boldsymbol{x}_k - \eta\,\nabla f(\boldsymbol{x}_k)

解き方の手順

  1. yy を定数とみなして ∂f∂x\dfrac{\partial f}{\partial x} を求める。
  2. xx を定数とみなして ∂f∂y\dfrac{\partial f}{\partial y} を求める。
  3. 指定された点の座標を代入し、∇f=(∂f∂x,∂f∂y)\nabla f = \left(\dfrac{\partial f}{\partial x}, \dfrac{\partial f}{\partial y}\right) の形にまとめる。
  4. 勾配降下法で進む向きは、その逆向き −∇f-\nabla f。

例

f(x,y)=x2+3xy+2y2f(x, y) = x^2 + 3xy + 2y^2 の、点 (1,−2)(1, -2) における勾配を求めてください。

  1. ∂f∂x=2x+3y\dfrac{\partial f}{\partial x} = 2x + 3y(yy は定数)、∂f∂y=3x+4y\dfrac{\partial f}{\partial y} = 3x + 4y(xx は定数)
  2. x=1x = 1, y=−2y = -2 を代入: 2⋅1+3⋅(−2)=−42 \cdot 1 + 3 \cdot (-2) = -4、3⋅1+4⋅(−2)=−53 \cdot 1 + 4 \cdot (-2) = -5
  3. ∇f(1,−2)=(−4,−5)\nabla f(1, -2) = (-4, -5)。勾配降下法では逆向きの (4,5)(4, 5) の方向へ少し進みます。

見る

計算例

勾配降下法では、損失関数 f(x,y)f(x, y) の勾配 ∇f=(∂f∂x,∂f∂y)\nabla f = \left(\dfrac{\partial f}{\partial x}, \dfrac{\partial f}{\partial y}\right) を計算し、その逆向きにパラメータを少しずつ動かして損失を小さくします。

問いf(x,y)=4x2−3xy+4y2+x−5yf(x, y) = 4x^{2} - 3xy + 4y^{2} + x - 5y の、点 (1,−3)(1, -3) における勾配 ∇f\nabla f を求めてください。

途中の式

  1. ∂f∂x=8x−3y+1\dfrac{\partial f}{\partial x} = 8x - 3y + 1(yy は定数として微分)
  2. ∂f∂y=−3x+8y−5\dfrac{\partial f}{\partial y} = -3x + 8y - 5(xx は定数として微分)
  3. x=1, y=−3x = 1,\ y = -3 を代入: ∂f∂x=18\dfrac{\partial f}{\partial x} = 18、∂f∂y=−32\dfrac{\partial f}{\partial y} = -32
  4. ∇f(1,−3)=(18,−32)\nabla f(1, -3) = (18, -32)。勾配降下法では、この逆向き (−18,32)(-18, 32) の方向へ少し進みます。

答え勾配 (∂f/∂x, ∂f/∂y)は (18,−32)\left(18, -32\right)

一緒にやる

小さく分けて、一緒に解く

1つずつ答えを確かめながら進みます。間違えても大丈夫です。

勾配降下法では、損失関数 f(x,y)f(x, y) の勾配 ∇f=(∂f∂x,∂f∂y)\nabla f = \left(\dfrac{\partial f}{\partial x}, \dfrac{\partial f}{\partial y}\right) を計算し、その逆向きにパラメータを少しずつ動かして損失を小さくします。

f(x,y)=3x2+3xy+4y2+6x+2yf(x, y) = 3x^{2} + 3xy + 4y^{2} + 6x + 2y の、点 (3,−3)(3, -3) における勾配 ∇f\nabla f を求めてください。

小さな問いに分けて、1つずつ一緒に進めます。

ステップ 1 / 3

∂f∂x\dfrac{\partial f}{\partial x} を xx, yy の式で答えてください。

x などの文字を使って式で答えます。累乗は x^2、かけ算の記号は省略できます(2x)。

読み取り:(入力すると、ここに数式で表示されます)

自分でやる

練習問題

数字は毎回変わります。2〜3問続けて解けたら、次の単元や元のレッスンに進みましょう。

問題を準備しています…

学び直しマップ

前後の単元

分からないところがあったら前提まで戻り、分かったら使う先へ進みましょう。

学び直しマップで、この単元のまわりを見る