この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載しています。転載の際は出典元にご連絡ください。 少し前にアメリカが60歳のプログラマーを募集していたことを覚えていますか?それはすべて、プログラミング言語の進化が速すぎるからです。 COVID-19パンデミックの影響で、米国の一部地域では失業給付システムがパンク状態に陥っており、これらのシステムは古い言語であるCOBOLで書かれています。 しかし、現在世界では C/C++、Java、Python が主流となっており、 COBOL プログラムを Python に変換することは極めて困難です。 遠い過去は言うまでもなく、Python 2 は段階的に廃止され、古いプログラムを手動で Python 3 に変換することも大規模なプロジェクトです。 AIは自然言語を翻訳できるので、プログラミング言語も翻訳できるはずです。 Facebook もそう考えており、最近、プログラミング言語を翻訳する AI であるTransCoderを提案しました。これにより、 C++ 、 Java 、 Python間の翻訳が可能になりました。 翻訳されたプログラムの成功率は最大 80.9% に達します。 さらに、TransCoder は教師なし学習アルゴリズムであるため、トレーニングに大量のラベル付きプログラミング コード データセットを必要としません。 この技術が実用化されれば、プログラマーにとって大きな恩恵となるでしょう! 著者の一人であるギヨーム・ランプル氏がツイッターで発表した後、この論文がすぐに話題になったのも不思議ではない。 プログラミング言語を翻訳する原理は何ですか?TransCoder は、for、while、if などのキーワードや一般的な数学演算子など、プログラミング言語の機能を最大限に活用します。 次の図は、C++、Java、Python キーワードの埋め込みを示しています。同様のコンテキストで使用される異なるプログラミング言語のキーワードは、埋め込み空間で非常に近くなります。 たとえば、Python の except と Java および C++ の catch はどちらも例外をキャッチするために使用され、非常によく似た埋め込み空間の場所にマッピングされます。 マッピングの実装 (map と dict)、文字列から文字配列への変換 (c_str と toCharArray)、long、int、Integer などの同様の変数型でも、同じ現象が見られます。 では、上記のキーワードの埋め込みはどのように取得されるのでしょうか? Facebook は、プログラミング言語の教師なし機械翻訳を実現するための 3 つの原則を提案しました。 まず、モデルは、自然言語の空欄補充問題に多少似ている、クロスリンガルマスク言語モデル ( MLM ) 前処理によって初期化されます。その結果、同じ命令を表現するコード スニペットは、プログラミング言語に関係なく同じ表現にマッピングされます。 2 つ目はノイズ除去自動エンコーディングです。これは、ノイズの多いデータが入力されても常に有効なシーケンスを生成するようにデコーダーをトレーニングし、入力ノイズに対するエンコーダーの堅牢性を向上させます。 最後に、バックトランスレーションがあり、これによりモデルはトレーニングに使用できる並列データを生成できます。 Python から C++ へのモデルが改善されるたびに、C++ から Python へのモデルのより正確なデータが生成され、その逆も同様です。 上記の手順により、TransCoder はトレーニング後に前述のクロスリンガル埋め込みを取得します。 TransCoder が各言語固有の構文、データ構造、関数ライブラリ、メソッドを正常に理解していることを確認しました。 上の図では、Java と C++ に特有の三項演算子X ? A : Bが示されていますが、これは Python に翻訳するとif X then A else B になります。 以下は、Python から C++ への変換の例です。 TransCoder は、変数と関数の戻り値の型を推測し、Python の deque() コンテナを C++ deque<> の同様の実装にマッピングし、Python の角括弧、pop、append メソッドの代わりに C++ の front、back、pop_back、push_back メソッドを使用して deque 内の要素を取得および挿入します。 実験結果Facebook は TransCoder をトレーニングするために、数百億のトークンを含む GitHub 上の 280 万のオープンソース コード リポジトリを検索しました。 次に、GeeksforGeeks プラットフォームにアクセスして翻訳結果を確認します。このプラットフォームは、さまざまなコーディングの問題を収集し、複数のプログラミング言語でソリューションを提供します。 自然言語翻訳とは異なり、コード翻訳では逐語的な比較は必要ないため、翻訳されたコードと参照コードとの重複は実際には非常に少なくなります。たとえば、C++ から Java へのコードは Ground Truth と 3.1% しか一致しません。 さらに、NLP 翻訳における BLEU は、実際のコードと参照コード間の文法上の違いしか表せないため、コード翻訳の測定基準としては適していません。 したがって、テスト後に翻訳されたコードが参照コードと同じ出力を生成できるかどうかを示す精度を計算するという新しいメトリックが必要です。 この標準を使用すると、C++ から Java コードの精度は 60.9% になりますが、Java から C++ コードの精度は 80.9% になります。 AI コード生成システムを開発しているのは Facebook だけではありません。少し前の Microsoft Build カンファレンスで、OpenAI は GitHub データでトレーニングされ、注釈のみに基づいて対応する関数のコードを生成できるモデルを実演しました。 TransCoder はそれほどスマートではありませんが、今日のコンピュータ技術の急速な発展を考えると、次に人気の音声が何になるかは誰にもわかりません。TransCoder を使用すると、少なくともコードを移植することはそれほど難しくありません。 おそらく、米国の社会保障制度の COBOL はこれに依存しているのでしょう。 論文の宛先: 出典: arxiv.org |
<<: 華中大学が主導する99ページの報告書は、人間とコンピュータの相互作用の発展状況と将来の動向を明らかにしている。
>>: 会話型ロボットをよりスマートにするために製品設計を最適化するにはどうすればよいでしょうか?
[[248512]]当時、英語に支配されていた恐怖を覚えている人がどれだけいるでしょうか?前日に覚...
所有権や金額などの取引の基本的な特性は、基本的な数学的特性に基づいて機能する公開鍵暗号化のおかげで簡...
最近、業界の多くの大規模なモデルベンチマークが、「強度値」のアップデートの新たなラウンドを導入しまし...
[[390500]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
統計によると、交通事故のほぼ主な原因は運転者の過失です。そのため、自動化は長い間、セキュリティにおけ...
導入大規模言語モデルは革命的な技術であることが証明されています。大規模言語モデルの力をベースにした多...
マイクロソフトは8月30日、今年5月にBing Chat向けサードパーティプラグインを導入すると発表...
最近、Google DeepMind とスタンフォード大学の研究者らは、大規模なモデルを使用して論理...
[[205964]]建国記念日の祝日は終わったが、仕事のために帰省するラッシュは続いている。ちょうど...
AI に対する期待は高すぎるのでしょうか? また、企業とその経営陣は AI が提供する成果にどの程度...
[[342159]]今日の IoT のユースケースでは、デバイスが生成した大量のデータを分析したり、...
[[319182]] 3月19日、Google BrainとAIチームは今週、EfficientDe...
Codex よりも優れた C 言語を記述できる AI コード生成モデルがオープンソース化されました。...
ワシントンポスト紙によると、7月13日、米国連邦取引委員会(FTC)はサンフランシスコに拠点を置くO...
製造業とメタバースMetaverse テクノロジーを製造業に統合すると、企業の運営方法に革命をもたら...