Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

僕の機械学習歴。 4

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

以上。 6

Slide 7

Slide 7 text

やばい。 7

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

ですが。 10

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

残念!!! 14

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

Toro_Unit 占部 紘 ( うらべ ひろし) Markup and Frontend Engineer Web Designer 長野県民11 年目。 Github: @torounit Twitter: @Toro_Unit Facebook: fb.me/torounit Blog: https://torounit.com 17

Slide 18

Slide 18 text

WordPress な人です。 WordBench 長野 モデレー ター WordCamp Kyoto 2017 実行委員 WordCamp Tokyo 2017 Speaker Plugin and Theme developer Custom Post Type Permalinks WordBench.org etc... 18

Slide 19

Slide 19 text

19

Slide 20

Slide 20 text

長野県松本市からきました。 食い物が基本的にうまい。 ワイン! 山菜! 蕎麦! 馬刺! 松茸! すいか! 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

Slide 21

Slide 21 text

機械学習といえば。 21

Slide 22

Slide 22 text

22

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

MNIST for ML Biginners 機械学習の初学者向けのチュー トリアル。 MNIST database という手書きの0~9 の数字のデー タセット。 この界隈での H e l l o W o r l d 的な モノ。 24

Slide 25

Slide 25 text

25

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

27

Slide 28

Slide 28 text

28

Slide 29

Slide 29 text

evidence = W x + b y = softmax(evidence) i j ∑ i, j j i 29

Slide 30

Slide 30 text

せめて人間の言葉で・・・ 30

Slide 31

Slide 31 text

大丈夫 31

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

じゃぁ数学もいける! 35

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

∑ 38

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

40

Slide 41

Slide 41 text

総和は、 加法が定義された集合 M の元の列 x1, x2, ..., xn に対する n 項演算(n は順序数) である。 そ れは、 再帰的に次のように定義される。 s = x , s = s + x 1 1 i i−1 1 41

Slide 42

Slide 42 text

Oh.. 42

Slide 43

Slide 43 text

集合? いくつかの「 もの」 からなる「 集まり」。 英語で言うと、Set. 「 もの」 のことを 元 (element, 要素) と呼ぶ。 ちゃんと勉強したい人は数学科に行こう! 43

Slide 44

Slide 44 text

たとえば 自然数 {1, 2, 3, 4, 5, ...} 偶数 {2, 4, 6, 8, 10, 12, ...} サー バー ワー クスさんのオフィス所在地 {Tokyo, Osaka, Fukuoka, Nagoya, Sendai} 44

Slide 45

Slide 45 text

プログラミングでいうと 45

Slide 46

Slide 46 text

# 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

Slide 47

Slide 47 text

Set 型 もしくは、 配列・ リスト型で表現されることが多い。 実は結構おなじみですよね。 47

Slide 48

Slide 48 text

加法が定義された集合 加法 = 足し算が出来る集合。 できるもの。 {1, 2, 3, 4, 5, ...} できないもの。( 合体とかしないよね。) {Tokyo, Osaka, Fukuoka, Nagoya, Sendai} 48

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

僕らはプログラマなので。 ゼロから数える。 x = {x , x , x , ...} x = x = x 0 1 2 ∑ i ∑ i i=0 ∑ n−1 i 51

Slide 52

Slide 52 text

プログラム的には。 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

Slide 53

Slide 53 text

エレガントに。 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

Slide 54

Slide 54 text

Tensorflow のtutorial の数式。 evidence = W x + b i j ∑ i, j j i 54

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

i とか jとかを使うのは for 文と一緒。 57

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

でも大丈夫。 66

Slide 67

Slide 67 text

要は連立方程式もコレ。 = { 2x + 5y = 19 x + 3y = 11 ( 2 1 5 3 )( x y ) ( 19 11 ) 67

Slide 68

Slide 68 text

行列で考えると良いこと。 68

Slide 69

Slide 69 text

を行列を使って書き直すと。 ふたつの数?( 構造体) の関係性に書き直せる。 ⎩ ⎪ ⎨ ⎪ ⎧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

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

= + ⎝ ⎜ ⎜ ⎛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

Slide 73

Slide 73 text

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

Slide 74

Slide 74 text

evidence = Wx + b 74

Slide 75

Slide 75 text

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

Slide 76

Slide 76 text

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

Slide 77

Slide 77 text

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

Slide 78

Slide 78 text

参考書籍とか 78

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

数学も!! 82

Slide 83

Slide 83 text

わかる!!! 83

Slide 84

Slide 84 text

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

Slide 85

Slide 85 text

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

Slide 86

Slide 86 text

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

Slide 87

Slide 87 text

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

Slide 88

Slide 88 text

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