ソフトウェアエージェント(Software Agent)とは、ユーザーや他のソフトウェアとの仲介(Agency)的関係[1]において動作するソフトウェアを説明する計算機科学上の抽象概念であり、論理的モデルである。そのような代行的行動は行動の適切さの判断や時期の判断の権限を暗示している。すなわち、エージェントの動作はタスクとして厳密に管理されないが、自分自身が勝手に起動することはない。
関連する派生概念として、知的エージェント(人工知能的要素である学習や推論を取り入れたもの)、自律エージェント(目的を達成するための方法を自律的に更新できるもの)、マルチエージェントシステム(単体では目的を達成できず、互いに通信する分散エージェント群)、モバイルエージェント(ネットワーク上で自身を実行するプロセッサを乗り換えていくことができるエージェント)などがある。
「エージェント」という用語はソフトウェアの抽象化/アイデア/概念を説明するものであり、その意味でオブジェクト指向プログラミングの各種用語(メソッド、クラス、オブジェクトなど)と同類である。エージェントの概念は、ユーザーの代理である程度自律的に行動できる複雑なソフトウェアを説明するための便利で強力な方法を提供する。しかし、メソッドや属性といった用語で定義されるオブジェクトとは異なり、エージェントはその振る舞いで定義される。
様々な人々がそれぞれにエージェントの定義を提案しているが、それらには以下のような概念が共通して含まれている。
永続性(persistence) - そのコードは要求されて実行されるのではなく、常に起動された状態で、何らかの行動を起こす時期を自身で判断する。
自律性(autonomy) - エージェントは、実行すべきタスクの選択、優先順位付け、目標に向けた行動、意思決定を人間の手助けなしで行う機能を持つ。
社会性(social ability) - エージェントは他のコンポーネントと何らかの通信や協調をする機能を持ち、1つのタスクを共同で処理する。
反応性(reactivity) - エージェントは周囲の環境を把握し、その変化に適切に反応する。
「エージェント」の概念は規範としてよりもシステムを解析するツールとして最も役立つ。上述したエージェントの概念は人間が複雑な仕事を考える場合の自然な方法を反映したものであり、そのためにエージェントはそのような複雑なタスクのモデルとして有効である。
ルリマ カントリー おいずり ファラオ オーチャ バイバル ロカアォ パーカー トリミン ティラピ オール リージョ ダリア ドゥー ラーゲ ジフ スピコン プロテーゼ ツィリング アフロ 月下美人 シュート ソムリ レイド エアポ ピンポ レーキ パナビ いまかね ドレッ あかんち モルツ カイア スキッ チャートポ ベガス 紅葉 華ごころ リスト サーボ サイト紙燭 テレメ パステ コース オーナブリ ダット サーチアウト すなのみ ブールマ リーダー
知的エージェント
知的エージェント(知的ソフトウェアエージェント)の設計は、人工知能研究の一分野である。
知的エージェントは以下のような能力を有する:
適応(adapt)能力
適応には、環境を把握することと反応を再設定することが含まれる。問題解決ルールやアルゴリズムの代替案を選択したり、新たな問題解決戦略を発見することで適応がなされる。適応には、プロセッサや記憶装置といったリソースを確保するなどの能力も含まれる。
学習能力
学習は試行錯誤によってなされ、前提として成功・失敗の判断とその分析能力を備えている必要がある。別の方法として、例示と一般化による学習もあり、実例を抽象化し一般化する能力を備えている必要がある。
自律エージェント
一部のソフトウェアエージェントは自律的であると言われる。自律エージェントは、自己充足的であり、観測された環境に基づいて内部目標を達成するための行動を独自の判断で決定することができる。ただし、このような言い方は物議をかもしている。なんとなれば、全ての重要な仕事を行うソフトウェアエージェントは、ユーザーに起動された後も監視され、その動作にユーザーが手を出し、必要になれば停止させられるものだからである。
分散エージェント
エージェントは自己充足的であるため、複数のエージェントを疎結合させて分散プロセッサ群の上でマルチスレッドのように動作するよう設計するのも簡単である。これを分散エージェントと呼び、分散コンピューティングの一種と考えることができる。エージェントのコードは分散処理にうまく適応させやすいので、スケーラビリティも良好である。
マルチエージェントシステム
複数のエージェントが相互作用を及ぼしながら動作するシステムをマルチエージェントシステムと呼ぶ。そのようなエージェントの性格上、1つのエージェントが目標達成に必要な全機能や全データを持たない(視点が制限されている; limited viewpoint)。したがって他のエージェントと協力する必要がある。また、全体を統括する機能は(ほとんど)ないので、これを一種の群知能システムと見ることもある。分散エージェントと同様、データは分散配置され、実行は非同期である。先駆けとなった概念として「分散人工知能」や「分散問題解決」がある。
モバイルエージェント
エージェントのコード自体がその実行状態(コンテキスト)と共に別のプロセッサに移動して、そこで実行を継続する。モバイルエージェントは「モバイルコード」とも呼ばれる。
ファジィエージェント
ファジィ論理を使用したエージェント。
エージェントではないもの
エージェントとは何か、あるいは何でないかを述べるのは、あまり有益ではない。しかし、関連する用語と対比させることでその意味が明確化される部分もある。
一般的コンピュータプログラムとの相違点
Fanklin & Graesser (1996) では、一般的プログラムとエージェントを区別する4つの点を指摘した。それは「環境への反応、自律性、ゴール指向、永続性」である。
オブジェクトとの相違点
エージェントの方がオブジェクトよりも自律的である。
エージェントは柔軟な動作が可能(反応的、自発的、社会的)。
エージェントは少なくとも1つのスレッドを持つ(通常もっと多い)。
(Wooldridge, 2002)
エキスパートシステムとの相違点
エキスパートシステムは自身の置かれた環境とは隔絶されている。
エキスパートシステムは、反応的・自発的振る舞いをするよう設計されていない。
エキスパートシステムは社会性を考慮しない。
(Wooldridge, 2002)
歴史
エージェントの起源はカール・ヒューイットのアクターモデル(Hewitt, 1977)にまで遡ることができる。「自己充足的で対話的かつ並行的に実行されるオブジェクトであり、内部状態を持っていて通信機能を備えている」
より学問的に言えば、ソフトウェアエージェントシステムはマルチエージェントシステム(MAS)から生まれた。MAS は分散人工知能や分散問題解決の研究から出てきたものである。したがって、ソフトウェアエージェントは(良くも悪くも)分散人工知能や人工知能の性格を継承している。
ジョン・スカリーが1987年に提案した Knowledge Navigator のビデオではエンドユーザーとエージェントの関係が描かれていた。まず最初に理想像があったため、この分野ではボトムアップ的手法ではなくトップダウン的手法を採用して何度も失敗を繰り返してきた。エージェントの種類は現在では非常に幅広く、World Wide Web やサーチエンジンなどに利用されている。
例
バイヤーエージェント(買い物ボット)
このタイプのボットはインターネットサーファーが商品やサービスを見つけるのを補助する。例えば、eBayで買い物をしようとしたとき、ページの下に同じ検索をした他のユーザーが購入した類似商品のリストが表示される。これはユーザーの嗜好の類似性を仮定して、同様の商品に興味を持つだろうと判断しているためである。この技術を協調フィルタリングと呼ぶ。
ユーザー(個人)エージェント
このタイプのエージェントはユーザーのために自動的にタスクを実行する。例えば、ユーザーの指定に従って電子メールをソートしたり、カスタマイズされたニュース収集をしたり(例えば、newshub)、ユーザー情報に基づいてウェブページ上のフォームに入力したりする(たとえば、Form Filler bot)。
監視(予測)エージェント
このタイプのエージェントはコンピュータシステムなどの機器を監視して報告する。例えば、在庫状況を監視するエージェント、競合他社の商品価格を監視して報告するエージェント、インサイダー取引や噂などによる株価操作を監視するエージェントなどがある。
データマイニング・エージェント
このタイプのエージェントは、様々な情報源からの多量の情報から傾向とパターンを探す。ユーザーは自身が探している情報を見つけるのにそれを役立てる。この系統のボットの例として、市場の状況を監視して変化をキャッチしユーザー(企業)に報告するものがある。ユーザー(企業)はそれにしたがって判断を下す。例えば、このエージェントが建設業界の低落傾向を検出したとすると、これを知った建設業者はその情報に基づいて従業員の解雇/雇用や設備の購入/リースといったその企業の業界での位置にふさわしい知的な経営判断を行うだろう。
その他の例
その他の知的エージェントの例として、スパムフィルター、ゲームボット、サーバ監視ツールがある。検索エンジンの使用するボットも知的エージェントの一種である。その他の例は BotSpot にある。
ユーザーエージェント - ウェブブラウザなどのこと
メール転送エージェント - 電子メールを処理するソフトウェア。ユーザーエージェントも含めてこれらが「エージェント」と呼ばれるのは、ユーザーが知らない通信プロトコルを理解してサーバと通信することからである。動作に関する(フィルタリングなどの)ルールもユーザー設定可能で、ある程度自律的に動作する。
SNMP エージェント
DAML - Defence(DARPA) Agent Markup Language、Semantic Web 関連。
Web Ontology Language (OWL)
UNIX系システムでの デーモン。
設計上の問題
エージェントベースのシステムの開発する際の興味深い問題として、以下のようなものが挙げられる。
タスクのスケジューリングと同期をどのように実現するか
エージェントがどうやってタスクの優先順位付けをするか
エージェント間の協調動作やリソース確保をどうするか
エージェントをどのように別の環境に生成するか、内部状態をどう保持するか
通信をどう行うか
エージェント群の階層構造はどうすべきか(例えば、タスク実行エージェント、スケジューリングエージェント、リソース確保エージェント……)
ソフトウェアエージェントが効率的に協調動作するには、データの意味論的要素を共有しなければならない。これはコンピュータシステムがメタデータを提示することで可能である。
「エージェント処理; agent processing」には相互に関連する以下の2つの定義がある。
内部状態処理と知識表現のためのオントロジー
協調動作のプロトコル - タスク間の通信を行うための標準
エージェントシステムは実世界を並行性や並列性でモデル化したものでもある。
Agent Machinery - 各種エンジン。知能程度は様々である。
Agent Content - Machinery が推論や学習に利用するデータ。
Agent Access - Machinery が Content を把握し推論の結果として行動することを可能にする方法
Agent Security - 分散コンピューティングに関連した懸念の中でも特にエージェントに関して指摘されている問題
エージェントはアクセス手段を用いてローカルまたはリモートのデータベースを調べ、Content となるものを探す。アクセス手段としては、ネットニュースをエージェントが受け取れるようにするとか、掲示板を用意するとか、ウェブを歩き回る機能を使用したりする。あらゆる情報源を検索できるわけではないので、このようにして検索される Content は部分的にフィルタリングされているだろう。エージェントはさらに詳細な検索を行ったり、機械的言語処理を行ってキーワードやサインを Content から探し出す。この要約された Content (またはイベント)がエージェントの推論機構(Machinery)に渡され、新たな Content に対して何をすべきかを判断する。この過程でイベント Content はユーザーが提供したルールベースか知識内容と結合する。その過程で新たな Content から良い一致を検出したら、エージェントは Machinery の別の機構を使ってさらに詳細な検索を行う。最終的に、エージェントは新たな Content に基づいて採るべき行動を決定する。例えば、ユーザーに対して重要なイベントが発生したことを通知する。この行動はセキュリティ機能によって検証された後、ユーザーの権限を与えられる。エージェントはユーザーアクセス手段を使ってメッセージをユーザーに提供する。ユーザーがそのイベントが重要であり、素早く対応すべきと判断したら、エージェントの学習機能(Machinery)がその重み付けを更新し、今後の同種のイベント発生に備えることもできるだろう。