x.pg15
テーマ: 人工知能とプログラム
概要:
・コンピュータと人工知能に関するよもやま話
・機械学習を応用したサービスの紹介と体験
・迷路探索のプログラム作成
・プログラミング入門の第1回~第15回の課題と、成績評価について
・授業評価アンケート
・コンピュータと人工知能に関するよもやま話
人はいつ頃から人の様に動き考える機械を造ろうと考えたのだろうか?
ギリシャ神話の タロース
映画「アルゴ探検隊の大冒険 Jason and the Argonauts 1963」 ではこのような扱いも。
ユダヤ教の ゴーレム
小説 フランケンシュタイン(メアリー・シェリー 1818年) ロボット史(Wikipedia)
ものを考えて実行するオートマタ
人間と対等にチェスを指す機械仕掛けはいつごろ登場したのか?
旧科目の情報フロンティア2016第5回ゲームプログラミング最前線
ビデオゲームとコンピュータの歴史的かかわりについて
人工知能の研究とゲームの果たした役割について
世界チャンピオンまたは名人級のプレイヤーに コンピュータプログラム が勝利した年はいつ頃?
チェッカー 1994
オセロ 1997
チェス 1997
囲碁 2016
将棋 2015 トッププロレベルに到達という宣言が出された。2016年、タイトルホルダーに勝利
ボードゲーム用AIの実力アップのための方針:
ルールベースの時代 → 機械学習の時代
従来の方針:
ゲームの状況を有利にする要因をプログラミングしてAIに組み込む
・どうなれば有利になるかはプログラマーが考えてAIに教える
・有利な選択肢をコンピューターの処理能力を活用して、人間には不可能なレベルまで探索する
最近の方針:
ゲームの状況を有利にする要因を、過去のプレイ記録からAIが学習して見つける
・ゲームの対戦データ(試合の過程)を大量に集め、AIに分析させる
・人間のプレイヤーの対戦データから、ゲームに有利な要因を学習させることができる
・学習結果を利用して、コンピュータが自分自身で対戦シミュレーションを繰り返し、さらに学習精度を向上させる。
・機械学習を応用したサービスの紹介と体験
機械学習の応用例デモ8種をサイト訪問者がいじって遊べるGoogleのAI Experiments 紹介記事
AI Experiments 応用デモのサイト。いくつか試しに利用してみる。以下がお勧め
※ Quick.Draw!
お題が出る → 落書き → AIが何を描いたか推定 → お題が描けたか判定
お題は6問。何個正解できるか試す。
※ Giorgio Cam
カメラで 物体 を撮影。 何であるか識別し、似た韻の単語で 詩をつくる
※ Thing Translator
カメラで 物体 を撮影。 何であるか識別する。
※ Birds Sound
鳥の鳴き声をAIに聞かせ、 鳥の種類を識別する
写真に写った顔から、人工知能が年齢推定
試してみた。twitterから1 twitterから2
体験しないと損?ネットの美術館Google Arts & Cultureの機械学習も活用したアートとの新しい出会いと楽しみ方 紹介記事
EXPERIMENTS 、分類の実験サイト
※TAGS 機械学習によるTAG付け
※T-SNE MAP 類似作品を 地図 を模して配置。マウスのドラッグで移動して閲覧
・迷路探索のプログラム作成
第15回の演習課題
↑こちらのサイトにアクセスして、 使用するプログラム言語を Prolog(swi) に切り替える。
※ InternetExplorer ではうまく動かない場合があります。 Google Chrome を利用して下さい。
迷路の例)
a地点からg地点が、以下のように繋がっている。
以下のPrologプログラムは、
pathFindAll(スタート地点, 目的地)
と上の迷路の記号を指定すると、目的地にたどり着くまでの記号を順に表示する。
例えば、
pathFindAll(a,g) や pathFindAll(a,e) 、pathFindAll(f,e)
を実行してみる。
プログラムの解説:
link(地点1, 地点2). は、地点1と2が繋がっていることを示す。
path(地点1, 地点2). は、地点1と地点2の間で行き来が出来ることを示す。
pathFind(現在地, 目的地, 通行済み経路, これから通る経路) は、
現在地が既に通行済みでないなら、
現在地を通行済み経路に加え、
一つ先に進み、
残りの経路を探索する
というように定義されている。
:- set_prolog_flag(verbose,silent).
:- prompt(_, '').
:- use_module(library(readutil)).
% 通路の定義
link(a,b).
link(a,c).
link(b,d).
link(c,e).
link(d,f).
link(f,g).
link(f,h).
link(h,g).
path(X,Y) :- link(X,Y)|link(Y,X).
% 通路を一方通行にしない。この行を削除すると、一方通行になる。
% 目的地に着いている場合
pathFind(Pos,Pos,_,[Pos]) :- !. % 目的地から先の探索を中断
% 目的地に着いていない場合
pathFind(Pos,Goal,Check,[Pos|Tail]) :-
not(member(Pos,Check)), % 通過地点記録 Check に Pos が含まれないことを確認
path(Pos,Z), % Posと接続したZを見つける
pathFind(Z,Goal,[Pos|Check],Tail). % ZからGoalを目指す。Pos を Check に加える
% 全ての経路を探索
pathFindAll(Start,Goal) :- pathFind(Start,Goal,[],Path),print(Path),nl,fail.
pathFindAll(_,_).
% 探索の指示
:- pathFindAll(a,g).
:- halt.
練習:
通路の定義を書き換える。 link を増やす。 地点の記号はアルファベット a から z の他、英単語やローマ字表記を使用してもよい。ただし、先頭の文字は、小文字のアルファベットを使用すること。
修正した迷路を、プログラムで解く。
コード作成上の注意点:
Prolog はコードの文末に ドット(ピリオド) . をつけます。
link(a , b). 括弧の間の記号は、カンマ で区切ります。
提出:
実行結果のスクリーンショットをWebClassの第15回課題にアップロード
コード全体を撮影するように、 FullScreen にしてからスクリーンショットを撮影してください。
撮影は、windowsの snipping tool を利用すると良いでしょう。
例)
応用例)
田んぼの 田の字 の様な通路では、何通りの経路があるか調べる。 → 結果
経路探索 と 計算量 と アルゴリズム についての動画 → フカシギの数え方
・プログラミング入門の第1回~第15回の課題と、成績評価について
採点開始は試験期間終了後の予定。
課題の再提出などがあれば、お早めに。
課題の採点は、ある程度プログラムで情報を整理して評価する。
※ 特に 他人の課題ファイル を コピー して提出していると 自動的に検出され 評価は 0点。 追加のペナルティーの可能性があります。
課題をコピーして提出する行為は、 試験のカンニング と同じ 不正行為 です。
ペナルティーの内容は会議で決まります。 最悪の場合、 後期履修 の 全科目 がペナルティーとして 不可 になります。
・授業評価アンケート
授業中に記載。SAが回収して教学課に提出。
お願い:
今年から始まった講義で、試行錯誤の部分が多々あります。
評価値よりも、自由記述の記入に時間をかけるようにお願いします。
来年の授業計画の参考にします。
自由記述欄の 2. の項目に
選択予定コース( 情報システム サウンド制作 映像メディア メディアプランニング )
プログラミング入門の第1回~第15回で面白かった回(複数回答OK、 第何回 または 演習テーマ または プログラム言語)
を記入願います。
アンケートを提出し終えたら授業終了。
プログラミング入門 全15回、参加お疲れさまでした。
2年生以降もたくさんプログラム系の科目が続きます。2年生では、他の先生でC言語を全コースとも必修で学びます。頑張ってください。
3年生、4年生のプログラム系やデータベースなど選択科目で、皆さんとは再び授業をする機会があります。お楽しみに。