テクノロジーが急速に進歩するにつれ、人工知能プログラミングはますます成熟しつつあります。その開発は、人間がよりインテリジェントな機械を作るのに役立つのでしょうか?
プログラム合成とは、仕様に基づいてプログラムを自動的に生成する概念を指します。プログラムの検証とは異なります。プログラム検証は、正式な証明に基づいて、プログラムが正式な仕様に従って動作するかどうかを検証します。 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 チャレンジの解決に取り組んでいる場合、この記事が役立ちます。 「いかなる問題も、それを生み出したのと同じレベルの意識では解決できない。」 - アルバート・アインシュタイン あらゆる「不可能」な課題は、問題解決を決してあきらめなかった人々によって一歩一歩解決されました。 さあ、君は最高だよ! |
私たちは幼児期から言語を吸収し始めます。簡単な単語は1年目か2年目に出てきます。 6 歳までに語彙は...
今日の世界では、人工知能 (AI) が驚異的なスピードで進歩しており、その進歩に遅れを取らないことが...
固定ネットワークが F5G (第 5 世代) 時代に入るにつれ、家庭用 Wi-Fi テクノロジも、新...
自動運転車の急速な発展は、自動車業界や輸送業界を再定義するだけでなく、保険業界にも混乱をもたらすでし...
ノアが編集制作:51CTO テクノロジースタック(WeChat ID:blog) Microsoft...
統計モデルやその他のアルゴリズムに加えて、回帰は機械学習を正常に動作させるための重要な要素です。回帰...
2024年に向けて、AI分野ではどのような発展や変化があるでしょうか? Stability AIが...