忘れ去ってしまった数学を勉強し直す。

 忘れ去ってしまった数学を勉強し直す。

【JAWS-UG関西女子会】AWS re:Invent2017 re:cap &機械学習祭り!での登壇資料です。

E03953e0c18d776fead147601fdc3899?s=128

Toro_Unit (Hiroshi Urabe)

December 16, 2017
Tweet

Transcript

  1. 忘れ去ってしまった数学を勉強し直す。 Toro_Unit / 2017.12.16 @JAWS‑UG 関西女子会 1

  2. 本日は、 女子会にお招きいただき、 ありがとうございます。 人生初の女子会ということで張り切っていきたいと思います。 2

  3. 本日は、 機械学習の話ということで。 3

  4. 僕の機械学習歴。 4

  5. Tensorflow のチュー トリアルをやってみた。 きほんコピペ。 5

  6. 以上。 6

  7. やばい。 7

  8. まだまだ勉強中の身の上です。 8

  9. とりあえず赤い本読んどけば良いらしい。 高校数学 の知識があれば案外やれるとの噂。 9

  10. ですが。 10

  11. 遠い記憶の彼方に忘れ去ってしまった数学の知識。 微分積分良い気分んなわけねー だろって思ってた。 こんなの将来使うわけねー よって思ってたから授業中寝てた。 謎の記号の数々。 ギリシャ文字。AA でしか使わない。 11

  12. 若いときの自分を殴りたい。 12

  13. だけどタイムマシンは無い。 13

  14. 残念!!! 14

  15. といってもはじまらない。 15

  16. もう一度数学と戦おう。 16

  17. Toro_Unit 占部 紘 ( うらべ ひろし) Markup and Frontend Engineer

    Web Designer 長野県民11 年目。 Github: @torounit Twitter: @Toro_Unit Facebook: fb.me/torounit Blog: https://torounit.com 17
  18. WordPress な人です。 WordBench 長野 モデレー ター WordCamp Kyoto 2017 実行委員

    WordCamp Tokyo 2017 Speaker Plugin and Theme developer Custom Post Type Permalinks WordBench.org etc... 18
  19. 19

  20. 長野県松本市からきました。 食い物が基本的にうまい。 ワイン! 山菜! 蕎麦! 馬刺! 松茸! すいか! Bar の街らしい。

    Photo by 663highland. License: CC BY SA 3.0 https://commons.wikimedia.org/wiki/File:130608_Matsumoto_Castle_Matsumoto_Nagano_pref_Japan02bs4.jpg 20
  21. 機械学習といえば。 21

  22. 22

  23. TensorFlow 機械学習のためのライブラリ Google 製 OSS (Apache‑2.0) 23

  24. MNIST for ML Biginners 機械学習の初学者向けのチュー トリアル。 MNIST database という手書きの0~9 の数字のデー

    タセット。 この界隈での H e l l o W o r l d 的な モノ。 24
  25. 25

  26. 皆さんが終わってしまう理由。 26

  27. 27

  28. 28

  29. evidence = W x + b y = softmax(evidence) i

    j ∑ i, j j i 29
  30. せめて人間の言葉で・・・ 30

  31. 大丈夫 31

  32. 一つ一つ意味を知れば読める。 32

  33. 皆さんはプログラムという謎な言語を書いてる。 33

  34. 数学やってる人 >>>>> プログラマ プログラム書いてる同級生何人居る? 本屋とかにも数学の本が圧倒的に多いよね??? 34

  35. じゃぁ数学もいける! 35

  36. と言うわけで一つ一つ見ていきましょう。 36

  37. evidence = W x + b i j ∑ i,

    j j i 37
  38. ∑ 38

  39. 感想 なんかエクセルで見たことあるやつ。 「 オー ト SUM」 ボタンのやつ。 39

  40. 40

  41. 総和は、 加法が定義された集合 M の元の列 x1, x2, ..., xn に対する n

    項演算(n は順序数) である。 そ れは、 再帰的に次のように定義される。 s = x , s = s + x 1 1 i i−1 1 41
  42. Oh.. 42

  43. 集合? いくつかの「 もの」 からなる「 集まり」。 英語で言うと、Set. 「 もの」 のことを 元

    (element, 要素) と呼ぶ。 ちゃんと勉強したい人は数学科に行こう! 43
  44. たとえば 自然数 {1, 2, 3, 4, 5, ...} 偶数 {2,

    4, 6, 8, 10, 12, ...} サー バー ワー クスさんのオフィス所在地 {Tokyo, Osaka, Fukuoka, Nagoya, Sendai} 44
  45. プログラミングでいうと 45

  46. # p y t h o n { 1 ,

    2 , 3 , 4 , 5 } { S e r v e r w o r k s ( ' T o k y o ' ) , S e r v e r w o r k s ( ' O s a k a ' ) , S e r v e r w o r k s ( ' F u k u o k a ' ) } / / J a v a S c r i p t [ 1 , 2 , 3 , 4 , 5 ] ; [ n e w S e r v e r w o r k s ( ' T o k y o ' ) , n e w S e r v e r w o r k s ( ' O s a k a ' ) , n e w S e r v e r w o r k s ( ' F u k u o k a ' ) ] ; / / E S 6 n e w S e t ( [ 1 , 2 , 3 , 4 , 5 ] ) ; 46
  47. Set 型 もしくは、 配列・ リスト型で表現されることが多い。 実は結構おなじみですよね。 47

  48. 加法が定義された集合 加法 = 足し算が出来る集合。 できるもの。 {1, 2, 3, 4, 5,

    ...} できないもの。( 合体とかしないよね。) {Tokyo, Osaka, Fukuoka, Nagoya, Sendai} 48
  49. x = {1, 2, 3} ならば、 s = x =

    1 s = s + x = 1 + 2 = 3 s = s + x = 3 + 3 = 6 x = 6 1 1 2 1 2 3 2 3 ∑ 49
  50. 集合 x の総和。 集合 x が x = {x ,

    x , x , ...} で表されるとき、 その全ての元の和をこう書く。 x = x = x i は数える数字。n 要素の数。 そして、i を何処まで動かすか。 集合の総和の場合、 省略されたりする。 1 2 3 ∑ i ∑ i i=1 ∑ n i 50
  51. 僕らはプログラマなので。 ゼロから数える。 x = {x , x , x ,

    ...} x = x = x 0 1 2 ∑ i ∑ i i=0 ∑ n−1 i 51
  52. プログラム的には。 for 文 x # p y t h o

    n x = [ 1 , 2 , 3 ] t o t a l = 0 ; i = 0 ; w h i l e i < = l e n ( x ) ‑ 1 : t o t a l = t o t a l + x [ i ] i = i + 1 ; / / j a v a s c r i p t c o n s t x = [ 1 , 2 , 3 ] l e t t o t a l = 0 f o r ( l e t i = 0 ; i < = i . l e n g t h ‑ 1 ; i + + ) { t o t a l = t o t a l + x [ i ] } i=0 ∑ n−1 i 52
  53. エレガントに。 x # p y t h o n x

    = { 1 , 2 , 3 } s u m ( x ) r e d u c e ( l a m b d a a , b : a + b , x ) t o t a l = 0 f o r e i n x t o t a l = t o t a l + e / / j s c o n s t x = [ 1 , 2 , 3 ] x . r e d u c e ( ( p r e v , c u r r e n t ) = > p r e v + c u r r e n t ) ∑ 53
  54. Tensorflow のtutorial の数式。 evidence = W x + b i

    j ∑ i, j j i 54
  55. evidence = W x + W x + W x

    + ⋯ + b i i, 1 1 i, 2 2 i, 3 3 i 55
  56. evidence = W x + W x + W x

    + ⋯ + b evidence = W x + W x + W x + ⋯ + b evidence = W x + W x + W x + ⋯ + b evidence = W x + W x + W x + ⋯ + b ⋮ 1 1, 1 1 1, 2 2 1, 3 3 1 2 2, 1 1 2, 2 2 2, 3 3 2 3 3, 1 1 3, 2 2 3, 3 3 3 4 4, 1 1 4, 2 2 4, 3 3 4 56
  57. i とか jとかを使うのは for 文と一緒。 57

  58. この後はじかんがあったらやる。 58

  59. evidence = W x + W x + W x

    + ⋯ + b evidence = W x + W x + W x + ⋯ + b evidence = W x + W x + W x + ⋯ + b evidence = W x + W x + W x + ⋯ + b ⋮ 1 1, 1 1 1, 2 2 1, 3 3 1 2 2, 1 1 2, 2 2 2, 3 3 2 3 3, 1 1 3, 2 2 3, 3 3 3 4 4, 1 1 4, 2 2 4, 3 3 4 59
  60. なんか同じような数字がたくさんある。(Wとかxとかbは数字です。) W は2 次元の配列, x, b はそれぞれ1 次元の配列。 60

  61. W, x, b をそれぞれまとめて記述したい。 まとめて記述出来ると、W,x, b の3 つの変数で記述出来る! 61

  62. こう書きたい! evidence = Wx + b 62

  63. 行列 (en:matrix) 括弧でくくって、 複数の数をまとまりごと扱ってしまえ! という方法。 ベクトルの記述もこれ。 線形代数って分野で滅茶苦茶出てくる。 CSS でも最近使うぞ! 63

  64. プログラマのための線形代数再入門 を10 回は最低読むと良いぞ。 64

  65. 2014 年度から高校数学から消えた。 65

  66. でも大丈夫。 66

  67. 要は連立方程式もコレ。 = { 2x + 5y = 19 x +

    3y = 11 ( 2 1 5 3 )( x y ) ( 19 11 ) 67
  68. 行列で考えると良いこと。 68

  69. を行列を使って書き直すと。 ふたつの数?( 構造体) の関係性に書き直せる。 ⎩ ⎪ ⎨ ⎪ ⎧1a +

    2a + 3a 0 1 2 4a + 5a + 6a 0 1 2 7a + 8a + 9a 0 1 2 ⎝ ⎛1 4 7 2 5 8 3 6 9⎠ ⎞ ⎝ ⎛a0 a1 a2 ⎠ ⎞ 69
  70. M = n p . a r r a y

    ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ] ] ) a = n p . a r r a y ( [ [ 1 ] , [ 2 ] , [ 3 ] ] ) / / 行列の積を求める n p . d o t ( M , a ) / / a r r a y ( [ [ 1 4 ] , [ 3 2 ] , [ 5 0 ] ] ) ふたつの変数のかけ算で表せる。 70
  71. evidence = W x + W x + W x

    + ⋯ + b evidence = W x + W x + W x + ⋯ + b evidence = W x + W x + W x + ⋯ + b evidence = W x + W x + W x + ⋯ + b ⋮ 1 1, 1 1 1, 2 2 1, 3 3 1 2 2, 1 1 2, 2 2 2, 3 3 2 3 3, 1 1 3, 2 2 3, 3 3 3 4 4, 1 1 4, 2 2 4, 3 3 4 71
  72. = + ⎝ ⎜ ⎜ ⎛evidence1 evidence2 evidence3 ⋮ ⎠

    ⎟ ⎟ ⎞ ⎝ ⎜ ⎜ ⎛W1, 1 W2, 1 W3, 1 ⋮ W1, 2 W2, 2 W3, 2 ⋮ W1, 3 W2, 3 W3, 3 ⋮ ⋯ ⋯ ⋯ ⋱⎠ ⎟ ⎟ ⎞ ⎝ ⎜ ⎜ ⎛x1 x2 x3 ⋮ ⎠ ⎟ ⎟ ⎞ ⎝ ⎜ ⎜ ⎛b1 b2 b3 ⋮ ⎠ ⎟ ⎟ ⎞ 72
  73. evidence = , W = x = , b =

    ⎝ ⎜ ⎜ ⎛evidence1 evidence2 evidence3 ⋮ ⎠ ⎟ ⎟ ⎞ ⎝ ⎜ ⎜ ⎛W1, 1 W2, 1 W3, 1 ⋮ W1, 2 W2, 2 W3, 2 ⋮ W1, 3 W2, 3 W3, 3 ⋮ ⋯ ⋯ ⋯ ⋱⎠ ⎟ ⎟ ⎞ ⎝ ⎜ ⎜ ⎛x1 x2 x3 ⋮ ⎠ ⎟ ⎟ ⎞ ⎝ ⎜ ⎜ ⎛b1 b2 b3 ⋮ ⎠ ⎟ ⎟ ⎞ 73
  74. evidence = Wx + b 74

  75. プログラマ的には、 結局配列。 75

  76. W = , x = , b = # p

    y t h o n W = [ [ 0 . 1 , 0 . 3 , 0 . 5 ] [ 0 . 2 , 0 . 4 , 0 . 6 ] ] x = [ 0 . 1 , 0 . 2 , 0 . 3 ] b = [ 0 . 7 , 0 . 6 , 0 . 3 ] ( 0.1 0.2 0.3 0.4 0.5 0.6 ) ⎝ ⎛0.1 0.2 0.3⎠ ⎞ ⎝ ⎛0.7 0.6 0.3⎠ ⎞ 76
  77. evidence = Wx + b e v i d e

    n c e = t f . m a t m u l ( x , W ) + b matmul: Matirix multiply。 行列のかけ算。 77
  78. 参考書籍とか 78

  79. https://www.amazon.co.jp/ ふたたびの高校数学‑ 永野裕之‑ebook/dp/B01L0YJ4XS/ref=sr_1_2? ie=UTF8&qid=1513243028&sr=8‑2&keywords= 数学 79

  80. https://www.amazon.co.jp/ 直観でわかる数学‑ 畑村‑ 洋太郎/dp/4000056794/ref=sr_1_1? ie=UTF8&qid=1513255219&sr=8‑1&keywords= 直感でわかる数学 80

  81. 一つ一つ仕様書、 ドキュメント(≒ 教科書、 参考書) を読みながら理解すれば! 81

  82. 数学も!! 82

  83. わかる!!! 83

  84. むかしはできたはず!!!! 84

  85. いまからでもできる!!!!! 85

  86. 数式から逃げない!!!!!! 86

  87. いっしょにがんばろう!!!!!!! 87

  88. Thanks! Github: @torounit Twitter: @Toro_Unit Facebook: fb.me/torounit Blog: https://torounit.com 88