訓練負荷的計算,四個平台用的是同一條公式:intensity(強度) × duration(長度),逐段累加。

既然使用的公式相同,為什麼訓練數據上傳到 TrainingPeaks、Strava、Garmin 與 RQ,數值卻經常對不起來?

舉一個很多跑者都遇過的情況。同一位跑者,某一次 2 小時的長跑在 TrainingPeaks 上算出來的負荷是 130 TSS;另一次 8 趟八百公尺間歇,身體承受的壓力感覺也很大,數值卻只有 70 TSS。但同樣這兩筆紀錄放到 RQ 上,算出來的數值幾乎一樣,訓練指數都是 24,比較接近當天的體感壓力。Strava 上也會出現類似 TrainingPeaks 的落差。

原因何在?

問題就藏在「強度」這兩個字。

強度怎麼被個人化,關鍵在三件事:用什麼單位去量化、百分比怎麼切、參數從哪裡來。如果沒有一套共同的計量標準,這些數值拿來比較或是累加的時候就會出問題。

下面就分別說明這四個平台,各自如何把「強度」個人化。

━━━━━━━━━━━━━

▎TrainingPeaks:使用者的決定權最高

TrainingPeaks 量化強度的單位有好幾種。它會先看這筆紀錄裡有哪些數據,再依照一套固定的優先序,自動挑一種來計算:

▹ 功率:只要有功率數據就優先採用,配上該項運動設定的功率閾值,算出來的是 TSS
▹ 配速:沒有功率就用配速加上坡度,配上閾值配速,算出來的是 rTSS
▹ 心率:前面兩種都算不出來,才輪到心率,配上閾值心率,算出來的是 hrTSS
▹ 平均心率:連逐秒的心率都沒有,就用運動時間加上平均心率去估,算出來的是 tTSS
▹ 手動填寫:以上都沒有,由使用者自己填一個數值進去

使用者也可以逐筆進到那一筆紀錄裡,把計算所用的單位切換成另一種。不同的訓練數據,的確需要單筆切換才恰當。那麼,不同的紀錄各自該用哪一種單位來計算訓練負荷比較好?大方向是低強度的長跑用心率區間,高強度的間歇用配速區間。

麻煩的地方在於,什麼叫低強度、什麼叫高強度,這需要專業的判斷。在 TrainingPeaks 上,這個判斷要由使用者自己來做,而且要一筆一筆做。RQ 則把這一層底層工作放進後台自動切換,跑者不必自己動手,這一點下面談到 RQ 時會再展開。

要注意的是,這套優先序排的是「數據的形態」,它預設功率最準,卻不會回頭檢查你手上的功率數據是怎麼來的。

問題在於,大部分的跑者手上並沒有跑步功率計,跑錶上顯示的功率是靠手腕的擺動推估出來的,誤差往往不小。

跑步功率要量得準確,感測器必須裝在鞋子上或腳掌上,用加速規與陀螺儀去捕捉每一步腳掌的動作,再用加速度乘上體重去推算每一步的受力,最後才算得出接近實際輸出的功率。

這裡要先說清楚一件事:市面上的跑步功率計都沒有直接量到力,它們量的是動作,功率是推算出來的。感測器離腳掌愈近,推算的基礎就愈可靠;只靠手腕的擺動去推估整個身體的輸出,誤差自然大得多。

強度的單位一旦失準,誤差不會停在功率這一層。乘上時間再逐段累加之後,整筆紀錄的訓練負荷都會跟著偏掉。

━━━━━━━━━━━━━

▎Strava:只能用最大心率法

Strava 直接採用最大心率法,用跑者的最大心率去切各個強度區間。而且預設是拿公式去推估跑者的最大心率,使用的是「220 -年齡」這個公式。如果連年齡都沒有填,就直接給 190 bpm。這組區間還會在跑者生日那天自動更新一次。

主要問題就出在公式。那些公式是運動科學家做實驗、對一群受試者做迴歸所得到的結果,它描述的是族群的平均趨勢。拿來做研究可以,直接套到個別跑者身上來訓練並不適合,不少跑者使用這個平台,在第一步的個人化強度區間就偏掉了。

第二個問題出在計算心率區間的方法。Strava 使用的是「最大心率法」(MHR%),這種方法就算最大心率設定正確,也因為沒有把跑者的安靜心率考慮進去,個人化仍然不精準。

舉個具體的例子。假設有三位跑者的最大心率都是 200,安靜心率分別是 40、50 與 60。當三個人的心率同樣爬到 150 的時候,費力程度差很多:安靜心率 40 的那一位最費力,安靜心率 60 的那一位相對輕鬆。使用「最大心率法」(MHR%)時,並無法區分其中個人化的差異。

用最大心率法,這三個人會被判成同一個強度。輕鬆與費力之間的差異,在數值上就分不出來了。

想改也改不掉。Strava 的訂閱者確實可以自訂心率區間,但方式是直接拖曳各區的 bpm 端點;系統本身不提供儲備心率法或閾值心率法的換算,介面上也沒有安靜心率這個欄位。跑者只能自己在平台外面把數字算好,再一個一個填回去。

━━━━━━━━━━━━━

▎Garmin:使用者可自行選擇,但預設值有三個問題

先說 Garmin 現在使用的術語。它量化訓練負荷的底層單位是 EPOC,也就是「運動後過攝氧量」,Garmin 是用它來估算這一次訓練對身體造成的負荷有多大。在錶上與 Garmin Connect 上,跑者會看到的是這三個名詞:

▹ 急性負荷(Acute Load):最近幾天 EPOC 的加權總和,代表短期累積的訓練負荷
▹ 負荷比值(Load Ratio):急性負荷與長期慢性負荷的比值,要累積兩週的資料才會出現
▹ 訓練負荷比重(Training Load Focus):把負荷拆成無氧、高有氧、低有氧三類,至少需要七天的訓練資料

跑者在 Garmin Connect 上其實看不到 EPOC 這四個字母。官方部落格的說明是這樣的:

「Garmin 對你 EPOC 的估計值,就是這一次活動的運動負荷(Exercise Load),再經過個人化的處理之後,呈現為訓練效果(Training Effect)。」

官方也給了幾個量級,可以拿來對照自己平常的訓練:

▹ 以最大心率的 50% 跑 30 分鐘:EPOC 大約是 10 ml-O2/kg
▹ 接著再以 75% 跑 15 分鐘:升到 40 ml-O2/kg
▹ 以 75% 跑 45 分鐘:大約是 50 ml-O2/kg

這套量化邏輯有一個先天的限制:它只吃心率。跑步的配速與功率都不會進入訓練負荷的計算。

心率的反應慢,這是它的限制。運動研究中,心率大約需要 100 秒才追得到當下強度的 95%,而短間歇的一趟可能只有 30 秒到 2 分鐘;就算是長一點的間歇,一趟跑到 3 分鐘,前 100 秒的強度還是會被低估。

拿 800 公尺間歇來說。假設一趟跑 3 分鐘,心率要到第 100 秒左右才追上來,前面那段最辛苦的過程並沒有反映在心率上,自然也不會反映在訓練負荷裡。距離愈短失真愈嚴重,400 公尺、200 公尺的間歇,心率根本來不及到位。Garmin 演算法設計團隊 Firstbeat 在它自己的白皮書中也承認這件事:「強度突然拉高的時候,身體已經在大量進行無氧作功,心率卻還停在乳酸閾值以下的水準。」

這也是為什麼我一直強調,高強度間歇的訓練負荷,強度那一端要改用配速來量,而且要用個人化的強度區間去量,算出來的數值才貼近身體實際承受的壓力。

回到強度個人化這件事上。Garmin 預設的心率區間一樣是使用最大心率法,百分比切得很整齊:

▹ 50% 到 60% 是心率 1 區
▹ 60% 到 70% 是心率 2 區
▹ 70% 到 80% 是心率 3 區
▹ 80% 到 90% 是心率 4 區
▹ 90% 到 100% 是心率 5 區

這裡有三個問題:

❶ Garmin 現在會自動偵測跑者的最大心率,但偵測出來的結果常常不對。它的起點仍然是一條年齡公式:210 減去 0.65 乘以年齡;接著再從跑者平常的活動數據,用心率與配速之間的關係去推估,一路往上修正。這個做法有兩個先天的限制:起點是族群的平均值,不是這位跑者實際的能力;而且自動偵測只會往上調,不會自己往下修,要調降只能手動輸入或重設。用公式估出來的最大心率,誤差大約落在 10 到 12 bpm,用胸帶實際量出來的則在 1 到 2 bpm 以內。最大心率算錯,強度區間就會跟著錯。我認為的解法是:最大心率不能用算的,任何公式都不行,要使用實際跑出來的最大值。用算出來的數據來計算心率區間,可能算出一個永遠不可能跑出來的心率,其中的風險反而比較高。

❷ 就算最大心率是正確的,用最大心率法算出來的區間仍然沒有考慮安靜心率,費力程度上還是會有誤差。這與 Strava 的第二個問題是同一件事。

❸ 直接用「整數」去切百分比,並不精準。

Garmin 比 Strava 好的地方在於,使用者可以主動切換成別種心率區間的計算方式。所以如果是我的學生使用 Garmin,我都會建議他們直接改用儲備心率法(HRR%),再依照 RQ 上預設的百分比設定去設定 Garmin 的心率區間。

使用 Garmin 還有一點要特別注意。它上面的跑步、自行車與游泳各有自己的心率區間,建議一定要設定在跑步這個項目上。這是 Garmin 比較科學的地方:每一種運動的最大心率與安靜心率都不一樣,分開設定才合理。

還有一個設定,我建議每一位使用 Garmin 的跑者都去檢查一次。

中階以上的機種會在運動過程中自動偵測跑者的最大心率與乳酸閾值心率,偵測到就直接更新設定,不會先問過你。常見的機型有:

▹ Forerunner 系列:255、265、570、955、965、970
▹ fēnix 5、6、7、8 系列與 fēnix E
▹ epix(Gen 2)與 epix Pro
▹ Enduro 3、tactix 8 與 MARQ 系列

入門款的 Forerunner 55 與 165 沒有這項功能。

這個自動偵測預設是開著的,位置在錶上的「使用者設定」,進到「心率與功率區間」,底下就有「自動偵測」。

它偵測出來的最大心率,就是使用前面第一個問題講的那套邏輯,起點仍然是年齡公式;乳酸閾值心率則是在運動過程中從心率的變化去推估。這兩個數字都不是跑者自己實際測出來的。(閾值心率要採血才能量出實際值)

麻煩的地方在於:就算你已經手動把最大心率與心率區間都設定好了,只要自動偵測還開著,錶就會在某一次訓練之後自己把數字改掉,你辛苦設好的區間又跑掉了,而且多半不會發現。

所以我建議把最大心率與乳酸閾值的自動偵測關掉,尤其是最大心率,要用自己實際跑出來的最大值並自己手動填寫。

太自動,反而會加大區間設定的誤差。

━━━━━━━━━━━━━

▎RQ:把個人化強度的責任承擔起來,只留下跑者必須自己提供的兩個數字

比較下來,RQ 特別的地方在於強度設定直接幫使用者選好了,只能用儲備心率法(HRR%)。百分比也已經是驗證過、最適合跑者的那一組區間,同樣設定好了。

需要跑者自己提供的只剩下兩個數字:跑步最大心率與站姿安靜心率。

這種限定選項的做法,乍看之下是把自由度拿掉了,但換來的是一把固定的尺。數據要拿來比較、要能累加,靠的正是這把尺不會變。

舉個例子。你過去用最大心率法配上某一組百分比,累積了好幾個月的訓練負荷;一個月後把百分比換成另一組,或者改用儲備心率法。同樣一趟課表,算出來的數字就跟過去不一樣了。

麻煩的地方在於:新的數值跟過去的數值擺在一起,比出來的是課表的辛苦程度,還是設定被你改過?把它們累加起來看趨勢,那條曲線在改設定的那一天就斷掉了。

尺一直在換,量出來的長短就失去意義。標準固定下來,跑者才能拿今天跟半年前比,也才能把每一趟課表的數值累加起來,看見自己真正累積了多少訓練。

在最大心率上,RQ 做了一個最大心率的分析功能,裡頭會列出這位跑者個人最大心率的前十大排名,協助他找出自己曾經實際跑出來的最大心率。不用任何公式推估,也不用任何演算法推估。這個數字必須是跑者自己跑出來的才算。

我不接受用大數據模型去模擬「某個年齡層、某種跑力、某種身材、某個性別的人,在某個年齡就一定可以跑出什麼樣的最大心率」這種說法。

❝ 眾多不同跑者的大數據模型所逼近出來的趨勢線公式只能拿來做實驗,不能拿來做訓練。 ❞

RQ 則有一套固定的標準,會依據跑者當下的情況去選擇量化強度的單位:

▹ 高強度間歇用配速。心率的反應比較慢,在高強度間歇下如果用心率去計算訓練負荷,數值會低估。
▹ 低強度時,如果是越野路線,或者太陽很大、風很大,配速本來就會慢下來,但心率會拉得很高。速度雖然不快,身體承受的壓力其實已經很大,這種對身體的壓力用心率去反映比較合理,這時 RQ 就會自動改用心率來計算。

RQ 計算訓練負荷得到的結果是一個指數,沒有物理單位,所以我們直接稱它為「訓練指數」,主要就是拿來量化跑者的訓練負荷。

━━━━━━━━━━━━━

四個平台用的是同一條公式,算出來的數值卻差這麼多。決定「訓練負荷」這個數值的價值,關鍵就在強度的個人化設定:

▹ 強度計算的參數是跑者自己跑出來的,還是公式推估來的;
▹量化強度的單位是依當下的情況挑選的,還是一開始設定完就不再回頭檢查。

這兩件事,決定了算出來的數值能不能拿來互相「比較」與「累加」,也決定了後續各項進階數據準不準。以 TrainingPeaks 為例,ATL(急性訓練負荷)、CTL(慢性訓練負荷)與 TSB(訓練壓力平衡)都是拿訓練負荷當主要輸入去計算的。源頭的數值一旦有誤,每一項從它衍生出來的數據都會跟著偏掉。

最後補充一件跟未來有關的事。

AI 教練與 AI 課表已經走進訓練現場。不論背後用的是哪一套系統,它們的底層邏輯都一樣:拿跑者過去的訓練負荷,去推算未來該練什麼、該練多少。

所以過去那些數值如果本身就有誤,算出來的課表也會跟著錯。這跟 AI 聰不聰明沒有關係,問題出在餵給它的原始數據本身就是偏的。再厲害的模型,也沒有辦法從一堆偏掉的數字裡,還原出這位跑者真實的訓練狀況。

在這一點上,RQ 站在一個比較有利的位置。它從一開始就用同一套標準,這些數據本身就能拿來比較與累加。等到要用它們去推算未來的課表時,地基相對是比較穩定的。


Do you like this article? Share it to friends