人工知能プログラミングは、人間がよりインテリジェントな機械を作成するのに役立ちますか?

人工知能プログラミングは、人間がよりインテリジェントな機械を作成するのに役立ちますか?

テクノロジーが急速に進歩するにつれ、人工知能プログラミングはますます成熟しつつあります。その開発は、人間がよりインテリジェントな機械を作るのに役立つのでしょうか?

[[319939]]

プログラム合成とは、仕様に基づいてプログラムを自動的に生成する概念を指します。プログラムの検証とは異なります。プログラム検証は、正式な証明に基づいて、プログラムが正式な仕様に従って動作するかどうかを検証します。

1957 年、コーネル大学で開催された記号論理学会の夏季会議で、アロンゾ・チャーチは数学的要件に基づいたプログラムを合成しようと試みました。 1960 年代に、 AI 研究者はプログラム合成の概念を詳しく説明し、それを一般的な AI 研究に適用しました。

近年、ディープラーニングにより人工知能がタスクを達成する方法が変革しました。この進歩により、研究者たちは人間が得意とするタスクを人工知能に教えようと試みるようになった。重要な分野の一つは、人間が得意とする種類のタスクを人工知能が学習できるようにするメタ学習システムを作成することです。ニューラル プログラム合成とロボット工学に関する研究では、当初、プログラム合成を使用してロボットにタスクを正確に実行する方法を教えることができることが実証されました。

プログラム合成は、コンピュータプログラミングの実装を容易にするために最もよく使用されます。 AutoProf、FlashFill、Storyboard プログラミング ツールなどのアプリケーションを使用すると、学生はコードを記述せずに特定の概念を直接操作することで、より直感的な方法でプログラミングできます。

AI 研究者の François Jolet 氏は、論文「知能テスト」の中で、知能テストの問題をモデルにした ARC タスクを解決するための手法としてプログラム合成を紹介しています。

ジョレット氏は、自身の論文についてザ・ヴァージ誌のインタビューで次のように語った。「重要な点は、タスクが、これまで知られていなかった多数の問題にわたって新しいスキルを習得するメタタスクでない限り、どんなタスクでも高いスキルを習得することは知性の兆候ではないということです。まさにそれが、私が知性の基準と考えているものです。」

基本的に、システムの知能は、Chollet 氏が言うように、次の方法でテストする必要があります。「これは、システムがこれまで知らなかった新しいタスクのみを使用し、タスクの開始時にシステムの事前知識を測定し、システムのサンプリング効率 (つまり、タスクを実行するために学習するために必要なデータの量) を測定することを意味します。特定のスキル レベルに到達するのに必要な情報 (事前知識と経験) が少ないほど、そのシステムはよりインテリジェントです。今日の AI システムはまったくインテリジェントではありません。」

彼は後に、ARC タスクを Kaggle の抽象および推論問題チャレンジで解決すべき問題として投稿しました。この問題を解決するには、プログラミング合成の力を活用して、これまで知られていなかった ARC タスクを学習する必要があります。

プログラミング合成問題の分解

解決不可能と思われる問題はすべて、まず小さな問題に分解することができます。合成プログラミングを学んだことがない場合は、作業を開始する前に、問題が何であるか、そしてそれをどのように解決するかを理解してください。

1. プログラムスペースの問題

すべてのプログラミング合成問題には、最終的にはプログラム空間全体の検索が含まれます。検索方法は有効である必要があります。ツリー アルゴリズムを使用する場合、このツリーの枝を切り落とす方法が必ずあると考えてください。そうしないと、ツリーが成長するにつれて、無限に成長する可能性があります。

2. ユーザーの意図の問題

ユーザーの意図をテストするロジックの間には、曖昧な領域が存在することがよくあります。ユーザーが環境とやりとりすると、発見が起こります。ユーザーが参加すると、新しいデータによって、ユーザーの目にはまったく新しい問題が映るようになるかもしれません。

Kaggle チャレンジを成功裏に解決するには、必然的にこれら 2 つの問題を解決する必要があります。

手続き型合成のためのユーティリティ

Python では、Z3 はプログラム合成用の Python パッケージです。こちらはAdrian SampsonによるZ3の優れたチュートリアルです。

彼の記事の例は次のとおりです。

次のように汎用ソルバーを構築します。

Adrian Sampson のブログからのコード

次に、実行する数式を定義します。

Adrian Sampson のブログからのコード

実行: print(solve(formula)) を実行して、任意の問題を解決します。詳細と例については彼のチュートリアルをお読みください。

手続き型合成についてさらに詳しく知りたいですか?

以下に、手続き型合成に関連する学習リソースをいくつか示します。

1. プログラム合成のためのディープラーニング https://sunblaze-ucb.github.io/program-synthesis/index.html

2. ディープコーダー: プログラムの書き方を学ぶ

https://openreview.net/pdf?id=ByldLrqlx

3. ディープラーニングプログラム合成Microsoft Research

https://www.microsoft.com/en-us/research/blog/deep-learning-program-synthesis/

François Jolet が提案した Kaggle チャレンジの解決に取り組んでいる場合、この記事が役立ちます。

「いかなる問題も、それを生み出したのと同じレベルの意識では解決できない。」 - アルバート・アインシュタイン

あらゆる「不可能」な課題は、問題解決を決してあきらめなかった人々によって一歩一歩解決されました。

さあ、君は最高だよ!

<<:  IoTドローンが都市を消毒する方法

>>:  AI監視の影響について知っておくべき3つのこと

推薦する

産業規模は500億に迫る。産業用ロボット業界は今後何をすべきか?

近年、ロボット技術は急速に発展しており、食品配送ロボットや掃除ロボットなど、さまざまなサービスロボッ...

LinkedIn が Dagli をオープンソース化し、Java 機械学習ライブラリをリリース

近年では、大規模データ向けのTensorFlow、PyTorch、Caffee、CNTK、Spark...

Pythonアルゴリズム実践シリーズ: スタック

スタックは、特別な順序付けがされたテーブルです。挿入および削除操作はスタックの先頭で実行され、先入れ...

210,000のボーナスがあなたを待っています! 「ファーウェイクラウドカップ」全国AIコンテスト募集中

現在、神府改革革新モデル区、華為(遼寧)人工知能イノベーションセンター、上海交通大学が共催する神府モ...

...

PaddlePaddle ディープラーニング実践 - 英語-フランス語翻訳マシン

自然言語処理[1]は、コンピュータサイエンスと人工知能の分野におけるもう一つの重要な方向性です。重要...

完全なルーティングアルゴリズムの設計目標の分析

ルーティング アルゴリズムには通常、次の 1 つ以上の設計目標があります。最適化最適化とは、メトリッ...

ニューラルネットワークの仕組みを1つの記事で学ぶ

出典: getwallpapers.comディープラーニングは機械学習の重要な分野の 1 つです。そ...

「公平性」、人工知能はこれを達成できるのか?

2020年の東京オリンピックはこれまで以上に盛り上がっています。 7月28日に行われた男子体操個人...

...

3 つのヒープ内キャッシュ アルゴリズム (ソース コードと設計アイデア付き)

トレードオフを最もよく反映するコンピュータ システムのテクノロジといえば、それはキャッシュです。高速...

人工知能の時代において、あなたの子供は15年後にどんな職業に就くことができるでしょうか?

12年後の2030年、現在の小中学生が就職を控える頃の世界は、1.現在の職業の多くが消滅し、2.2...

AIとビッグデータ2017「成長痛」

2017 年、人工知能とビッグデータの開発では次の 10 の成長痛が発生しました。 [[21567...

囲碁をプレイするのはとても簡単です。AlphaZero は量子コンピューティングをプレイし始めます!

過去数十年にわたる量子物理学技術の探求において、最も注目を集めているのは量子コンピュータです。 [[...

...