.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

損失関数勾配を計算するための
数値微分は、計算に時間がかかるので、
誤差逆伝播法」を使用して効率よく計算を行う。

誤差逆伝播法」は、

によって理解する。

前者が一般的であるが、ここでは、
後者を使用して視覚的に理解した上で実装する。

計算グラフ

概要

によって表現される。

例1

          100       200         220
(リンゴ)--->(*2)--->(*1.1)--->(支払い)
          100      200      220
(リンゴ)--->(*)--->(*)--->(支払い)
               ↑2      ↑1.1
  (リンゴの個数)(消費税)

例2

          100         200         650      715
(リンゴ)--->(*)--------->(+)--->(*)--->(支払い)
                ↑2           ↑       ↑1.1
    (リンゴの個数)          │   (消費税)
                              │
          150          450    │
(みかん)--->(*)-----------┘
                ↑3
    (みかんの個数)

局所的な計算

          100            200         4,200    4,620
(リンゴ)--->(*)------------->(+)--->(*)--->(支払い)
                ↑2               ↑       ↑1.1
    (リンゴの個数)              │   (消費税)
                                  │
                                  │
(沢山の買い物)--->(複雑な計算)┘4000

逆伝播

順伝播の例

          100(x)   200(2x)   220(2.2x)
(リンゴ)--->(*)---->(*)---->(支払い)
               ↑2       ↑1.1
  (リンゴの個数) (消費税)

逆伝播の例

          100(x)   200(2x)   220(2.2x)
(リンゴ)--->(*)---->(*)---->(支払い)
          <--- ↑  <---- ↑  <----
           2.2 │   1.1  │    1.0
               │2       │1.1
  (リンゴの個数) (消費税)

連鎖律

計算グラフの逆伝播

順方向と逆向きに局所的な微分を乗算。

 x         y
---->(f)---->
<----     <----
   dy
 E ─      E
   dx

連鎖率とは

合成関数の微分についての性質。

「ある関数が、合成関数で表される場合、合成関数の微分は、
合成関数を構成する関数の微分の積で表すことが出来る。」

合成関数

合成関数(関数Aと関数B)

     2
z = t
t = x + y

関数Aの微分

dz
─ = 2t
dt

関数Bの微分

dt
─ = 1
dx

合成関数の微分

dz    dz dt
─ =  ─ ─ = 2t * 1 = 2t = 2( x + y)
dx    dt dx

連鎖率と計算グラフ

連鎖率の計算を計算グラフで表現する。

    x           t          z
--------->(+)---->(^2)---->
<--------- ↑  <----      <----
  dz dt    │    dz         dz
1 ─ ─    │  1 ─         ─ = 1
  dt dx    │    dt         dz
           │
            y
    x             t          z
------------>(+)---->(^2)---->
<------------  ↑ <----      <----
               │   
 1 * 2(x + y)  │  2t = 2(x + y)
               │
               │
                y

演算毎の逆電波

加算ノード

乗算ノード

リンゴの例

          100(x)    200(2x)     220(2.2x)
(リンゴ)---->(*)------>(*)---->(支払い)
          <----↑│ <------ ↑│<----
           2.2 ││   1.1   ││ 1.0
               ││         ││
              2│↓100   1.1│↓200
         (リンゴの個数)(消費税)

誤差逆伝播法


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS