フレームとは、人工知能のデータ構造の一つで、「定型的な状況」を表現することによって知識をサブ構造に分割するために使用される。
これらは、マービン・ミンスキーが1974年の論文「知識を表現するためのフレームワーク」で提案したものです。[ 1 ]フレームは、人工知能フレーム言語で使用される主要なデータ構造であり、集合のオントロジーとして格納されます。
フレームは、知識表現や推論スキームの重要な構成要素でもあります。フレームはもともと意味ネットワークから派生したものであり、構造ベースの知識表現の一部と言えます。
ラッセルとノーヴィグの『人工知能:現代的アプローチ』によれば、構造的表現は「特定のオブジェクトやイベントの種類に関する事実を集め、それらの種類を生物学的分類に類似した大きな分類階層に配置する」ものである。
このフレームには、フレームの使い方、次に何が起こるか、そしてこれらの期待が満たされない場合の対処法に関する情報が含まれています。
フレーム内の情報の中には一般的に変更されないものもあれば、「端末」に格納されている情報のように変化するものもある。端末は変数とみなすことができる。
最上位フレームは、対象となる問題に関して常に真である情報を保持しますが、ターミナルは必ずしも真である必要はありません。ターミナルの値は、新たに得られた情報に応じて変化する可能性があります。異なるフレームが同じターミナルを共有することもあります。
特定のフレームに関する各情報は、それぞれスロットに格納されている。
情報には以下が含まれる可能性があります。
フレームの端子には、人間の思考回路に基づいて、デフォルト値があらかじめ設定されています。
例えば、「少年がボールを蹴る」と言われた場合、ほとんどの人は、属性のない抽象的なボールを想像するのではなく、特定のボール(例えば、見慣れたサッカーボール)を思い浮かべるだろう。
フレームベースの知識表現の特長の一つは、意味ネットワークとは異なり、特定の状況において例外を許容できる点です。これにより、フレームは柔軟性を持ち、現実世界の現象をより正確に反映した表現が可能になります。
セマンティックネットワークと同様に、フレームは拡散活性化を使用してクエリを実行できます。継承のルールに従い、サブフレームに継承されるスロットに割り当てられた値は、サブフレーム内の対応するスロットに更新(IF-ADDED)され、特定のフレームの新しいインスタンスには、その新しい値がデフォルト値として設定されます。
フレームは構造に基づいているため、明示的なアークがなくても、フレームのセットから意味ネットワークを生成することが可能です。ミンスキーの著作には、ノーム・チョムスキーとその1950年の生成文法への言及は一般的に見られません。
フレームの簡略化された構造は、類推推論を容易にし、これはあらゆるインテリジェントエージェントにおいて非常に重要な特徴である。また、フレームによって提供される手続き的なアタッチメントは、より現実的な表現を可能にする柔軟性を提供し、プログラミングアプリケーションにとって自然なアフォーダンスをもたらす。
ここで注目すべきは、似たような名前のスロットがあるというだけで、少年と猿の間で簡単に類推(比較)ができるという点である。
また、少年のインスタンスである Alex は、より一般的な親オブジェクトである Boy から「性別」などのデフォルト値を継承しますが、少年は足の数などの例外の形で異なるインスタンス値を持つこともできます。
フレーム言語は、人工知能における知識表現に用いられる技術である。オブジェクト指向言語のクラス階層に似ているが、その根本的な設計目標は異なる。
フレームは知識の明示的かつ直感的な表現に重点を置いているのに対し、オブジェクトはカプセル化と情報隠蔽に重点を置いている。フレームは人工知能研究で生まれ、オブジェクトは主にソフトウェア工学で生まれた。
しかし実際には、フレーム指向言語とオブジェクト指向言語の技術と機能は大きく重複している。
フレーム言語でモデル化された概念の簡単な例として、セマンティックウェブの一部として定義され、ソーシャルネットワーキングシステムやカレンダーシステムの基盤となっている「友人の友人(FOAF)」オントロジーが挙げられる。
この単純な例における主要なフレームは人物です。
例としては、その人のメールアドレス、ホームページ、電話番号などが挙げられます。
各個人の関心は、ビジネス領域とエンターテイメント領域の空間を記述する追加の枠組みによって表現することができる。
そのスロットマシンは、各ユーザーを他のユーザーと繋げている。
初期のフレームベース言語は、特定の研究プロジェクトのために独自に開発されたものであり、他の研究者が再利用するためのツールとしてパッケージ化されてはいなかった。
エキスパートシステムの推論エンジンと同様に、研究者たちはすぐに、コアインフラストラクチャの一部を抽出し、特定のアプリケーションに依存しない汎用的なフレーム言語を開発することの利点に気づいた。
最初の汎用フレーム言語の1つはKRLでした。[ 3 ]最も影響力のある初期のフレーム言語の1つはKL-ONEでした。[ 4 ] KL-ONEは、その後のいくつかのフレーム言語を生み出しました。
KL-ONE の後継として最も広く使われた言語の 1 つは、情報科学研究所のロバート・マクレガーによって開発されたLoom 言語である。[ 5 ]
1980年代、人工知能はエキスパートシステムを契機にビジネス界で大きな注目を集めました。これにより、知識ベースシステム開発のための多くの商用製品が開発されました。これらの初期の製品は通常Lispで開発され、論理推論のためのIF-THENルールなどの構造と、データ表現のためのフレーム階層を統合していました。
初期のLisp知識ベースツールの中で最もよく知られているものの1つは、IntellicorpのKnowledge Engineering Environment (KEE)でした。KEEは、多重継承、スロット、トリガー、デフォルト値、および後方連鎖と前方連鎖をサポートするルールエンジンを備えた完全なフレーム言語を提供しました。ほとんどの初期の商用AIソフトウェアと同様に、KEEは当初Lispマシンプラットフォーム上でLispで展開されましたが、最終的にはPCとUnixワークステーションに移植されました。[ 6 ]
セマンティックWebの研究課題は、自動分類とフレーム言語への新たな関心を生み出した。その一例が、インターネット上の情報を記述するためのWeb Ontology Language(OWL)標準である。OWLは、インターネット上にセマンティックレイヤーを提供する標準規格である。その目的は、今日のほとんどの検索エンジン(Googleなど)が行っているようにキーワードを使ってWebを検索するのではなく、ディレクトリ構造のように、オントロジーで整理された概念によってWebを整理することにある。
OWL言語の名前自体が、セマンティックWebの価値を示す良い例です。今日、インターネットで「OWL」を検索すると、検索結果のほとんどは、標準的なOWLではなく、鳥のフクロウに関するページになります。セマンティックWebであれば、「Web Ontology Language」という概念を指定できるため、ユーザーは検索時に様々な略語や同義語を気にする必要がなくなります。同様に、この簡単な例のように、猛禽類に関する情報など、無関係なデータで検索結果が埋め尽くされることもなくなります。
OWLに加えて、フレーム言語の影響を受けたセマンティックWebに関連するさまざまな標準と技術には、OILとDAMLがあります。スタンフォード大学のオープンソースソフトウェアツールであるProtegeは、OWLに基づいて構築され、分類器としての機能をすべて備えたオントロジー編集機能を提供します。ただし、バージョン3.5(フレーム指向を好むユーザーのために維持されている)以降はフレームを明示的にサポートしなくなり、2025年現在のバージョンは5.6.8です。明示的なフレームから移行する理由は、OWL DLの方が表現力が高く、「業界標準」であるためです。[ 7 ]
フレーム言語はオブジェクト指向言語と大きく重複しています。両コミュニティの用語や目標は異なっていましたが、学術界や研究室から商業の世界へと移行するにつれ、開発者は哲学的な問題には関心を持たず、アイデアの発祥に関係なく、それぞれの陣営の長所を取り入れ、特定の機能に重点を置くようになりました。両パラダイムに共通するのは、現実世界の概念とソフトウェアにおける実装との間の距離を縮めたいという願望です。そのため、両パラダイムとも、非常に一般的な型から始まり、より具体的な型へと進む分類体系で主要なソフトウェアオブジェクトを表現するという考えに至りました。
以下の表は、オブジェクト指向言語コミュニティとフレーム言語コミュニティにおける標準的な用語間の相関関係を示しています。
2つのパラダイムの主な違いは、カプセル化が主要な要件とみなされる度合いにあった。オブジェクト指向パラダイムでは、カプセル化は最も重要な要件の1つ、あるいは最も重要な要件であった。ソフトウェアコンポーネント間の潜在的な相互作用を減らし、大規模で複雑なシステムを管理するという願望が、オブジェクト指向技術の主要な推進力であった。フレーム言語陣営にとって、この要件は、ルール、制約、およびプログラミングロジックを表現するための膨大な数のツールを提供するという願望ほど重要ではなかった。オブジェクト指向の世界では、すべてがメソッドとメソッドの可視性によって制御される。たとえば、オブジェクトプロパティのデータ値にアクセスするには、アクセサメソッドを介して行う必要がある。このメソッドは、プロパティで取得または設定される値のデータ型や制約の検証などを制御する。フレーム言語では、これらの同じタイプの制約を複数の方法で処理できる。値が設定または取得される前または後に実行されるトリガーを定義できる。同じタイプの制約を管理するルールを定義できる。スロット自体にも、同じ種類の制約情報を含む追加情報(一部の言語では「ファセット」と呼ばれる)を追加することができる。
フレーム言語とオブジェクト指向言語のもう 1 つの主な違いは多重継承(フレームまたはクラスが 2 つ以上のスーパークラスを持つことを可能にする) でした。フレーム言語では多重継承は必須でした。これは、人間が世界をモデル化するのと同じようにモデル化したいという願望から来ており、人間の世界の概念化は、厳密に定義された重複しない分類体系に収まることはめったにありません。多くのオブジェクト指向言語、特にオブジェクト指向の後期の時代には、単一継承が強く望まれているか、必須でした。多重継承は、ドメインをモデル化するための分析フェーズでの可能なステップと見なされていましたが、カプセル化とモジュール性を維持するために、設計および実装フェーズでは排除されるべきものと見なされていました。[ 8 ]
KRLのような初期のフレーム言語にはメッセージパッシングは含まれていませんでしたが、開発者の要求により、後のフレーム言語のほとんど(Loom、KEEなど)にはフレーム上でメッセージを定義する機能が含まれています。[ 9 ]
オブジェクト指向の側では、フレーム言語が提供していた機能とほぼ同等の機能を提供する標準も登場しているが、形式は異なり、すべてオブジェクトライブラリに基づいて標準化されている。たとえば、オブジェクト管理グループは、テストデータや制約をオブジェクトに関連付ける機能(フレームのファセットやLoomなどのフレーム言語の制約の一般的な使用法に類似)やルールエンジンの統合などの機能の仕様を標準化している。[ 10 ] [ 11 ]
フレームに関する初期の研究は、人々が新しい認知状況で解釈や行動をするために蓄積された定型的な知識を使用することを示した、1930 年代に遡る心理学の研究に触発されたものです。[ 12 ] フレームという用語は、視覚的推論と自然言語処理を理解するためのパラダイムとして、マービン・ミンスキーによって初めて使用されました。 [ 13 ]これらの問題や他の多くの種類の問題では、最小の問題であっても潜在的な解決空間は膨大です。たとえば、生の音声ストリームから音素を抽出したり、オブジェクトのエッジを検出したりすることです。人間にとって些細に見えることは、実際には非常に複雑です。実際、AI 研究者がコンピュータにそれらを解決させることの複雑さを調査し始めるまで、それらがどれほど難しいかはおそらく完全には理解されていませんでした。
フレームまたはスクリプトとも呼ばれる最初の概念は、問題のコンテキストを確立し、それによって可能な探索空間を自動的に大幅に縮小するというものでした。このアイデアは、Schank と Abelson も採用し、AI システムがレストランでの食事の注文などの一般的な人間のインタラクションをどのように処理できるかを説明するために使用しました。[ 14 ] これらのインタラクションは、各フレームに関する関連情報を格納するスロットを持つフレームとして標準化されました。スロットは、オブジェクト指向モデリングのオブジェクトプロパティやエンティティ関係モデルのリレーションに類似しています。スロットにはデフォルト値があることが多いですが、シナリオの各インスタンスの実行の一部としてさらに洗練する必要もありました。つまり、レストランでの注文などのタスクの実行は、フレームの基本インスタンスから開始し、必要に応じてさまざまな値をインスタンス化して洗練することによって制御されました。本質的に、抽象的なフレームはオブジェクトクラスを表し、フレームのインスタンスはオブジェクトインスタンスを表します。この初期の研究では、フレームの静的なデータ記述に重点が置かれていました。スロットの範囲やデフォルト値などを定義するために、さまざまなメカニズムが開発されました。しかし、これらの初期のシステムにも手続き型処理機能は存在していました。一般的な手法の一つは、スロットに「トリガー」(データベースのトリガーの概念に類似)を関連付けることでした。トリガーとは、スロットに紐付けられた手続き型コードのことです。トリガーは、スロット値へのアクセスや変更の前、あるいはその両方、または後に実行される可能性があります。
オブジェクトクラスと同様に、フレームは包含階層で構成されていました。たとえば、基本的なフレームはレストランでの注文です。そのインスタンスは、ジョーがデイリークイーンに行くことです。レストランフレームの特殊化(実質的にはサブクラス)は、高級レストランでの注文のフレームになります。高級レストランフレームは、レストランフレームからすべてのデフォルト値を継承しますが、さらにスロットを追加したり、特殊化されたフレームのデフォルト値(たとえば、予想価格帯)の 1 つ以上を変更したりします。[ 15 ] [ 16 ]
初期のフレーム言語研究(例えば、シャンクとアベルソンの研究)の多くは、実験心理学の知見と、人間が日常的な作業を行う際に用いると考えられるパターンに対応する知識表現ツールの設計の試みによって推進された。これらの研究者は、数学的な形式主義にはあまり関心を示さなかった。なぜなら、そのような形式主義は、平均的な人間が世界を概念化する方法の適切なモデルとは必ずしも言えないと考えていたからである。例えば、人間が言語を用いる方法は、必ずしも真に論理的とはかけ離れていることが多い。
同様に、言語学では、チャールズ・J・フィルモアが1970年代半ばにフレーム意味論の理論に取り組み始め、後にFrameNetのような計算リソースにつながった。[ 17 ]フレーム意味論は、人間の言語と人間の認知についての考察から着想を得た。
一方、ロン・ブラフマンのような研究者は、 AI研究者に論理学に関連する数学的な形式化と計算能力を提供したいと考えていた。彼らの目的は、フレーム言語のフレームクラス、スロット、制約、ルールを集合論と論理学にマッピングすることだった。このアプローチの利点の1つは、定理証明器やその他の自動推論機能を使用して、モデルの検証や作成さえも自動化できることだった。欠点は、形式意味論を持つ言語でモデルを最初に指定するのがより困難になる可能性があることだった。
この進化は、AI研究における「几帳面派 vs. 雑然とした派」として知られる古典的な分裂も示している。「几帳面派」は、一階述語論理と集合論によって達成できる数学的な正確さと形式主義を最も重視する研究者であった。「雑然とした派」は、人間にとって直感的で心理的に意味のある表現で知識をモデル化することに関心があった。[ 18 ]
より形式的なアプローチの中で最も注目すべきものは、KL-ONE言語でした。[ 19 ] KL-ONE は後にいくつかのフレーム言語を生み出しました。KL-ONE などの言語の形式意味論は、これらのフレーム言語に、分類器として知られる新しいタイプの自動推論機能をもたらしました。分類器は、フレーム言語内のさまざまな宣言、つまり集合、部分集合、関係などの定義を分析するエンジンです。分類器は、さまざまな追加の関係を自動的に推論し、モデルの一部が互いに矛盾している場合を検出できます。このようにして、推論エンジンで通常前方連鎖または後方連鎖によって実行される多くのタスクを、代わりに分類器によって実行できます。[ 20 ]
この技術は、インターネットを扱う際に特に価値があります。KL-ONE のような言語の形式主義が、インターネット上で見られる非常に非公式で非構造化されたデータを扱う際に最も役立つというのは興味深い結果です。インターネット上では、すべてのシステムに 1 つのデータ モデルに標準化することを要求することは単純に実現不可能です。用語が複数の矛盾した形式で使用されることは避けられません。分類エンジンの自動分類機能は、AI 開発者に、非常に矛盾したデータの集合 (つまり、インターネット) に秩序と一貫性をもたらすのに役立つ強力なツール ボックスを提供します。ページがテキスト キーワードだけでなく概念の分類によって順序付けられる、強化されたインターネットのビジョンは、セマンティック Webとして知られています。元々フレーム言語用に開発された分類技術は、セマンティック Web の重要な実現手段です。[ 21 ] [ 22 ] 「整然としたもの vs. 雑然としたもの」の分裂もセマンティック Web の研究で現れ、 Linking Open Dataコミュニティの創設に至りました。彼らの焦点は、モデリングではなく Web 上でのデータ公開でした。
必要とするように見える例のほぼすべては、モデルを別の方向からアプローチすることで解決できます。