Skip to content

Instantly share code, notes, and snippets.

@hangingman
Last active June 14, 2024 01:34
Show Gist options
  • Save hangingman/986f87ec63783921b3078bde916672c2 to your computer and use it in GitHub Desktop.
Save hangingman/986f87ec63783921b3078bde916672c2 to your computer and use it in GitHub Desktop.
flowchart TD
    A[問題の理解と定義]
    subgraph A_detail [問題の理解と定義のプロンプト]
        direction TB
        A1[未知のものは何ですか?]
        A2[データは何ですか?]
        A3[条件は何ですか?]
        A4[条件のさまざまな部分を分けてください。]
        A5[データと未知のものの関連性を見つけてください。]
    end
    
    B[既存の知識や関連問題の探索]
    subgraph B_detail [既存の知識や関連問題の探索のプロンプト]
        direction TB
        B1[これまでに見たことがありますか?]
        B2[同じ問題を少し違った形で見たことがありますか?]
        B3[関連する問題を知っていますか?]
        B4[役立ちそうな定理を知っていますか?]
        B5[未知のものを見てください!そして、同じまたは類似の未知のものを持つ、使い慣れた問題について考えてみてください。]
    end
    
    C[問題の再定式化]
    subgraph C_detail [問題の再定式化のプロンプト]
        direction TB
        C1[条件の一部だけを残し、他の部分は削除してください。その場合、未知のものはどの程度決定されますか?どのように変化させることができますか?]
        C2[データから何か役立つものを導き出すことができますか?]
        C3[未知のものを決定するのに適切な他のデータを考えることができますか?]
        C4[必要であれば、未知のもの、データ、またはその両方を変更して、新しい未知のものと新しいデータが互いに近づくようにできますか?]
        C5[操作のシミュレーションを行い、データから役立つものを導き出してください。]
    end
    
    D[メタ認知によるアプローチの評価]
    subgraph D_detail [メタ認知によるアプローチの評価のプロンプト]
        direction TB
        D1[題意と制約条件に沿って問題は解けそうですか?]
    end
    
    E[計画]
    F[実行]
    G[検証]

    A --> A_detail
    A_detail --> B
    B --> B_detail
    B_detail --> C
    C --> C_detail
    C_detail --> D
    D --> D_detail
    D_detail -->|解決見通しが立たない場合| C
    D_detail -->|解決見通しが立つ場合| E
    E --> F
    F --> G
    G -->|解決できた場合| H[終了]
    G -->|解決できなかった場合| C


Loading
@hangingman
Copy link
Author

hangingman commented Jun 11, 2024

問題解決フロー

問題解決フローの作成理由

  • (1) 算数的なトリックや(2) 定式化によるひらめき、つまり数学的洞察で計算量を減らせる問題にLLMが気づかない

    • いずれもアルゴリズム問題(=決定問題)におけるもので下記のようなところ
      • (1) 数値が書かれたカードが配られて、2枚選んで符号を反転できるとき、全探索せずとも数列の中の負の個数が偶数奇数の場合で最終的に残る数が変わる ( AtCoder Beginner Contest 125 - D Flipping Signs )
      • (2) Problem 32 「パンデジタル積」 のような問題で、問題の条件を数式で整理すると探索範囲が減らせたり桁を絞り込めば探索範囲が減らせたりするもの
  • こういった数学的洞察は人間で出せる人は限られているのでなんとかして計算機にやらせたい

↓ ゆえに

  • 「ひらめき」を誘発するための具体的なフローやpromptは設計できるか?

問題解決フローの元ネタ

  • 文献を読むと、こういったひらめきには一定のフローがあるようだった

  • Schoenfeld, Polyaを比べるとPolyaのアプローチは具体的な手法(補助問題の設定)に重点を置き、自然なメタ認知の活用を含んでいます。一方で、Schoenfeldのアプローチは明確にメタ認知の活用を強調し、問題解決の過程全体をメタ認知的にアプローチしている。

  • 問題の再定式化, メタ認知によるアプローチの評価を繰り返すところが重要で 数学的問題解決の「ひらめく」状態に推移する過程におけるメタ認知の働きを捉えるための素地的研究 でも学生が、ひらめく直前までは問題の見方を変えて、ランダムに解決策を探っていること(その結果、補助線を引いて結論が得られた)、補助線を引いた時点で問題を解決する道筋が立ったことを悟っていることが書かれている

問題解決フローのprompt

  • Polyaの質問を各フローに割り振る
  • やっぱり人間に対する問いかけなので、一部promptにはそぐわない

問題の理解と定義

  1. 未知のものは何ですか? (What is the unknown?)
  2. データは何ですか? (What are the data?)
  3. 条件は何ですか? (What is the condition?)
  4. 条件のさまざまな部分を分けてください。 (Separate the various parts of the condition.)
  5. データと未知のものの関連性を見つけてください。 (Find the connection between the data and the unknown.)

既存の知識や関連問題の探索

  1. これまでに見たことがありますか? (Have you seen it before?)
  2. 同じ問題を少し違った形で見たことがありますか? (Or have you seen the same problem in a slightly different form?)
  3. 関連する問題を知っていますか? (Do you know a related problem?)
  4. 役立ちそうな定理を知っていますか? (Do you know a theorem that could be useful?)
  5. 未知のものを見てください!そして、同じまたは類似の未知のものを持つ、使い慣れた問題について考えてみてください。 (Look at the unknown! And try to think of a familiar problem having the same or a similar unknown.)

これまでに見たことがありますか? をAIに投げると、どういう解答をするんだろう。見たことはないけど知ってそう。

問題の再定式化

  1. 条件の一部だけを残し、他の部分は削除してください。その場合、未知のものはどの程度決定されますか?どのように変化させることができますか? (Keep only a part of the condition, drop the other part; how far is the unknown then determined, how can it vary?)
  2. データから何か役立つものを導き出すことができますか? (Could you derive something useful from the data?)
    未知のものを決定するのに適切な他のデータを考えることができますか? (Could you think of other data appropriate to determine the unknown?)
  3. 必要であれば、未知のもの、データ、またはその両方を変更して、新しい未知のものと新しいデータが互いに近づくようにできますか? (Could you change the unknown, or the data, or both if necessary, so that the new unknown and the new data are nearer to each other?)

新たに以下を追加したい

  • 操作のシミュレーションを行い、データから役立つものを導き出してください
    • できそうであれば、操作のシミュレーションを行い、データから役立つものを導き出してください。
    • 人間がやる程度に具体的で小さなシミュレーションを行うこと。
    • 題意に沿って連続でシミュレーションすること。

メタ認知によるアプローチの評価

  • すべてのデータを使用しましたか? (Did you use all the data?)
  • 条件全体を使用しましたか? (Did you use the whole condition?)

ここの部分は競プロであれば「想定の最悪計算量を元にした時間の見積もりは制限時間を超えましたか?」となる


もちろんこれがWORKするかどうかはわからない

@hangingman
Copy link
Author

hangingman commented Jun 13, 2024

TODO

  • 難しい問題ではメタ認知によるモニタリングをpromptに取り入れたほうが良さそう
  • 特に「題意と制約条件に沿って問題は解けそうですか?」と聞かれて、Noの場合ある種ランダムな試行錯誤をさせるべき、

これらの先行研究に基づき,「ひらめく」状態に推移する過程におけるメタ認知の働きについて分析する。例えば,複雑な図形問題を解決するとき,問題解決者から「とりあえず,わかる角度から求めていこう。」という発言があったとする。このとき,メタ認知が生起していることは明らかである。問題解決者は,自身の経験から,問題を見てモニタリングをし,「図形問題はわかる角度を図に記入していけば,新しい情報が得られる」というメタ認知が働いている。しかし,「とりあえず」という言葉からもわかるように,この時点では問題解決者は解決に向けた見通しが立っているわけではない。

  • (後知恵ではあるが)具体的にはゲーム問題における操作のシミュレーションを行う行為

ある種これが競プロの人が言う「考察」行為なのかもしれない。これけっこうしんどいよねと個人的には思う。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment