Dogfooding
-
Upload
stibear-stibear1996 -
Category
Technology
-
view
310 -
download
0
description
Transcript of Dogfooding
Dogfooding💕 女子💕
自己紹介
• @stibear1996
• 普通の高校生Lisper
• NPCA平部員
• ヒゲの生えた💕 女子💕
Dogfoodingとは
• “Eating your own dog food”
• 開発途上のソフトウェアを自分で使うこと
序章 とあるミーハープログラマの事例
※私ではない
( ˘⊖˘) .oO(機械学習流行ってる…)
いまどき流行りの機械学習
( ˘⊖˘) .oO(私もやりたい…)
( ˘⊖˘) .oO(どうやってやるんだ?)
Python/Javaで機械学習
( ˘⊖˘) .oO(ライブラリあるじゃん…)
( ˘⊖˘) .oO(既存のライブラリ使お…)
………
甘い!甘すぎる!!
💕 女子💕は
💕 女子💕は自分で実装!!
( ˘⊖˘) .oO(実装…?Pythonで作ろ…)
甘い!甘すぎる!!
💕 女子💕は
💕 女子💕はLISPで実装!!
( ˘⊖˘) .oO(Lisp…?Clojure使お…)
甘い!甘すぎる!!
💕 女子💕は
💕 女子💕は言語から実装!!
………
というわけで,Picrinでニューラルネットを
実装しました
Picrinとは
• @wasabizによるScheme処理系
• R7RS準拠を目指す新進気鋭の処理系
• 絶賛Pull-req募集中
• 私もCo-Authorの1人
• フルセットの健全マクロや,モナディックリストオペレータ,第一級ライブラリなど,挑戦的な試みも多い
• 今後とも目が離せないOSSプロジェクト
Picrinの健全マクロ
syntactic-closure
(define-syntax aif
(sc-macro-transformer
(lambda (form env)
(let ((test
(make-syntactic-closure
env ‘() (cadr form)))
(then
(make-syntactic-closure
env ‘(it) (caddr form)))
(else
(make-syntactic-closure
env ‘() (cadddr form))))
`(let ((it ,test))
(if it ,then ,else))))))
implicit renaming
(define-syntax aif
(ir-macro-transformer
(lambda (form inject compare)
(let ((it (inject ‘it))
(test (cadr form))
(then (caddr form))
(else (cadddr form)))
`(let ((,it ,test))
(if ,it ,then ,else))))))
PicrinのMonadic List Operator
Haskell
filter pred xs =
do x <- xs
if pred x then
return x
else
mzero
Picrin (Scheme)
(define (filter pred xs)
(for (let ((x (in xs)))
(if (pred x)
(yield x)
(null)))))
このPicrinを使ってまずは単純パーセプトロンを
実装してみました
第Ⅰ章 ベクタ操作が欲しくて…夏
第Ⅰ章 ベクタ操作が欲しくて…夏実装
( ˘⊖˘) .oO(ベクタ関数ないじゃん…)
( ˘⊖˘) .oO(実装しちゃお…)
まず,Picrinでベクタを扱うために
SRFI-43を実装します
SRFI
• 「さーふぃー」と読む
• Scheme Requests for Implementation
• 「Scheme の事実上の標準拡張仕様のこと」
(Wikipedia)
• 小さなSchemeの仕様では補いきれない部分をSRFIで標準化
SRFI-43
• ベクタに関する諸々の手続き(関数)が定義されている
• リストに関する諸々の手続きが定義されているSRFI-1との対応を若干意識している
• そのためvector-foldなんてものもある
• なお,SRFI-43の実装のためSRFI-8を実装し使用
SRFI-8の実装
SRFI-43の実装
SRFI-8 & 43の実装
これで,ベクタ同士のドット積等々が実装できるようになりました
やったね たえちゃん!
( ˘⊖˘) .oO(いよいよか…)
………
第Ⅱ章 単純パーセプトロンちゃん
( ˘⊖˘) .oO(何実装しようかな…)
単純パーセプトロンちゃん(……きこえますか…今…あなたの心に…直接…呼びかけています…実装するのなら…私が比較的…簡単です…さあ…私を
実装するのです…)
( ˘⊖˘) .oO(単純パーセプトロンか…)
さあ,単純パーセプトロンの定義を
見てみましょう
単純パーセプトロン
パターン認識と機械学習 上 (p.p.190)
ただし,今回は簡単のために,
Φは無視し,次の定義を用います
※yにΦ(x)をあたえればいいので
単純パーセプトロン
実装
dot*
predict
train
( ˘⊖˘) .oO(できたぜ…)
………
第Ⅲ章 ANDとOR
( ˘⊖˘) .oO(早速動かしてみたい…)
( ˘⊖˘) .oO(論理演算とかやるか…)
AND/OR
テストデータ
percep関数
動かしてみる
動かしてみる
動かしてみる
( ˘⊖˘) .oO(ヨッシャ!!…)
………
第Ⅳ章 非線形分離関数なアイツ
Minsky&Papert「単純パーセプトロンは線形非分離
な問題を解けないよ」
AND/OR
XOR
XOR「フハハ!! 俺は線形分離できぬぞ!!」
単純パーセプトロンちゃん「ふぇぇ…」
( ˘⊖˘) .oO(なるほど…)
(多層パーセプトロンの実装は,オブジェクト指向プログラミングが
便利だろうということで,)
(現在Picrinで動くCLOSライクなオブジェクトシステムを開発中)
To be continued…
まとめ
• みなさんPicrinを使いましょう!
参考文献
• パターン認識と機械学習(上)
• 単純パーセプトロンをPythonで組んでみる– http://tjo.hatenablog.com/entry/2013/05/01/190247
ご清聴ありがとうございました