論文の概要: WatChat: Explaining perplexing programs by debugging mental models
- arxiv url: http://arxiv.org/abs/2403.05334v2
- Date: Wed, 02 Oct 2024 17:05:24 GMT
- ステータス: 翻訳完了
- システム内更新日: 2024-10-03 15:16:38.252490
- Title: WatChat: Explaining perplexing programs by debugging mental models
- Title(参考訳): WatChat: メンタルモデルをデバッギングしてパープレッシャプログラムを説明する
- Authors: Kartik Chandra, Katherine M. Collins, Will Crichton, Tony Chen, Tzu-Mao Li, Adrian Weller, Rachit Nigam, Joshua Tenenbaum, Jonathan Ragan-Kelley,
- Abstract要約: 私たちは、JavaScriptの型強制とGitのバージョン管理システムの2つのドメインで説明のためのシステムを構築します。
We show that WatChat's explanations exhibit key features of human-written explanation, different of a state-of-the-art language model。
- 参考スコア(独自算出の注目度): 33.238462470842386
- License:
- Abstract: Often, a good explanation for a program's unexpected behavior is a bug in the programmer's code. But sometimes, an even better explanation is a bug in the programmer's mental model of the language or API they are using. Instead of merely debugging our current code ("giving the programmer a fish"), what if our tools could directly debug our mental models ("teaching the programmer to fish")? In this paper, we apply recent ideas from computational cognitive science to offer a principled framework for doing exactly that. Given a "why?" question about a program, we automatically infer potential misconceptions about the language/API that might cause the user to be surprised by the program's behavior -- and then analyze those misconceptions to provide explanations of the program's behavior. Our key idea is to formally represent misconceptions as counterfactual (erroneous) semantics for the language/API, which can be inferred and debugged using program synthesis techniques. We demonstrate our framework, WatChat, by building systems for explanation in two domains: JavaScript type coercion, and the Git version control system. We evaluate WatChatJS and WatChatGit by comparing their outputs to experimentally-collected human-written explanations in these two domains: we show that WatChat's explanations exhibit key features of human-written explanation, unlike those of a state-of-the-art language model.
- Abstract(参考訳): しばしば、プログラムの予期せぬ振る舞いのよい説明は、プログラマのコードのバグである。
しかし、時として、より優れた説明は、プログラマが使用している言語やAPIのメンタルモデルにおけるバグである。
単に現在のコードをデバッグする("プログラマに魚を与える")のではなく、私たちのツールがメンタルモデルを直接デバッグできるとしたらどうでしょう("プログラマに魚を教える")?
本稿では,計算認知科学の最近の考え方を応用して,それを正確に行うための原則的枠組みを提供する。
プログラムに関する「なぜ?」質問が与えられたら、私たちは、ユーザーがプログラムの振る舞いに驚くかもしれない言語/APIに関する潜在的な誤解を自動的に推測し、その誤解を分析してプログラムの振る舞いを説明する。
我々のキーとなる考え方は、誤解を言語/APIの逆の(誤った)意味論として正式に表現することであり、プログラム合成技術を用いて推論し、デバッグすることができる。
当社のフレームワークであるWatChatは、JavaScriptの型強制型システムとGitのバージョン管理システムという2つのドメインで説明するためのシステムを構築することで、実演しています。
我々は、WatChatJSとWatChatGitの出力を、これらの2つの領域において実験的にコンパイルされた人間による説明と比較することにより評価した。
関連論文リスト
- NExT: Teaching Large Language Models to Reason about Code Execution [50.93581376646064]
大規模言語モデル(LLM)のコードは通常、プログラムの表面テキスト形式に基づいて訓練される。
NExTは,プログラムの実行トレースを検査し,実行時の動作を判断する手法である。
論文 参考訳(メタデータ) (2024-04-23T01:46:32Z) - What is a "bug"? On subjectivity, epistemic power, and implications for
software research [8.116831482130555]
バグ」は少なくとも1870年代からの工学的「欠陥」の口語である。
現代のソフトウェア指向の定義のほとんどは、開発者が意図したものと、プログラムが実際に何をするかを区別するものである。
バグをファインディングするのは簡単だ" と最初に言うのは,“バグパターンはしばしばエラーとなるコード”だ。
論文 参考訳(メタデータ) (2024-02-13T01:52:42Z) - GuardRails: Automated Suggestions for Clarifying Ambiguous Purpose Statements [0.0]
関数の前に、プログラマは目的のステートメント、すなわち関数が何を計算するかの、短い自然言語による説明を書くことを奨励される。
目的のステートメントは曖昧であるかもしれない、すなわち、2つ以上の非等価な計算が特定の入力に当てはまる場合、意図した振る舞いを特定できないかもしれない。
本稿では,Large Language Models (LLMs) を用いてそのような入力を提案する小説を提案する。
我々は、Pythonプログラミング言語のVisual Studio Codeの拡張として、データセットのオープンソース実装を作成します。
論文 参考訳(メタデータ) (2023-12-13T14:56:42Z) - Natural Language Embedded Programs for Hybrid Language Symbolic Reasoning [84.12154024070024]
本研究では,数学・記号的推論,自然言語理解,後続の課題に対処するための統合フレームワークとして,自然言語組み込みプログラム(NLEP)を提案する。
我々のアプローチは,構造化知識の自然言語表現を含むデータ構造上の関数を定義する完全なPythonプログラムを生成するよう,言語モデルに促す。
Pythonインタープリタが生成されたコードを実行し、出力をプリントする。
論文 参考訳(メタデータ) (2023-09-19T17:54:21Z) - On Feasibility of Declarative Diagnosis [0.0]
論理プログラムの宣言的診断には有用な方法があり、実際のプログラミングでは有効であるべきだと論じる。
本稿では、その主な弱点について論じ、克服方法を示す。
論文 参考訳(メタデータ) (2023-08-30T08:56:19Z) - Generative Models as a Complex Systems Science: How can we make sense of
large language model behavior? [75.79305790453654]
事前訓練されたモデルから望ましい振る舞いを排除し、望ましくないモデルを避けながら、NLPを再定義した。
言語モデルの振る舞いをタスク間性能を説明するカテゴリに分解する体系的な取り組みについて論じる。
論文 参考訳(メタデータ) (2023-07-31T22:58:41Z) - A Static Evaluation of Code Completion by Large Language Models [65.18008807383816]
単純なプログラミング問題に対するモデル生成コードの機能的正当性を評価するために,実行ベースベンチマークが提案されている。
プログラムを実行せずにエラーを検出するlinterのような静的解析ツールは、コード生成モデルを評価するために十分に研究されていない。
抽象構文木を利用して,Pythonのコード補完における静的エラーを定量化する静的評価フレームワークを提案する。
論文 参考訳(メタデータ) (2023-06-05T19:23:34Z) - Understanding Programs by Exploiting (Fuzzing) Test Cases [26.8259045248779]
プログラムのより深い意味理解を実現するために,入力と出力/振る舞いの関係を学習に取り入れることを提案する。
コードの大部分の実行をトリガーするのに十分な入力を得るために,ファズテストを採用し,ファズチューニングを提案する。
提案手法の有効性は,コードクローン検出とコード分類を含む2つのプログラム理解タスクにおいて検証され,最先端技術よりも大きなマージンで優れている。
論文 参考訳(メタデータ) (2023-05-23T01:51:46Z) - Using Large Language Models to Enhance Programming Error Messages [5.903720638984496]
大規模な言語モデルは、エラーメッセージのプログラミングに有用な拡張を作成するために使用することができる。
我々は,大規模言語モデルの利点と欠点について論じ,プログラムエラーメッセージの強化に向けた今後の研究の流れを浮き彫りにする。
論文 参考訳(メタデータ) (2022-10-20T23:17:26Z) - Diagnosing AI Explanation Methods with Folk Concepts of Behavior [70.10183435379162]
我々は「成功」は、その説明がどんな情報を含むかだけでなく、人間の説明者がどのような情報から理解するかにも依存すると考えている。
我々は、人間の説明による社会的帰属の枠組みとして、行動の民意的概念を用いる。
論文 参考訳(メタデータ) (2022-01-27T00:19:41Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。