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

目次

概要

誤差関数(損失関数)の最小化問題

パラメタ値の自動計算

見せかけの最適化を防ぐ

数式 or 計算グラフ

数式

コチラが一般的であるが、

計算グラフ

ココでは、コチラを使用して視覚的に理解した上で実装する。

連鎖律

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

合成関数

合成関数(関数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

計算グラフ

によって表現される。

計算グラフの例

リンゴの例

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

リンゴとミカンの例

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

局所的

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

逆伝播

順伝播の例

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

逆伝播の例

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

計算グラフの逆伝播

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

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

連鎖率と計算グラフ

連鎖率を計算グラフで表現

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

演算毎の逆伝播

加算ノード

乗算ノード

重みの自動計算

計算グラフの逆伝播で得られる値は、

リンゴの例

を表している。

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

リンゴとミカンの例

          100         200         650      715
(リンゴ)--->(*)--------->(+)--->(*)--->(支払い)
          <---↑│ <--------- ↑│<---↑│ <---
          2.2 ││    1.1     ││1.1 ││  1
             2│↓110         ││    ││
    (リンゴの個数)          ││ 1.1││650
                              ││    │↓
          150           450   ││ (消費税)
(ミカン)--->(*)-----------┘│
          <---↑│ <------------┘
          3.3 ││      1.1
             3│↓165
    (ミカンの個数)

レイヤの実装

単純なレイヤの実装

乗算レイヤ:MulLayer?

加算レイヤ:AddLayer?


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