人工知能を作成する方法は? プログラミングロボット。 ロボット工学の開発

サイバネティックス、心理学、行動主義(行動科学)の交差点で働いており、その主なツールの中で産業用ロボット複合体のアルゴリズムを構成するエンジニア- 高等数学メカトロニクスは、今後数年間で最も有望な業界であるロボット工学で働いています。 ロボットという用語は比較的目新しいものですが、人類には長い間親しまれてきました。 ここに、スマートメカニズムの開発の歴史からのほんのいくつかの事実があります。

アイアンメンアンリドロズ

古代ギリシャの神話でさえ、ヘファイストスによって重く単調な仕事をするために作られた機械的な奴隷が言及されました。 そして、ヒューマノイドロボットの最初の発明者および開発者は、伝説的なレオナルドダヴィンチでした。 イタリアの天才の最も詳細な図は、手、足、頭で人間の動きを模倣できる機械的な騎士を描いて、今日まで生き残っています。

プログラムされた制御を備えた最初の自動巻きムーブメントの作成は、15世紀の終わりにヨーロッパの時計職人によって開始されました。 この分野で最も成功したのは、スイスの専門家、父と息子のピエールジャックとアンリドロズでした。 彼らはシリーズ全体(「執筆少年」、「製図技師」、「ミュージシャン」)を作成し、その制御は時計のメカニズムに基づいていました。 後にすべてのプログラム可能なヒューマノイドオートマトンが「アンドロイド」と呼ばれるようになったのは、アンリ・ドロズに敬意を表してでした。

プログラミングの原点で

産業用ロボットのプログラミングの基礎は、19世紀の夜明けにフランスで築かれました。 ここでは、自動繊維機械(紡績と織り)の最初のプログラムが開発されました。 急速に成長しているナポレオンの軍隊は、制服、したがって布地を切実に必要としていました。 リヨンを拠点とする発明家ジョセフ・ジャカードは、さまざまな種類の製品用に織機をすばやく再構成する方法を考案しました。 多くの場合、この手順には膨大な時間、膨大な労力、そしてチーム全体の注意が必要でした。 革新の本質は、穴の開いた段ボールカードの使用でした。 針が切り口に落ち、必要に応じて糸をずらしました。 カードの交換は、機械のオペレーターによって迅速に実行されました:新しいパンチカード- 新しいプログラム-新しいタイプの生地またはパターン。 フランスの開発は、プログラミング機能を備えた最新の自動化された複合体、ロボットのプロトタイプになりました。

Jaccardによって提案されたアイデアは、多くの発明者によって自動デバイスで熱心に使用されました。

  • 統計部門の責任者S.N. Korsakov(ロシア、1832年)-アイデアを比較および分析するためのメカニズム。
  • 数学者CharlesBabbage(England、1834)-幅広い数学の問題を解決するための分析エンジン。
  • エンジニア(米国、1890年)-統計データを保存および処理するためのデバイス(タブ)。 注:1911年に会社。 ホレリスはIBM(International Business Machines)と名付けられました。

パンチカードは、前世紀の60年代まで情報の主要なキャリアでした。

インテリジェントマシンの名前は、劇「R.U.R.」のチェコの劇作家に由来しています。 (チェコ語)-重労働)。 そして、ロボットをメカニズムや自動装置と区別するものは何ですか? 後者とは異なり、ロボットは固有のアルゴリズムに従って盲目的に特定のアクションを実行するだけでなく、環境や人(オペレーター)とより密接に相互作用し、外部信号や条件が変化したときにその機能を適応させることができます。

最初の作業ロボットは、1928年にアメリカのエンジニアR.ウェンズリーによって設計および実装されたと一般に認められています。 ヒューマノイドの「鉄の知識人」はハーバート・テレボックスと名付けられました。 生物科学者の西村真琴(日本、1929年)とイギリス兵のウィリアム・リチャーズ(1928年)も開拓者の栄光を主張している。 発明者によって作成された擬人化メカニズムは、同様の機能を持っていました:彼らは手足と頭を動かし、音声と音のコマンドを実行し、そして簡単な質問に答えることができました。 デバイスの主な目的は、科学的および技術的な成果を実証することでした。 技術開発の次のラウンドでは、すぐに最初の産業用ロボットの作成が可能になりました。

世代を超えて

ロボット工学の開発は、継続的で進歩的なプロセスです。 これまでに、3つの異なる世代のスマートマシンが登場しました。 それぞれが特定の指標と適用分野によって特徴付けられます。

第一世代のロボットは、狭いタイプの活動のために作成されました。 マシンは、特定のプログラムされた一連の操作のみを実行できます。 ロボット制御装置、回路、およびプログラミングは、実質的に自律動作を排除し、必要な追加の機器と情報測定システムを備えた特別な技術空間の作成を必要とします。

第2世代のマシンは、センシングまたはアダプティブと呼ばれます。 ロボットは、外部および内部センサーの大規模なセットを考慮してプログラムされています。 センサーからの情報の分析に基づいて、必要な制御アクションが開発されます。

そして最後に、第3世代は、次のことができるインテリジェントロボットです。

  • 情報を要約して分析し、
  • 改善して自習し、スキルと知識を蓄積し、
  • イメージと状況の変化を認識し、これに従って、エグゼクティブシステムの作業を構築します。

の中心に 人工知能アルゴリズムとソフトウェアがあります。

一般的分類

現代の代表的なロボット展示会では、さまざまな「スマート」マシンが一般の人々だけでなく専門家も驚かせることができます。 どんなロボットがありますか? 最も一般的で意味のある分類は、ソビエトの科学者AEKobrinskyによって提案されました。

ロボットは、その目的と機能に応じて、生産産業用ロボットと研究用ロボットに分類されます。 最初のものは、実行される作業の性質に応じて、技術的、持ち上げおよび輸送、普遍的または専門的である可能性があります。 研究プロジェクトは、人間が危険またはアクセスできない領域と球体(宇宙空間、地球の内部と火山、世界の海の深海層)を研究するように設計されています。

制御のタイプに応じて、バイオテクノロジー(コピー、コマンド、サイボーグ、インタラクティブ、自動)は、厳密にプログラムされ、適応性があり、柔軟にプログラムされるという原則に従って区別できます。 現代の技術の急速な発展は、開発者にインテリジェントマシンの設計におけるほぼ無限の可能性を提供します。 しかし、優れた回路および設計ソリューションは、適切なソフトウェアとアルゴリズムのサポートがなければ、高価なシェルとしてのみ機能します。

マイクロプロセッサのシリコンがロボットの脳の機能を引き継ぐためには、適切なプログラムを水晶に「充填」する必要があります。 通常の人間の言語では、タスクの明確な形式化、論理的評価の正確性と信頼性を提供することはできません。 したがって、必要な情報は、ロボットプログラミング言語を使用して特定の形式で提示されます。

解決すべき制御の問題に応じて、このような特別に作成された言語の4つのレベルが区別されます。

  • 最も低いレベルは、インテリジェントシステムの個々のリンクの線形または角変位の正確な値の形でアクチュエータドライブを制御するために使用されます、
  • マニピュレータレベルでは、 ゼネラルマネジメントシステム全体、ロボットの作業体を座標空間に配置し、
  • 操作のレベルは、形成するために使用されます 作業プログラム、特定の結果を達成するために必要なアクションのシーケンスを指定することによって。
  • 最高レベル(割り当て)では、詳細のないプログラムが何をする必要があるかを示します。

ロボット工学は、プログラミングロボットを高級言語で通信するように減らすことを目指しています。 理想的には、オペレーターは「車の内燃エンジンを組み立てる」というタスクを設定し、ロボットがタスクを完了することを期待します。

言語のニュアンス

現代のロボット工学では、ロボットプログラミングはロボット指向プログラミングと問題指向プログラミングの2つのベクトルに沿って発展します。

最も一般的なロボット言語はAMLとALです。 1つ目は、IBMが自社生産のインテリジェントなメカニズムを制御するためだけに開発したものです。 2番目の-スタンフォード大学(米国)の専門家の製品-は活発に開発されており、このクラスの新しい言語の形成に大きな影響を与えています。 専門家は、PascalとAlgolの特徴を言語で簡単に見分けることができます。 すべてのロボット指向の言語は、「スマート」マシンによる一連のアクションとしてアルゴリズムを記述します。 この点で、プログラムはしばしば非常に面倒で実際の実装に不便です。

問題指向の言語でロボットをプログラミングする場合、プログラムはアクションのシーケンスではなく、オブジェクトの目標または中間位置のシーケンスを指定します。 このセグメントで最も人気のある言語はAUTOPASS言語(IBM)であり、作業環境の状態がグラフの形式で表されます(頂点はオブジェクト、円弧はリンク)。

ロボットトレーニング

現代のロボットはどれも学習と適応システムです。 知識やスキルを含むすべての必要な情報は、学習プロセスで彼女に送信されます。 これは、対応するデータをプロセッサのメモリに直接入力すること(詳細なプログラミング-サンプリング)と、ロボットのセンサーを使用すること(視覚的なデモンストレーションによる)の両方によって実行されます-ロボットのメカニズムのすべての動きと動きがメモリに記録され、作業サイクル。 学習、システムはそのパラメータと構造、フォームを再構築します 情報モデル外の世界。 これが、ロボットと自動化ライン、堅固な構造の産業用機械、その他の従来の自動化ツールの主な違いです。 記載されている教授法には重大な欠点があります。 たとえば、サンプリングの場合、再調整には資格のある専門家の一定の時間と労力が必要です。

研究所の開発者によって提示されたロボットをプログラミングするためのプログラムは非常に有望に見えます。 情報技術マサチューセッツ工科大学(CSAIL MIT)の産業オートメーションおよびロボット工学の国際会議ICRA-2017(シンガポール)で。 彼らが作成したC-LEARNプ​​ラットフォームには、両方の方法の利点があります。 これは、指定された制約(たとえば、パーツの形状と剛性に応じたマニピュレータの把持力)を使用した基本的な動きのライブラリをロボットに提供します。 同時に、オペレーターは3次元インターフェースでロボットに重要な動きを示します。 システムは、目前のタスクに基づいて、作業サイクルを実行するための一連の操作を生成します。 C-LEARNでは書き直すことができます 既存のプログラム異なるデザインのロボット用。 これには、オペレーターがプログラミングに関する深い知識を持っている必要はありません。

ロボット工学と人工知能

オックスフォード大学は、今後20年間で、機械技術が今日の仕事の半分以上に取って代わると警告しています。 確かに、ロボットは危険で困難な領域だけでなく、長い間働いてきました。 たとえば、プログラミングは世界の取引所で人間のブローカーを大幅に置き換えました。 人工知能について一言。

素人の心の中では、これは人生の多くの分野で人を置き換えることができる擬人化ロボットです。 これは部分的には真実ですが、人工知能は、より多くの場合、科学技術の独立した部門であり、 コンピュータープログラム彼の脳の働きである「ホモ・サピエンス」の思考をモデル化しています。 開発の現段階では、AIは人々をより助け、楽しませています。 しかし、専門家によると、ロボット工学と人工知能の分野でのさらなる進歩は、人類に多くの道徳的、倫理的、法的な問題を提起する可能性があります。

ジュネーブで開催された今年のロボットショーで、最先端のアンドロイドであるソフィアは、人間になることを学んでいると語った。 10月、ソフィアは人工知能の歴史の中で初めて、完全な権利を持つサウジアラビアの市民として認められました。 最初のツバメ?

ロボット工学の主な傾向

2017年、デジタル業界の専門家はいくつかの優れたテクノロジーソリューションを認めました バーチャルリアリティ..。 ロボット工学も脇に立っていませんでした。 仮想ヘルメット(VR)を介して複雑なロボットメカニズムの制御を改善する方向性は非常に有望に見えます。 専門家は、ビジネスや産業におけるそのような技術の需要を予測しています。 考えられるユースケース:

  • 無人車両(倉庫のローダーとマニピュレーター、ドローン、トレーラー)の制御、
  • 医学研究と外科、
  • 到達困難な物体や領域(海底、極域)の開発。 さらに、プログラミングロボットにより、ロボットは自律的に動作することができます。

もう1つの人気のトレンドはコネクテッドカーです。 最近では、巨大なAppleの代表者が、独自の「ドローン」の開発の開始を発表しました。 交差する道路を独立して移動し、貨物や設備を維持できる機械を作ることに関心を示す企業がますます増えています。

ロボットと機械学習をプログラミングするためのアルゴリズムの複雑さが増すと、計算リソース、ひいてはハードウェアへの要求が高まります。 どうやら、この場合の最善の方法は、デバイスをクラウドインフラストラクチャに接続することです。

重要な分野は認知ロボティクスです。 「スマート」マシンの数が急増しているため、開発者はロボットにスムーズな相互作用を教える方法についてますます考えさせられています。

プログラマーはプログラミングで稼ぐことができますが、既存のAIはAIではなく、どんなラッパーが彼らに掛けられても。 私が提案するオプションは、この問題を解決することができます。

調査の結果、「人工知能」というフレーズを曖昧すぎるために使用することをやめ、別の定式化に至りました。それは、考えられるすべてのタスクを解決するために見つかった結果の独立した学習、調査、および適用のためのアルゴリズムです。

AIとは何かについて多くのことが書かれています。 私は、「AIとは何か」ではなく、「なぜAIが必要なのか」という別の質問をします。 たくさんのお金を稼ぐためにそれが必要です。それから、コンピューターが私のためにやりたくないことをすべてやってくれて、宇宙船を作って星に飛ぶのです。

そこで、ここでは、コンピューターに私たちの欲求を満たす方法を説明します。 意識がどのように機能するか、自己認識とは何か、考えることや推論することの意味についての説明や言及をここで見ることを期待しているなら、これはここではありません。 考えることはコンピューターについてではありません。 コンピューターは、プログラムを計算、計算、および実行します。 それでは、私たちの欲望を実現するために必要な一連の行動を計算できるプログラムを作成する方法を考えてみましょう。

私たちのタスクがどのような形でコンピューターに入るのか(キーボード、マイク、または脳に埋め込まれたセンサーから)これは重要ではなく、二次的な問題です。 コンピューターにテキストで書かれた欲求を満たさせることができれば、その後、タスクを割り当てて、マイクを介して、欲求も満たすプログラムを作成することができます。 画像解析も不要です。

AIが画像と音声を認識できるように作成されるためには、そのようなアルゴリズムを最初に含める必要があると主張することは、それらを作成したすべての人がそのようなプログラムがどのように機能するかを誕生から知っていたと主張するようなものです。

公理を定式化しましょう:
1.世界のすべては、いくつかのルールに従って計算することができます。 (エラーについては後で詳しく説明します)
2.ルールに従った計算。これは、結果が初期データに明確に依存していることです。
3.明確な依存関係は統計的に見つけることができます。
そして今、ステートメント:
4.テキストの説明をルールに変換する機能があります。これにより、ずっと前に見つかった知識を検索する必要がなくなります。
5.タスクをソリューションに変換する機能があります(これは私たちの欲求の実現です)。
6.任意のデータ予測ルールには、他のすべてのルールと機能が含まれます。

これをプログラマーの言語に翻訳しましょう:
1.世界のすべては、いくつかのアルゴリズムを使用して計算できます。
2.アルゴリズムは、初期データを繰り返すときに常に同じ結果を返します。
3.初期データとその結果の例が多数あり、検索時間が無限である場合、初期データと結果のこの依存関係を実装する可能性のあるアルゴリズムのすべてのセットを見つけることができます。
4.テキストの説明をアルゴリズム(またはその他の情報データ)に変換するためのアルゴリズムがあります。誰かがすでにそれらを見つけて説明している場合、必要なアルゴリズムを統計的に検索しないようにするためです。
5.テキストであれ音声であれ、私たちの欲求が物理的かつ必要な時間枠内で実現されれば、私たちの欲求を満たすプログラムを作成することができます。
6.新しいデータが到着したときに予測し、予測することを学ぶことができるプログラムを作成することに成功した場合、無限の時間が経過すると、そのようなプログラムには、私たちの世界で可能なすべてのアルゴリズムが含まれます。 さて、時間が無限ではない場合、実際の使用のために、そして何らかのエラーを伴って、それは第5節または他のプログラムのアルゴリズムを実行することを強制される可能性があります。

それでも、私見:
7.ルールを列挙して検索し、予測で統計的にチェックする以外に、完全に独立した、または人から独立した学習方法は他にありません。 そして、あなたはこのプロパティの使い方を学ぶ必要があります。 この特性は、脳の働きの一部です。

何を予測する必要がありますか。 誕生から、情報の流れが人間の脳に流れ始めます-目、耳、触覚などから。そしてすべての決定は以前に受け取ったデータに基づいてそれによって行われます。 類推すると、入力のあるプログラムを作成します 新情報各1バイト-入力バイトストリーム。 以前に受け取ったものはすべて、1つの連続したリストの形式で表示されます。 0から255まで、外部情報が来て、255以上が特別なコントロールマーカーとして使用されます。 それら。 入力を使用すると、たとえば、最大0xFFFFの数値の次元を書き込むことができます。 そして、以前に受信したデータに基づいて予測する方法を学ぶ必要があるのは、このフロー、つまり次に追加される情報量です。 それら。 プログラムは、次に何が追加されるかを推測しようとする必要があります。

もちろん、データを表示するための他のオプションも可能ですが、入力でさまざまな形式を受信する目的で、説明付きのさまざまなhtmlをプッシュするだけです。これが最適な方法です。 マーカーは最適化の目的でエスケープシーケンスに置き換えることができますが、説明はあまり便利ではありません。 (また、すべてがUTFではなくASCIIであるとしましょう)。

それで、最初に、出生時のように、私たちは説明付きのインターネットページを一列に並べて、新しいテキストのマーカーでそれらを区切ります- -このブラックボックスがすべてを連続して学習するようにします。 タグでマーカーを指定しますが、それらはある種の一意の番号であると想定されています。 一定量のデータが通過した後、コントロールマーカーを使用して受信情報の操作を開始します。

予測とは、パターンがすでにどのようなものであるかを知っているだけでなく、常に新しいパターンを検索するアルゴリズムを意味します。 したがって、シーケンスを送信すると


天井
、それから彼はマーカーの背後にあるものを理解する必要があります 以前に指定されたオブジェクトの色に従い、省略記号のポイントで最も可能性の高い天井の色を予測します。

これらのタグ内でどの関数を適用する必要があるかを彼が理解できるように、私たちは彼にいくつかの例を繰り返しました。 そしてもちろん、色自体は発明すべきではありませんが、予測のパターンを計算して独自に研究することで、すでにそれを知っているはずです。

アルゴリズムからの回答が必要な場合、前のステップの予測が次のステップの入力に送られます。 自動予測のタイプ(自己相関という言葉との類推による)。 同時に、新しいシーケンスを検索する機能をオフにします。

別の例として、最初のマーカーの後に質問を示し、2番目のマーカーに答えを示してから、このアルゴリズムを超メガクールにすると、最も難しい質問にも答えを出すことができます。 繰り返しますが、すでに研究された事実の範囲内です。

予測エンジンにフィードされた制御トークンを使用して、さまざまなトリックを考え、必要な関数を取得できます。 このプロパティのアルゴリズムの理論的根拠について読むのがつまらない場合は、コントロールマーカーを使用して次の例までスクロールできます。

このブラックボックスは何でできていますか? まず、常に、すべての状況で100%の予測を行うことは不可能であることに言及する価値があります。 一方、結果が常にゼロの場合、これは同じ予測になります。 絶対に100パーセントの誤差がありますが。 次に、どの確率、どの数、どの数が続くかを計算してみましょう。 番号ごとに、最も可能性の高い次の番号が決定されます。 それら。 少し予測できます。 これは非常に長い旅の最初のステップです。

アルゴリズムに従った結果への初期データの明確なマッピング。これは、アルゴリズムの定義が入力データと出力データの数と場所に確実性を課さないことを除いて、単語関数の数学的定義に対応します。 ほんの一例として、小さなプレートがあるとします。オブジェクトは色であり、そこに多くの線を入力します。空は青、草は緑、天井は白です。 これは小さなローカルの明確なマッピング関数です。 そして、実際には色が間違っていることは珍しくありません-独自の他のテーブルがあります。 そして、何かの記憶されたプロパティを含むデータベースは関数のセットであり、オブジェクト識別子をそれらのプロパティにマップします。

簡単にするために、さらに多くの状況では、特に指定がない限り、アルゴリズムという用語の代わりに、1パラメーターなどの関数という用語を使用します。 そして、そのような言及のすべての種類、あなたはあなたの頭の中でアルゴリズムへの拡張性を意味する必要があります。

そして、おおよその説明、tkを与えます。 実際には、私は今のところこれらすべてを実現します...しかしそれはすべて論理的です。 また、すべての計算は係数によって実行され、真または偽ではないことに留意する必要があります。 (おそらく、それが真と偽であると明示的に述べられている場合でも)。

すべてのアルゴリズム、特に整数を操作するアルゴリズムは、多くの条件とそれらの間の遷移に分解できます。 加算、乗算などの演算も、条件と遷移からサブアルゴリズムに分解されます。 また、結果演算子。 これはreturnステートメントではありません。 条件演算子は、どこかから値を取得し、それを定数と比較します。 そして、結果演算子はどこかに定数値を追加します。 テイクまたはフォールドの位置は、基点またはアルゴリズムの前のステップのいずれかを基準にして計算されます。

Struct t_node(int type; // 0-条件、1-結果の共用体(struct(//条件演算​​子t_node * source_get; t_value * compare_value; t_node * next_if_then; t_node * next_if_else;); struct(//結果演算子t_node * dest_set ; t_value * result_value;);));
vskidkでは、そのようなもの。 そして、そのような要素からアルゴリズムが構築されます。 すべての推論の結果として、より複雑な構造が判明します。これは最初のプレゼンテーション用です。

各予測点は、いくつかの関数に従って計算されます。 その時点でのその関数の適用可能性をテストする条件が関数に付加されます。 一般的な連結は、false(該当なし)または関数計算の結果のいずれかを返します。 また、フローの継続的な予測は、すでに発明されたすべての機能の適用可能性と、それらの計算(真の場合)の段階的なチェックです。 そして、各ポイントについてもそうです。

適用条件に加えて、距離もあります。 初期データと最終データでは、この距離も異なり、条件によって同じ機能が適用されます。 (そして、条件から初期または予測されたものまでが同じ距離であるということを意味しますが、説明するときは省略します。距離は動的です)。

多数の関数が蓄積されると、これらの関数の適用可能性をテストする条件の数が増加します。 ただし、多くの場合、これらの条件はツリーの形で配置でき、関数のセットは対数依存性に比例して切り捨てられます。

それが行くとき 初期作成そして関数の測定、そして結果演算子の代わりに、実際の結果の分布の蓄積があります。 統計を蓄積した後、分布を最も可能性の高い結果に置き換え、関数の前に条件を付け、結果の最大確率について条件をテストします。

これは、相関の単一の事実の検索です。 そのようなシングルをたくさん集めてきたので、私たちはそれらをグループにまとめようとしています。 見分けることができる 一般的なコンディション元の値から結果までの合計距離。 また、このような条件や距離で、初期値が繰り返される場合など、結果が広く分布していないことを確認します。 それら。 既知の頻繁な使用では、それは非常に同一です。

同一性係数。 (これは双方向のアイデンティティです。しかし、多くの場合、単方向です。後で式を再考します。)
各XYペアの数は二乗され、合計されます。
除算:各X値の2乗された数量の合計に、Yの2乗された数量の合計から配当を差し引いたもの。
それら。 SUM(XY ^ 2)/(SUM(X ^ 2)+ SUM(Y ^ 2)-SUM(XY ^ 2))。
この係数は0から1です。

そしてその結果、何が起こるか。 私たちは、これらの条件と距離の下で、これらの事実が明白であることを高頻度の事実で確認しました。 そして、残りのまれなもの(しかし、合計すると、頻繁なものよりもはるかに多くなります)には、これらの条件で頻繁に遭遇する事実と同じエラーがあります。 それら。 これらの条件での事実の単一の発生に基づいて予測ベースを蓄積することができます。

知識ベースがあるようにしましょう。 空はしばしば青く、どこかで熱帯の珍しいゴミが灰色がかった茶色の深紅色であることがわかりました。 そして彼らは覚えていた、tk。 ルールを確認しました-信頼できます。 そして、その原則は、中国語であろうと外国人であろうと、言語に依存しません。 そして後で、翻訳規則を理解した後、1つの関数が異なる言語から組み立てられることができることを理解することが可能になります。 知識ベースはアルゴリズムの形式でも表すことができることを考慮に入れる必要があります。初期値がそのようなものである場合、結果の値はそのようなものです。

さらに、他のルールの列挙の結果として、さまざまな配置と条件で、すでに見られたアイデンティティが生じることがわかります。 そして今、アイデンティティを確認するために大規模なベースを収集する必要はありません。ダースの単一のファクトを収集するだけで十分であり、この10以内で、マッピングが前の関数と同じ値で発生することがわかります。 それら。 同じ機能が異なる条件で使用されます。 このプロパティは、異なる式を使用した説明で同じプロパティを説明できるという事実を形成します。 また、インターネットページの表にそれらを簡単にリストできる場合もあります。 さらに、この関数に関する事実の収集は、いくつかのユースケースで実行できます。

機能に関して考えられるさまざまな条件や配置が蓄積されており、それらのパターンを見つけることもできます。 選択規則が異なる機能で類似しており、一部の機能(たとえば、単語を識別するプロパティやテーブルのタイトル)のみが異なることは珍しくありません。

一般に、1パラメーター関数の束に出くわしました。 そして今、単一の事実から1つのパラメーターの事実への形成のように、ここでも、部分と距離の部分に従って1つのパラメーターの条件をグループ化しようとします。 共通する部分は新しい条件であり、異なる部分は新しい関数の2番目のパラメーターである2パラメーターです。最初のパラメーターは1パラメーターパラメーターになります。

誰もが 新しいパラメータマルチパラメーターのものの場合、単一のファクトから1つのパラメーターのファクトへの形成と同じ線形性で検出されます(まあ、またはほぼ同じ)。 それら。 N-パラメトリックを見つけることはNに比例します。それは、多くのパラメーターを求めて努力することで、ほとんど神経グリッドになります。 (誰でも理解したいです。)

変換関数。

もちろん、ロシア語から英語への小さな翻訳テキストなど、対応する例がたくさん提供されたときは素晴らしいことです。 そして、あなたはそれらの間のパターンを見つけようとすることを始めることができます。 しかし実際には、それはすべて情報の入力ストリームに混同されています。

そのため、1つの関数と、データ間のパスが見つかりました。 2番目と3番目。 それでは、それらのいずれかで、それらの間のパスに共通する部分を見つけることができるかどうかを見てみましょう。 構造X-P1-(P2)-P3-Yを見つけてみてください。 次に、X-P1とP3-Yは似ているが、P2が異なる、他の似たような構造を見つけます。 そして、その間に依存関係がある複雑な構造を扱っていると結論付けることができます。 そして、見つかったルールのセットから中央部分を除いたものがグループに結合され、変換関数と呼ばれます。 このようにして、翻訳、コンパイル、およびその他の複雑なエンティティの機能が形成されます。

ここでは、ロシア語のテキストと、なじみのない言語への翻訳が記載されたシートを取ります。 自習マニュアルがなければ、これらのシートから翻訳ルールの理解を見つけることは非常に困難です。 しかし、それは可能です。 そして、あなたがするのとほぼ同じ方法で、それは検索アルゴリズムに形式化される必要があります。

単純な関数を理解したら、スケッチが外れるまで変換検索について議論を続けます。これは同じであると理解できます。

関数の統計的検索に加えて、ルールへの変換関数(読み取り関数)を使用して、説明から関数を作成することもできます。 読書機能の最初の作成に関する統計は、インターネット上の教科書に豊富にあります-説明とそれらの説明の例に適用される規則との相関関係。 それら。 検索アルゴリズムは、初期データとそれらに適用されたルールの両方を同じ方法で確認する必要があることがわかります。 すべては、アクセスタイプに関して同種のデータグラフに配置する必要があります。 同じ原則から、正反対に、内部ルールを外部記述または外部プログラムに変換するためのルールが存在する可能性があります。 また、システムの理解、システムが知っていることと知らないことを形成するために、回答を要求する前に、システムが回答を知っているかどうかを尋ねることができます-はいまたはいいえ。

私が話した関数は、実際には見つけることができる単一のアルゴリズムではなく、他の一連の関数で構成することができます。 これは、プロシージャコールではなく、Linuxでパイプを操作するなどの一連の変換です。 たとえば、単語やフレーズを一度に予測することを大まかに説明しました。 ただし、シンボルのみの予測を取得するには、この1つのシンボルを取得する機能をこのフレーズに適用する必要があります。 または、機能は英語でのタスクとロシア語での技術的割り当てを理解することを学びました。 次に、RussianTZ->英語に翻訳-> TZonEnglishを実行->結果。

関数は定義で固定されていない可能性があり、追加情報が利用可能になったとき、または条件が完全に変化した場合に再定義または再定義される可能性があります-変​​換関数は有限ではなく、さらに時間の経過とともに変化する可能性があります。

また、確率の推定は、異なる関数(タイプの形式または確認)での1つのセットの繰り返しの影響を受けます。

また、インターネットページではなく、実世界のかなりの数のセットが順序付けられており、場合によっては連続的であるか、セットの他の特性を備えているため、確率の計算が改善されます。

例を使用して見つかったルールを直接測定することに加えて、ルール分類子のような他の評価方法の存在を想定しています。 そしておそらくこれらの分類器の分類器。

より多くのニュアンス。 予測には2つのレベルがあります。 見つかったルールのレベルと新しいルールの検索のレベル。 しかし、新しいルールの検索は、基本的に同じプログラムであり、独自の基準があります。 そして、私は(まだ考えていませんが)すべてがもっと簡単になる可能性があることを認めます。 必要なのはゼロレベルです。これは、すべての多様性で可能な検索アルゴリズムを検索し、最終的なルールを作成します。 または、一般的にマルチレベルの再帰またはフラクタルである可能性があります。

コントロールマーカーに戻りましょう。 アルゴリズムに関するこれらすべての議論の結果、これらの議論を通じて、このブラックボックスからシーケンスを続行し、類似性によって決定された関数に従って計算を発行するように要求することがわかりました。 前に示したようにやりたいです。

このメカニズムで関数を定義する別の方法があります。定義を通じて関数を発行することです。 例えば:
英語に翻訳する テーブル テーブル
質問に答えて 空の色
TKプログラムを作成する 人工知能が欲しい ...

問題を解決するためのこのシステムの使用は、次のアルゴリズムで構成されています。 タスクを記述するための特別な識別子の定義について説明します。 次に、タスクの説明を作成し、それに新しい識別子を割り当てます。 許可されるアクションについて説明します。 たとえば、(実用的ではありませんが)直接プロセッサコマンドはインターネットからの記述であり、マニピュレータはコンピュータに接続されており、ポートを介して制御できます。 その後、問題を識別子で参照しながら、問題を解決に近づけるために次に何を行う必要があるかをシステムに尋ねることができます。 また、アクションをさらに計算するために必要な追加情報(一般的な知識や問題の解決の現状に関する情報)が必要かどうかを毎回尋ねます。 また、アクションのリクエストと情報のリクエストを外部ループでループします。 このスキーム全体はテキスト定義に基づいて構築されているため、定義によって取得された関数を使用して起動できます。 そして、出力は単なるコマンドです-テキストの複数の確率の問題は消えます。 必要な予測の規模の問題は現在議論されていません-必要かつ十分な予測機能があれば、それは論理的に機能するはずです。

AIの誰かが問題を解決する方法ではなく、人のいくつかの特性を見つけた場合、人間の行動や資質も計算され、予測可能であると言えます。 そして、文献には、これまたはその特性についての十分な説明があります。 したがって、システムで必要なプロパティを記述すると、知識の及ぶ限りそれをエミュレートします。 そして、それは抽象的な平均的な行動を再現するか、特定の性格を参照して再現します。 まあ、またはあなたが望むなら、あなたはそれを定義するならば、あなたは超知能を起動することを試みることができます。

しばらくすると何が起こるかを予測できます。 オブジェクトは速度と加速度、および時間の経過とともに何かに起こりうるその他のあらゆる種類の変化に伴って移動します。 スペースも予測できます。 たとえば、なじみのない部屋に入ると、テーブルがあり、その部屋の隅の1つが1枚の紙で覆われています。 この角は見えませんが、他の角と同じ長方形である可能性が高く(丸みを帯びていない)、この角の色は他の角と同じであると精神的に予測できます。 もちろん、スペースの予測はエラーで発生します-突然、テーブルの隅がかじられ、その上にペンキの汚れがあります。 しかし、時間的プロセスの予測にも常に誤差があります。 地面での自由落下の加速度は常に9.81であるとは限りませんが、海抜と隣接する山の高さに依存します。 また、測定器を完全に正確にすることはできません。 それら。 時間内の空間とプロセスの予測は常にエラーで発生し、予測されるエンティティが異なればエラーも異なります。 しかし、本質は同じです-アルゴリズムは統計的に見つかりました。

バイトストリームを予測することは、情報空間を予測することに似ていることがわかります。 空間と時間の両方をエンコードします。 そこにはある種の構造があります-プログラムの一部があるようにしましょう。 プログラムのこの部分は、テーブルと同じように、予測されたスペースです。 この構造を予測するための一連のルールは、この構造のルールによって形成されます-次のようなもの 正規表現..。 これらの構造の構造を決定するために、単一の値ではなく、許容値のセットに対して予測が計算されます。 アルゴリズムの説明の時点では、アルゴリズム内の構造の役割の分離性にまだ気付いていなかったため、そこに到達しませんでした。 しかし、このプロパティを追加することで、画像の完全な理解が形成され、時間の経過とともにそれを書き直そうとします。 構造とは、条件付きで拡張可能であることを意味することに注意してください。そのようなプロパティにそのような値がある場合は、別のプロパティの束が追加されます。

一般に、私たちの世界で可能なことはすべて、タイプ、構造、変換、およびプロセスによって記述されます。 そして、これらすべてのプロパティは、予測の結果として見つかったルールの対象となります。 脳は同じことをしますが、正確な方法ではありません。 彼はアナログデバイスです。

彼はそのような課題を設定せずに意図的に研究を求めますか? いいえ、彼には自分の欲望はなく、仕事しかありません。 私たちが自分の欲望や利益の実現に責任があるという事実、私たちはそれを人と呼びます。 コンピュータでパーソナリティをプログラムすることも可能です。 そして、それが人間に似ているのか、それともある種のコンピューターのアナログに似ているのか-しかし、それはまだただの仕事のままです。

そして、アートにおける私たちの創造的な活動は同じ研究であり、私たちの感情、感情、精神に影響を与えるエッセンスだけが検索されます。

そのようなプログラムを作成する方法についての最終的な指示はまだありません。 アルゴリズム自体と使用法(およびテキストの多分散性)の両方について、多くの質問があります。 時間の経過とともに、説明をさらに明確にして詳細に説明します。

予測を実装するための代替の方向性は、リカレントニューラルネットワーク(たとえば、Elmanのネットワーク)の使用です。 この方向では、予測の性質について考える必要はありませんが、それ自体に多くの困難とニュアンスがあります。 しかし、この方向性が実装されている場合、残りの使用法は同じままです。

記事の結論:
1.予測は、考えられるすべてのアルゴリズムを見つける方法です。
2.予測入力の操作を使用して、これらのアルゴリズムをそこから引き出すことができます。
3.このプロパティは、コンピューターとの通信に使用できます。
4.このプロパティは、あらゆる問題を解決するために使用できます。
5. AIはあなたがそれを定義する方法であり、一度定義されると、それは問題として解決することができます。

力ずくでパターンを見つけるのに時間がかかりすぎると言う人もいます。 対照的に、私は子供が数年間話すことを学ぶと言うことができます。 数年でいくつのオプションを計算できますか? 見つかった既製のルールは迅速に適用され、人間よりもコンピューターの方がはるかに高速に適用されます。 しかし、あちこちで新しいものを探すのは長い時間ですが、コンピューターが人よりも長持ちするかどうかは、そのようなアルゴリズムを作るまでわかりません。 また、ブルートフォースは見事に並列化されており、この目的で自宅のPCの電源を入れる愛好家は何百万人もいます。 そして、これらの数年はまだ百万で割ることができることがわかりました。 そして、人間の同様のプロセスとは対照的に、見つかったルールは他のコンピューターによって即座に研究されます。

他の人は、並列化を標的とする脳には何十億もの細胞があると主張し始めるでしょう。 それでは、教科書のない例を使って外国語を学ぼうとするときに、これらの数十億はどのように使われるのでしょうか。 人は長い間プリントアウトの上に座って、相関する単語を書きます。 同時に、1台のコンピューターが一瞬でバッチでそれを行います。

そして画像分析-十数個のビリヤードボールを動かし、衝突がいくつあるかを数えます。 (音から遮断されます)。 そして、2ダースまたは3 ...そして何十億もの細胞はどこにありますか?

一般に、脳の速度とその多重並列性は非常に物議を醸す問題です。

思考コンピュータを作ることを考えるとき、あなたは人が彼の人生の間に学んだことをそれにコピーし、理解しようとはしませんが、これが最初のプログラムから蓄積することを可能にするメカニズムは何ですか? そして、これらのメカニズムは形式論理学の公理に基づいていません。 しかし、数学と統計では。

PPS:私の意見では、人工知能の科学的な定義はありません。 サイエンスフィクションしかありません。 そして、現実が必要な場合は、記事の結論の段落5を参照してください。

PPPS:記事を書いた後、私はずっと後に多くの異なる解釈を理解しました。 質問と回答の関係を見つけることは概算であるとしましょう。 または、検索プロセスで見つかったさまざまな予測関数から目的の関数を引き出すためのより正確な科学的定義は何ですか。 理解の小さな瞬間ごとに個別の記事を書くことはできませんが、それらを1つの見出しにまとめることができないため、一般的にすべてについて書くことはできません。 そして、これらすべての理解は、コンピュータコンピューティングの能力から、尋ねられた質問に対する答えを得る方法の答えを与えます。たとえば、ワトソンプロジェクトの場合のように、既存の説明でその答えを常に読み取ることができるとは限りません。 1つの言及、または指のフリックが、それから求められていることを理解して実行しようとするプログラムを作成する方法。

いつかそのようなプログラムが行われるでしょう。 そして、彼らはそれを別のガジェットと呼ぶでしょう。 AIではありません。

****
このトピックに関する情報源、およびプレゼンテーションのさらなる開発は、Webサイトで見つけることができます。

人工知能がうまく開発されているのに、それに対する「正しい」定義がまだないのはどうしてですか? ニューロコンピューターに期待が寄せられなかったのはなぜですか。人工知能の作成者が直面している3つの主なタスクは何ですか。

これらの質問やその他の質問に対する答えは、人工知能の分野で国内をリードする専門家の1人であるABBYYの技術開発部門のディレクターであるKonstantinAnisimovichのスピーチに基づいて書かれたカットの下の記事にあります。
彼の個人的な参加により、製品で使用されるドキュメント認識テクノロジーが作成されました ABBYY FineReaderおよびABBYYFormReader。 Konstantinは、Mail.Ruテクノパークの学生向けのマスタークラスの1つで、AI開発の歴史と基礎について話しました。 マスタークラスの資料が一連の記事の基礎となりました。

ループには合計3つの投稿があります。
プログラマーのための人工知能

知識獲得:知識工学と機械学習

AIアプローチの浮き沈み

1950年代以降、人工知能の作成の分野では、記号計算とコネクショニズムという2つのアプローチが登場しました。 記号計算は人間の思考のモデル化に基づく方向性であり、コネクショニズムは脳の構造のモデル化に基づいています。

記号計算の分野における最初の進歩は、50年代に作成されたLisp言語と、論理的推論の分野におけるJ.Robinsonの研究でした。 コネクショニズムでは、これはパーセプトロンの作成でした。これは、ニューロンの動作をシミュレートする自己学習型線形分類器です。 さらに目覚ましい成果は、主に象徴的なパラダイムに沿ったものでした。 特に、これらは知覚心理学の分野におけるシーモア・ピパートとロバート・アントン・ウィンソンの作品であり、もちろん、マービン・ミンスキーのフレームです。

70年代に、最初の アプリケーションシステム人工知能の要素を使用する-エキスパートシステム。 その後、多層ニューラルネットワークの出現とバックプロパゲーション法を使用してそれらを学習するためのアルゴリズムにより、コネクショニズムの特定のルネッサンスがありました。 80年代の趣味 ニューラルネットワークただ一般的でした。 このアプローチの支持者は、人間の脳のように機能するニューロコンピューターを作成することを約束しました。

しかし、実際のニューロンは多層ニューラルネットワークの基礎となる正式なニューロンよりもはるかに複雑であるため、これについて特別なことは何も起こりませんでした。 また、人間の脳内のニューロンの数も、ニューラルネットワークで許容できる数よりもはるかに多くなっています。 多層ニューラルネットワークが適していることが判明した主なものは、分類問題の解決です。

人工知能で次に人気のあるパラダイムは機械学習でした。 このアプローチは1980年代後半に急速に発展し始め、今日までその人気を失っていません。 機械学習の開発に大きな推進力が与えられたのは、インターネットと 多数アルゴリズムのトレーニングに使用できる、すぐに利用できるさまざまなデータ。

人工知能の設計における主な課題

これらのタスクが人工知能に関連している理由を分析できます。 彼らに共通しているのは、よく知られた、明確に定義された決定手順がないことです。 この点で、実際、AIに関連する問題は、コンパイル理論や計算数学の問題とは異なります。 インテリジェントシステムは、問題に対する次善の解決策を探しています。 人工知能によって発見された解決策が厳密に最適であることを証明または保証することは不可能です。 それにもかかわらず、ほとんどの実際的な問題では、次善の解決策がすべての人に適しています。 さらに、人が問題を最適に解決することは実際には決してないことを覚えておく必要があります。 むしろ、その逆が当てはまります。

非常に重要な質問が発生します。AIは、解決アルゴリズムがない問題をどのように解決できるのでしょうか。 重要なのは、人と同じようにそれを行うことです。つまり、もっともらしい仮説を立ててテストすることです。 当然、仮説を進めて検証するには知識が必要です。

知識は、インテリジェントシステムが動作する主題領域の説明です。 自然言語の記号を認識するシステムに直面している場合、知識には、記号のデバイス、テキストの構造、および言語の特定のプロパティの説明が含まれます。 それが顧客の信用格付けシステムである場合、顧客のタイプに関する知識と、顧客のプロファイルが潜在的な破産にどのように関連しているかについての知識が必要です。 知識には、主題分野と解決策の検索(メタ知識)の2つのタイプがあります。

インテリジェントシステムを設計する主なタスクは、知識を表現する方法、知識を取得する方法、および知識を適用する方法の選択に限定されます。

知識表現

知識を表現する主な方法は、宣言型と手続き型の2つです。 宣言的知識構造化または非構造化形式で表示できます。 構造化ビューは、フレームベースのアプローチの一種です。 セマンティックネットワークまたは形式文法。フレームの種類と見なすこともできます。 これらの形式の知識は、オブジェクトのセットとそれらの間の関係として表されます。


非構造化ビューは通常、分類問題の解決に関連する領域で使用されます。 これらは通常、重み、確率などの推定値のベクトルです。

知識の構造化された表現のほとんどすべての方法は、フレームの形式に基づいています。これは、MITのマービンミンスキーが1970年代に導入した、空間シーンの知覚のための知識の構造を示しています。 結局のところ、このアプローチはほとんどすべてのタスクに適しています。

フレームは、名前とスロットと呼ばれる個々のユニットで構成されます。 スロット値は、別のフレームへの参照になることができます...フレームは、別のフレームの子孫であり、そこからスロット値を継承することができます。 この場合、子は祖先のスロットの値をオーバーライドして、新しい値を追加できます。 継承は、説明をよりコンパクトにし、重複を避けるために使用されます。

フレームとオブジェクト指向プログラミングの間に類似点があることは簡単にわかります。オブジェクトはフレームに対応し、フィールドはスロットに対応します。 フレームはOOPのソースの1つであったため、類似性は偶然ではありません。 特に、最初のオブジェクト指向言語の1つであるSmall Talkは、オブジェクトとクラスのフレーム表現をほぼ正確に実装していました。

にとって 手続き型プレゼンテーション知識中古製品または生産ルール。 生産モデルは、知識を条件アクション文の形式で表現できるようにするルールベースのモデルです。 このアプローチは、以前は さまざまなシステム診断。 症状、問題、または機能不全を状態の形で、そして行動の形で説明することは非常に自然です-これらの症状の存在につながる可能性のある機能不全。

次の記事では、知識を適用する方法について説明します。

参考文献。

  1. ジョンアランロビンソン。 解像度の原則に基づくマシン指向のロジック。 ACMのコミュニケーション、5:23-41、1965。
  2. シーモア・パパート、マービン・ミンスキー。 パーセプトロン。 MIT Press、1969年
  3. ラッセル、ノルヴィグ。 人工知能:現代的なアプローチ。
  4. サイモン・ヘイキン。 ニューラルネットワーク:包括的な基盤。
  5. ニルスJ.ニルソン。 人工知能:新しい統合。

人工知能がうまく開発されているのに、それに対する「正しい」定義がまだないのはどうしてですか? ニューロコンピューターに期待が寄せられなかったのはなぜですか。人工知能の作成者が直面している3つの主なタスクは何ですか。

これらの質問やその他の質問に対する答えは、人工知能の分野で国内をリードする専門家の1人であるABBYYの技術開発部門のディレクターであるKonstantinAnisimovichのスピーチに基づいて書かれたカットの下の記事にあります。
彼の個人的な参加により、ABBYYFineReaderおよびABBYYFormReaderで使用されるドキュメント認識テクノロジーが作成されました。 Konstantinは、Mail.Ruテクノパークの学生向けのマスタークラスの1つで、AI開発の歴史と基礎について話しました。 マスタークラスの資料が一連の記事の基礎となりました。

ループには合計3つの投稿があります。

知識の応用:空間状態を見つけるためのアルゴリズム
知識獲得:インテリジェントシステム設計と機械学習

AIアプローチの浮き沈み

1950年代以降、人工知能の作成の分野では、記号計算とコネクショニズムという2つのアプローチが登場しました。 記号計算は人間の思考のモデル化に基づく方向性であり、コネクショニズムは脳の構造のモデル化に基づいています。

記号計算の分野における最初の進歩は、50年代に作成されたLisp言語と、論理的推論の分野におけるJ.Robinsonの研究でした。 コネクショニズムでは、これはパーセプトロンの作成でした。これは、ニューロンの動作をシミュレートする自己学習型線形分類器です。 さらに目覚ましい成果は、主に象徴的なパラダイムに沿ったものでした。 特に、これらは知覚心理学の分野におけるシーモア・ピパートとロバート・アントン・ウィンソンの作品であり、もちろん、マービン・ミンスキーのフレームです。

70年代に、最初に適用されたシステムは、人工知能の要素であるエキスパートシステムを使用して登場しました。 その後、多層ニューラルネットワークの出現とバックプロパゲーション法を使用してそれらを学習するためのアルゴリズムにより、コネクショニズムの特定のルネッサンスがありました。 80年代には、ニューラルネットワークへの関心が広まりました。 このアプローチの支持者は、人間の脳のように機能するニューロコンピューターを作成することを約束しました。


しかし、実際のニューロンは多層ニューラルネットワークの基礎となる正式なニューロンよりもはるかに複雑であるため、これについて特別なことは何も起こりませんでした。 また、人間の脳内のニューロンの数も、ニューラルネットワークで許容できる数よりもはるかに多くなっています。 多層ニューラルネットワークが適していることが判明した主なものは、分類問題の解決です。

人工知能で次に人気のあるパラダイムは機械学習でした。 このアプローチは1980年代後半に急速に発展し始め、今日までその人気を失っていません。 機械学習の開発に大きな推進力を与えたのは、インターネットの出現と、アルゴリズムのトレーニングに使用できるさまざまなすぐに利用できるさまざまなデータです。

人工知能の設計における主な課題

これらのタスクが人工知能に関連している理由を分析できます。 彼らに共通しているのは、よく知られた、明確に定義された決定手順がないことです。 この点で、実際、AIに関連する問題は、コンパイル理論や計算数学の問題とは異なります。 インテリジェントシステムは、問題に対する次善の解決策を探しています。 人工知能によって発見された解決策が厳密に最適であることを証明または保証することは不可能です。 それにもかかわらず、ほとんどの実際的な問題では、次善の解決策がすべての人に適しています。 さらに、人が問題を最適に解決することは実際には決してないことを覚えておく必要があります。 むしろ、その逆が当てはまります。

非常に重要な質問が発生します。AIは、解決アルゴリズムがない問題をどのように解決できるのでしょうか。 重要なのは、人と同じようにそれを行うことです。つまり、もっともらしい仮説を立ててテストすることです。 当然、仮説を進めて検証するには知識が必要です。

知識は、インテリジェントシステムが動作する主題領域の説明です。 自然言語の記号を認識するシステムに直面している場合、知識には、記号のデバイス、テキストの構造、および言語の特定のプロパティの説明が含まれます。 それが顧客の信用格付けシステムである場合、顧客のタイプに関する知識と、顧客のプロファイルが潜在的な破産にどのように関連しているかについての知識が必要です。 知識には、主題分野と解決策の検索(メタ知識)の2つのタイプがあります。

インテリジェントシステムを設計する主なタスクは、知識を表現する方法、知識を取得する方法、および知識を適用する方法の選択に限定されます。

知識表現

知識を表現する主な方法は、宣言型と手続き型の2つです。 宣言的知識構造化または非構造化形式で表示できます。 構造化ビューは、フレームベースのアプローチの一種です。 つまり、フレームまたは形式文法。フレームの種類と見なすこともできます。 これらの形式の知識は、オブジェクトのセットとそれらの間の関係として表されます。



非構造化ビューは通常、分類問題の解決に関連する領域で使用されます。 これらは通常、重み、確率などの推定値のベクトルです。

知識の構造化された表現のほとんどすべての方法は、フレームの形式に基づいています。これは、MITのマービンミンスキーが1970年代に導入した、空間シーンの知覚のための知識の構造を示しています。 結局のところ、このアプローチはほとんどすべてのタスクに適しています。

フレームは、名前とスロットと呼ばれる個々のユニットで構成されます。 スロット値は、順番に、別のフレームへの参照になることができます...フレームは、別のフレームの子孫であり、そこからスロット値を継承することができます。 この場合、子は祖先のスロットの値をオーバーライドして、新しい値を追加できます。 継承は、説明をよりコンパクトにし、重複を避けるために使用されます。

フレームとオブジェクト指向プログラミングの間に類似点があることは簡単にわかります。オブジェクトはフレームに対応し、フィールドはスロットに対応します。 フレームはOOPのソースの1つであったため、類似性は偶然ではありません。 特に、最初のオブジェクト指向言語の1つであるSmall Talkは、オブジェクトとクラスのフレーム表現をほぼ正確に実装していました。

にとって 手続き型プレゼンテーション知識中古製品または生産ルール。 生産モデルは、知識を条件アクション文の形式で表現できるようにするルールベースのモデルです。 このアプローチは、以前はさまざまな診断システムで普及していました。 症状、問題、または機能不全を状態の形で、そして行動の形で説明することは非常に自然です-これらの症状の存在につながる可能性のある機能不全。

次の記事では、知識を適用する方法について説明します。

参考文献。

  1. ジョンアランロビンソン。 解像度の原則に基づくマシン指向のロジック。 ACMのコミュニケーション、5:23-41、1965。
  2. シーモア・パパート、マービン・ミンスキー。 パーセプトロン。 MIT Press、1969年
  3. ラッセル、ノルヴィグ。 人工知能:現代的なアプローチ。
  4. サイモン・ヘイキン。 ニューラルネットワーク:包括的な基盤。
  5. ニルスJ.ニルソン。 人工知能:新しい統合。

この記事から、人工知能プログラミングの問題に関する一連の出版物を始めます。 このシリーズの目的は、(一般原則の観点から)人工知能がどのようにプログラムされているかを示すことです。

「人工知能」の概念そのものは、コンピューティングの黎明期のどこかで始まりました。 その由緒ある時代にもかかわらず、この用語は正確な定義がなく、常に直感的な意味で理解されてきました。 人工知能の分野には、コンピューターよりも人が解決できる課題が含まれていると一般的に言われています。 このように、人工知能の枠組みの中で解決される問題の範囲は絶えず動的に変化しています。 たとえば、数年前は、コンピューターにチェスをすることを教えることはAIの特権でしたが(英語の人工知能-人工知能から)、今日では、チェスをすることはもはや人工知能の問題ではないと考える専門家が増えています。 今日、AIのフレームワーク内で解決される主な問題は、おおよそ次のとおりです。エキスパートシステムの構築、オプションの完全な列挙が理論的に不可能な検索問題の解決(プログラミングゲームを含む)、生物学的形態のモデリング、およびパターン認識。 これらすべての問題を解決するための基本原則は70年代初頭に定められましたが、AIタスクは非常に多くのリソースを消費するため、実際に開発されたのは今日だけです。

AIの問題を解決するために、70年代の初めに、2つの特定のプログラミング言語(PrologとLisp(LISP))が作成されました。 現代の人工知能開発者は、それぞれに堪能でなければなりません。 次に、それらの最も特徴的な機能について詳しく見ていきましょう。

歴史的に、Lispは古い言語です。 彼が紹介する概念は関数型プログラミングと呼ばれ、従来のアルゴリズムアプローチを直接拡張したものです。 Lispプログラムは関数であり、その結果はプログラムの実行の結果であり、引数はほとんどの場合、他の関数呼び出しです。 客観的な理由により、Lispは関数を呼び出すときに中括弧なしの表記法を使用します。関数はリストを使用して呼び出されます。リストの最初の要素は関数の名前であり、他のすべての要素は引数を表します。 たとえば、2つの数値AとBを追加すると次のようになります:( A Bを追加)、3つの数値を追加すると次のようになります:( Aを追加(B Cを追加))。 Lispの最も重要な機能は、フォームのレコード(add AB)が、関数呼び出しとしてのリストだけでなく、add、A、Bの3つのコンポーネントを含むデータ要素としてのリストにもなり得ることです。リストはデータとして使用する必要があります。または、Lispフレームワーク内でリストを解釈する必要があるかどうかは、プログラム自体で受け入れることができます。 これにより、プログラムは独自のコードを変更できます。これはAIアプリケーションにとって非常に重要です。

Prologは、アルゴリズムとは根本的に異なり、ターゲットまたは宣言型プログラミングと呼ばれるプログラミングアプローチを使用しているため、Lispよりも興味深いものです。 アルゴリズムプログラミングでは、プログラムが実行するアクションのシーケンスを設定します。 それがどのように機能するかを説明します。 宣言型プログラミングでは、プログラムが何をすべきかを説明し、これらのアクションがどのように実行されるかは、Prologシステムの仕事です。 典型的なPrologタスクを考えてみましょう-特定の人々がどのような関係にあるかを判断します。 最初のものとして、XがYの親であることを示す関係の親(X、Y)と、性別の1つに属する人を示す関係の男性(X)と女性(X)を選択します。 その場合、プログラムの初期データは次のようになります。

男(セルゲイ)。 女性(タマラ)。 男(セミョン)。 女性(リュドミラ)。 男(ポール)。

親(セルゲイ、セミョン)。 親(タマラ、セミョン)。 親(Semyon、Pavel)。

親(リュドミラ、パベル)

ご覧のとおり、これは家系図を自然に表す小さなデータベースです。 その中の各式はステートメントです; Prologでは、そのようなステートメントはファクトと呼ばれます。 ベースは簡単に拡張できます。

ここで、XがYの祖父であるかどうかを示す式grandfather(X、Y)を入力します。2つのProlog記号を使用します。次のエントリのコンマは論理andを示し、記号:-はifを示します。

祖父(X、Y):-親(X、Z)、親(Z、Y)、男性(X)。

この条件付きレコードはファクトと同じデータベース要素です。Prologでは、このような要素は通常ルールと呼ばれます。

実際、私たちが書いたPrologプログラムは多くのことを行うことができます(これは、これまでアルゴリズムプログラミングにしか精通していない人々を確かに驚かせるでしょう)。 実行のために起動した後、Prologシステムは質問を入力するように求めます。 まず、祖父(X、Pavel)を入力します(ロシア語では、この質問は「Pavelの祖父は誰ですか?」のように聞こえます)。システムはX = Sergeyを返します。 それでは、祖父(タマラ、ポール)に聞いてみましょう(「タマラポールの祖父ですか?」)。 答えはノーだ。 親(X、_)に尋ねることができます(Prolog _は、関係のこの要素の値が私たちにとって重要ではないことを意味するため、ロシア語のこのエントリは「誰かの親は誰ですか?」のように聞こえます)。 X =セルゲイ、X =タマラ、X =セミョン、X =リュドミラを取得します。 私たちのプログラムに尋ねることができる質問の範囲は、これによって尽きることはありません。

ご覧のとおり、オブジェクト間の関係の定義に関連する問題では、PrologはPascalやCなどのアルゴリズム言語よりもはるかに強力です。 これに、Prologデータベース(ファクトとルールを含む)を実行時にプログラム自体またはユーザーが動的に変更できることを追加すると、人工知能の分野での開発にPrologがどれほど役立つかが明らかになります。

読者がLispとPrologに興味がある場合、彼は自分でそれらを学ぶことができます-言語は非常に単純です。 以降の出版物では、AIの分野における基本的なプログラミング方法のみに注意を向けようとして、言語の問題については詳しく説明しません。

デニス・マーゴリン
[メール保護]

トピックの続き:
ルーター

標準のガジェットは、最新バージョンのWindowsOCから無条件に削除されています。 しかし、ユーザーは何か良いものを失うことに慣れていないため、アナログを積極的に使用しています。 ずっと前に ...