最新AI論文をキャッチアップ

化学・化学工学における大規模言語モデルの可能性、コード生成能力の有用性と限界

化学・化学工学における大規模言語モデルの可能性、コード生成能力の有用性と限界

Large language models

3つの要点
✔️ 大規模言語モデルの化学分野への応用: 大規模言語モデルは、化学の問題解決に有用であるが、その適用範囲と限界は十分に探究されていない。化学問題を解決するための専門知識の蓄積がモデルの適用性に影響を及ぼす可能性がある。
✔️ コード生成能力の評価: 大規模言語モデル、特にCodeBERTやGPT-3のバリエーションは、化学や化学工学の問題を解決するためのコード生成に有用であるが、専門家による評価が必要な場合がある。これらのモデルは、化学シミュレーションや分子ダイナミクスなどのタスクにおいて、その能力を試されている。

✔️ 研究の意義と将来の応用: この論文は、大規模言語モデルが化学と化学工学の分野でどのように有効活用できるか、その能力と限界を理解するための重要なステップである。

Assessment of chemistry knowledge in large language models that generate code
written by 
Andrew D. White, Glen M. Hocky, Heta A. Gandhi, Mehrad Ansari, Sam Cox, Geemi P. Wellawatte, Subarna Sasmal, Ziyue Yang, Kangxin Liu, Yuvraj Singh, Willmor J. Peña Ccoa 

(Submitted on 12 Dec 2022)
Subjects: deep learning, language models, large language models, prompt engineering

本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。  

概要

大規模言語モデルは、複雑なトランスフォーマーニューラルネットワークに基づき、数十億ものパラメータを用いて、広範な文書集合から学習します。これらのモデルは、テキスト分類、翻訳、検索といった多岐にわたるタスクをこなし、特にテキストの自動完成という側面で大きな注目を集めています。この技術は、ユニットテストの作成から関数のドキュメンテーション、コードの生成、質問への回答、化学反応式の完成に至るまで、幅広い応用が可能です。

化学の分野では、特定の問題解決に特化した大規模言語モデルや、より汎用的な大規模言語モデルの応用について以前から議論があります。GPT-3やT5のような多様なテキストで学習された大規模言語モデルが、化学の専門知識や言語をどの程度理解し、活用できるかは、依然として重要な疑問です。初期の研究では、分子構造を表すSMILES表記と自然言語の間での相互作用が可能であることが示されましたが、化学における大規模言語モデルの適用範囲やその制限は、まだ十分には探究されていません。特に、化学問題を解決するために必要な専門知識の広範な蓄積が、大規模言語モデルの適用性に制約をもたらす可能性があります。

コード生成に関して、最近の研究では大規模言語モデルが計算化学の問題やその他のプログラミングタスクにどの程度適用可能かを探っています。多くの大規模言語モデルは、テキストのプロンプトに基づいて続きを生成するデコーダのみのモデルですが、CodeBERTのようにコード生成に特化したモデルも存在します。しかし、これらは主にコードの埋め込みや分類、自然言語への翻訳といったタスクに用いられます。

この論文では、大規模言語モデルが自然言語、方程式、コード、化学の発見法をどのように関連付けるか、その能力を評価します。重要なのは、大規模言語モデルが見せる説得力のあるテキスト生成が、必ずしも深い理解や推論能力を示すわけではないという点です。この研究の目標は、表面的な理解を超え、化学における大規模言語モデルの真の潜在能力を明らかにすることにあります。

手法

この論文では、化学と化学工学の分野における知識を深く掘り下げ、コード生成に関する大規模言語モデルの性能を測定するための包括的な調査を実施しています。この研究では、化学全般から特定の専門分野に至るまで、多岐にわたるトピックをカバーする分類された問題セットを集約しています。まず、化学と化学工学の知識領域を細分化し、各分類に最低10の例を含むようにしています。これらの例は、著者の研究チームが持つ豊富な教育と研究の背景を活かして選ばれ、専門家による洞察と参考解答が付されています。

この研究の中核となるのは、化学関連の問題を解決する能力を備えた、いくつかの最先端のコード生成できる大規模言語モデルの評価です。例えば、化学シミュレーション、分子ダイナミクス、化学情報学、量子力学などの分野です。これらの問題は、実際の化学や化学工学のクラスで遭遇する可能性のある、より一般的な質問とともに、大規模言語モデルの能力を試すために選ばれています。

特に注目すべきは、専門家のみが適切に評価できる特定の問題タイプ(例えば、プロット作成)があり、これらは自動評価では対応が難しいという点です。全体として、84の問題例が収集され、そのうち25は専門家の評価を必要としました。最大で数十億のパラメータを持つモデルに焦点を当て、その性能と精度の関係を深く掘り下げています。

この研究では、特にGPT-3のバリエーションであるCodex(cushman)、GPT-3.5から派生したdavinci(code-davinci-002)、さらには人間のフィードバックに基づいて強化学習を施したtext-davinci-003(davinci3)を含む複数のモデルを評価しています。これらのモデルは、化学の問題解決における彼らの能力を比較するために選んでいます。 

また、コード生成に特化した「incoder」モデルと、同様のデータセットで訓練されたが、自然言語とコードの合成に焦点を当てた「codegen」モデルも検討しています。これらのモデルは、特定の化学関連のタスクにおけるパフォーマンスを測定する上で、貴重な比較対象となっています。

この研究により、化学と化学工学の分野におけるコード生成の大規模言語モデルの能力と限界を深く理解することができます。これは、未来の科学技術の進歩に向けた貴重なステップであり、研究者や開発者がより効果的なモデルを設計するための洞察を提供しています。

人工知能モデル「davinci」が一般的なプログラミングタスクにおいて最高の成績を収めていることが示されています。この研究で使用された「Incoder」は、HuggingFaceのトランスフォーマーモデルをベースにしており、最新のライブラリ変更が結果に影響を及ぼさないよう、2021年6月のPythonのバージョンとパッケージを用いて評価が行われています。この日付の選択は、以前の研究の訓練データ範囲に基づいています。

プロンプトとその解答の開発に際しては、davinciを利用してテストと修正が行われましたが、プロンプトエンジニアリングを完全に避けることはできませんでした。重要なのは、プロンプトが単に正しい答えを導出するためではなく、人工知能モデルが化学に関してどれだけ知っているかを探るために設計されたという点です。報告された精度は、あくまで一例であり、プロンプトエンジニアリングによってさらなる精度の向上が可能であることが最近の研究で示されています。 

評価基準には、プロンプトが正確な完成を達成したかどうか、つまりコードが正しく機能するかどうかを基準にしています。ほとんどのケースでは、プロンプトと単体テストが用意されており、専門家による評価はこれらの基準に基づいて行われました。完成品の生成には、トップkサンプリングと複数の温度設定が使用され、最終的には、モデルの多様性と正確さのバランスを考慮して、特定のパラメータが選択されています。 

さらに、専門家による評価は、ウェブインターフェースを通じて、特定の条件下で実施されました。評価プロセスには、問題の難易度や解決策の正確性に関する質問が含まれ、詳細なフィードバックを提供するための追加のコメント欄も設けられました。このような評価から得られたデータは、将来の研究や開発のための重要なインサイトを提供しています。 

この研究は、人工知能がプログラミングタスクをどの程度正確に実行できるか、特に化学の分野における知識と能力に焦点を当てています。プロンプトエンジニアリングの進歩とともに、これらのモデルの能力はさらに拡張されることが期待されます。

実験結果

まずは例題の紹介について説明しています。この論文では、大規模言語モデルがどのように様々なタスクを解決し、印象的な成果を出すかを示すために、特定のカテゴリのタスク出力を下図で紹介しています。

タスクの出題形式を統一するため、関数を記入する形でプロンプトを設定しました。初めに、数値計算に特化したPythonライブラリ(numpy39)を読み込むコードを示し、これが追加の「コンテキスト」となります。タスクに必要な情報は二つの部分、入力変数「n_steps」、「T」、「k」の名称と、関数の目的を説明するコメントから成り立っています。例えば、調和ポテンシャルにおけるメトロポリス・モンテカルロ法を実行する関数を紹介しています。

ここで、「k」はばね定数を示し、エネルギー関数 U(x) = 1/2k(x−x0)^2(x0 = 0 として)に基づくサンプルを生成するよう指示されていますが、ボルツマン定数 kB = 1.0 とする縮小単位が使用されています。

ほんの少しの指示であっても、特定の行にマークされたエラーを除き、出力されたコードは正確です。ただし、粒子の位置が[-1,1)の範囲で新たにサンプリングされるこの行は、系が特定の条件下でのみ正確な結果をもたらします。モデルからの他の出力では、位置をガウス乱数で微調整する方法が提案されており、これらも適切なアプローチですが、ばね定数や温度によってはσ^2 = 1の設定が最適でない場合があります。

また、下図では、davinci-codexモデルが化学、特に相平衡に関する一般化学の知識を内部に持っていることを示す追加の例を紹介しています。

このモデルはClaussius-Clapeyron方程式の適切な再配置を「知っており」、蒸発熱('Hvap')がジュール/モル単位で与えられた場合の正確な結果を出力します。これらの例は、LLMが単にテキストを生成するだけでなく、特定の専門知識を適用して論理的な結論を導き出す能力を持っていることを示しています。プロンプトに何が含まれているか、または明示的に述べられているかによって、結果が大きく変わる可能性があるため、使用者はこの点に注意する必要があります。

次は、専門家による評価について、紹介しています。この論文では、化学の様々な分野における方程式や一般的な計算法に関する広範な知識を持つ、最も性能が優れているモデル「Davinci」に焦点を当てています。下表に示されているように、さまざまなトピックやモデルを対象とした専門家による評価可能なトピックにおける全体的な正確性を評価しています。

結果として、Davinciを含むモデルは、広範囲にわたるトピックに対して正確な回答を提供できることが分かり、中でもDavinciが最も優れた成績を収めました。プロンプトエンジニアリングによって約30パーセントポイントの正確性が向上することが明らかになっています。

しかし、人間による評価が可能なトピックにおける平均的な正確性は比較的低く、これはタスクの難易度が高いことを反映しています。具体的には、NWChemの入力ファイル作成、調和振動子のモンテカルロシミュレーション実装、複雑なマルチパネルプロット生成など、より高度なタスクが含まれています。

さらに、下図に示されるように、個々の評価から見たタスクの難易度の内訳を明らかにしました。専門家の判断によると、データセットには簡単なプロンプトと難しいプロンプトがバランスよく含まれています。

主要な発見は、モデルの正確性が認識されるプロンプトの難易度と負の相関関係にあるということです。これは予測可能な結果ですが、当然の結果とは限りません。

評価のプロセスにおいて、ランダム化や特定のコントロールは実施されず、評価者はすべてのプロンプトとそれに対するすべての出力を閲覧可能です。このため、ウェブサイト上でのプロンプトの提示順序や結果の表示順序など、様々な要因により評価結果にバイアスが生じる可能性があることを認識しています。この論文では、期待される解答と比較して自動的に正確性を評価できるプロンプトのみに焦点を絞っています。

また、大規模言語モデルの性能向上についても言及しています。プロンプトエンジニアリングの基本戦略を駆使することで、大規模言語モデルの精度を大幅に向上させることが可能です。この論文では、下図のようにモデルに与える「コンテキスト」が精度に及ぼす影響を明らかになっています。

このコンテキストとは、プロンプトの前に追加されるコードであり、サポーティング情報として機能します。具体的には、「カスタム」コンテキストには、トピックに関連するライブラリのインポートと、モデルに完了の終わりを指示する単一の例が含まれています。このアプローチは、エラーの予防とコンテキストの提供の両方に役立つと考えられます。

例えば、化学情報学用の「rdkit」をインポートすることで、「structure」という言葉が原子の結合配列を意味するようになります。一方、「openmm」をインポートした場合、「structure」は3Dの原子配置を暗示します。また、インポートされたパッケージのバージョン番号を表示するような完了の例を提供することで、大規模言語モデルは完了を特定のポイントで終了させることができます。

さらに、プロンプトに特定のフレーズを加えることで、大規模言語モデルの反応が顕著に改善されることがわかりました。例えば、「very」を繰り返し加える、または「このコードにはバグがない」と明記することが有効です。この論文では、下図のように、著作権表示をプロンプトに挿入することで、高温度での精度が著しく向上することを発見しました。これは、大規模言語モデルがより標準的または高品質のコードを選択する傾向があるためです。さらに、「これは専門家のPythonプログラマーによって書かれています」という文言を加えることで、さらなる改善がされています。

このような発見は、コードの人気度などのメタデータを使用して大規模言語モデルを条件付ける新しい研究につながりました。これにより、アドホックなプロンプトエンジニアリングに頼ることなく、性能を向上させることができます。興味深いことに、davinci3モデルの改良により、プロンプトエンジニアリングへの感受性が減少していることが示されました。これは、人間のフィードバックを活用することで、より自然で直感的なユーザー体験を提供する大規模言語モデルの開発につながります。

プロンプトエンジニアリングの適切な戦略を用いることで、大規模言語モデルの性能を飛躍的に向上させることができることが、私たちの研究から明らかになりました。この発見は、将来の大規模言語モデル開発において、より洗練されたアプローチを採用するための基盤を提供しています。

さらに、この論文では、大規模言語モデルが化学の知識をどの程度持っているか、そして自然言語と分子構造を直接結びつける能力があるかどうかを評価する試みが行われました。この研究では、特にInstructGPTとdavinciという二つのモデルをテストしましたが、InstructGPTの方がより優れた結果を示しています。

分子のSMILES表現からその分子の名称への変換に挑戦したところ、どちらのモデルも成功せず、pubchemから選んだ100個のランダムな分子(比較的小さくシンプルな分子)で0%を記録しました。しかし、InstructGPTは分子を説明する文をSMILES表現に変換する能力を持っていることが示されました。例えば、下図に示されているように、特定の機能基をSMILESから自然言語に結びつけることができます。完全な一致ではありませんが、例えばフェノールの場合、環の近くに酸素が存在するなど、ある程度の相関関係が見られています。

また、InstructGPTは分子の特性(例えば親水性)をSMILESと関連付けることが可能であり、無効なSMILESを生成することはほとんどありませんでした。ただし、上図で最初に示された分子では1つの無効な文字が見つかっています。

この研究は、InstructGPTや他の大規模言語モデルが自然言語と化学構造との間の関連を学習・微調整する可能性があることを示唆しています。さらに、最近では分子構造と自然言語を翻訳できる特定のモデルがゼロから訓練されていることも注目に値します。これらの進展は、化学分野における大規模言語モデルの応用可能性を広げるものであり、今後の研究の発展が期待されます。  

まとめ

Davinciは計算化学の推論に苦戦しているようです。特に、「pyscfを使用した高精度な単点量子計算」のようなプロンプトに対して、計算される性質にかかわらず、"相対論的"が精度と関連づけられているために、相対論的ハートリー・フォック法を頻繁に選択します。また、「力定数」プロンプトのように、特定の計算式を質量の調和平均に再配置する必要がある場合、davinciは解を見つけることができません。

さらに、davinciは存在しない関数を引用することがあり、「SMILES文字列から残余双極子結合を返す」といった難問に対して、現実には存在しないMolToRDCメソッドを用いようとします。これは、LLMがプロンプトの完成時に化学的推論を行うことが困難であることを示しています。

注目すべきは、自然言語が中国語、ドイツ語、スペイン語である場合、LLMが多くのベンチマーク問題を解決できる可能性があるということです。これは、非英語話者が計算ツールを利用する際の障壁を下げるのに役立つかもしれません。

現在、tabnineやcopilotのようなツールを通じてLLMが容易に利用可能になっています。計算化学の問題に対しては高精度が期待される一方で、難しいプロンプトを使用する際には慎重さが求められます。意外な能力として、自然言語から分子を生成したり、非英語のプロンプトで正確な結果を出力することもありました。

Takumu avatar
インターネット広告企業(DSP、DMP etc)や機械学習スタートアップで、プロジェクトマネージャー/プロダクトマネージャー、リサーチャーとして働き、現在はIT企業で新規事業のプロダクトマネージャーをしています。データや機械学習を活用したサービス企画や、機械学習・数学関連のセミナー講師なども行っています。

記事の内容等について改善箇所などございましたら、
お問い合わせフォームよりAI-SCHOLAR編集部の方にご連絡を頂けますと幸いです。
どうぞよろしくお願いします。

お問い合わせする