ソフトコンピューティング特論
Advanced Study of Soft Computing
大学院総合情報学研究科 システム・サイエンス系列
担当:マッキン
お知らせ Notice
最終レポート提出または、期末試験受験、いずれかを行わない場合は単位を出しません。
講義メモ(過去の資料および予定含む)
ガイダンス
シラバス確認
毎回ノートPC(またはタブレット)を持ってくること
連絡事項は、学内メールを用いるため、メールチェックを定期的に行う
前期の最後の理解度確認テストを行う(予定)
夏休みのレポートを出す(予定)
後期の最後にレポートor試験を課す
人工知能とは
資料:
1)人工知能 (新世代工学シリーズ) 、溝口理一郎、石田亨(共編)、オーム社、2000、第1章
機械学習とは
機械学習とは、過去の経験(データ)を元に、行動(計算結果)を変化させる手法である
つまり、機械学習とは、パラメータ自動チューニングである
トースターの制御プログラム
センサー入力: 庫内温度(℃)、トースト重さ(g)
制御出力: ヒーター出力(W)、ヒーター時間(sec)
自動トーストをどう実現するか
資料:
1)人工知能 (新世代工学シリーズ) 、溝口理一郎、石田亨(共編)、オーム社、2000、pp.45-50
2)人工知能システムの構成-基礎からエージェントまで-、小倉久和、小高知宏、近代科学社、2001、pp.101-116
状態遷移図・状態遷移表
Elevator Problem State Transition Table
,
Elevator Program Example in Java
砲台ゲーム(機械学習実習)
砲台ゲーム(またはトースター)を実装してみる。
砲台ゲーム
ユーザによる手動砲撃 (
Canon.java
,
canon.c
Canon.bas
Javascript
)
Cコンパイル例: gcc -lm canon.c
砲撃角度を少しづつ調整する。
canon2.html
着弾誤差距離に応じて砲撃角度を調整する。
canon2.2.html
敵戦車が動く場合(
tank.html
)
Gnu Common Lisp
Sample Lisp
Numeronプログラミング
Numeronの一人プレイ
Javascript
ランダムサーチ
Numeron解答のランダムサーチ
Javascript
宿題: Javascript用の開発環境(IDE等)を用意してくること
ランダムサーチ(演習)
ランダム砲撃 (
Canon1.java
)
山登り法
少しずつ近づける(山登り)
パラメータを一つだけランダムで探索
山登り法(演習)
砲台のパラメータ一つだけランダムの山登り (
Canon2.java
)
砲台が毎回移動する場合はどうする?
宿題: 砲台(戦車)が毎回移動する場合のアルゴリズムを考える
レポート課題:
授業で取り扱った「砲台ゲーム」を山登り法で解くプログラムを作成せよ。 なお、レポートは、プログラムと共に、プログラムのアルゴリズムの説明を提出しなさい。 最低分量は指定しません。印刷のみ。手書き不可。
強化学習
砲台が毎回移動する (
Tank.java
)
プログラムの実行結果はCSV形式で出力し、グラフ化する
例) java Canon2 > canon2.csv
Excelでcanon2.csvのグラフを作成
強化学習と機械学習の違い
資料: 1) 強化学習, Richard S.Sutton, Andrew G.Barto (著), 三上 貞芳, 皆川 雅章(訳), 森北出版, 2000, pp.2-10
移動する戦車の学習:0)ランダム探索 1)テーブル利用, 2)関数近似
宿題: いずれかの方法のアルゴリズム(またはプログラム)を考える
強化学習(演習)
移動戦車をランダム探索 (
Tank1.java
)
テーブルを用いた探索 (
Tank2.java
)
関数近似を用いた探索 (
Tank3.java
) (
Tank4.java
)
メモ:コマンドプロンプトで標準出力と標準エラー出力を分けてファイルに出力する
java Tank4 >tank4out.csv 2>tank4err.csv
進化計算概要
進化計算(Evolutionary Computation)、進化的アルゴリズム(Evolutionary Algorithm)
遺伝的アルゴリズム(Genetic Algorithm)、進化戦略(Evolution Strategy)
進化計算の共通フロー
遺伝的アルゴリズムの基本フロー: (1)集団初期化->(2)各個体の評価値計算->(3)終了条件->(4)選択->(5)遺伝的操作:突然変異,交叉->2に戻る
SGA(Simple GA), その他GA拡張
GAとESの違い
コーディング(choromosome coding,染色体コーディング,遺伝子表現,固体表現), 評価関数(fitness function,適応度関数)
資料:
1)人工知能 (新世代工学シリーズ) 、溝口理一郎、石田亨(共編)、オーム社、2000
2)人工知能システムの構成-基礎からエージェントまで-、小倉久和、小高知宏、近代科学社、2001
宿題: SGA(Simple GA)のプログラミングを考えてみる
進化計算(演習)
進化戦略(ES)のVBAプログラム
ES.xlsm
(動きが視覚的に分かり易い)
戦車問題を例に、SGAの設計を議論する
進化戦略(ES)での戦車問題実装
とりあえずコンパイルが通る
ES.java
ver.1 (2010/7/20 10:18)
flowchart
ナップザック問題
パターン認識
分類・認識、クラス・カテゴリ、特徴ベクトル、n次元の特徴パターン空間、分類器、識別関数、ユークリッド距離、最小距離による分類
資料:
1)人工知能 (新世代工学シリーズ) 、溝口理一郎、石田亨(共編)、オーム社、2000、pp.98-106
宿題: ユークリッド距離を用いて実データ([1]深度データ、[2]ASCII文字出現頻度表)の類似度(距離)を計算するプログラムを作成する。
深度データは、10x10の配列まで次元を減らす。
ASCIIデータは、8bit文字(00-FF)の出現頻度表を用いる。
ユークリッド距離プログラムのディスカッション
クラスタリング
最短距離法(単連結法)
k-meansクラスタリング
資料: 1)パターン認識と学習の統計学, 麻生英樹, 他, 岩波書店
2)人工知能 (新世代工学シリーズ) 、溝口理一郎、石田亨(共編)、オーム社、2000
参考:
HTML
単一ニューロン
マッカロックとピッツのニューロンモデル
TLU (Threshold Logic Unit), 形式ニューロン, (Formal Neuron), デジタルニューロン
AND,OR,NOT,NAND回路の実現
ヘブ学習(教師無し)
誤り訂正学習(教師あり)
資料:
1)人工知能 (新世代工学シリーズ) 、溝口理一郎、石田亨(共編)、オーム社、2000、pp.76-85
2)人工知能システムの構成-基礎からエージェントまで-、小倉久和、小高知宏、近代科学社、2001、pp.146-161
BASIC!で作成した
TLU
プログラム
宿題: 理解のため、単一ニューロンを用いてのAND,OR,NANDのプログラムを作成する。
階層型ニューラルネットワーク
階層型フィードフォワードネットワークでのXOR回路
Excelで作成した
XOR回路
BASIC!で作成した
MLP
(Multi-Layer Perceptron)プログラム
宿題: XNOR(EQ)回路を作成してくる
単一ニューロンでの学習
誤り訂正学習のロジック
Excel VBAで誤り訂正学習のプログラム作成
Javaサンプル
TLU.java
ニューラルネットワークの構造: フィードフォワードネットワーク、パーセプトロン、リカレントネットワーク、相互接続ネットワーク、ホップフィールドネットワーク、自己組織化マップ
ニューラルネットワークの学習: 勾配法、誤差逆伝播法(Back Propagation)
宿題案: 単一ニューロンにおいての誤り訂正学習のプログラムを完成し、AND, OR, NAND で試してみる。
Deep Learning
ConvNetJS
学習手法における評価方法
誤差、誤差の絶対値(absolute error)、平均二乗誤差(RMSE Root mean squared error) 二乗平均平方根
初期値依存する手法の場合、初期値を変化させた平均結果を取る。
学習データ(training set)・未学習データ(test set)の作り方。クロスバリデーション。
学習データの誤差変化と、未学習データの誤差変化を同時にプロットすることもできる。
ソフトコンピューティングとは
知能プログラミングは結局、数学的なプログラミングである。
授業ノートを各自用意し、授業の配布資料やノートを一冊にまとめる。
資料:
1)人工知能 (新世代工学シリーズ) 、溝口理一郎、石田亨(共編)、オーム社、2000、p.68
2)ファジィとソフトコンピューティングハンドブック、日本ファジィ学会(編集)、2000、pp.29-31,1130-1132
宿題: 配布資料2)pp.1130-1132を数行で要約し、授業ノートに記入する。
ファジィ
ファジィ論理・ファジィ制御
資料:
1)人工知能 (新世代工学シリーズ) 、溝口理一郎、石田亨(共編)、オーム社、2000
2)人工知能システムの構成-基礎からエージェントまで-、小倉久和、小高知宏、近代科学社、2001
ファジィ制御プログラミング
ファジィ制御サンプルプログラム
FuzzyCar.java
[Java](SJIS)
ファジィ制御サンプルプログラム
FuzzyCar.xlsm
[VBA]
参考
SoftComputing lab.
宿題: 上記のファジィ制御を改良する。
マルチエージェント(1)
マルチエージェント
資料:
1)人工知能 (新世代工学シリーズ) 、溝口理一郎、石田亨(共編)、オーム社、2000
2)人工知能システムの構成-基礎からエージェントまで-、小倉久和、小高知宏、近代科学社、2001
3)マルチエージェントシステムの基礎と応用-複雑系工学の計算パラダイム-、大内 東、川村 秀憲、山本 雅人(共著)、コロナ社、2002
マルチエージェント(2)
多点探索・群知能
マルチエージェントの標準問題:追跡問題(Hunter-Prey)
マルチエージェントを組んでみる。
Hunter-Prey problem
Field.java
Agent.java
PreyAgent.java
HunterAgent.java
FieldView.java
basic.jar
コンパイル方法: javac -classpath basic.jar;. Field.java
実行方法: java -classpath basic.jar;. Field -v
-vオプションを外せば、グラフィックス無しで実行できます。
例のHunterAgentは協調を行わないため、まずPreyを捕まえられない。
課題: HunterAgentを自作せよ。
マルチエージェント(3)
JADE
HunterAgentディスカッション
マルチエージェント(4)
HunterAgentの協調行動
トップダウン(事前確定済み)パラメータ
HunterAgent.java
Field.java
ランダム探索によるパラメータ調整
HunterAgent.java
Field.java
山登り法ならどうやる?
マルチエージェント(5)
エージェント間通信
契約ネットプロトコル(Contract Net Protocol)
契約ネットプロトコルなど、ボトムアップ的エージェント間通信のアイディアを自分の研究に応用できるか検討する。
セルオートマトン(1)
セルオートマトン
汎用チューリング機械 (general purpose Turing machine)
ノイマン近傍、ムーア近傍
Excel VBAで1次元セルオートマトン作成
Cell.xlsm
簡単な例題プログラム(1次元セルオートマトン)による説明
資料:複雑系の科学,オーム社, 2章
セルオートマトン(2)
ライフゲーム(Conway's Game of Life)
宿題: ライフゲームをインストールし、試してみる。
セルオートマトン続き
ノイマン近傍、ムーア近傍
Excel VBAでライフゲームを作成
lifegame.xlsm
Javaサンプル
スタックカウンタ
CellStack.java
(SJIS)
高速道路渋滞モデル
TrafficCell.java
(SJIS)
エージェント版渋滞シミュレータ
Traffic.java
乱択アルゴリズム(確率的アルゴリズム)
乱数を用いた探索の復習 (randomized algorithm, probabilistic algorithm)
モンテカルロ法、ラスベガス法について
乱数探索の基本フロー:乱数による値生成(random value creation)->評価値計算(fitness evaluation)->終了条件(termination condition)->乱数生成にもどる
ソフトコンピューティングでの学習の評価
教師信号、学習データ(training set)、試験データ・評価データ(test set, evaluation set)、予測
VBAプログラミング
ExcelからVBAプログラミング
カスタム電卓を作成
パターン認識
資料: パターン認識と学習の統計学, 麻生英樹, 他, 岩波書店
ユークリッド距離:
2次元の場合は d = √{(x1-x2)^2+(y1-y2)^2}
3次元の場合は d = √{(x1-x2)^2+(y1-y2)^2+(z1-z2)^2}
パターン認識プログラミング
資料: パターン認識と学習の統計学, 麻生英樹, 他, 岩波書店
k-nearest neighbor法をコーディングしてみる
UCI Machine Learning Repository
ナップザック問題
TestNapsack.java
Napsack.java
ナップザックチャレンジ
ナップザックチャレンジ1 (難易度低)
Napsack.class
ナップザックチャレンジ2 (難易度中)
Napsack.class
注: ファイル名を Napsack.class に変更してください。
ナップザックチャレンジ3 (難易度高)
Napsack.class
注1: ファイル名を Napsack.class に変更してください。
注2:メモリが多く必要なため、実行時にメモリ容量を java -Xmx1G で事前に確保する必要がある。
自己組織化・創発・ハイブリッド学習
群知能
資料: 1)マルチエージェントシステムの基礎と応用-複雑系工学の計算パラダイム-
大内 東, 川村 秀憲, 山本 雅人, コロナ社, 2002
2)複雑系の科学―セル・オートマタ体験CD‐ROM付
市川 惇信, オーム社, 2002
ハイブリッド学習の例
前期まとめ・理解度確認テスト
夏休みレポート:
Numeronの山登り解法プログラムを完成させる。
プログラムの解説をレポートとして提出
解説は、小学生でも分かるように、詳しく書く。
その解説だけを読んで、プログラムが書けるようにする。
図を多用する。
プログラムソースコードもつける
レポート表紙をつける。手書き不可。ホチキスで止める。
前期試験
前期試験
試験時間1時間。3〜4問の自由記述問題。参照不可。
前期の理解度確認を目的とする。
ヒント:なるべく多くのキーワードを入れ、図表を使う。
例題問題
(SJIS)
問題用紙
(SJIS)
夏休みレポート
どちらかのテーマを選んでレポートとして後期1回目に提出
自分の研究分野・研究テーマに、どのようにソフトコンピューティング手法が取り入れることができるか検討し、報告する。
例えば、どんなパラメータ調整にソフトコンピューティングが利用できるか。
可能ならば、(簡易的に)実装してみる。
ソフトコンピューティングの手法を一つ選び、3年生への教材を作成する。教材は、説明文章と演習課題を作成する。
レポートはレポート表紙(
Word
,
PDF
)を付け、ホチキスで留める。
テスト問題例
試験時間1時間。問題選択できる自由記述問題。参照不可。
ヒント:なるべく多くのキーワードを入れ、図表を使う。
問題例
Example Final Exam Problem
期末試験 and/or レポート提出
期末試験とレポートは選択制とする。レポート提出または期末試験受験すれば良い。(両方でもよい;-)
ただし、レポート提出の期限延長は行わない。つまり、試験日までにレポートが完成していなければ、試験を受ける必要がある。
基本的には追試は行わないが、就職活動などで試験を受けられない場合、要事前相談。
直前の病欠連絡の場合、通院の証明を求めます。
レポート採点基準
レポート課題
レポートは、調査力より考える力を高く評価する。 つまり、想像力をフルに活用して、授業に関する知識をアピールする。 「こんなハイブリッド手法がうまくいきそう。なぜならば、、、」
レポート課題 Take home essay exam
レポート課題詳細