• ベストアンサー

ソフトウエア技術はフレーム問題を乗越えるか

ロボットのフレーム問題が言われ始めてから随分長い年月が経っていると思います。ソフトウエアでフレーム問題を解決する為の研究は今もどこかでされているのでしょうか。又ソフトウエア技術はフレーム問題の解決に向かう何かの成果を上げているのでしょうか? 以前同種の質問を哲学ボードでさせていただいたことがありますが、大変難しい哲学的お答え(当然かもしれませんが…)を頂きました。ソフトウエアに明るい方から、もう少しソフトウエア技術的な知見をお伺いしたいと思い、今回こちらで質問させて頂くことにしました。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

アルゴリズムやプログラミングについては、「事象事例に気づくかどうか」だけで善し悪しが違いますので、 専門家や経験が豊富だから優れたアルゴリズムが作り出せるというわけではありません。 本題。 プログラムは必ず「優先順位」があります。 爆弾を処理すべきか、それとも先にバッテリーを届けるべきか。 たしかに、バッテリーを届けることを優先すると判断した人工知能であれば、1号機の結果になると思いますし、 そう考えれば、そのように判断したのも立派な人工知能といえますね。この点は訂正します。 人間も「予測・推測・想像」はすると思いますが、 実際には、目に見えた情報、耳に聞こえた情報と照らし合わせて予想が一致するかを判断し、 一致しなければ無視していると思います。 フレーム問題というのは、「予測する必要があるかを判断すること」なんでしょうかね? 人間は、おおよそ、一定の時間内では1つしか予測していないと思います。 ごく短時間の間に異なった予測を順番にすると思いますが、判断が完了(目に入った情報と予測が一致するかの判断)まで、数秒かかると思います。 コンピューターは数ミリ秒以下で完了してしまうため、このフレーム問題が先行するのではないかと思います。 たとえば。 目の前に曲がり角があれば、自動車が飛び出してくるか、などは予測にいれますが、 宇宙から隕石が飛んでくるか、というのは目に入った情報とは無関係ですので予測はしないと思います。 先の例で言えば、 SELECT 関連危険 FROM TABLE WHERE 目に入った情報=曲がり角 関連危険というのは、過去の経験、人から聞いた事例があてはまり、それが予測を有限にとどめていると思います。 少しアレンジして。 SELECT 関連危険 FROM TABLE WHERE 目に入った情報=曲がり角 ORDER BY 発生件数, 危険度 そして、関連危険を1つめから順番に判断しますが、 おそらく10秒もすれば曲がり角に達するでしょうから、実際の予測は3つ程度しかできないため、フレーム問題が解決(たとえ未決だったとしても、時間切れとなり、次の処理が割り込まれる。)すると思います。 過去の経験は、基本的にはプログラマーが教え込むことになりますが、 やってることは大して変わらないと思います。 コンピューターの計算が速すぎるのが原因ではないか、とも思います。 、、、という考え方はいかがでしょうか。 なお、「フレーム問題」というのがどういう物なのか、わかっていません。 ブレインストーミングとでも考えて頂ければ幸いです。

el156
質問者

お礼

有難うございます。 「事象事例に気づくかどうかだけで善し悪しが違う」という言葉は重いと思います。参考になりました。 プログラマが事前に事象事例に気づかなくてはならないということは、プログラマの技量で枠組みの大きさが決まってしまう訳で、そうすると無限に大きい現実の枠組みや予測できなかった事象には対応不可能なのではないかと思いました。 コンピュータが速過ぎて不利益になることは無いかと思いますが、目の前(カメラの中央近く)に今ある情報を優先するという考え方は良い方向へ向かうかもしれません、

その他の回答 (5)

回答No.6

追伸。 >人間が歩くときは、腕、肩、胸、腰、膝、全身の骨を使ってバランスを取ってるのに、 ていうか、足首の角度、かかとに力を入れたり指先に力を入れたり、まで、細かくバランスを取ってますね。 案外、頭もバランスを取るのに使ってるのかも。 ロボットを作ってる人さん、がんばれ。

el156
質問者

お礼

有難うございました。

回答No.5

>そして、関連危険を1つめから順番に判断しますが、 >おそらく10秒もすれば曲がり角に達するでしょうから、実際の予測は3つ程度しかできないため、フレーム問題が解決(たとえ未決だったとしても、時間切れとなり、次の処理が割り込まれる。)すると思います。 違う例をいくつか。 ・ 人は目に見えた物全てを覚えているわけではない、というのは誰もが知ってることだと思います。 フレーム問題に照らし合わせれば、 ロボットが処理する上で、「どれを覚えてどれを忘れればよいか」という判断基準だと思います。 部屋にある物を見たときに、むしろ全ての場所を忘れる、というのが近いと思います。 理由は、「過去に見た物」だから。 同じ、または形状が似ているなどと判断すれば、それを忘れてもよいという判断だと思います。 ・ 人が歩くときに、足を置こうとする場所に何があるか、安全かどうかを判断します。 時々、机の角に足をぶつけた、等という話を聞きますが、 「足を置こうとする場所は安全だと認識したが、足を出す途中でバランスを崩すなどして、数センチずれた、これにより安全だと認識した範囲外の場所に足を置いてしまった」 という結果だと思います。 目に見えた範囲の中で、認識する部分は「足の範囲」だけだと思います。 これ以外の場所は、すべて「忘れても良い情報」と判断したのでしょう。 当然、そこにはバランスを崩すという予測はなかったはずです。 これは、歩くときの「足もとの安全判断」に時間がかかり、バランスを崩すという予測をする時間がなかったからではないでしょうか。 どうでもいいですけど、 人間が歩くときは、腕、肩、胸、腰、膝、全身の骨を使ってバランスを取ってるのに、 歩行ロボットって、腰から下だけでつくってる人も多いんですね。 大量の小さなバランスシステムを同時に制御するというのも、高度な技術だと思いますが、 複雑なモビールは、その1カ所を揺らすと、モビール全体が揺れてバランスを取ろうとするものです。 倒れそうになったときに腕を振り回すのは何が原因なのか知りませんが、モビールのもう一方が振られるのと、そう違わないのかも。 相変わらずブレインストーミングで。

el156
質問者

お礼

有難うございます。無意識と現場の判断、が、面白いキーワードになりそうです。

  • k_kota
  • ベストアンサー率19% (434/2186)
回答No.3

技術屋ですがレベルは高くありません。 まず、現状ですけど「認識」と言うもの自体がまだレベルが低いというのが一つ。 「それ取って」って言うのが処理できないとかそう言うところがあります。 それ以外で、判断の話ですけど学習とかも対処の一つかもしれません。 要するに全情報を判断するのではなく、限られた情報でうまくいくものを学ぶってことです。 ただ、これは前述のロボットのパターンはアウトですし、問題自体を解決はしていません。 ただ、無限の可能性を考えるというのは不可能というのは間違いないわけです。 結局技術的には必要な情報をいかに効率よく取得して判断するかという方向に行くのかと思います。 厳密解よりトレードオフと言うのが実用でしょうから。 なので、フレーム問題というくくりではなく、各分野でそれぞれに対処しているのかもしれません。 人間も完璧ではないわけですから、それと同じような精度と方針であればねらえるかもしれませんね。

el156
質問者

お礼

言葉足らずの質問の意図を正確に読み取って頂き、適切なご回答を有難うございます。「各分野でそれぞれに対処している」というのは現実に一番役に立ちそうですし、いかにもありそうだと思いましたが、結局は分野毎にフレームを限っているのだと思うので、それだけだとするとちょっと残念です。最後の「人間も完璧ではないわけですから、それと同じような精度と方針で」というような目標でがんばっている人たちがいるのかどうか、何かの成果が上がっているのかどうかを知りたいと思います。

回答No.2

追伸。 人間でも個性という名前の行動パターンがありますから、 ロボットは常に同じ行動を取らなければならないとは思えません。 むしろ、何度か同じ命令を指示したら、状況は全く同じにもかかわらず違う行動を取る方が、知能(学習も含め)らしいと思います。 たとえば、洞窟の前に来たときに洞窟が崩れ落ちた場合。 人間(の子供)にお使いを頼んだときに例えると、 今まで保護されて育ってきた人:泣く(警戒音を出す)ことにより助けを求める 自力で生活してきた人:洞窟を掘り出す 体力がない人:戻って現状、および「命令の失敗」を報告をし、次の指示を仰ぐ

el156
質問者

お礼

有難うございます。色々考えて頂いて恐縮です。「何度か同じ命令を指示したら違う行動を取る」という点に関しては、たぶん最終的にはそうなる気がします。乱数のようなものが関わってくるかもしれません。学習自体も難しい課題を含んでいると思いますが、フレーム問題との関連で言えば学習した結果を応用する局面での問題になると思います。現実には学習した事と全く同じ事が起きる訳では無いので、これから起き得る無限の可能性と学習した知識とを比べて、似ているところを、考え過ぎないようにしつつ応用しなくてはなりません。この辺りは少し前に話題になって最近殆ど聞かれなくなった「ファジー」が役に立つのかもしれないと思いました。

回答No.1

Wikipediaのフレーム問題のページを見てみると、 バッテリーを取ってくる指示の例で、 『バッテリーに爆弾が付いていたが、爆弾処理は「バッテリーを取ってくる」という指示以外のことであったために、爆弾が爆発してロボットが壊れた。』 とありましたが、 人間の行動は「自身の危険を回避する」という命令が常につきまといます。 この例では、「ロボット自身の危険を回避するという暗黙の命令とともに、指示された明確な命令を遂行する」 とプログラムされていれば、 「バッテリーを取ってくる」という命令だけで、 爆弾をとりはずすか爆発しないような処理をする、もしくは別のバッテリーを捜すなどの行動が取れたと思います。 2号機の例では、爆弾を発見した後、どうすればいいかというのを考えすぎて立ち止まってしまった。 石橋を叩いて壊す人(ロボット)ですね。 私もときどきやります。 考え過ぎも良くないようです。 3号機の例では、洞窟前で考えすぎて止まってしまった。 >3号機は、洞窟に入る前に、目的と無関係な事項を全て洗い出そうとして、無限に思考し続けてしまったのである。 逆ですね。 「関連のない事項」をさがすよりも「関連のある事項」を探す方が事例は少なくなります。 SQLでいうと、 「SELECT * FROM TABLE WHERE 場所<>洞窟」 「SELECT * FROM TABLE WHERE 場所=洞窟」 1号機はプログラムに不足、3号機はプログラムのバグだと思いますが、2号機は立派な人工知能だと思います。 (時間切れになる前に逃げることはできなかったのだろうか、とも思います。 戦闘(ケンカでも)の場合、判断に迷ったら、逃げることもせずに相手にされるがままになったりもしますけどね、人間の場合は。) 実際には「自身だけでなく、仲間(人間、または動物、その他"物"だとしても)を守る」という行動を取ることがあります。 「守る」の中には、怪我をしてる人に手を貸す、荷物を持ってあげる、程度のことも含まれると思いますが。 いずれにしても、「生存」に関わることはすべて最優先事項の暗黙の命令として処理されるべきだと思います。 いわゆるロボット三原則の2つ、「人間を守る」「自身を守る」というのは、人工知能の最たる物ではないでしょうか。 「爆弾を爆弾として認識すること」や、「自動車がこっちに向かってきているのは危険なのか」と判断することが難しいと思いますけどね。 また、「捨てても良い物」と「捨ててはいけない物」などの判断も難しいと思います。 「○○に使う予定」「捨てるなと言われた」と、はっきりしていればいいですが、 「自分は捨てても良いと思うが、誰かが必要だと思っているかもしれない」などと、人間でも迷う事です。 断捨離や整理術のような方法は、むしろ人間の方がある種のアルゴリズム(ルール)を利用していると思います。 if(物品の最終使用日<3ヶ月前の日時){ 捨てる } 追伸。 人工知能は心理学、神経心理学も関連すると思います。 神経心理学によると、恋愛感情は遺伝子情報が大きく離れている方が好きになりやすいらしいです。 (身近なところでは、背の高い人は背の低い人が好み、太っている人は痩せている人が好み、など。 逆に言うと、親族、特に双子間では恋愛感情は生まれません。(仲が良いことと恋愛感情は別です。))

el156
質問者

お礼

早速のご回答を有難うございました。

el156
質問者

補足

「爆弾を爆弾として認識すること」や、「自動車がこっちに向かってきているのは危険なのか」と判断することは確かに難しいと思いますが、フレーム問題は少し切り口が違います。いただいたご回答の言葉をお借りするなら、「考え過ぎない」ための方法に関する問題と言えるかもしれません。wikipediaに出て来るR1,R1-D1,R2-D1は、3台とも自分の身は守ろうとしているはずです。バッテリーの上に爆弾がある事を見てもいるし、爆弾が爆発すると自分の身に危険が及ぶ事も情報としては知っています。しかし彼らは他にも関係のない無限に多くのことを知っているので、この局面で適用すべきこれらの情報を制限時間内に利用する事ができませんでした。爆弾を切り離すことが優先されるべきだという、爆弾を知っている人間なら簡単なはずの結論を出せませんでした。R1は自分の行動の結果起き得る無限のことを無視したので、フレーム(枠組み)をゼロにして行動を可能にしたのだと思います。R1-D1はフレームを忠実に無限大に取ったため行動ができませんでした。R2-D1は自分で有限のフレームを決めようとして失敗しました。仮にこの際人間がプログラムによって爆弾があった場合の処理を細かく指定すればロボットは無事に仕事をこなすでしょうが、それでは本質的にR1と同じです。ロボットたちはプログラマーが予測しなかった現実に対応できなくてはなりません。チェスのプログラムのように人が事前に適度な大きさのフレームを与えてあげればソフトウエアはその本領を発揮できるのですが、無限に広がる世界の中で何かの行動をする為には、全てを考え尽くさなくても適当に行動できる必要があります。(その際、全てを考え尽くさないわけですから、低い確率での失敗は許されるべきだと思います。) 質問させて頂いた趣旨は、ソフトウエアの分野でこういった問題点が研究されているのかどうか、又、処理しきれない無限の情報、無限の分岐に対して完璧ではなく「適当な」結果を、「考え過ぎずに」出すことがが可能なソフトウエア技術というのがあるのかどうか、或は「フレーム問題は問題ではない」といったような問題自体を否定するような理屈があるのかどうか、といったような点です。私はソフトウエアにあまり詳しくありませんが、近年では手続きやフローチャートよりもオブジェクトとメッセージを重視したプログラムが主流のようなので、何かの可能性があるのではないかと漠然と期待しています。補足が長文になってしまい申し訳ありません。