質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

587閲覧

ゼロから作るDeepLearningP148の偏微分

0240

総合スコア11

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/09/29 12:47

質問

ゼロから作るDeep Leaningの第五章「5.6.1 Affineレイヤ」(P148)の

①∂L/∂X = ∂L/∂Y・WT
②∂L/∂W = XT・∂L/∂Y

となっている箇所の偏微分について教えてください。

実際に要素ごとに書き下してみて
x = [x1,x2] W = [[w11 w12 w13],[w21 w22 w23]]
x · W = [x1w11+x2w21,x1w12+x2w22,x1w13+x2x23]
①はこれをxで偏微分することでWがでてくるのはわかるのですが
②についてが理解できません。

②は、
x · W = [x1w11+x2w21,x1w12+x2w22,x1w13+x2x23]
これをwで偏微分するとは思うのですが、
「ベクトルを行列で偏微分する」ということになるのでしょうか?
もし仮にその場合、どのように偏微分するのでしょうか?

ネットで諸々検索したのですが、答えにたどり着けず・・・

質問の意図としてはあくまで
∂(x · W)/∂W
からどのように導出すればxが出てくるのか知りたいといった内容ですが、
参考になるHPを教えていただけるだけでも構いませんので教えていただけると助かります。

よろしくお願いいたします。

※teratailでの質問は初めての質問で至らぬ点ありましたら申し訳ございません・・・。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

http://www.snap-tck.com/room04/c01/matrix/matrix03.html
3) ベクトルと行列の微分

「ベクトルで微分・行列で微分」公式まとめ

テンソルを使いこなしたい3(行列の行列微分)

行列ベクトル積微分

などが参考になるでしょう。ベクトルを行列で偏微分すると、要素ごとで偏微分した3階テンソルになります。

投稿2021/09/29 13:31

編集2021/10/03 22:26
toast-uz

総合スコア3266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0240

2021/10/01 14:37

ご回答ありがとうございます。 教えて頂いたサイトを読み込み、また「wで偏微分すると、wの要素ごとで偏微分した行列になります」との事でしたので、 ∂(x · W)/∂W =[[x1,x1,x1],[x2,x2,x2]] となるのかな…?と考えたのですが、これはあっておりますでしょうか…? かなり悩んだのですが、どうしても確信が持てず、あっているかどうかだけでもかまいませんので教えていただけませんでしょうか? ※ちなみに悩んだポイントとして書籍では x(=[x1,x2])のベクトルが出てくる記載となっており、ご記載頂いた「wで偏微分すると、wの要素ごとで偏微分した行列になります。」という(行列が出てくるという内容かと思いますが、誤解していたら申し訳ございません…)内容と一致しないところで悩んでおります。 例えば、行列が出たあとに何かしら変換してx(ベクトル)となるのだろうかといった想像、妄想レベルで考え、調べたりしたのですが情報も見つけられず… お手数おかけして申し訳ございませんが、少しでも情報頂けると助かります。 何卒よろしくお願いいたします。
toast-uz

2021/10/03 23:07 編集

回答を加筆修正しました。ベクトルを行列で偏微分すると、3階テンソルになります。 すなわち、 w11での偏微分 -> [x1, 0, 0] w12での偏微分 -> [0, x1, 0] w13での偏微分 -> [0, 0, x1] w21での偏微分 -> [x2, 0, 0] w22での偏微分 -> [0, x2, 0] w23での偏微分 -> [0, 0, x2] を並べて [[[x1, 0, 0], [0, x1, 0], [0, 0, x1]], [[x2, 0, 0], [0, x2, 0], [0, 0, x2]]] が答えになると思います。(次元の順番がこれでよいのかは、自信ありません・・・・)
0240

2021/10/03 15:28 編集

回答のご修正および偏微分の結果のご回答まことにありがとうございます。 ベクトルを行列で偏微分する方法自体理解できていなかったため、本当に助かりました。 厚かましいのを承知で最後にもう一点だけ教えていただけませんでしょうか・・・? (追加して頂いたサイトをの情報やご回答をいただいた内容及び、改めて情報検索などもしつつ丸一日ほど考えたのですが、私の現在の数学理解レベルが及ばず繰り返しご質問となってしまい申し訳ございません・・・) 教えていただきたい内容として、書籍では偏微分の結果が「x(ベクトル)」となっており、ご回答いただいた内容は「3次元のテンソル」という、この間をつなぐ考え方が以下であっているかを教えていただきたいです・・・ 今までご質問させていただいていた∂(x · W)/∂Wの結果として、書籍ではx(ベクトル)が出てきたあと、最終的に以下となっておりまして・・・ ②∂L/∂W(2,3) = xT(2,1)・∂L/∂Y(1,3) ※「∂L/∂Y(1,3)」は逆伝播で上流から流れてくるもの ・・・∂L/∂YをY(y1,y2,y3)として、 ∂L/∂W(2,3) = XT(2,1)・∂L/∂Y(1,3)を書き下すと        =[x1,x2]T・[y1,y2,y3]        =[[x1y1,x1y2,x1y3],          [x2y1,x2y2,x2y3]] になるかと思います。 上記書き下し内容のxを教えていただいた3次元テンソルにすると [y1,y2,y3]·[[[x1, 0, 0],        [0, x1, 0],        [0, 0, x1]],       [[x2, 0, 0],        [0, x2, 0],        [0, 0, x2]]] =[[x1y1+0+0,0+x1y2+0,0+0+x1y3],   [x2y1+0+0,0+x2y2+0,0+0+x2y3]] =[[x1y1,x1y2,x1y3],   [x2y1,x2y2,x2y3]] となり、結果だけみると∂L/∂W(2,3)は同じになるので、x(ベクトル)とx(3階テンソル)を、今回の内容的には同じとして扱ってよい。 今回はいったん計算結果からの推測しただけなのですが、上記のような考え方で正しい理解とはいえなくとも、間違ってはいないでしょうか? (調べる中で「テンソル、変換則」といった内容も出てきて、もしやこれでは?と考えたり、3次元テンソルが基底っぽいからベクトルとして考えていいのか??と考えたりしたのですが、理解が及ばず計算結果からの推測となりました・・・。) お手数おかけして申し訳ございません、理解が及ばないながらもできるところまでは理解したいという気持ちがあり、繰り返しのご質問となっている点、本当に申し訳なく思っておりますが、最後にもう一度だけご回答いただけると助かります・・・。 なにとぞよろしくお願いいたします。
toast-uz

2021/10/03 23:09 編集

テンソルだと階数と呼ぶようなので回答を少し修正しました。(numpyだと次元でよいのですが・・・) 追加質問の件、書籍が手元に無いので正確には確認できません。確か、この書籍では逆伝搬計算のための合成関数の微分計算(連鎖律)を、局所解とみて近似計算していると思いました。よって、今回計算した大域的な結果と、書籍の局所的な結果が、点を固定すると一致したのでは? そのあたりに注意して読みすすめると、ご理解いただけるのではないでしょうか。
0240

2021/10/05 15:33

書籍が手元にないご状況の中、ご対応頂きまして誠にありがとうございました。 木を見て森を見ずの状況だったかもしれません…。 まだ自分の数学的基礎の弱さから理解が追いついていないかもしれませんが、諸々教えて頂いた事はとても勉強になりました。 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問