感性情報システム研究室では,研究を進めるにあたって必要となる知的情報処理の基礎技術について,毎週輪講形式で学習を行います.また,それぞれの理論を学んだあと,より実践的な演習としてプログラミング課題に取り組みます.
遺伝的アルゴリズムは,この研究室で最初に学ぶ最適化手法で,自然界での生物の進化と遺伝にモデルにしたものです.これらは,自然淘汰により最適な遺伝子が残ってきたように,システムの中で自然淘汰のシュミレーションを行い最適解を求めようというものです.
巡回セールスマン問題やナップザック問題などの最適化問題における最適化プログラム作成し,知識を深めていきます.
シミュレーテッドアニーリング(Simulated Annealing;SA)は,高温で加熱した金属の温度を徐々に下げて冷やすことによって,もとの金属より欠陥の少ない優れた結晶構造を作る物理プロセス(焼きなまし)を計算機上で模倣した最適化手法です.
SAの基礎となる最適解の探索法として局所探索法(Local Search;LS)があります. LSは逐次的な解の改善操作を繰り返す最適化手法です.近傍内に目的関数を改善する点が存在しない場合にLSは停止します.
下図のように目的関数が複数の極小値を持つ場合では,初期解をX0にとると,近傍内に改善する点が存在しないX1の状態で停止し,LSでは最適解に到達できません.これに対してSAでは,LSでの暫定解の更新法として目的関数を改善するものだけでなく,改悪となるものもときには許し,局所最適解からの脱出を可能にします.
SAの概念図
タブーサーチの輪講では,GA,SAと同様に巡回セールスマン問題についてのプログラムを作成します.
タブーサーチは状態の近傍を複数探索しその中で最も良い状態に遷移します.このときタブーリストと呼ばれるものに状態遷移時の操作を書き込みます。このタブーリストに書き込まれている操作は行わないことにより状態がループするのを防ぐことで探索が停滞せずに最適解を探索することができます。
これにより,タブーサーチは局所解に陥りにくくなります.
GAとTSのモデル比較
遺伝的プログラミング(以下GP:Genetic Programming)は,遺伝的アルゴリズム(以下 GA:Genetic Algorithm)の遺伝子列をグラフ構造や木構造の取り扱いができるように拡張した進化的アルゴリズムです.
GPの応用例には自動プログラミングや人工知能の作成などがあります.
輪講の課題のANT問題とは限られたエネルギーで人工蟻がより多くの餌を取るプログラムを自動生成する問題です.上図は木構造であり,aを根,b・d を非終端子,c・e・f・g を終端子と言います.終端子をそれぞれロボットの簡単な1つの行動(進む,回転など)を表すとします.
図のように木を辿ったとすると人工蟻が e→f→c→g の順に行動を行うことをその木構造が示しています.したがって,木の構造をGAの遺伝子列として扱うことで最適な人工蟻の行動をプログラミングすることができます.
ニューラルネットワークは,脳機能に見られるいくつかの特性を計算機上のシミュレーションによって表現することを目指した数学モデルです.自己想起とは,顔の一部を見ただけで顔全体が想起されるような場合を言い,相互想起とは,果物と聞いて,例えばミカンを想起するような場合を言います.このセクションでは,前者の自己想起の過程をプログラムで作成します.
本輪講では,ノイズの混じった数字データから,もとの数字を復元するという,簡単な文字認識プログラムを作成します.
ニューラルネット(相互結合)のプログラム実行例
ニューラルネット(以下 NNとする)とは人間の脳の仕組みを模倣した情報機構のことです.これは神経細胞(ニューロン)をモデル化したものを多数つなげてネットワークを構成し, 新しい情報処理原理を追及することが目的です.
階層型NNではニューロンを下図のように入力層,中間層,出力層を用意します.このNNは教師あり学習の誤差逆伝搬法(BP法)という方法を用いて学習をしていきます.
階層型NNのモデル
以下にその手順を示します.
1.NNに入力し出力を得ます.
2.出力と教師信号(手本となる値)と比較し2つの値の誤差を求めます.
3.その誤差によりNNのニューロン同士の結合荷重を調整し教師信号に近づけます.
※結合荷重とはニューロン同士を結んでいる重みのことです.
この1~3の操作を繰り返し行うことで入力をするとそれに対応した値(教師信号と近い値)が出てくるようになります.
ファジィ制御とは,ファジィ集合論に立脚して制御モデル等を構成する方法です.ファジィ集合論は,0または1といった境界がはっきりした集合論とは異なり,中間の状態を許容する集合論です.たとえば35歳の人間は「若者」0.4,「中年」0.5,「老人」0.1,といった感じです.これにより,人が用いる主観的であいまいな表現(やや,とてもなど)を定量的に扱うことができます.
輪講では車の速度制御を題材として内容理解に取り組んでいます.具体的には,
ファジィ集合の決定(例 時速80kmは「速い」0.8,「遅い」0.2)
ファジィルールの決定(例 もし時速80km以上なら5km減速する)
ファジィ推論(複数のファジィルールを組み合わせる)
以上の内容をWindowsアプリケーション等で作成します(下図).
対話型遺伝的アルゴリズムとは人間の主観評価値に基づいて最適化を行う技術の一種で,遺伝的アルゴリズムの解候補となる個体の評価を行うために用いられる目的関数を,人間の直感的評価に置き換えた計算手法です.
このため,定量的な評価を行うことが比較的困難な製品デザインなどの感性評価や,ユーザ個人の主観評価が必要となる製品のカスタマイズなど,人間の好みや主観が考慮されるべき問題に対して有効とされています.
人にやさしいコンピュータシステム,生き物らしいロボット,人の嗜好を探るコンピュータ,人の潜在的な感性を発見するための分析ツール,etc...感性情報システム研究グループでは実際に「使える」・「動く」ソフトウェアを開発します.
研究では,研究者だけが理解できる数値シミュレーションを実行するプログラムもありますが,我々が作るモノの多くは「開発者以外」が使用する,または「開発者のいない環境で」使用されることを想定しています.この場合,一般ユーザにもわかりやすいユーザインタフェースの設計や,あらゆる状況を想定した制御プログラムを用意する必要があります.
したがって,プログラミングは「ツール」として自由に使いこなさなくてはなりません.
よく,「プログラミングを学びたいから」という動機で当ゼミを希望する学生さんがおりますが,これは電子回路設計を行う研究室の志望動機に「ハンダ付けを学びたいから」と言っているのと同じです.
つまり我々のゼミにおいてプログラミングは,出来て当然(好きならなおオッケー)なのです.
そうは言っても,ゼミ配属時からバリバリのプログラマーという学生は皆無です.当然,配属になってからのトレーニングで,誰もが例外なく一定のレベルのプログラミングスキルを習得することができます.
まず,配属されてから4月までに,C言語の基本的なプログラミングを独学で習得してもらいます.そして,4月1日にいきなりC言語のプログラミングテストを行います.
C言語課題(4月上旬~中旬)…主に構造体とポインタを絡めた複雑なプログラムに取り組みます.
モンテカルロ法課題(4月2週目〜4週目)…組み合わせ最適化問題として有名な巡回セールスマン問題をモンテカルロ法で解くプログラムを作成します.
C++言語課題(4月中旬〜下旬)…上記課題と並行して,オブジェクト指向言語であるC++プログラミングを習得するために,基礎的な課題に取り組みます.
タブーサーチ課題(4月3週目〜5月1週目)…局所探索法の1つであるタブーサーチ法を用いて,巡回セールスマン問題を解くプログラムを作成します.
シミュレーテッド・アニーリング課題(4月4週目〜5月2週目)…組み合わせ最適化問題の解法として,有名な「焼きなまし法」を用いて,巡回セールスマン問題を解くプログラムを作成します.
遺伝的アルゴリズム課題(5月1週目〜5月3週目) …組み合わせ最適化問題の解法として,「焼きなまし法」と並んで有名な遺伝的アルゴリズムを用いて,巡回セールスマン問題を解くプログラムを作成します.
免疫アルゴリズム(5月2週目〜5月4週目)…遺伝的アルゴリズムの改良手法である免疫アルゴリズムを用いて,巡回セールスマン問題を解くプログラムを作成します.
アントコロニー最適化法課題(5月3週目〜5月5週目)…巡回セールスマン問題に近似最適解を生み出すために用いられるアントコロニー最適化法を用いて,巡回セールスマン問題を解くプログラムを作成します.また,これら6手法の性能比較を行います.
ホップフィールド・ネットワーク課題(5月4週目〜6月1週目)…パターン認識の有名な手法の1つであるニューラルネットワークを用いて,数字認識のプログラムを作成します.ここからはWindowsアプリケーションプログラミングになります.
ニューラルネットワークを用いた数字認識
階層型ニューラルネットワーク課題(5月5週目〜6月2週目)…ホップフィールドとはネットワーク構造の異なる階層型ネットワークを用いて,同じく数字認識のプログラムを作成します.
自己組織化マップ課題(6月1週目〜6月3週目)…様々な入力データを、それらの類似度に応じて自動的に分類するクラスタリングする自己組織化マップを用いて,数字認識のプログラムを作成します.
ファジィ課題(6月2週目〜6月4週目)…あいまいな情報を処理するのに便利なファジィ制御を用いた例題プログラムを作成します.
ファジィ制御による速度推論
対話型進化計算課題(6月3週目〜7月1週目)…人間の直接評価によって感覚的な物の最適化を行う対話型遺伝的アルゴリズムを用いて,デザインの最適化を行う例題プログラムを作成します.
対話型遺伝的アルゴリズムによる模様生成