必要なものを教えていただければ、当社のAIがコードを作成します

必要なものを教えていただければ、当社のAIがコードを作成します

何をしたいのかを伝えるだけで、AI が自動的にコードを作成します。

今、私たちはこの目標に一歩近づきました。

最近、MITの研究チームが新たな研究結果を発表しました。

彼らは、教師なし学習による AI 自動プログラミングが遭遇する問題を解決するために、パターン認識と推論を柔軟に組み合わせる手法を提案しました。

いくつか例を挙げてみましょう:

タスク要件:

配列が与えられたら、数値を反転した後、その数値の中央値を計算します。

AIは次のコードを提供します:

(reduce(reverse(digits(deref (sort a)(/ (len a) 2)))) 0

(lambda2 (+(* arg1 10) arg2)))

タスク要件:

入力:

1、[-101、63、64、79、119、91、-56、47、-74、-33]

4、[-6、-96、-45、17、26、-38、17、-18、-112、-48]

出力:

39

8

AI が提供するコード:

(最大 (MAP DIV3 (DROP 入力0 入力1)))

これはどうやって行うのですか?

人間のプログラマーにタスクが与えられると、コードの記述を開始する前に、自身の経験に基づいてコード アーキテクチャを判断します。経験がない場合は、推論を使用してコード アーキテクチャを改善する必要があります。

この AI システムは、パターン認識と推論を組み合わせて、人間がコードを書く方法を模倣します。

このモデルは、スケッチジェネレータープログラム シンセサイザーの2 つのモジュールに分かれています。

タスク要件を入力すると、コードはまずサマリー ジェネレーターに渡され、タスク要件を満たす可能性が高いコード サマリー (つまり、タスク要件を満たす可能性はあるが詳細が豊富な初期コード) が生成されます。次に、コード プロファイルはコード シンセサイザー モジュールに送られ、タスク要件を満たすものを検索します。

サマリー ジェネレーターは、アテンション メカニズムを備えた seq2seq リカレント ニューラル ネットワーク (RNN) です。特定のタスクの後、LSTM エンコーダーによってエンコードされ、トークンごとにデコードされます。

コード合成装置には、幅優先確率列挙子とニューラル ネットワーク認識子の 2 つのコンポーネントがあります。前者は、コードスケッチをその可能性に応じて大きいものから小さいものまで列挙し、後者はタスクの要件に応じてプロセスをガイドします。

具体的な効果は何ですか?

モデルの性能を検証するために、研究チームは比較のために 2 つのモデルを選択しました。

それぞれ、シンセサイザーのみのモデル(Synthesizer only)とジェネレーターのみのモデル(Generator only)です。

シンセサイザーのみのモデルは、研究におけるコードシンセサイザーモジュールに相当します。パターン認識の後、すべての可能なエンコードを最初から列挙します。これは、2016 年に Microsoft Research チームによって提案された「Deepcoder」モデルに匹敵します。

この研究の要約ジェネレーター モジュールに相当するジェネレーターのみのモデルを使用して、完全なコードを予測します。これは、2017 年に Microsoft Research と MIT チームによって提案された「RobustFill」モデルに匹敵します。

比較されたタスクは、配列リスト、文字列変換、および自然言語要件でした。

配列リストタスクでは、この研究のモデルは、他の 2 つの研究と比較して、単純なプログラムで優れたパフォーマンスを示すことができます。

文字列変換タスクでは、シンセサイザーのみのモデルよりも優れたパフォーマンスを発揮し、場合によっては、ジェネレーターのみのモデルよりも優れたパフォーマンスを発揮します。

[[258288]]

モデルの能力を実際に実証するのは、配列リストと文字列に関連する入力と出力の例だけでなく、対応する自然言語の説明も含まれる AlgoLisp データセットで実施されたテストです。

このデータセットで、研究者らは非構造化データの場合のモデルのパフォーマンスを調査しました。

テスト結果は、モデルのパフォーマンスが以前の学者の研究をはるかに上回っていることを示しています。

さらに、「偶数」と「奇数」の要件を含めると、パフォーマンスはさらに顕著になり、モデルがより汎用的であることがわかります。

この研究に興味がある方は、論文を読んで研究の詳細を知ることができます。

ポータル:

プログラムスケッチの推測を学ぶ

https://arxiv.org/abs/1902.06349

<<:  人気の機械学習プログラミング言語、フレームワーク、ツール14選

>>:  金融保険業界における人工知能の3つの重要なトレンド

ブログ    
ブログ    

推薦する

AIアルゴリズムエンジニアの涙の体験談

[[425033]]私たちはしばらくの間、展開モデルの最適化に取り組んできました。ここ数日でようやく...

...

デジタル変革、人工知能、そして生産性の問題

企業がデジタル変革を進める際に、生成 AI がいかにして企業の生産性を向上させることができるかについ...

...

Pudu Technology、新製品「Hulu」をリリース、4月19日より先行販売開始

人工知能やマルチセンサー情報融合などの技術の進化により、サービスロボットは急速に発展し、さまざまな分...

...

モバイルデバイスでのリアルタイムディープラーニング

[[210219]] 2017 年には、モバイル アプリケーション向けのディープラーニングにおいて大...

大規模モデルは小規模モデルに正確にフィードバックし、知識の蒸留はAIアルゴリズムのパフォーマンスを向上させるのに役立ちます。

01 知識蒸留の誕生の背景近年、ディープニューラルネットワーク (DNN) は、特にコンピューター...

...

遅い二次アルゴリズムと高速なハッシュマップについての簡単な説明

みなさん、こんにちは!昨日、プログラミング面接の準備をしていて、アルゴリズムの基礎を学ぼうとしている...

Python ベースのパーセプトロン分類アルゴリズムの実践

パーセプトロンは、バイナリ分類タスク用の線形機械学習アルゴリズムです。これは、人工ニューラル ネット...

アルゴリズムは難しい、プログラミングは簡単ではない、プログラマーの苦労を誰が理解できるだろうか?

[[199239]]今日は、プログラマーにとっての困難がどこにあるのかについて議論しましょう。アル...

...

Java プログラミング スキル - データ構造とアルゴリズム「動的プログラミング アルゴリズム」

[[399211]]応用シナリオ - ナップサック問題バックパックの問題: 容量 4 ポンドのバッ...

F#の並列ソートアルゴリズムは実装が簡単

F# の並列ソート アルゴリズムで最も一般的な方法の 1 つは、まず処理するデータを複数の部分に分割...