← 全部概念地圖
標準

概念地圖・Q-learning 更新

分類:創業

這一頁不只是把一個概念解釋一遍——一張自己畫的結構圖,加上拿台灣情境從頭走一次的實例演練、這個框架什麼時候會騙你,以及它接回 P.A.I.N. 之後長什麼樣。一頁必須交付的三層 →

Q-learning 更新:每一次落差,都寫回同一格

一張表,橫的是你可能遇上的情況,直的是你手上能做的動作,格子裡填一個數字:在這個情況下做這個動作,長期看值多少。Q-learning 只做一件事——每走一步,挑出其中一格,把它往更接近真相的方向挪一點點。挪多少有算法:先算出這一步照現在的表看應該值多少,減掉格子裡原本寫的,剩下的落差乘上一個學習率,再寫回同一格。走一萬步,這張表就被修一萬次。公式可以晚點懂;先要有的,是一張列得出來的情況清單。

一次 Q 值更新:拆成四個零件 左邊是四列狀態、三欄行動的 Q 表。第二列第一欄用金色粗框圈起來,格內上方是舊值 12.0、下方是新值 17.0;第三列鋪淡金底色代表下一個狀態,該列最大值 20.0。表下標著學習率 0.5 與折扣因子 0.9。右邊由上往下串起四個方塊:立即獎酬 4.0、折扣乘最大值得 18.0、這一格現在的值 12.0、落差乘學習率得 5.0。一條朱紅箭頭從最後一個方塊繞過下方,回頭指進那個金框格子。 一次 Q 值更新:拆成四個零件 Q 表:4 狀態 × 3 行動 更新式拆解 行動一 行動二 行動三 狀態一 狀態二 狀態三 狀態四 8.0 5.5 9.5 7.0 10.5 20.0 14.0 16.5 6.5 11.0 4.5 12.0 17.0 學習率 0.5・折扣因子 0.9 淡金列=下一狀態,最大值 20.0 金框=這一次更新的那一格 ① 這一步的立即獎酬 ② 折扣 0.9 × 最大值 20.0 ③ 這一格現在的值 ④ 落差 × 學習率 0.5 4.0 18.0 12.0 5.0 + = 目標值 22.0,再減去 = 落差 10.0,再乘上 舊值 12.0 + 5.0 = 新值 17.0
表上有十二格,這一次只有一格會動——動多少,由右邊那四個零件算出來。

一次更新,動到表上的哪一格

把招牌圖上的數字攤平,八個零件各管一件事。

零件這一次的數字它在管什麼
這一格的舊值12.0表上原本給出的答案,等著被修
立即獎酬4.0這一步當場收到的回饋,最硬的一筆
下一狀態的最大值20.0下一個情況那一列裡最高的一格
折扣因子0.9把以後打個折,再算進今天
目標值4.0 + 0.9 × 20.0 = 22.0照現在的表看,這一步應該值多少
落差22.0 - 12.0 = 10.0唯一會讓表動起來的東西
學習率0.5只認落差的一半;設成 1 就等於每次都被最新一筆牽著走
新值12.0 + 5.0 = 17.0寫回同一格,另外十一格一動也沒動

整張表十二格,這一次只有一格改了數字——這是 Q-learning 最容易被忽略的性格:它一次只認一格。另外兩件事寫在公式的縫裡。第一,學習率跟折扣因子都落在 0 到 1 之間:前者決定這一次的落差要認幾成,後者決定以後在今天值幾折,愈接近 1 表示愈把遠處算數。第二,目標值裡那個 20.0,取的是下一個狀態那一列的最大值——不管你下一步實際上踩哪一格。這一條讓 Q-learning 可以一邊亂試一邊學到最好的做法,也是它被叫做離策略(off-policy)的原因。

這張表跑得動的三個前提

一、狀態列得出來。鑽頭研磨這一行的狀態很好列——材料硬度三級、刃口磨耗兩級,六種,一張紙就寫完。難的是那種「客戶感覺不太對」的生意:情況收不成一張有限的清單,就沒有表可以填,後面的更新式再漂亮也落不了地。列的時候寧可粗一點,六格填得滿,勝過六十格每格只躺著一筆紀錄。自問:我手上的情況,能不能收成一張十來項就寫得完的清單?

二、回饋要跟得上。孔徑合不合格、刃口有沒有崩,下一刀就知道——這是鑽頭這一行最大的本錢。落差算得出來的前提,是這一步的獎酬當天就到;要等三個月才知道好壞的事,表修不動,因為你根本不知道該把哪一格往哪一邊挪。回饋慢的時候只剩一條路:找一個當天就量得到的替代指標,然後老實承認它只是替代品。自問:從做完到知道好壞,中間隔多久?

三、環境夠穩,值才存得住。同一批鋼材、同一台鑽床,昨天學到的東西今天還算數——整張表的價值全靠這個假設撐著。材料換了供應商、機台大修過,舊格子的值就過期了,而它不會自己標示。愈不穩的環境,愈要把學習率留高一點、把折扣因子壓低一點——短視在這裡是保護。自問:這半年裡,有哪一個條件被換掉了?

十七次研磨紀錄,更新一次那張表

底下這家台灣中部的鑽頭研磨小廠,是為了把這個結構講清楚而編出來的示意情境,沒有指涉任何真實公司。師傅的筆記本上,同一支鑽頭配同一種材料,記了十七次不同的轉速與結果。他沒有公式,他有一張愈修愈準的表。

實例演練
  • 先把情況列成表:材料硬度分軟、中、硬三級,鑽頭磨耗分新刃、已磨損兩級——六種狀態;行動是轉速低、中、高三檔。六乘三,一張 18 格的表,貼在機台旁邊。格子數看得完
  • 這一次落在哪一格:中硬度的材料、鑽頭已經磨損,師傅選了中轉速。表上那一格原本寫著 6.0——那是前幾次紀錄留下來的印象分數。
  • 當場的回饋:孔徑量下來合格,刃口沒崩,記 3.0。這一刀的好壞下一刀就知道,不必等月底的品管報表。當天就結帳
  • 看下一個情況的天花板:鑽完這一孔,換上新刃口、材料轉硬——那一列目前最高的一格是 9.0。折扣因子 0.8,目標值 = 3.0 + 0.8 × 9.0 = 10.2。
  • 只認四成:落差 = 10.2 - 6.0 = 4.2,學習率 0.4 乘下去是 1.68。那一格從 6.0 挪到 7.68,其他十七格連碰都沒碰。一次挪一點
  • 十七次跑完:18 格裡被填過的有 11 格,剩下 7 格還是空白——硬材料配高轉速、新刃口配低轉速那幾種組合,師傅從來沒試過。七格全靠猜

師傅的筆記本跟這張圖只差一件事:他把十七行紀錄留成十七行,而 Q-learning 把它們壓成 18 格。壓縮的代價寫在最後那一步——7 格空白不會消失,它們會被當成「目前最高分」的競爭者,一起參與下一次的取最大值。真正值得記住的接縫在這裡:表愈準,師傅愈不想去試那 7 格;愈不試,那 7 格就愈永遠是空的。要打破它,得有人刻意在某一次研磨上放棄最高分的那一檔轉速,換一次資訊回來。學習率 0.4 決定了每一次能學多少,但決定這張表最終能長多好的,是有沒有人願意犧牲一刀。以上為說明結構用的示意情境,僅供理解框架之用。

這張表什麼時候會騙你

  1. 取最大值這個動作,天生會高估。每一次更新都拿下一列最高的那一格當目標,而那一格的數字本身也只是估計——估高的那些總是被挑中,估低的永遠輪不到出場。跑得愈久,整張表愈樂觀。18 格裡有 7 格沒試過的時候這個偏誤最兇:所謂的最大值,可能只是某一次運氣好的紀錄,被當成了那一列的實力。真正在用的系統會拿兩張表交叉著算,就是為了把這個高估壓回來。
  2. 學習率黏在同一個數字上,表就只會做一件事。0.4 一路不變,代表這張表永遠留四成的位置給最新一筆意外——環境穩定時這叫追著雜訊跑,環境劇變時它又嫌太慢。成熟的做法是讓學習率隨著某一格被更新的次數往下降,先快後慢:頭幾次大步修,修到後來只微調。這件事沒有寫在公式裡,得由你決定什麼時候該把它調下來。
  3. 環境一換,整張表就是過期資產。換了一批材料、換了一台機台,甚至只是換了操作的人,格子裡的數字全部指向一個已經不存在的世界。麻煩的是表不會警告你——它照樣吐出最高分的那一格,語氣跟昨天一樣篤定。判斷過期只能靠外面:最近十次的落差有沒有系統性地偏向同一邊,偏了就代表世界換了、表還沒跟上。

痛點視角:折扣因子那個字

痛點視角

折扣因子那一格,填的其實是耐心。

Q-learning 把「經驗」講得很具體:每一次的落差都被寫回同一格——十七次研磨之後,那張表就是這十七次的濃縮,沒有第二本筆記。折扣因子則決定你把多遠以後的好處算進今天:填 0.9 的人願意為三五步之後的順利買單,填 0.5 的人只看眼前這一刀。這個數字掛在工程師手上,寫的卻是老闆的性格——一個小數點,就是他願意等多久。而這張圖畫得出每一格該挪多少,畫不出那一格背後的客戶今天痛不痛。表上的獎酬是你自己定義的,定義成「孔徑合格」,它就會非常有效率地把你帶向孔徑合格,即使客戶真正在意的是交期。P.A.I.N. 的第一個字問的正是這件事:這一格的分數,是誰在替它痛?今晚翻出最近十次同類的決定,在每一次旁邊補一欄——這一次的回饋是什麼、隔多久才拿到。補完,你手上就有第一版的狀態欄了。

關於學習率,常被問到的幾件事

學習率該設多少?

取值落在 0 到 1 之間。設 0 表示這張表永遠不動,設 1 表示舊值完全被這一次的目標值蓋掉——招牌圖用 0.5,是認一半落差的折衷。實務上的起手式是先給 0.1 到 0.5 之間的一個值,資料愈吵、單次結果愈不穩,就設得愈小;然後隨著同一格被更新的次數增加,讓它慢慢往下走。判斷調對沒有,看同一格的數字有沒有在幾十次之後穩下來:一直大幅跳動代表太大,幾十次都幾乎不動代表太小。

折扣因子調高調低,實際差在哪?

折扣因子同樣落在 0 到 1 之間,它決定「以後」在今天值幾折。填 0.9,代表下一步的好處要打九折算進來,再下一步打 0.81 折,愈遠的愈輕;填 0.99 的人,會為十幾步之後的收穫忍受眼前的難看。挑法不是技術問題:你的一個決策週期有多長、能撐多久不見成果,就填多接近 1。鑽頭那個場景填 0.8,因為一支鑽頭的壽命有限,算太遠沒有意義;設備投資那種題目,填得低會讓你永遠只修眼前這一刀。

更新用的最大值,跟我下一步真的走的那一格是同一格嗎?

可以完全是另外一格,這正是 Q-learning 的關鍵。更新時取的是下一個狀態那一列的最大值——那是「假如接下來都照表上最好的走」的假設;而你實際上踩哪一檔轉速,可以是為了探索而故意挑的次佳選項。兩件事分開算,讓你一邊亂試一邊仍然在學最好的做法,這叫離策略(off-policy)。相對的,SARSA 那一族用的是你真的走的那一格,學到的就是「照你現在這種試法」的價值——保守,但比較貼近現場真的會發生的事。

情況太多,表格根本填不完怎麼辦?

先合併。把材料硬度從十二個牌號收成三級,就是合併——只要合併後同一級裡的東西反應接近,表的解析度掉一點,換來的是每一格都有紀錄。合併到極限還是太大,才輪到用一個函數去猜格子裡的值,那就是深度 Q 網路那條路。但對多數的現場問題,18 格的表配十七次紀錄已經能看出方向;真正的瓶頸幾乎都出在另一頭——空白格沒人願意去試。

找出你手上那本經驗筆記,看它的更新規則寫在哪。翻完多半會冒出下一個問題:這一次到底該照表上最高分的那一格做,還是去試一個從來沒填過的?那是探索與利用的取捨;如果想替每一格的把握程度標上一個上界、讓沒試過的組合自己浮到前面來,信賴上界的挑選法那張圖畫得更細。

發現引用或事實有誤?請寫信回報,我會依更正政策修正。