Upgrade to Pro — share decks privately, control downloads, hide ads and more …

慶應義塾大学 機械学習基礎02 LLMによる問題解決支援

慶應義塾大学 機械学習基礎02 LLMによる問題解決支援

More Decks by Semantic Machine Intelligence Lab., Keio Univ.

Other Decks in Technology

Transcript

  1. ChatGPT [OpenAI, 2022/11/30] ▪ ChatGPT:大規模言語モデル(Large Language Model; LLM)を用い たチャットボット ▪

    言語モデル:単語列の生成確率を推定するモデル ▪ 「ChatGPT」はサービス名であるが、口語では大規模言語モデルを 指すことが多い ▪ 以前のチャットボット ▪ 数十年前から何度も盛り上がるものの、 キラーアプリに欠けるため必需品とならず ▪ 関連技術を今後の授業で紹介 -9-
  2. ハルシネーションとコーディングへの影響 ▪ ハルシネーション(錯誤) ▪ いかにも正しそうだが実際には誤りである内容の生成 ▪ ハルシネーションの影響を軽減するには? ▪ 調べ物: ハルシネーションかどうかわからないこともある

    ▪ コーディング: コンパイラのエラーメッセージをもとに間違いを 修正しやすい ▪ 教科書で調べる、検索する、人に聞く、をバランスよく組み合わせる のが良い - 13 -
  3. 大規模言語モデルによるコード生成で起こった問題の例 (2022/10 GitHub Copilot) ▪ Texas A&M Univ.のTim Davis 教授:「自分が著作権を有する

    コードを、attributionやLGPL 表示なしでCopilotが生成し た」 ▪ プロンプト:「sparse matrix transpose, cs_」 ▪ 感想:確かに多くは類似 ▪ コメントまでコピペされて いる点は類似とみなされて もやむを得ない https://twitter.com/DocSparse/status/1581632706693079042/photo/1 - 19 -
  4. 注意:リテラシーや法的問題 ▪ プロンプトに含めるべきではない情報に注意 ▪ 個人情報、パスワード、APIキー、機密情報等 ▪ 「公に書けない情報」を入力してはならない ▪ 他者の著作権を侵害してはならない ▪

    例:「生成されたコードを公開したが、後になって他者 の著作物と著しく似ていることがわかった」という状況 は許されない ▪ 利用規約に反する行為 ▪ 利用規約が書かれたページがサービスごとに存在するの で読むこと - 20 -
  5. 初歩的な内容を質問する(3分) 課題:以下をChatGPTに入力せよ 1. NumPyについて教えて ▪ 上記回答中のわからない内容についてさらに問い合わせよ ▪ 例:「ブロードキャストとは何ですか」 2. 現在、google

    colaboratoryのノートブックの画面を見ています。この ノートブックを実行する手順を教えてください 3. 以下のコードを説明してください。 np.loadtxt(fname, delimiter=",") - 24 -
  6. エラーメッセージと修正方法の解説 ▪ 課題:以下をChatGPTに入力せよ 以下のエラーについて説明し、どのように修正すればよいか教えてください。 ZeroDivisionError Traceback (most recent call last)

    <ipython-input-6-b457b0d96231> in <module> 1 ans = 0 2 for i in range(10): ----> 3 ans += A[i] // B[i] 4 print(ans) ZeroDivisionError: integer division or modulo by zero - 25 -
  7. docstringの生成 ▪ 課題:以下をChatGPTに入力せよ 以下の関数のdocstringを生成してください。出力はdocstringのみとしてください: def zeller(year, month, day): if month

    <= 2: year -= 1 month += 10 else: month -= 2 w = day + int((13 * month - 1) / 5) + year + int(year / 4) - int(year / 100) + int(year / 400) x=w%7 return x # コンソールから入力を受け取る year = input("誕生年を入力してください(Enterで決定):") month = input("誕生月を入力してください(Enterで決定):") day = input("誕生日を入力してください(Enterで決定):") # 曜日の計算を0-6の間で計算する x = zeller(year, month, day) # 出力 ws = ["日", "月", "火", "水", "木", "金", "土"] print(f"{year}年{month}月{day}日の曜日は{ws[x]}曜日です") - 27 -