Upgrade to Pro — share decks privately, control downloads, hide ads and more …

B3勉強会 2018年1月9日 Chainer v2 による実践深層学習 1

Atsushi
January 09, 2018
320

B3勉強会 2018年1月9日 Chainer v2 による実践深層学習 1

B3勉強会 第1回目
発表日 2018年1月9日

Atsushi

January 09, 2018
Tweet

More Decks by Atsushi

Transcript

  1. Chainer u G1 u Deep Learning )$* u MIT&+ 3

    '  0. u AH"& $ Ubuntu, CentOS u 9D u Python &!&'  5? u %&( => EF ,; u GPU#C2GPU8/B6:- 4@<7
  2. NumPy  u Python  u # ! $ 

      "%  u  >>> import numpy as np
  3.  u 1  >>> np.array([1,2,3,4]) array([1, 2, 3, 4])

    >>> np.array(range(4)) array([0, 1, 2, 3]) u 2  >>> np.array([[1,2],[3,4]]) array([[1, 2], [3, 4]]) u   >>> np.random.randn(4) array([-0.28870487, -0.69443552, 0.81927545, 0.17188679]) randn   uniform  normal   u   >>>np.identity(5) array([[1., 0., 0., 0., 0.], [0., 1., 0., 0., 0.], [0., 0., 1., 0., 0.], [0., 0., 0., 1., 0.], [0., 0., 0., 0., 1.]])
  4.  >>>a = np.array(range(6)).reshape(2,3) >>>a array([[0, 1, 2], [3, 4,

    5]]) u  >>>a.shape (2, 3) u  >>> nrow, ncol = a.shape u  >>>a.size 6 >>>b = np.array(range(6)) >>>b array([0, 1, 2, 3, 4, 5]) u  >>>np.random.permutation(a) array([[0, 1, 2], [3, 4, 5]]) >>>np.random.permutation(b) array([0, 4, 1, 5, 2, 3])
  5.   >>>a = np.array(range(4)) array([0, 1, 2, 3]) >>>b

    = np.array(range(4,8)) array([4, 5, 6, 7]) u  >>>a + 10 array([10, 11, 12, 13]) >>>a - 10 array([-10, -9, -8, -7]) >>>a * 10 array([ 0, 10, 20, 30]) >>>a / 10 array([0. , 0.1, 0.2, 0.3]) u    >>>a + b array([ 4, 6, 8, 10]) >>>a - b array([-4, -4, -4, -4]) >>>a * b array([ 0, 5, 12, 21]) >>>a / b array([0. , 0.2 , 0.33333333, 0.42857143])
  6.   >>>a = np.array(range(4)) >>>a array([0, 1, 2, 3])

    >>>b = np.array(range(4,8)) >>>b array([4, 5, 6, 7]) u  ( ) >>>a.dot(b) 38 >>>c = np.array(range(12)).reshape(3,4) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>>d = np.array(range(12,24)).reshape(4,3) array([[12, 13, 14], [15, 16, 17], [18, 19, 20], [21, 22, 23]]) u  >>>c.dot(d) array([[114, 120, 126], [378, 400, 422], [642, 680, 718]])
  7.   >>>a = np.array(range(10,14)).reshape(2,2) >>>a array([[10, 11], [12, 13]])

    u   >>>a.T array([[10, 12], [11, 13]]) u  >>>np.linalg.det(a) -2.0000000000000115 u   >>>np.linalg.inv(a) array([[-6.5, 5.5], [ 6. , -5. ]]) u    >>>la, v = np.linalg.eig(a) u   >>>la array([-0.08663023, 23.08663023]) u   >>>v array([[-0.73704409, -0.64344003], [ 0.67584466, -0.76549652]])
  8.    u   >>> import numpy as

    np >>> import pickle >>> a = np.random.randn(6).reshape(3,2) >>> a array([[ 0.06657786, -1.36415741], [ 0.4853755 , -1.69120735], [ 0.88355397, 0.10395059]]) >>> f = open('a.pkl','wb') >>> pickle.dump(a,f) >>> f.close() u    >>> import numpy as np >>> import pickle >>> f = open('a.pkl','rb') >>> a = pickle.load(f) >>> f.close() >>> a array([[ 0.06657786, -1.36415741], [ 0.4853755 , -1.69120735], [ 0.88355397, 0.10395059]])
  9.  u %k u #! " u   "

    u &$" u %   u % o = 1 ⇣ W (1)x + b(1) ⌘ ok = m X i=1 w(1) ki xi + b(1) k ! y = f(x) = 2 ⇣ W (2) 1 ⇣ W (1)x + b(1) ⌘ + b(2) ⌘ 1(x) = 1 1 + e x 2(x) = x     !" !# !$ %" %# %& ℎ ( 2 1 + 2 1 , 2 1 -(") -(#)    W(#) W(") NN "
  10. 9>,PAG./MDKFO/ u =%('" *&!$) u NNI2%('"43E : J-  

    1I 7 u H;,8+/ 9>,PAG./(Stochastic Gradient Descent, SGD) u NL#" u NL#" C0#" BMD 5<  J- ✓ = n b(1), b(2), W (1), W (2) o ✓(0) ✓(i) ✓(i+1) ✓ ✓ D = {(x1, y1), (x2, y2), . . . , (xN , yN )} k Ek (xk, yk) ✓(i+1) = ✓(i) ↵rEk rEk = ✓ @Ek @✓1 ✓=✓(i) , @Ek @✓2 ✓=✓(i) , . . . , @Ek @✓V ✓=✓(i) ◆ 6? 9>,PAG./= 7@ @Ek @✓i Ek = 1 2 |f(xk; ✓(i)) yk |2
  11. #'2(,/)-*1 u .    u & 0" 

    . .  +% !$"  l 1 l l j @Ek @a(l) j a(l) j = X i w(l 1) ji l 1(a(l 1) i ) + b(l 1) j a(l) j @Ek @w(l 1) ji = @Ek @a(l) j @a(l) j @w(l 1) ji = @Ek @a(l) j l 1(al 1 i ) @Ek @b(l 1) j = @Ek @a(l) j @a(l) j @b(l 1) j = @Ek @a(l) j     ! " ($) ! & ($'() )$ )$'(  1 ℎ 1 , - ." ($) - "& ($'() / + 1  / − 1  /  ! . #
  12. $'1(+ .),*0  !&/#   % @Ek @a(l) j

    = X h @Ek @a(l+1) h @a(l+1) h @a(l) j a(l+1) h = X j whj l(a(l) j ) + b(l) k @a(l+1) h @a(l) j = whj 0 l (a(l) j ) @Ek @a(l) j = X h @Ek @a(l+1) h whj 0 l (a(l) j ) -.)-  .)*0 " →.),*0     ! " ($) ! & ($'() )$ )$'(  1 ℎ 1 , - ." ($) - "& ($'() / + 1  / − 1  /