精選文章
- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
PoT : Program of Thought
---
在先前:
Grok3 測試 - 該怎麼讓 AI 知道他算錯了呢?不過剛試 Grok3 很厲害, 原本的基金問題, 已經可以正確答對了.
PoT (Program of Thought) 技術介紹
概念概述
Program of Thought (PoT) 是一種新興的提示工程技術,旨在提升大型語言模型(LLMs)在數值推理任務中的表現。這一技術由 Chen 等人在 2023 年的研究中提出,主要通過將推理過程與計算過程分離來提高準確性。與傳統的 Chain of Thought (CoT) 方法不同,PoT 讓模型生成可執行的程式碼(如 Python),並將計算步驟委派給外部解釋器進行執行,從而減少計算錯誤的可能性。
技術優勢
-
準確性提升:PoT 在處理複雜的數學問題和金融推理時,表現出顯著的準確性。研究顯示,PoT 在 GSM8K 數據集上的準確率達到 71.6%,而 CoT 僅為 63.1%。
-
分離推理與計算:PoT 將推理過程與計算過程分開,這樣可以利用 Python 等語言的數值庫來處理大數和複雜計算,避免自然語言處理中常見的四捨五入誤差。
-
廣泛應用:除了數學問題,PoT 還在金融問題回答等任務中顯示出其多樣性和有效性,這使得它在多種應用場景中都能發揮作用。
技術實施
在實施 PoT 時,模型首先生成一系列的推理步驟,這些步驟以程式碼的形式表達,然後這些程式碼會被傳遞給 Python 解釋器進行計算。這種方法不僅提高了計算的準確性,還使得模型能夠處理更複雜的數學表達式,這是 LLMs 在直接計算時常常無法做到的。
結論
總的來說,Program of Thought 技術通過將推理與計算分離,並利用外部解釋器進行精確計算,顯著提升了大型語言模型在數值推理任務中的表現。這一技術的發展不僅擴展了 AI 在數學和金融領域的應用潛力,也為未來的 AI 研究提供了新的方向。
我通常會在以下這些類型的題目中運用「Program of Thought」技巧,並編寫 Python 代碼來一步步推導和驗證答案:
複雜數學推導或符號運算
如求解高次方程、符號微積分、求解系統方程式等,當推導過程涉及多步計算,程式碼可以幫助檢查每一步的正確性。數值近似和迭代計算
比如牛頓法求根、蒙特卡羅模擬、數值積分、最適化問題等,這些問題通常需要反覆計算和驗證,程式碼可以直觀展示收斂過程。演算法和資料結構相關問題
例如圖論算法、排序、搜尋、動態規劃等,這類題目往往需要清晰展示邏輯流程,Python 代碼可以作為一種「程式化的思考」工具來分解問題。統計與機率模擬
如隨機試驗、概率分布模擬、數據生成等題目,透過程式碼模擬實驗過程,可以更直觀地理解統計現象和機率運算。複雜邏輯推理與案例驗證
當問題涉及多個互相依賴的步驟或條件時,利用程式碼逐步驗證每個條件或情境,可以更有條理地解決問題。
總之,當題目具有多步推導、需要驗證中間結果、或能夠利用編程工具來模擬和驗證數學或邏輯過程時,我會使用這種技巧。這不僅能夠使思路更清晰,也方便檢查每一步的正確性。
題目1:
Deepseek R1
題目二:
要計算老巴在銀行存款的利率,我們可以利用複利和單利的計算公式。根據問題,複利計算比單利計算多出446元。
計算公式:
-
單利計算公式:
A單利=P(1+rt)
其中:- A單利 是三年後的總金額
- P 是本金(20,000元)
- r 是年利率
- t 是時間(3年)
-
複利計算公式:
A複利=P(1+r)t
其中:- A複利 是三年後的總金額
根據題意,我們知道:
A複利−A單利=446
將公式代入:
P(1+r)t−P(1+rt)=446
代入 P=20000 和 t=3:
20000(1+r)3−20000(1+3r)=446
簡化後:
20000((1+r)3−(1+3r))=446
接下來,將446除以20000:
(1+r)3−(1+3r)=20000446
(1+r)3−(1+3r)=0.0223
接下來,我們需要解這個方程。可以使用數值方法或代入法來找到 r。
數值解法:
假設 r 的值在0到1之間,我們可以逐步嘗試不同的利率值,直到找到滿足條件的 r。
經過計算,當 r≈0.05(即5%)時,滿足條件:
-
單利計算:
A單利=20000(1+3×0.05)=20000(1+0.15)=20000×1.15=23000 -
複利計算:
A複利=20000(1+0.05)3=20000(1.157625)≈23152.50 -
差額:
23152.50−23000=152.50
這個結果不符合446元的條件,因此需要調整 r 的值,最終找到的利率約為 7%,這樣計算的差額會接近446元。
因此,老巴的年利率約為 7%。
===
剛好今天 Claude 3.7 推出了, 來試試:
=== Claude 3.7 回答 ===
這個問題要求計算銀行的固定利率,我會先分析單利和複利的差別。
讓我們設:
- 本金 = 20,000元
- 年利率 = r (我們要求的未知數)
- 時間 = 3年
- 複利比單利多446元
單利計算:
- 3年的利息 = 本金 × 利率 × 年數
- 單利利息 = 20,000 × r × 3 = 60,000r
複利計算:
- 3年後本利和 = 本金 × (1 + r)³
- 複利利息 = 20,000 × (1 + r)³ - 20,000 = 20,000 × [(1 + r)³ - 1]
由於複利比單利多446元,所以: 20,000 × [(1 + r)³ - 1] - 60,000r = 446
簡化: 20,000 × [(1 + r)³ - 1 - 3r] = 446 20,000 × [(1 + r)³ - 1 - 3r] = 446 (1 + r)³ - 1 - 3r = 446/20,000 = 0.0223
(1 + r)³ = 1 + 3r + 0.0223
這是一個三次方程式,我們可以通過試算法來解決。
讓我們嘗試 r = 0.05 (5%): (1 + 0.05)³ = 1.157625 1 + 3(0.05) + 0.0223 = 1.1723
讓我們嘗試 r = 0.06 (6%): (1 + 0.06)³ = 1.191016 1 + 3(0.06) + 0.0223 = 1.2023
讓我們嘗試 r = 0.07 (7%): (1 + 0.07)³ = 1.225043 1 + 3(0.07) + 0.0223 = 1.2323
讓我們更精確地嘗試 r = 0.068 (6.8%): (1 + 0.068)³ = 1.218691 1 + 3(0.068) + 0.0223 = 1.2263
經過精確計算,利率 r ≈ 0.068,即6.8%。
因此,這三年銀行的固定利率是6.8%。
===
推理蠻對的, 但不知為何不往 8% 走, 反而掉頭推算 6.8%?
蠻棒的, Claude 知道自己有算錯, 不會硬凹
==
Deepseek :
竟然答對了!
想來試試 離線版 Deepseek R1, 最近遇到一些問題, 想說 70B 會不會好些,
這 model 70B 的大小漲到了 42GB ...
但裝好之後, 跑起來很久... 一看活動監視器, 主要記憶體不足, 大多 swap 了...
===
ChatGPT :
答對了.
==
Grok3 + Think
也答對了
老巴在銀行存了兩萬元,三年後領了三年的利息,複利計算比單利計算多446元,假設這三年銀行利率固定相同,我們需要求出這個利率是多少。以下是解題過程:
步驟一:理解單利與複利的定義
- 單利:利息僅根據本金計算,不會將每年的利息加入本金再計算下一年的利息。
- 複利:每年的利息會加入本金,下一年再根據新的本金計算利息,這樣利息會逐年累積。
在本題中:
- 本金 = 20,000元
- 年數 = 3年
- 複利利息 - 單利利息 = 446元
- 假設年利率為 r(百分比形式,例如 r=8.5 表示 8.5%)。
步驟二:建立單利與複利的公式
- 單利利息:
- 公式:單利利息=本金×年利率×年數
- 代入數值:單利利息=20000×100r×3=600×r
- 複利利息:
- 公式:複利利息=本金×(1+年利率)年數−本金
- 代入數值:複利利息=20000×((1+100r)3−1)
- 題目條件:
- 複利利息比單利利息多446元:
20000×((1+100r)3−1)−600×r=446
- 複利利息比單利利息多446元:
步驟三:簡化方程
將公式兩邊除以 20000,整理為:
(1+100r)3−1−3×100r=20000446
計算右邊:
20000446=0.0223
所以方程變為:
(1+100r)3−1−3×100r=0.0223
令 x=100r(即 x 是利率的十進位形式,例如 r=8.5 時 x=0.085),則方程簡化為:
(1+x)3−1−3x=0.0223
展開 (1+x)3:
(1+x)3=1+3x+3x2+x3
代入並簡化:
(1+3x+3x2+x3)−1−3x=3x2+x3
所以:
x3+3x2=0.0223
步驟四:解方程
這是一個三次方程 x3+3x2=0.0223。由於 x 是利率的十進位形式,通常是一個小數(如 0.05 到 0.1 之間),我們可以通過試驗或近似方法求解。
試驗法:
假設 x=0.085(即 r=8.5%):
- x2=0.0852=0.007225
- 3x2=3×0.007225=0.021675
- x3=0.0853=0.000614125
- 3x2+x3=0.021675+0.000614125≈0.022289
結果 0.022289 非常接近 0.0223,誤差僅為 0.0223−0.022289=0.000011,非常小,可以接受。
驗證:
直接用 r=8.5% 計算單利與複利,確認是否滿足題目:
- 單利利息:20000×0.085×3=5100 元
- 複利總額:20000×(1+0.085)3
- (1.085)3=1.085×1.085×1.085≈1.2773
- 20000×1.2773≈25546 元
- 複利利息:25546−20000=5546 元
- 複利利息 - 單利利息:5546−5100=446 元
結果正好是 446 元,完全符合題目條件。
結論
經過計算與驗證,利率 r=8.5% 是正確的解答。因此,老巴存款的年利率為 8.5%。
====
在 Grok3 思考的地方, 可以看到他是如何解三次方程, chatgpt 可能也是類似的方式.
3x^2 + x^3 = 0.0223
這是一個三次方程,我們可以嘗試解這個方程來找到x的值。
由於x = r/100,而r是利率,通常是一個小於100的百分數,所以x是一個小於1的數。我們可以假設x很小,x^3比x^2小很多,因此可以先忽略x^3項,近似解出x,然後再驗證。
忽略x^3項:
3x^2 ≈ 0.0223
x^2 ≈ 0.0223 / 3 ≈ 0.007433
x ≈ √0.007433 ≈ 0.0862
所以,x ≈ 0.0862
現在,我們可以將這個近似值代入原方程驗證:
3*(0.0862)^2 + (0.0862)^3 ≈ 3*0.007433 + 0.000641 ≈ 0.0223 + 0.000641 ≈ 0.022941
而我們希望等於0.0223,所以有點偏大。我們可以嘗試一個稍小一點的x,比如x=0.085:
3*(0.085)^2 + (0.085)^3 ≈ 3*0.007225 + 0.000614 ≈ 0.021675 + 0.000614 ≈ 0.022289
這已經非常接近0.0223了。誤差很小。
我們可以再試x=0.0851:
3*(0.0851)^2 + (0.0851)^3 ≈ 3*0.00723701 + 0.00061579 ≈ 0.02171103 + 0.00061579 ≈ 0.02232682
還是稍微大了一點。
再試x=0.085:
已經算過了,0.022289 ≈ 0.0223
誤差為0.0223 - 0.022289 = 0.000011
這個誤差非常小,可以接受。
或者,我們可以繼續精確化,比如用二分法。
但考慮到利率通常不是一個非常精確的數,我們可以接受x=0.085。
所以,x ≈ 0.085
而x = r/100,因此r = 0.085 × 100 = 8.5
所以,利率約為8.5%。
為了更精確,我們可以解三次方程。
方程是:x^3 + 3x^2 - 0.0223 = 0
我們可以畫圖或者用數值方法求解。
或者,我們可以用牛頓法。
先取初值x0=0.085
f(x) = x^3 + 3x^2 - 0.0223
f'(x) = 3x^2 + 6x
x1 = x0 - f(x0)/f'(x0)
f(0.085) = (0.085)^3 + 3*(0.085)^2 - 0.0223 ≈ 0.000614 + 0.021675 - 0.0223 ≈ -0.000011
f'(0.085) = 3*(0.085)^2 + 6*(0.085) ≈ 3*0.007225 + 0.51 ≈ 0.021675 + 0.51 ≈ 0.531675
x1 = 0.085 - (-0.000011)/0.531675 ≈ 0.085 + 0.0000207 ≈ 0.0850207
再計算f(0.0850207):
(0.0850207)^3 ≈ 0.0006152
3*(0.0850207)^2 ≈ 3*0.0072285 ≈ 0.0216855
f(0.0850207) ≈ 0.0006152 + 0.0216855 - 0.0223 ≈ 0.0000007 ≈ 0
已經非常接近0了。
所以,x ≈ 0.0850207
因此,r = x * 100 ≈ 8.50207%
四捨五入到小數點後一位,r ≈ 8.5%
考慮到銀行利率通常以0.5%為單位,我們可以驗證r=8.5%是否精確。
假設r=8.5%,即x=0.085
計算複利利息:
20000 * (1 + 0.085)^3 - 20000 = 20000 * (1.085)^3 - 20000
(1.085)^3 = 1.085 * 1.085 * 1.085
1.085 * 1.085 = 1.177225
1.177225 * 1.085 ≈ 1.2773
所以,20000 * 1.2773 ≈ 25546
複利利息 ≈ 25546 - 20000 = 5546
單利利息 = 20000 * 0.085 * 3 = 20000 * 0.255 = 5100
複利利息 - 單利利息 = 5546 - 5100 = 446
剛好等於題目中的446元。
因此,利率r=8.5%是精確的。
所以,答案是8.5%。
- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
留言
張貼留言