コンピュータサイエンス概論 2015

コンピュータサイエンス概論
2015
平成27年4月20日(月)第2日目
担当教員:亀田弘之
前回の復習(思い出してみよう!)
1. 本授業について
概要・方法・注意・準備・成績・計画・目標・行動指針
2. CSの社会的意義(「で、それ何の役に立つの?」)
3. プログラミングの楽しさ
21世紀の魔法使いの道具プログラミング言語を知る
4. その他
Tokyo University of Technology 2015
2
参考
記憶の機能と仕組み
銘記
保持
想起
感覚
貯蔵庫
短期記憶
長期記憶
Tokyo University of Technology 2015
3
確認
授業計画
第1回:プログラミングの楽しさ
(21世紀の魔法使いの道具プログラミング言語を知る)
第2回:コンピュータサイエンスと知能研究・ゲーム研究
(人工知能・機械学習・脳科学・認知科学などの魅力を知る)
第3回:コンピュータと情報ネットワークの仕組み
(コンピュータの基本構成、ネットワークの基本構成などの
基本的仕組み・原理を知る)
第4回:クラウドコンピューティング
(ビッグデータ(オープンデータ)が世界を変える。データベースの基礎など)
第5回:ソフトウェア工学
(ソフトウェアはどのようにして作られるのか,開発の現場を覗いてみる。
開発プロセス,プロジェクトマネジメントなど)
第6回:コンピュータサイエンスにおける計算の理論
(チューリングマシン,コンピュータサイエンス小史など)
第7回:コンピュータサイエンスと法・倫理
(知的財産権,さまざまな事例紹介)
第8回:コンピュータサイエンスの全容と将来を議論する
(e-healthCare, e-learning, e-government等,
Tokyo University of Technology 2015
4
君は何を学ぶのか? なぜ学ぶのか?
どうやって学ぶのか?)
確認
到達目標
コンピュータサイエンスに関して以下のことが到達目標である。
1.コンピュータサイエンスの
社会的役割・意義を理解し説明できる。
2.コンピュータサイエンスを学ぶ上での
重要な能力・資質を理解する。
3.コンピュータサイエンスの概要を説明できる。
4.将来のコース選択(案)を自力で作成し、
人にわかりやすく説明できる。
Tokyo University of Technology 2015
5
確認
この授業の行動指針
1. 明るく楽しく前向きの姿勢で、自ら進んで学ぶ。
(Learn positively, curiously and constantly! )
2. 他利的に行動する。
( Behave altruisticly! )
3. 皆と積極的に討論する。
( Discuss together aggressively! )
4. 後回しにしない。
(Don’t procrastinate!
Do right now what you should ne doing now. )
Tokyo University of Technology 2015
6
Youtubeを参照のこと。
• http://www.youtube.com/watch?v=WNccLBzR_I4
(Research Matters - Carolyn McGregor)
• http://www.youtube.com/watch?v=APdZHNIJDnU
(Rio de Janeiro City Operation Center)
Computer science が社会で役立った実例。
皆さんはcomputer science の知識・技術を何に役立てますか?
Tokyo University of Technology 2015
7
確認
質問 プログラミングはなぜ重要?
• コンピュータはあくまでも機械。(Computer is a machie.)
• 指示がないと動作できない。
• 指示は、言葉(言語)で記述する。
そこで、
• 機械(computer)への動作指示書(プログラム)を
記述(プログラミング)しなければならない。
(注)日本語や英語(自然言語)を使って指示書が書ければ良いのだが、
コンピュータは自然言語を理解しないなどの理由により、コンピュータが
理解できる言語(プログラミング言語)で人間が指示書(プログラム)を書く
ことになっている。 どうにかできないのか?
Tokyo University of Technology 2015
8
確認
いろいろなプログラミング言語
• 機械語(machine language)
• アセンブリ言語(assembly language)
• Fortran言語(科学技術計算向き)
• Cobol言語(事務処理向き)
• Pascal言語(教育向き)
• C言語,C++言語
• Java言語
• Ruby,Python
• Processing など
Erlang
Haskell
HTML
Scala
XML
TVML
F#
Prolog
Tokyo University of Technology 2015
OCaml
ADA
Lisp
JavaScript
Swift
Objective-C
9
今日の質問 プログラミングはなぜ重要?
• (各自に配布されたA5の紙に書いてください。)
Tokyo University of Technology 2015
10
プログラミングのデモンストレーション
• Jave言語(Greenfoot)
• Python言語
Tokyo University of Technology 2015
11
参考サイト
• www.greenfoot.org
• code.org など
Tokyo University of Technology 2015
12
第2回
コンピュータサイエンスと
知能研究・ゲーム研究
ー人工知能・機械学習・脳科学・認知科学などの魅力を知るー
Artificial Intelligence, Machine Learning, Brain Science, Cognitive Science…
人工知能とは?
 What is Artificial Intelligence?
 What should we study?
 How should we study it?
人工知能の定義例
• 計算機が考えることができるようにする…
真の意味で心を持った機械を造る刺激的で新し
い試み。(Haugeland, 1985)
• 人間の思考に関連した活動:意思決定、問題解
決、学習、...[の自動化] (Bellman, 1978)
「エージェントアプローチ人工知能」 Russel&Norvig より抜粋
Tokyo University of Technology 2015
15
人工知能の定義例(No.2)
• 人間が行う場合には知能を必要とする機能、を
達成する機械を造る技術。(Kurzweil, 1990)
• 今のところ人間の方が上手くできる事柄を
計算機にさせる研究(Rich & Knight, 1991)
「エージェントアプローチ人工知能」 Russel&Norvig より抜粋
Tokyo University of Technology 2015
16
人工知能の定義例(No.3)
• 計算機モデルを用いた心の機能の研究
(Charniak & McDermott, 1985)
• 認識、推論、行為を可能にする計算の研究
(Winston, 1992)
「エージェントアプローチ人工知能」 Russel&Norvig より抜粋
Tokyo University of Technology 2015
17
人工知能の定義例(No.4)
• 知能を計算プロセス(計算処理過程)として
説明・模擬することを目的とする研究分野
(Schalkoff, 1990)
• 知的行動の自動化に関する計算機科学の1分野
(Luger & Stubblefield, 1993)
「エージェントアプローチ人工知能」 Russel&Norvig より抜粋
Tokyo University of Technology 2015
18
人工知能(AI)の定義例の分類
人間のように
考えるシステム
人間のように
行動するシステム
合理的に
考えるシステム
合理的に
行動するシステム
「エージェントアプローチ人工知能」 Russel&Norvig より抜粋
Tokyo University of Technology 2015
19
人工知能(AI)の定義例の分類
人間のように考える
システム
合理的に考えるシステム
(認知モデルアプローチ)
(思考法則によるアプローチ)
人間のように
行動するシステム
合理的に
行動するシステム
(Turing Test アプローチ)
(合理エージェントアプローチ)
「エージェントアプローチ人工知能」 Russel&Norvig より抜粋
Tokyo University of Technology 2015
20
(メモ)
• 人間的  合理的
• 人間的  機械的
• 非合理的  合理的
• 柔軟な  型にはまった
• ???  ???
Tokyo University of Technology 2015
21
人間
vs
Tokyo University of Technology 2015
機械
22
人間
vs
• 人間的
• 非合理的
• 柔軟な etc.
機械
• 機械的
• 合理的
• 定型的 etc.
Tokyo University of Technology 2015
23
空を飛びたい!
鳥のように空を飛ぶ
• 鳥のように柔軟に飛びたい
(未だに実現していない。)
トンボのように飛びたい。
揚力 (Lifting force) の発見
• 飛行機の実現(地球の
裏まで飛んで行ける)
今や宇宙に飛び出すこ
ともできる!
Tokyo University of Technology 2015
24
人間のように
知的なシステムを創りたい!
• Is it feasible? (fundamental theory; Logic)
• How?
(Methodology)
Tokyo University of Technology 2015
25
人工知能
• 定義:人間のように知的な処理能力を
持つソフトウェア
• 検証方法:チューリングテスト
• 応用分野:
•
•
•
•
•
ロボット
自然言語処理
認識(文字・音声・画像)
機械学習
データサイエンス などなど
Tokyo University of Technology 2015
26
Tokyo University of Technology 2015
27
質問 このロボット、どこが凄い?
Tokyo University of Technology 2015
28
質問 このロボット研究に関係する技術は?
What technology is applied to this robot?
書き出してみよう!
1. _________
2. _________
3. _________
4. _________
5. _________
6. _________
7. その他(_____)
良く考えて、
答えてみてね!
Tokyo University of Technology 2015
29
人工知能の例2
ー未知語獲得システムUWAS-Iー
Tokyo University of Technology 2015
30
人工知能の例2
ー未知語獲得システムUWAS-Iー
• 未知語獲得システムのデモをお見せします。
• プログラミング言語は、Prolog言語です。
• Prolog言語は、人工知能用の言語の1つです。
(メモ) 人工知能用プログラミング言語
 Lisp言語
 Prolog言語
 Haskell言語
 C言語、C++言語
 Java など
Tokyo University of Technology 2015
31
記号微分のプログラムソース全容
d(X,X,1).
d(T,X,0) :- atom(T) ; number(T).
d(U+V,X,DU+DV) :- d(U,X,DU), d(V,X,DV).
d(U-V,X,DU+ (-DV)) :- d(U,X,DU), d(V,X,DV).
d(-T,X,-R) :- d(T,X,R).
d(K*U,X,K*W) :- number(K), d(U,X,W).
d(U*V,X,B*U+A*V) :- d(U,X,A), d(V,X,B).
d(U/V,X,W) :- d(U*V^ (-1),X,W).
d(U^V,X,V*W*U^ (V+ (-1))) :- number(V), d(U,X,W).
d(U^V,X,Z*log(U)*U^V+V*W*U^ (V+ (-1)))
:- d(U,X,W), d(V,X,Z).
d(log(T),X,R*T^ (-1)) :- d(T,X,R).
d(exp(T),X,R*exp(T)) :- d(T,X,R).
d(sin(T),X,R*cos(T)) :- d(T,X,R).
d(cos(T),X,-R*sin(T)) :- d(T,X,R).
d(tan(T),X,W) :- d(sin(T)/cos(T),X,W).
32
人工知能の例1
ー決定木ー
Tokyo University of Technology 2015
33
表. Training Examples
(Machine Learning, Michellより)
Day
Outlook
天候
Temperature
温度
Humidity
湿度
Wind
風
Play
Tennis
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
D14
Sunny
Sunny
Overcast
Rain
Rain
Rain
Overcast
Sunny
Sunny
Rain
Sunny
Overcast
Overcast
Rain
Hot
Hot
Hot
Mild
Cool
Cool
Cool
Mild
Cool
Mild
Mild
Mild
Hot
Mild
High
High
High
High
Normal
Normal
Normal
High
Normal
Normal
Normal
High
Normal
High
Weak
Strong
Weak
Weak
Weak
Strong
Strong
Weak
Weak
Weak
Strong
Strong
Weak
Strong
No
No
Yes
Yes
Yes
No
Yes
No
Yes
Yes
Yes
Yes
Yes
No
Training Examples
Day
Outlook
天候
Temperature
温度
Humidity
湿度
Wind
風
Play
Tennis
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
D14
Sunny
Sunny
Overcast
Rain
Rain
Rain
Overcast
Sunny
Sunny
Rain
Sunny
Overcast
Overcast
Rain
Hot
Hot
Hot
Mild
Cool
Cool
Cool
Mild
Cool
Mild
Mild
Mild
Hot
Mild
High
High
High
High
Normal
Normal
Normal
High
Normal
Normal
Normal
High
Normal
High
Weak
Strong
Weak
Weak
Weak
Strong
Strong
Weak
Weak
Weak
Strong
Strong
Weak
Strong
No
No
Yes
Yes
Yes
No
Yes
No
Yes
Yes
Yes
Yes
Yes
No
Decision Tree for Play Tennis
Outlook
Sunny
Rain
Overcast
Humidity
High
No
Wind
Yes
Normal
Yes
Strong
No
Weak
Yes
その他にもさまざまな人工知能・機械学習
の分野がある
• 定理の自動証明支援システム(coq)
• 帰納論プログラミング(Progolシステムなど)
• 発想推論システム など
(論理学が活躍!)
• ニューラルネットワーク(deep learningが注目されている)
• 機械翻訳システム(Google翻訳、IBMのWATSONなど)
 いろいろ調べてみよう!
 で、それって何の役に立つの? と問うてみてください。
Tokyo University of Technology 2015
37
第2日目の自宅課題(home work)
1. チューリングテスト(教科書11.1.3)と練習問題(452頁)とを読み、
人工知能とは何か、何を目指すべきかについて自分で考えなさい。
2. インターネットがないと、日常生活のどんなことに障害・問題が発
生するか? 事例を3つ以上、考えなさい。
(注)提出等の必要はなし。やってきてくれればOK。
Tokyo University of Technology 2015
38
付録
授業資料のページ
http://kameken.clique.jp/
Tokyo University of Technology 2015
40
Tokyo University of Technology 2015
41
Tokyo University of Technology 2015
42
Tokyo University of Technology 2015
43
Tokyo University of Technology 2015
44
第1日目の自宅課題(home work)
1. 授業のWebページを開いてみる。
2. 教科書の0.6 社会的影響(p.34-36)を読む。
3. 教科書の社会問題2(「今日の技術社会に、...」)を読み、
自分なりの回答(I think that… or In my opinion, … because …)を
考える。
(注)提出等の必要はなし。やってきてくれればOK。
Tokyo University of Technology 2015
45