Simple Science

最先端の科学をわかりやすく解説

# コンピューターサイエンス# 計算と言語# ソフトウェア工学

ソフトウェアエンジニアリングのための専門的言語モデルの進展

この研究は、Stack Overflowのデータを使ったカスタマイズされた言語モデルの効果を強調してるよ。

― 1 分で読む


専門モデルがコーディングの専門モデルがコーディングの手助けを強化する大きいモデルより性能が良い。特化型言語モデルは、コーディングタスクで
目次

大きな事前学習された言語モデルは、自然言語理解とソフトウェア工学の両方を変えてきたよ。OpenAIのGPTシリーズみたいなモデルは、BERTやRoBERTaみたいな以前のモデルを超える大きな進展を遂げてる。これらの大規模モデルは、インターネットからの膨大なデータを使って言語のパターンや意味を学ぶんだ。多様なデータで訓練されることで、人間が言語をどのように使うかを理解するのに役立ってる。

でも、最大のモデルは作成するのも使うのもコストがかかるし、公開されることがあまりないから、どうやって作られたのかやどんなデータが使われたのかが分からないことが多いんだ。私たちは、大きな一般モデルが役に立つ一方で、特定のタスクに集中できる小さなモデルの必要性もあると考えている。この研究では、プログラマー向けの質問と回答サイトであるStack Overflowという豊かな環境を、そういう集中したモデルが活躍できる例として見ていくよ。

私たちのアプローチは、広範な質問と回答のペアやコメントを含むStack Overflowから得られるデータを使うこと。標準的な手法に従ってモデルを訓練するよ。このデータから、1つは1億2500万パラメータのモデルと、もう1つは7億6200万パラメータのモデルを作成して、それぞれ約374ドルと1600ドルのコストがかかる。私たちのモデルが、Stack Overflowデータだけに焦点を当てた以前のモデルや、一般的なモデル、OpenAIのChatGPTと比較して、どのようにパフォーマンスを発揮するかを4つの特定のタスクで調べるよ。

私たちのモデルは、すべてのタスクで他のモデルを継続的に上回っていて、小さい方のモデルでも強い結果を出すことができることが分かった。両方のモデルは公開されるよ。この成功は、特定のデータで徹底的に訓練されたモデルが、大きくてクローズドソースのモデルに対して強力でコスト効果の高い代替手段を提供できることを示してる。

ソフトウェア工学における言語モデルの重要性

言語モデルは、自然言語処理とソフトウェア工学の両方に著しい影響を与えてるよ。自然言語処理では、これらのモデルがテキストの整理や分類、感情分析、言語翻訳などのさまざまなタスクを手助けしてる。ソフトウェア工学では、コードを言語として扱い、コードの完成、バグの発見、コードの要約などのタスクにも役立つんだ。

新しいタスクのためにモデルをゼロから構築することもできるけど、通常は数百万のトークンのデータが必要なんだ。でも最近の調査では、特定のタスクに調整する前に、大量のデータで事前学習するのがより効果的だとわかってきた。事前学習の後は、BERTのような小さなモデルは特定のタスク用に微調整され、GPT-3のような大きなモデルはユーザーと対話しながら質問に答えたり例を示したりできる。

トレンドは大きなモデルに向かっているよ。GPT-3のようなモデルは、1,750億のパラメータを持ち、効果的に機能するためには、通常数百億のトークンのデータが必要なんだ。問題の説明といくつかの例を与えると、言語タスクで驚くほど良いパフォーマンスを発揮するよ。

でも、これらの大きなモデルを使うには代償がある。高価で、小さなプロジェクトに調整するのが難しいんだ。多くのモデルはオープンソースじゃないから、どうやって訓練されたかや使われたデータにアクセスが制限されることもある。それに、一般的な訓練アプローチは、特定のデータで訓練できるタスクではパフォーマンスが低下することが多いんだ。

それに対して、ソフトウェア工学コミュニティでは特定のコーディングタスクに焦点を当てたモデルが開発されているよ。たとえば、CodeBERTはBERTに基づいていて、コードの不足部分を予測するよう訓練されてる。CodexやCodeGenのような他のモデルは、入力を受け取るとコードを生成するように設計されてる。

この研究では、Stack Overflowデータを使って追加のBERTスタイルのモデルを訓練することに貢献するよ。このプラットフォームは高品質な情報を含んでいて、説明とコードを組み合わせているから、助けを求めるプログラマーにとって理想的なんだ。

一般的なBERTモデルは以前にStack Overflowデータで成功裏に微調整されてきたし、研究者の中にはStack Overflowで特に事前学習することを提案して、特定のタスクに対してより効果的だと見つけた人もいるよ。私たちの仕事では、このアイデアを拡張し、Stack Overflowから得られる豊かで膨大なデータに焦点を当てることで、これらのモデルの訓練方法を改善するつもりさ。

Stack Overflowの概要

Stack Overflowは、特にソフトウェアプログラマー向けの大規模な質問と回答のプラットフォームだよ。各投稿は、タイトル、質問の本文、回答の本文、ユーザーのコメントなどいくつかの重要な要素で構成されている。タイトルは質問が何についてのものかを簡単に説明し、質問の本文にはユーザーの問題や疑問に関する詳しい情報が含まれている。

回答の本文には、他のユーザーからの質問に対する応答が含まれていて、コメントはメインの投稿に対する追加の文脈、明確化、提案を提供するよ。投稿はトピックを説明するキーワードでタグ付けされていて、ユーザーが関連する質問や回答を見つけやすくしている。

ユーザーがサイトで質問をするとき、テキストだけでなく、サンプルコードやスクリーンショット、リソースへのリンクなど、関連資料も提供することが多いよ。さらに、タグを使ってプログラミング言語やライブラリを特定することもある。質問が投稿されると、他のユーザーが回答を提供でき、元の投稿者が1つを受け入れられた解決策として選ぶことができるんだ。

コミュニティはまた、回答や質問に対してアップボートやダウンボートを行うことができ、最も役立つコンテンツを強調し、低品質の投稿を減らす手助けをしているよ。ただし、受け入れられた答えが必ずしも最も多くの票を持っているわけではなく、問題解決の方法についての意見の豊かな多様性を示しているのが興味深いね。

事前学習された言語モデルの構造

言語モデルは提供されたコンテキストに基づいてテキストを予測するんだ。大きく分けて2つのタイプがあって、自己回帰モデルとマスクドランゲージモデルがある。自己回帰モデルは、前の単語に基づいてシーケンスの次の単語を予測する。一方、マスクドランゲージモデルは、テキストの中で隠された特定の単語を予測するよ。

どちらのタイプも広範なテキストデータセットで事前学習でき、文書をトレーニングの例に分解することができる。自己回帰モデルは新しいテキストを生成する際に特に役立ち、ChatGPTのようなモデルがその例だね。マスクドランゲージモデル、例えばBERTは、トレーニングの際に文書全体を利用することで、テキストの理解を深めることができる。

Googleが開発したBERTは特に注目に値するよ。文の中のマスクされた単語を予測することで、コンテキストから学ぶユニークなアーキテクチャを利用している。これによって、テキストの意味をよりよく把握できるようになり、名前付きエンティティをタグ付けしたり、テキストを分類したりするさまざまなタスクに効果的なんだ。

Googleは、サイズと複雑さが異なるBERTの2つのバージョン、BERTBaseとBERTLargeをリリースしている。BERTBaseは1億1000万のパラメータを持ち、BERTLargeは約3億4000万のパラメータを持っている。私たちのモデルであるSOBertBaseとSOBertLargeは、Stack Overflowの豊かなデータに焦点を当てながら、同様のアーキテクチャを活用することを目指してるよ。

Stack Overflowデータでの訓練

Stack Overflowは、質問、回答、コメント、ユーザーのインタラクションを含む、定期的に更新される公開コンテンツのダンプを提供している。この豊かなデータの量と、コードの横に説明文が明確に注釈されていることが、ソフトウェア工学研究の優れたリソースとなっているんだ。

でも、Stack Overflowデータを扱うにはいくつかの課題があるよ。回答の質は大きく異なっていて、一部は不完全だったり文脈が不足していたりすることがある。また、膨大な量のデータがあるため、特定の研究質問に関連する高品質のコンテンツを見つけるのが難しいんだ。

データの質を向上させるために、少なくとも1つのアップボートがある回答に焦点を当ててフィルタリングを行うよ。フィルタリングの後、数百万の回答投稿とコメントを得て、訓練用のデータセットを作成したんだ。

訓練用のモデルに適したデータにするために前処理を行う。これには、テキストをトークン化して清掃することが含まれ、コードスニペットをそのまま保持することが重要なんだ。清掃されたテキストは、言語モデルでの効率的な処理のためにトークン化されるよ。

モデル設計と訓練プロセス

私たちの設計では、モデルの最大入力シーケンス長を2048トークンに設定している。これは、多くのモデルで使用される通常の512トークンからの大幅な増加だ。この決定は、Stack Overflowの投稿が多くの伝統的な長さの制限を超えることが多いと言う分析に基づいていて、訓練中により多くの有用な文脈を保持できるようにするためなんだ。

私たちは、125百万パラメータのSOBertBaseと762百万パラメータのSOBertLargeという2つのモデルに訓練を分けて行う。訓練は効率的な並列処理を確保するために先進的な手法とツールを使用するよ。私たちのモデルは100,000ステップ訓練し、数十億トークンに触れて、データから効果的に学ぶことができるようにする。

この訓練の総コストは、多くの最先端モデルに比べて比較的低く、小さなチームやリソースが限られている研究者にとってアクセスしやすいものになっているよ。

モデルのパフォーマンス評価

私たちのモデルのパフォーマンスを評価するために、Stack Overflowの質問と回答を理解することに焦点を当てた4つの異なるタスクで微調整を行うよ。これらのタスクは以下の通り:

  1. 質問の質予測:プラットフォームに投稿された質問の質を判断する。
  2. クローズド質問予測:質問がモデレーターによってクローズされるかどうかを予測する。
  3. 名前付きエンティティ認識:テキスト内の重要な技術的エンティティを特定する。
  4. 廃止検出:古い情報やコードが含まれているかもしれない回答を特定する。

各タスクごとに、私たちのモデルの効果を一般的なモデルや以前確立された専門モデルと比較して分析するよ。精度や適合率、F1スコアのような指標を使って、パフォーマンスの包括的な理解を提供する。

結果は、SOBertがすべてのタスクで他のモデルを大幅に上回ったことを示している。小さいSOBertBaseモデルも驚くべきほど良いパフォーマンスを示していて、特定のデータで効果的に訓練された小さなモデルが強い結果を得られることがわかったんだ。

結論

私たちの研究を通じて、特定のデータセットで訓練された専門モデルの重要性を強調しているよ。結果は、少ないパラメータのモデルでさえ、高品質で関連性のあるデータで訓練されれば、大きな一般モデルを上回ることができることを示している。

私たちは、誰でもStack Overflowのコンテンツを理解するのに役立つ貴重なツールを提供するために、モデルを公開するよ。この作業は、訓練データやモデル設計に注意深く考慮することが、自然言語処理やソフトウェア工学のタスクで成功を収めるために重要であることを示しているんだ。

オリジナルソース

タイトル: "Medium" LMs of Code in the Era of LLMs: Lessons From StackOverflow

概要: Large pre-trained neural language models have brought immense progress to both NLP and software engineering. Models in OpenAI's GPT series now dwarf Google's BERT and Meta's RoBERTa, which previously set new benchmarks on a wide range of NLP applications. These models are trained on massive corpora of heterogeneous data from web crawls, which enables them to learn general language patterns and semantic relationships. However, the largest models are both expensive to train and deploy and are often closed-source, so we lack access to their data and design decisions. We argue that this trend towards large, general-purpose models should be complemented with single-purpose, more modestly sized pre-trained models. In this work, we take StackOverflow (SO) as a domain example in which large volumes of rich aligned code and text data is available. We adopt standard practices for pre-training large language models, including using a very large context size (2,048 tokens), batch size (0.5M tokens) and training set (27B tokens), coupled with a powerful toolkit (Megatron-LM), to train two models: SOBertBase, with 109M parameters, and SOBertLarge with 762M parameters, at a budget of just $\$187$ and $\$800$ each. We compare the performance of our models with both the previous SOTA model trained on SO data exclusively as well general-purpose BERT models and OpenAI's ChatGPT on four SO-specific downstream tasks - question quality prediction, closed question prediction, named entity recognition and obsoletion prediction (a new task we introduce). Not only do our models consistently outperform all baselines, the smaller model is often sufficient for strong results. Both models are released to the public. These results demonstrate that pre-training both extensively and properly on in-domain data can yield a powerful and affordable alternative to leveraging closed-source general-purpose models.

著者: Manisha Mukherjee, Vincent J. Hellendoorn

最終更新: 2024-01-24 00:00:00

言語: English

ソースURL: https://arxiv.org/abs/2306.03268

ソースPDF: https://arxiv.org/pdf/2306.03268

ライセンス: https://creativecommons.org/licenses/by/4.0/

変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。

オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。

著者たちからもっと読む

類似の記事

暗号とセキュリティフェデレーテッドラーニングにおけるデータプライバシーの脅威を理解する

この記事では、フェデレーテッドラーニングにおけるデータプライバシーリスクと検出方法について話してるよ。

― 1 分で読む