STRIPS:行動計画の立て方
AIを知りたい
先生、『STRIPS』って、なんですか?難しそうでよくわからないです。
AIエンジニア
うん。難しそうに見えるよね。『STRIPS』は、コンピュータに計画を立てさせるための方法の一つなんだ。たとえば、ロボットに『お茶を入れて持ってきて』と頼むとき、ロボットはどんな手順で動けばいいのか、自分で考える必要があるよね?その手順を考えるのを助けるのが『STRIPS』なんだよ。
AIを知りたい
どういう手順で考えるんですか?
AIエンジニア
『STRIPS』では、まず目的を決める。今回の例だと『お茶を入れる』『運ぶ』。次に、それぞれの目的を達成するための行動を考える。例えば、『お湯を沸かす』『茶葉を入れる』『湯呑みに注ぐ』『運ぶ』。そして、それぞれの行動に必要な『前提条件』と、行動によって得られる『結果』を定義するんだ。例えば、『お湯を沸かす』には『やかんに水が入っている』という前提条件が必要で、『お湯が沸いた』という結果になる、という具合にね。そうすることで、ロボットは目的を達成するための手順を順序立てて考えられるようになるんだよ。
STRIPSとは。
人工知能でよく使われる「ストリップス」という用語について説明します。ストリップスは、1971年にリチャード・ファイクスさんとニルス・ニルソンさんによって考え出された、行動の計画を立てるための仕組みです。この仕組みでは、目的とする状態を実現するために、「こういう条件が必要」、「こう行動する」、「こうなったら終わり」の3つの要素を組み合わせて考えます。
概要
スタンフォード研究所問題解決機(STRIPS)は、人工知能の分野において、行動計画を自動的に作成するためのシステムです。1971年にリチャード・ファイクスとニルス・ニルソンによって開発されました。このシステムは、ロボットやソフトウェアなどが複雑な作業をどのように達成するかを自動的に決めるために使われます。目的は、目標達成に必要な一連の行動を生成することです。
たとえば、ロボットが部屋を掃除するとします。この場合、どの順番で家具を動かし、掃除機をかけ、ゴミを捨てるかなどを計画する必要があります。STRIPSはこのような計画を自動的に生成するのを助けます。具体的には、世界の状態を記述する論理式と、行動によって状態がどのように変化するかを記述するルールを使用します。
STRIPSは、初期状態、目標状態、行動の集合を入力として受け取ります。初期状態は現在の世界の状態を記述し、目標状態は達成したい状態を記述します。行動の集合は、実行可能な行動とその効果を記述します。STRIPSは、初期状態から目標状態に至る行動の列を探します。この行動の列が計画となります。
STRIPSは、幅優先探索や深さ優先探索などの探索アルゴリズムを使用して計画を生成します。探索アルゴリズムは、可能な行動の列を探索し、目標状態に到達する行動の列を見つけます。STRIPSは、効率的に計画を生成するために、様々な工夫が凝らされています。例えば、すでに探索した状態を記憶することで、同じ状態を何度も探索することを避けます。
STRIPSは、人工知能の分野における初期の計画システムの一つであり、その後の計画システムの開発に大きな影響を与えました。STRIPSは、現在でも、様々な分野で利用されています。たとえば、ロボットの制御、ゲームのAI、物流の計画などに利用されています。
項目 | 説明 |
---|---|
名称 | スタンフォード研究所問題解決機(STRIPS) |
開発者 | リチャード・ファイクス、ニルス・ニルソン |
開発年 | 1971年 |
目的 | 目標達成に必要な一連の行動を生成する |
入力 | 初期状態、目標状態、行動の集合 |
処理 | 幅優先探索や深さ優先探索などの探索アルゴリズムを使用して、初期状態から目標状態に至る行動の列(計画)を探索 |
出力 | 行動の列(計画) |
工夫 | すでに探索した状態を記憶することで、同じ状態を何度も探索することを避ける |
応用例 | ロボットの制御、ゲームのAI、物流の計画など |
仕組み
物事の手順や筋道を考える方法の一つに、ストリップスというやり方があります。これは、ちょうどロボットに掃除をさせる手順を考えるようなものです。このやり方には、大きく分けて三つの大切な考え方があります。
一つ目は「今の状態」です。これは、ロボットの周りの様子のことです。例えば、「部屋が散らかっている」、「ゴミ箱に空きがある」といった状態です。二つ目は「行動」です。これは、ロボットができる動作のことです。「掃除機をかける」、「ゴミを拾う」、「ゴミ箱にゴミを入れる」といった動作が考えられます。三つ目は「目標」です。これは、ロボットにさせたいこと、つまり最終的にどのような状態にしたいかということです。例えば、「部屋をきれいにする」というのが目標になります。
ストリップスでは、これらの三つの考え方を用いて、今の状態から目標の状態にたどり着くまでの手順を考えます。それぞれの行動には、その行動を行うための条件と、行動を行った後の状態の変化があらかじめ決められています。例えば、「ゴミを拾う」という行動を行うための条件は「ゴミがある」という状態です。そして、「ゴミを拾う」という行動の結果、「ロボットがゴミを持っている」という状態になります。同様に、「ゴミ箱にゴミを入れる」という行動の条件は「ロボットがゴミを持っている」と「ゴミ箱に空きがある」という状態です。そして、この行動の結果は「ゴミ箱にゴミが入っている」と「ロボットがゴミを持っていない」という状態になります。
このように、ストリップスでは、それぞれの行動の条件と結果を組み合わせることで、複雑な手順を考え出すことができます。目標の状態にたどり着くまで、どの行動をどのような順番で行えばよいかを、まるでパズルを解くように考えていくのです。
項目 | 説明 | 例 |
---|---|---|
今の状態 | ロボットの周りの様子 | 部屋が散らかっている、ゴミ箱に空きがある |
行動 | ロボットができる動作 | 掃除機をかける、ゴミを拾う、ゴミ箱にゴミを入れる |
目標 | ロボットにさせたいこと、最終的にどのような状態にしたいか | 部屋をきれいにする |
行動の条件(例:ゴミを拾う) | 行動を行うための条件 | ゴミがある |
行動の結果(例:ゴミを拾う) | 行動を行った後の状態の変化 | ロボットがゴミを持っている |
行動の条件(例:ゴミ箱にゴミを入れる) | 行動を行うための条件 | ロボットがゴミを持っている & ゴミ箱に空きがある |
行動の結果(例:ゴミ箱にゴミを入れる) | 行動を行った後の状態の変化 | ゴミ箱にゴミが入っている & ロボットがゴミを持っていない |
表現方法
表現方法は、計画を立てる上で重要な要素です。STRIPS(Stanford Research Institute Problem Solver)は、状態、行動、目標の三つの要素を論理式を使って表現することで、問題解決を図ります。
まず、状態とは、ある時点における世界の状況を指します。STRIPSでは、状態は真偽値を持つ命題の集合として捉えられ、述語論理を用いて記述されます。例えば、「部屋が汚れている」という状態は、「汚れている(部屋)」という述語で表すことができます。同様に、「ロボットが部屋Aにいる」という状態は、「いる(ロボット、部屋A)」のように表現できます。これらの命題を組み合わせることで、複雑な状態も表現できます。たとえば、「部屋が汚れていて、ロボットが部屋Aにいる」という状態は、「汚れている(部屋)かついる(ロボット、部屋A)」と表現できます。
次に、行動とは、状態を変化させる操作を指します。STRIPSでは、行動は前提条件と結果の組み合わせで表現されます。前提条件とは、その行動を実行するために満たされていなければならない条件です。例えば、「掃除する」という行動の前提条件は、「ロボットが部屋にいる」かもしれません。つまり、ロボットが部屋にいなければ掃除はできません。結果は、その行動によって変化する状態です。「掃除する」という行動の結果は、「部屋が綺麗になる」でしょう。
最後に、目標とは、達成したい状態を指します。これも論理式で表現されます。例えば、「部屋を綺麗にしたい」という目標は、「綺麗である(部屋)」という論理式で表されます。
STRIPSは、このように状態、行動、目標を論理式で表現することで、現在の状態から目標状態に至るための行動の列、つまり計画を探索します。これは、与えられた状態と行動の定義から、目標状態を満たす論理式を導出する処理と言えます。このように、STRIPSは論理的な推論を用いて計画を生成する手法です。
要素 | 説明 | 例 | 論理式 |
---|---|---|---|
状態 | ある時点における世界の状況 | 部屋が汚れている ロボットが部屋Aにいる 部屋が汚れていて、ロボットが部屋Aにいる |
汚れている(部屋) いる(ロボット、部屋A) 汚れている(部屋)かついる(ロボット、部屋A) |
行動 | 状態を変化させる操作。前提条件と結果の組み合わせ。 | 掃除する | 前提条件:いる(ロボット、部屋) 結果:綺麗である(部屋) |
目標 | 達成したい状態 | 部屋を綺麗にしたい | 綺麗である(部屋) |
計画アルゴリズム
計画を立てる手順を考える学問分野では、色々な計画を作る方法があります。その中でも、よく使われる方法の一つに、順方向探索と逆方向探索があります。これらの方法は、まるで迷路を解くように、スタートからゴール、あるいはゴールからスタートへと道をたどることで、目的を達成するための手順を見つけ出します。
順方向探索では、現在の状況を出発点として考えます。そこから、可能な行動を一つずつ試していきます。例えば、部屋を掃除するという計画では、「机を拭く」「床を掃く」「ゴミを捨てる」といった行動が考えられます。それぞれの行動をとった後の状況を予測し、目標とする状況にたどり着くまで、この手順を繰り返します。まるで、迷路のスタートからゴールを目指すように、一歩ずつ進んでいくイメージです。
一方、逆方向探索は、目標とする状況から出発します。例えば、「きれいな部屋」という目標から始めます。そこから、この目標を達成するために必要な行動を逆向きに考えていきます。「きれいな部屋」のためには「ゴミを捨てる」必要があり、その前には「床を掃く」必要があり、さらにその前には「机を拭く」必要がある、といった具合です。まるで、迷路のゴールからスタートを目指すように、一歩ずつ戻っていくイメージです。そして、最終的に現在の状況にたどり着くまでの手順を見つけ出します。
どちらの方法も、状況と行動を組み合わせた大きな地図、いわば状態空間を探索していると考えることができます。この地図の中で、最も効率の良いルート、つまり最適な行動の順番を見つけることが、計画アルゴリズムの目的です。状況が複雑になればなるほど、この地図も複雑になり、探索は難しくなりますが、様々な工夫を凝らした探索方法が研究されています。
探索方法 | 開始点 | 手順 | イメージ |
---|---|---|---|
順方向探索 | 現在の状況 | 可能な行動を一つずつ試し、目標状況に達するまで繰り返す | 迷路のスタートからゴールを目指す |
逆方向探索 | 目標とする状況 | 目標達成に必要な行動を逆向きに考え、現在の状況に達するまで繰り返す | 迷路のゴールからスタートを目指す |
利点と欠点
この手法には、良い点と悪い点があります。まず、良い点としては、物事をはっきりとした形で表し、能率的な手順を組み立てる方法を提供してくれることです。この手法は、問題を論理的に表現することで、問題の構造を分かりやすく整理できます。また、無駄のない探索方法によって、複雑な問題でも比較的スムーズに手順を組み立てることができます。
例えば、ロボットに荷物を運ばせる手順を考える場合、この手法を使うと「ロボットは荷物を持っている」「ロボットはA地点にいる」「ロボットはB地点にいる」といった状態を明確に定義できます。そして、「A地点からB地点に移動する」という行動が、どのような状態の変化をもたらすかを記述することで、ロボットがどのように動けば目的を達成できるかを自動的に計算できます。このように、複雑な手順を自動的に生成できる点がこの手法の大きな強みです。
しかし、この手法には表現力に限界があるという悪い点もあります。この手法は、物事の状態を「真」か「偽」かでしか表せません。そのため、例えば「温度が何度か」「時間がどれくらいか」といった数値の情報や、時間の経過に伴う変化をうまく表現できません。また、「雨が降るかもしれない」といった不確かな状況や、刻一刻と変化する状況にも対応できません。
例えば、ロボットが荷物を運ぶ際に、バッテリーの残量や移動にかかる時間を考慮に入れたい場合、この手法ではうまく表現できません。さらに、途中で障害物が出現するかもしれないといった不確実性にも対応できません。これらの欠点を補うために、より表現力の高い手法も開発されています。例えば、「手順定義言語」と呼ばれる手法は、数値や時間を扱うことができ、より複雑な状況にも対応できます。このように、この手法は単純な問題には有効ですが、複雑な問題にはより高度な手法が必要となります。
項目 | 説明 | 例 |
---|---|---|
良い点 | 物事をはっきりとした形で表し、能率的な手順を組み立てる方法を提供する。問題を論理的に表現し、構造を分かりやすく整理できる。無駄のない探索方法で、複雑な問題でも手順をスムーズに組み立てられる。 | ロボットに荷物を運ばせる手順。「ロボットは荷物を持っている」「ロボットはA地点にいる」「ロボットはB地点にいる」といった状態を定義し、「A地点からB地点に移動する」という行動による状態の変化を記述することで、目的達成の手順を自動的に計算できる。 |
悪い点 | 表現力に限界がある。物事の状態を「真」か「偽」かでしか表せないため、数値情報(温度、時間など)、時間の経過に伴う変化、不確かな状況(「雨が降るかもしれない」など)、刻一刻と変化する状況をうまく表現できない。 | ロボットが荷物を運ぶ際に、バッテリーの残量や移動にかかる時間、途中で障害物が出現する可能性などを考慮に入れられない。 |
応用
状況計算式を用いた計画作成手法であるSTRIPSは、様々な場面で活用されています。具体的には、ロボットの行動計画、ゲームにおける人工知能、作業の自動化といった分野で応用されています。
ロボットの行動計画においては、STRIPSはロボットが周囲の状況を把握し、目的を達成するための行動手順を計画するのに役立ちます。例えば、ロボットに指定された場所に荷物を運ぶといった作業をさせる場合、ロボットはまず現在の位置、荷物の位置、障害物の有無といった状況を認識する必要があります。そして、荷物を掴む、移動する、荷物を置くといった一連の行動を正しい順序で実行することで目的を達成できます。STRIPSはこのような行動計画を自動的に生成するのに役立ちます。
ゲームにおける人工知能においても、STRIPSはキャラクターの行動制御に活用されます。例えば、敵の攻撃を避けつつ、味方を支援しながら目標地点に移動するといった複雑な行動を、STRIPSを用いて計画することができます。これにより、より人間らしい、知的なキャラクターの行動を実現できます。
作業の自動化においては、複雑な作業を自動的に行うためにSTRIPSが利用されます。例えば、工場の生産ラインにおける部品の組み立てや、ソフトウェア開発におけるプログラムの自動生成といった作業を自動化することができます。STRIPSを用いることで、作業手順を明確化し、効率的に作業を進めることができます。
このように、STRIPSは様々な分野において、効率的な計画作成を実現するための基本的な技術として重要な役割を担っています。今後も、人工知能やロボット工学の発展に伴い、STRIPSの応用範囲はますます広がっていくと考えられます。
分野 | STRIPSの活用例 |
---|---|
ロボットの行動計画 | ロボットが周囲の状況を把握し、目的を達成するための行動手順を計画 (例: 荷物を指定された場所に運ぶ) |
ゲームにおける人工知能 | キャラクターの行動制御 (例: 敵の攻撃を避けつつ、味方を支援しながら目標地点に移動) |
作業の自動化 | 複雑な作業を自動的に行う (例: 工場における部品の組み立て、プログラムの自動生成) |