IBMがコードを変換および検証する機械学習システム用のCodeNetをオープン

IBMは、CodeNetイニシアチブを発表した。これは、プログラミング言語トランスレータ、コードジェネレータ、およびアナライザを作成するための機械学習技術の使用を実験できるデータセットを研究者に提供することを目的としている。 CodeNet には、14 の一般的なプログラミング問題を解決する 4053 万のコード例のコレクションが含まれています。 このコレクションには合計約 500 億行のコードが含まれており、C++、Java、Python、Go などの最新言語と、COBOL、Pascal、FORTRAN などのレガシー言語の両方を含む 55 のプログラミング言語をカバーしています。 プロジェクトの開発は Apache 2.0 ライセンスに基づいて配布され、データ セットはパブリック ドメインの形式で配布される予定です。

これらの例には注釈が付けられており、異なるプログラミング言語で同一のアルゴリズムを実装しています。 ImageNet の注釈付き画像データベースがパターン認識やコンピューター ビジョン システムの開発に役立ったのと同様に、提案されたセットは、機械学習システムのトレーニングや、翻訳や機械コード解析の分野におけるイノベーションの開発に役立つことが期待されています。 コレクション形成の主な情報源の XNUMX つとして、さまざまなプログラミング コンテストが挙げられます。

変換ルールに基づいて実装される従来のトランスレーターとは異なり、機械学習システムはコード使用のコンテキストを取得して考慮に入れることができます。 あるプログラミング言語から別のプログラミング言語に変換する場合、コンテキストは人間の言語から別の言語に翻訳する場合と同様に重要です。 このコンテキストの考慮の欠如が、COBOL などのレガシー言語からのコードの変換を妨げています。

さまざまな言語でのアルゴリズム実装の大規模なデータベースを持つことは、特定の言語間の直接翻訳ではなく、特定のプログラミング言語に依存せず、より抽象的なコード表現を操作する汎用的な機械学習システムの作成に役立ちます。 このようなシステムはトランスレータとして使用でき、サポートされている言語で送信されたコードを内部の抽象表現に翻訳し、そこから複数の言語でコードを生成できます。

システムは双方向変換も実行できます。 たとえば、銀行や政府機関は、時代遅れの COBOL 言語でプロジェクトを使用し続けています。 機械学習ベースのトランスレーターは、COBOL コードを Java 表現に変換し、必要に応じて Java フラグメントを COBOL コードに変換し直すことができます。

言語間の翻訳に加えて、スマート コード検索システムの作成やクローン検出の自動化、オプティマイザーや自動コード修正システムの開発などの CodeNet の応用分野についても言及されています。 特に、CodeNet で示されている例には、パフォーマンス テストの結果、結果のプログラム サイズ、メモリ消費量、および状態を記述するメタデータが装備されており、これにより、正しいコードとエラーのあるコードを区別できます (正しいコードと誤ったコードを区別するには、コレクションには特にエラーのある例が含まれており、その割合は 29.5% です)。 機械学習システムは、このメタデータを考慮して、最適なコードを生成したり、分析されたコードの回帰を特定したりできます (システムは、提出されたコードのアルゴリズムが最適に実装されていない、またはエラーが含まれていることを理解できます)。

出所: オープンネット.ru

コメントを追加します