プログラミング方法論第13回

2,139 views

Published on

SFC プログラミング方法論第13回 2013年7月8日の講義資料

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,139
On SlideShare
0
From Embeds
0
Number of Embeds
817
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

プログラミング方法論第13回

  1. 1. プログラミング方法論 第13回 人力プログラミング 橋本 翔(教育実習)
  2. 2. 橋本翔(28) • 教育実習生 • SFC博士課程 (増井研究室) • 実世界インタフェース • 分散並列/Webプログラミング • 趣味:プログラミング、料理 @shokai
  3. 3. 教育実習 • 博士号を取るのに必要 • 何言ってるかわからない時は止めてく ださい • チャットを使おうと思う • http://chat.shokai.org/
  4. 4. 人力プログラミング • 人間をプログラムに組み込む • 人間を関数のように扱う • ソフトウェアが苦手な事は人間が分担する
  5. 5. 人間の方が得意な事 • パターン認識、間違い探し • 個人の趣味趣向の判定 • インターネットにない情報 • 実世界情報、おいしい店、綺麗な景色 • 使いにくいシステムや、人に頼んだほうが速い仕事 • 親に頼まれてビデオ録画の設定をする
  6. 6. CAPTCHA
  7. 7. reCAPTCHA • OCRの補正に 流用
  8. 8. インターネットパトロール
  9. 9. エンゲルバートのデモ • マウスとウィンドウシステムの発明デモ • 中に人が10人以上入っていたとのこと
  10. 10. 重要な物を判定 • Googleはよくクリックされるページが上 に行く • みんなが良いと言ったページは面白い? • よく開くファイルは重要なファイル? • みんなが持っているファイルは重要?
  11. 11. StumbleUpon • ページに対して「良い」「悪い」を入 力するブラウザ拡張を導入 • ある程度学習すると、面白いページば かり表示させられる
  12. 12. last.fm • 音楽を聞くだけで趣味が解析される • スキップボタンで学習するらしい
  13. 13. 集合知 • collective intelligence • wikipediaなど
  14. 14. 人力検索
  15. 15. どう書く?org • http://ja.doukaku.org • お題を色々なプログラム言語で解く • 各言語で同じ問題を解くアルゴリズムが集まる • コードを書く→他の言語への翻訳・・もやろう としていたようだ
  16. 16. Amazon Mechanical turk • 仕事依頼のクラウドサービス • どの写真が一番写りが良いか?など
  17. 17. CrowdForge • 文章をAmazon Mechanical Turkで 添削 • 適切な部分で分 割し、結合まで やってくれる • map/reduce
  18. 18. 昔デンマークで見たゲーム • 観客をカメラで画像認識してpongを操 作する • と、みせかけて途中から逆にpongで観 客が操作される
  19. 19. 人間をアルゴリズムの 一部に取り入れる • 機械学習のフィードバック • 使ってもらうのに工夫が必要 • 楽しく使ってもらう • あるいは何もしていないのに使えてい る状態にする
  20. 20. Tumblr dashboard • 人間をフィルタに して多段連結
  21. 21. 顔認識 • 顔認識は学習が面倒 • データが少ないと間違う
  22. 22. Facebookの顔認識 • 顔を学習させる • 相手に通知され る • つらくない学習
  23. 23. レシピサイト • レシピを共有 • レビュー、作ったよレポート等で洗練 されていく • 遺伝的プログラミングに似ている
  24. 24. lang-8 • 外国語を勉強したい人同士が日記などを添削し あうサイト • 人間は、間違っていると直したくなるもの • 添削ランキングがすぐに反映されるようにした ら添削率が上がった • http://blog.livedoor.jp/sasata299/archives/ 51898602.html • フィードバック速度重要
  25. 25. 写真の位置登録 • ズレているとつい直したくなる
  26. 26. Gunosy • 普通にTwitter やFacebookを 使っているだ けで学習して くれる
  27. 27. アルゴリズムと組み合わせる • レコメンド • クラスタリング • 決定木 • SVM • ニューラルネット • ベイズ
  28. 28. エンドユーザープログラミング • ユーザーにプログラムさせた方が良い場合が ある • 目覚まし • ビデオデッキ • UserScript • UserStyleSheet
  29. 29. Userscriptやブラウザ拡張 • ユーザーがWebページを制御 • UIを変えたり • 無限スクロール • 他のページの情報を読み込んだり • SBMの評判を表示
  30. 30. シリアスゲーム・ゲーミ フィケーション • ゲームでゲーム外の問題を解決
  31. 31. タンパク質構造解析ゲーム • foldit
  32. 32. 遺伝子構造解析ゲーム • Phylo
  33. 33. 人間と機械に互換性 があるシステム • プログラムにも人間にも読めるフォー マットで出力する
  34. 34. RSS/Atom • 専用アプリで 読む • Webサービス 間のインフラ になっている
  35. 35. Twitter bot
  36. 36. Twitter bot (JSON出力)
  37. 37. 「ホワイトハウスで爆発」 偽ツイートで株価急落 • 人間に得意なこと=最新のニュース情報など • をプログラムに取り入れた結果の事故
  38. 38. 人間のbotが混ざっても良い • botを書きやすく するツールがあ る • “Tw”など
  39. 39. Amazonマーケットプレイス • 買う側はamazon.co.jpから買える • 中古の物だけ中古業者にメールが飛ぶ • 中古業者とAmazon倉庫が互換性を持つよう にwrapされている
  40. 40. SFでよくある • ゲームをしていたと思ったら、宇宙人 と戦争していた
  41. 41. BabaScript コンピュータが得意な事はコンピュータが、 人間が得意な事は馬場くん  がやってくれる言語 @takumibaba
  42. 42. % baba -e 'アイス買ってきて("#{rand 5}本")' baba -e ’コード’ もしくは baba ファイル名
  43. 43. 結果
  44. 44. res = かず助に行きたい人の出欠取ってください loop do num = res.to_i # 整数に変換 if num > 0 puts では予約してください("#{num}人") exit else res = 残念・・その次の週はどうですか? puts res end end 出欠確認.bb % baba 出欠確認.bb 実行 ただのRuby…ではなく 日本語で書いた部分を馬場君が実行してくれる
  45. 45. class Foo def initialize @name = "bar" end end foo = Foo.new foo.instance_eval do puts @name # => "bar" end instance_eval babaコマンドの中身 = instance_eval File.open(fname) do |f| BabaScript::Baba.instance_eval f.read end コードやブロックをそのインスタンスのコンテキストで実行する fooのコンテキストで実行されるので アクセサが無いプロパティ@nameも読める
  46. 46. module BabaScript class Baba def self.method_missing(name, *args) ## (略) Androidにnameとargsを送信する end end end Rubyの関数名には日本語が使える → method_missingで全部取れる File.open(fname) do |f| BabaScript::Baba.instance_eval f.read end
  47. 47. 人間に命令を送る構文を追 加したプログラム言語 + 人間を関数のように扱える ようになるスマホアプリ → 人間とプログラム言語の 新しい関係
  48. 48. 人力プログラミングの工夫 • 人間とプログラムの接続方式 • UIとデータフォーマットに工夫が必要 • 楽しませる、熱中させる • 競争させる、自慢、達成感 • 正しいアルゴリズム
  49. 49. 新しいWebサービス • 人間は部品になりたいのではないか? • 大抵のWebサービスは「ある目的を達成する ために人間を部品に取り込んだプログラム」 である、とも言える • 既存のプログラミングモデルの一部分を人間 に置き換えるとWebサービスになる • 目的達成の役割を自分が担うとうれしい • アルゴリズムが正しければ動くのでは?
  50. 50. 実習 JavaScriptとRubyによるWeb版Linda入門(3) http://shokai.org/blog/archives/7847

×