本答案頁包含 Python softmax 與溫度 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。
答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。
softmax 分布的總和是多少?
答案: 1
為什麼: softmax 用總和歸一化每個指數值,因此機率總和為一。
為什麼在取 exp 前減去最大 logit?
答案: 避免數值溢出,同時不改變比例
為什麼: 所有 logit 減去同一常數不會改變 softmax 比例,還能讓 exp 保持在範圍內。
較低的溫度會怎樣?
答案: 讓分布更尖銳
為什麼: 用更小的正溫度除 logits,會擴大高分與低分之間的差距。
執行結果是什麼?
import math
def softmax(logits):
largest = max(logits)
exps = [math.exp(x - largest) for x in logits]
total = sum(exps)
return [x / total for x in exps]
print([round(p, 2) for p in softmax([0, 0])])答案: [0.5, 0.5]
為什麼: 相同 logits 得到相同機率,兩個值總和為一。
補全 softmax 中的穩定平移。
import math
logits = [1000, 1000]
largest = max(logits)
exps = [math.exp(x - ____) for x in logits]
total = sum(exps)
print([round(x / total, 2) for x in exps])答案: largest
為什麼: 減去最大 logit 可以避免指數溢出。
補全歸一化的分母。
import math
logits = [2, 0]
largest = max(logits)
exps = [math.exp(x - largest) for x in logits]
total = sum(exps)
print([round(x / ____, 3) for x in exps])答案: total
為什麼: 每個指數值都除以所有指數值的總和。
補全溫度縮放步驟。
import math
logits = [2, 0]
temperature = 2.0
scaled = [x / ____ for x in logits]
largest = max(scaled)
exps = [math.exp(x - largest) for x in scaled]
total = sum(exps)
print([round(x / total, 3) for x in exps])答案: temperature
為什麼: 溫度在穩定 softmax 計算前除 logits。
補全按機率選擇最大值的 key 函式。
probs = [0.2, 0.8]
winner = max(range(len(probs)), key=probs.____)
print(winner)答案: __getitem__
為什麼: probs.__getitem__ 讓 max 按索引比較機率。
這段程式列印出什麼?
import math
def softmax(logits):
largest = max(logits)
exps = [math.exp(x - largest) for x in logits]
total = sum(exps)
return [x / total for x in exps]
print([round(p, 3) for p in softmax([0, 0])])答案: [0.5, 0.5]
為什麼: 相同 logits 產生總和為一的相等機率。
程式碼的輸出結果是什麼?
import math
def softmax(logits):
largest = max(logits)
exps = [math.exp(x - largest) for x in logits]
total = sum(exps)
return [x / total for x in exps]
print([round(p, 3) for p in softmax([2, 0])])答案: [0.881, 0.119]
為什麼: 較大的 logit 獲得大部分機率:約 0.881 對 0.119。
螢幕上會顯示什麼?
import math
def softmax(logits, temperature):
scaled = [x / temperature for x in logits]
largest = max(scaled)
exps = [math.exp(x - largest) for x in scaled]
total = sum(exps)
return [x / total for x in exps]
print([round(p, 3) for p in softmax([2, 0], 2.0)])答案: [0.731, 0.269]
為什麼: 更高的溫度讓分布更平緩,約為 0.731 和 0.269。
這段程式碼會輸出什麼?
probs = [0.7, 0.2, 0.1]
print(round(sum(probs), 3))答案: 1.0
為什麼: 這些機率的總和是 1.0。
先試一遍題目
打開 Python softmax 與溫度 練習頁,用即時回饋回答同樣的 12 道題。