新しいニューラルネットワークは、コンピューターが自分自身をコーディングするのに役立ちます

こんにちは、Habr!Will DouglasHeavenによる「新しいニューラルネットワークはコンピューターが自分自身をコーディングするのに役立つ可能性がある」という記事の翻訳をあなたの注意を引くために提示します



画像



このツールは、プログラム間の類似性を検出して、プログラマーがより高速で効率的なソフトウェアを作成できるようにします。



コンピュータプログラミングはかつてないほど容易になりました。最初のコーダーは手作業でプログラムを作成し、グラフ用紙上の文字をトレースしてから、コンピューターで処理できるパンチカードの大きなスタックに変換しました。 1つの間違い、そしてそれはすべてやり直さなければならないかもしれません。



最近のコーダーは、入力時にエラーをキャッチすることから、コードを適用する前にテストすることまで、多くの作業を自動化する多くの強力なツールを使用しています。しかし、それ以外はほとんど変わっていません。1つのばかげた間違いでも、ソフトウェア全体がクラッシュする可能性があります。そして、システムがますます複雑になるにつれて、これらのエラーを追跡することはますます困難になります。
「コーダーのチームが1つのバグを修正するのに数日かかる場合があります」と、Intelのマシンプログラミング研究グループのディレクターであるJustinGottschlich氏は述べています。




これが、マシンに自分でプログラムをさせるだけでよいと考える人がいる理由です。自動コード生成は、何年にもわたって研究のホットトピックとなっています。 Microsoftは、広く使用されているソフトウェア開発ツールに基本的なコード生成を組み込んでいます。Facebookは、小さなプログラムを自動的に終了するAromaと呼ばれるシステムを作成し、DeepMindは、人間が開発したものよりも効率的なバージョンの単純なアルゴリズムを作成できるニューラルネットワークを開発しました。 OpenAI GPT-3言語モデルでさえ、自然な言語クエリからWebページレイアウトなどの単純なコードスニペットを作成できます。



Gottslichらは、これをマシンプログラミングと呼んでいます。..。彼は、Intel、MIT、およびアトランタのジョージア工科大学のグループと協力して、コードの一部の意味(コードがコンピューターに伝えるもの)を抽出できるMachine Inferred Code Similarity(MISIM)と呼ばれるシステムを開発しました。自然言語処理(NLP)システムが英語で書かれた段落を読み取ることができるのとほぼ同じ方法で。



その後、MISIMはコードを記述する他の方法を提案し、修正とコードをより速くまたはより効率的にする方法を提案できます。プログラムが実行しようとしていることを理解するツールの機能により、同様のことを実行している他のプログラムを識別できます。理論的には、このアプローチは、最小限の人間による制御または入力で既存のソフトウェアのパッチワークキルトに依存して、独自のソフトウェアを作成したマシンで使用できます。



MISIMは、コ​​ードのスニペットを、多数のオンラインリポジトリから取得した他の何百万ものプログラムと比較することで機能します。最初にコードをそれが行うことをキャプチャする形式に変換しますが、非常に異なる方法で記述された2つのプログラムが同じことを行うことがあるため、記述方法を無視します。次に、MISIMはニューラルネットワークを使用して、同様の意味を持つ別のコードを探します。プレプリントで、Gottshlichらは、MISIMは、アロマを含め、これを試みた以前のシステムよりも40倍正確であると報告しています。



MISIMはエキサイティングな前進です、とスイスの会社DeepCodeのCTOであるVeselin Raychevは言います。彼のエラー検出ツールは、市場で最も先進的なもののいくつかであり、何百万ものプログラムでトレーニングされたニューラルネットワークを使用して、コーダーが作成する際の改善を提案します。

しかし、機械学習はまだ何かがバグであるかどうかを予測することができません、とRaichevは言います。これは、人間によってそのようにラベル付けされていない場合、バグであるかどうかをニューラルネットワークに教えることが難しいためです。
彼によると、深いニューラルネットワークとエラー修正に関する多くの興味深い研究がありましたが、「実際には、非常に大きな差で、まだそこにはありません」。原則として、AIエラーキャッチツールは多くの誤検知を引き起こします、と彼は言いました。



MISIMは、バグを直接検出するのではなく、機械学習を使用してプログラム間の類似性を識別することでこれを処理します。新しいプログラムを、正しいことがわかっている既存のソフトウェアと比較することにより、エラーにつながる重要な違いをエンコーダーに警告できます。



Intelは、このツールを自社の開発者向けの推奨システムとして使用し、コードをより速くまたはより効率的に作成するための代替手段を提供することを計画しています。ただし、MISIMは特定のプログラムの構文に関連付けられていないため、さらに多くのことができます。たとえば、COBOLなどの古い言語で記述されたコードをPythonなどのより新しい言語に変換するために使用できます。米国政府を含む多くの機関は、維持または更新の方法を知っているコーダーがほとんどいない言語で書かれたソフトウェアに依然依存しているため、これは重要です。



最終的に、Gottslichは、このアイデアを自然言語に適用できると信じています。 NLPと組み合わせる(自然言語処理(Neuro Linguistic Programmingと混同しないでください)、テキスト表現とは別にコードの意味を処理する機能により、いつの日か、人々がやりたいことを言葉で説明するだけでソフトウェアを作成できるようになるかもしれません。

「携帯電話用の小さなアプリなどを作成すると、日常生活に役立ちます。それほど遠くはないと思います」とGottshlich氏は言います。「80億人の人々が彼らにとって自然な方法でソフトウェアを作成することを望んでいます。」



All Articles