考え方
多変数関数がいちばん急に増える向き(勾配ベクトル)と、好きな向きへの変化の割合(方向微分)を求められるようになります。機械学習の勾配降下法で、損失を小さくする向きを決めるしくみそのものです。
- 勾配 ∇f
- 偏微分を並べたベクトル (∂x∂f,∂y∂f)。∇ は「ナブラ」と読む。
- 方向微分
- 長さ 1 のベクトル u の向きに進んだときの f の変化の割合。∇f⋅u。
- 勾配降下法
- 勾配の逆向きに少しずつ進んで、関数の値を小さくしていく方法。
山の斜面に立っていると想像してください。東西方向の傾き(x で偏微分)と南北方向の傾き(y で偏微分)を並べた矢印が勾配 ∇f です。勾配は、その場所でいちばん急な上り坂の向きを指し、長さがその傾きの大きさを表します。
ほかの向き(長さ 1 のベクトル u)に進んだときの傾き(方向微分)は、内積 ∇f⋅u で求まります。内積は向きがそろうほど大きいので、勾配の向きが最も急な上り、逆向きが最も急な下りです。勾配は等高線と垂直に交わります。
勾配降下法では、パラメータを xk+1=xk−η∇f(xk) と更新します。η(学習率)は1回に進む歩幅です。勾配が 0 に近づくと、谷底に近づいたことになります。
勾配を求めるには、まず ∂x∂f と ∂y∂f を式で求め、最後に点の座標を代入します。bxy のような項は、x で偏微分すると by、y で偏微分すると bx です。
f(x,y)=x2+2y2 の等高線(楕円)と、点 P(2, 1) での勾配 ∇f=(4,4) の向き。勾配は等高線に垂直で上り坂を指し、勾配降下法ではその逆向き −∇f に進みます。ポイント
∇f(x,y)=(∂x∂f,∂y∂f)
方向微分: Duf=∇f⋅u(∣u∣=1)
勾配降下法: xk+1=xk−η∇f(xk)
解き方の手順
- y を定数とみなして ∂x∂f を求める。
- x を定数とみなして ∂y∂f を求める。
- 指定された点の座標を代入し、∇f=(∂x∂f,∂y∂f) の形にまとめる。
- 勾配降下法で進む向きは、その逆向き −∇f。
例
f(x,y)=x2+3xy+2y2 の、点 (1,−2) における勾配を求めてください。
- ∂x∂f=2x+3y(y は定数)、∂y∂f=3x+4y(x は定数)
- x=1, y=−2 を代入: 2⋅1+3⋅(−2)=−4、3⋅1+4⋅(−2)=−5
- ∇f(1,−2)=(−4,−5)。勾配降下法では逆向きの (4,5) の方向へ少し進みます。
勾配降下法では、損失関数 f(x,y) の勾配 ∇f=(∂x∂f,∂y∂f) を計算し、その逆向きにパラメータを少しずつ動かして損失を小さくします。
問いf(x,y)=4x2−3xy+4y2+x−5y の、点 (1,−3) における勾配 ∇f を求めてください。
途中の式
- ∂x∂f=8x−3y+1(y は定数として微分)
- ∂y∂f=−3x+8y−5(x は定数として微分)
- x=1, y=−3 を代入: ∂x∂f=18、∂y∂f=−32
- ∇f(1,−3)=(18,−32)。勾配降下法では、この逆向き (−18,32) の方向へ少し進みます。
答え勾配 (∂f/∂x, ∂f/∂y)は (18,−32)
一緒にやる
小さく分けて、一緒に解く
1つずつ答えを確かめながら進みます。間違えても大丈夫です。
勾配降下法では、損失関数 f(x,y) の勾配 ∇f=(∂x∂f,∂y∂f) を計算し、その逆向きにパラメータを少しずつ動かして損失を小さくします。
f(x,y)=3x2+3xy+4y2+6x+2y の、点 (3,−3) における勾配 ∇f を求めてください。
小さな問いに分けて、1つずつ一緒に進めます。
ステップ 1 / 3
∂x∂f を x, y の式で答えてください。
自分でやる
練習問題
数字は毎回変わります。2〜3問続けて解けたら、次の単元や元のレッスンに進みましょう。