コンピューターはいかにしてコーディングを学んでいるのか

コンピューターはいかにしてコーディングを学んでいるのか
このページは、生成AIにより自動翻訳されています。

コンピューター科学者には、進化など、自然界から着想を得てきた歴史があります。コンピュータープログラムの最適化に関しては、この5、6年の間に、進化に基づく非常に興味深いアプローチが登場しました。産業界、そして最終的には消費者に計り知れない恩恵をもたらす可能性があります。私たちはこれを「遺伝的改善」と呼んでいます。

遺伝的改善とは、ソフトウェアのソースコードを試行錯誤を通じて操作し、より効率よく動作させることを目指す、自動化された「プログラマー」を作ることです。これには、人間のプログラマーが行うのとよく似た、コード行の順序の入れ替え、行の削除、新しい行の挿入などが含まれます。操作を加えるたびに、何らかの品質指標に照らしてテストし、新しいコードが以前のものより改善されているかを判定します。大規模なソフトウェアシステムに小さな変更を加え、より良い結果を得るということです。

その利点

こうした介入は、プログラマーがソフトウェアの機能的特性と呼ぶ領域において、さまざまな利点をもたらします。たとえば、プログラムの実行速度を上げたり、バグを取り除いたりできます。また、古いソフトウェアを新しいハードウェアに移植する際にも役立ちます。

可能性はそれだけにとどまりません。遺伝的改善はソースコードを対象とするため、いわゆる非機能特性も改善できます。これには、プログラムの入出力動作そのものに直接関係しないあらゆる特徴、たとえばソフトウェアが消費する帯域幅やエネルギー量などが含まれます。そもそも正しく機能するソフトウェアを構築すること自体が難題であるため、こうした点への対処は人間のプログラマーにとって特に難しいことがよくあります。

ここ数年、遺伝的改善が認知され始めた事例がいくつか見られます。ただし、現時点ではまだ大学の中にとどまっています。初期の好例は、 2009年にさかのぼります。ニューメキシコ大学とバージニア大学が開発した自動「プログラマー」は、メディアプレーヤーからテトリスゲームまで、さまざまな種類のソフトウェアにあった105件のバグのうち55件を修正しました。この成果により、5,000ドル(3,173ポンド)と、遺伝的・進化的計算による成果に贈られるゴールド・ヒューミー賞を獲得しました。

この1年間に、ロンドンのUCLは、この分野の可能性を示す研究プロジェクトを2件監督しました(完全な開示:いずれにも共著者のウィリアム・ラングドンが参加しています)。最初のプロジェクトは、 5万行を超えるコードを含む大規模で複雑なソフトウェアを対象に、その機能の処理速度を70倍にできる 遺伝的改善プログラムを扱いました。

2つ目のプロジェクトは、 初めて 、あるソフトウェアを別のより大きなソフトウェアに一括して自動移植しました。言語翻訳ソフトの Babel を、 Pidginというインスタントメッセージングシステムに挿入したのです。

自然とコンピューター

この機会の大きさを理解するには、ソフトウェアが独特な工学材料であることを認識する必要があります。電気工学や機械工学など他の工学分野では、最終製品を作る前に計算モデルを構築することがあります。理解を深め、特定の設計を試すことができるからです。一方、ソフトウェアはそれ自体がモデルです。ソフトウェアの計算モデルも、やはりコンピュータープログラムです。それは最終製品を忠実に表現するものであり、自動プログラマーによって最適化する余地を最大限に広げます。

冒頭で述べたように、コンピューター科学者が自然界から着想を得る豊かな伝統があります。たとえば、遺伝的アルゴリズムは自然に着想を得たもので、現実の問題に対する何百万もの可能な答えを、多数の変数を考慮しながら処理し、最善の答えを導き出します。例としては、道路網全体の配送ネットワークの設計から、エンジン設計の微調整まで、あらゆるものが挙げられます。

進化という比喩は、この文脈では足かせのようになっていますが、 こちらで論じたように、遺伝的アルゴリズムは、人間が作成したプログラムに匹敵する、あるいはそれを上回る結果を生み出し、数々の成功を収めています。

進化はまた、 遺伝的プログラミングにも着想を与えました。これは、小さな命令セットを使って、プログラムをゼロから構築しようとするものです。しかし、限界があります。多くの批判の一つは、学部1年生に通常期待される程度のプログラムさえ進化させられず、したがって大手多国籍企業を支える巨大なソフトウェアシステムへと規模を拡大できない、というものです。

この点から、遺伝的改善はこの分野における特に興味深い方向転換と言えます。プログラム全体をゼロから書き直そうとするのではなく、ごく小さな変更を少数加えることで成果を上げます。また、遺伝的改善そのものに限定する必要さえありません。Babel/Pidginの例は、外科医が臓器を提供者から受給者へ移植するのと同じように、ソフトウェアの一部を別のプログラムに移植するところまで応用できることを示しました。これは、最終的な目標がソフトウェア工学の自動化であることを思い起こさせます。この魅力的な新分野の発展にあたり、自然から学べることがあれば、余すところなく取り入れるべきです。

この記事は、 The Conversationとの共同で掲載しています。掲載は、世界経済フォーラムが見解を支持していることを意味するものではありません。

アジェンダの最新情報を得るには、 週刊ニュースレターにご登録ください。

著者:ジョン・R・ウッドワードは、スターリング大学コンピューター科学講師です。ジャスティナ・ペトケは、UCLの進化・探索・テスト研究センターの研究員です。ウィリアム・ラングドンは、UCLの主任研究員です。

画像:2013年2月28日、ワルシャワで男性がコンピューターのキーボードを打っている。REUTERS/Kacper Pempel

シェア:

ライセンスと再掲載について
世界経済フォーラムの寄稿文は、クリエイティブ・コモンズ表示-非営利-改変禁止 4.0 国際ライセンスおよび同フォーラムの利用規約に従い、再掲載が可能です。