訓練一個打贏職業牌手的 AI 只要大約 144 美元,賭場要怎麼抓?這篇帶你一次看懂異常偵測的三層做法,附一個自己就能跑的模擬實驗!
2019 年,卡內基美隆大學和 Facebook 的研究團隊發表了 Pluribus:一個在六人無限注德州撲克裡,贏過頂尖職業牌手的 AI。論文裡有一個數字比勝率更讓人在意:訓練它的策略,用一台 64 核心的伺服器跑 8 天,換算成雲端費用大約 144 美元。
研究團隊沒有公開程式碼。MIT Technology Review 當時的標題直接寫:這個 AI 可能毀掉線上撲克產業。
幾年後,事情真的發生了。2020 年,GGPoker 封鎖了 40 個使用「即時輔助軟體」的帳號,沒收超過 117 萬美元,補償了 4,329 位玩家。2023 年,888poker 因為 AI 與即時輔助封了 161 個帳號,退款給 4,068 位玩家。
老千以前要練手法,現在要的是一台電腦。
那賭場和牌局平台怎麼抓?答案聽起來有點反直覺:他們越來越少去看「手」,越來越多去看「行為像不像人」。這件事在資料科學裡有個名字,叫異常偵測(anomaly detection)。
先說明一件事:在台灣,賭博本身就是犯罪。刑法第 266 條規定,在公共場所或透過網路賭博財物,都可以處罰金。這篇只談偵測方怎麼想,不談任何作弊方法;我想借賭場這個極端場景,講一個在詐騙、資安、工廠設備監控裡都會遇到的問題。
快速回答 賭場和線上牌局抓 AI 老千,靠的是異常偵測:定義正常玩家長什麼樣子,把偏離最遠的帳號排序,交給人工調查判定。做法可以分三層:規則、統計基準線、看行為像不像人的模型。線上撲克平台 WPT Global 2025 年的作弊報告,就標記「過度一致、近乎完美的決策」。這套做法的優勢建立在對手還不夠像人,對手學會偽裝,模型就會過期,要靠調查結果回饋持續更新。
異常樣本與標籤極少,偵測必須先定義「正常行為」再抓偏離者
學術上最常被引用的定義來自 Chandola 等人 2009 年的綜述:異常,是不符合預期正常行為的模式。
注意這個定義的重心在「正常」。你沒辦法列出所有作弊手法,但你可以描述正常玩家長什麼樣子,再把離正常太遠的人挑出來。
我在製造和風控的專案都做過異常偵測。產線上找的是不正常的設備、不良的批次;風控找的是不正常的交易和帳號。兩邊的第一個體會一樣:異常的樣本極少,有標籤的更少。你手上幾乎沒有「這筆就是詐騙」的確定答案,只能從大量正常資料裡,去描述什麼叫正常。
賭場的處境也是這樣。被確認的老千極少,而且每一個新手法剛出現時,都沒有前例可以學。
所以實務上的偵測,通常是一層一層疊上去的。
下面依序講這三層:每一層抓得到什麼、漏掉什麼。圖最右邊的人工調查,和底下那條回饋的虛線,會在文章最後兩個邊界再出現。
第一層寫單一門檻規則:好解釋但只抓已知手法,還會誤傷真人高手
最直覺的做法是寫規則:贏太多就查、下注忽然變大就查、同一批人老是同桌就查。
規則的好處是好解釋。調查員、主管、被查的玩家,都聽得懂「你這個月贏得異常多」。我在風控專案裡也一樣:規則一定要留著,因為出事時,有人要能說清楚為什麼這筆被擋下來。
但規則有兩個硬傷。
第一,它只抓得到你已經知道的手法。新的作弊方式不會剛好觸發舊規則。
第二,它會誤傷真正的高手。「贏太多」這條規則,抓到的人裡面很大一部分是本來就打得好的常客。後面的模擬實驗會看到,在我設定的情境裡,這條規則用掉的警示名額,幾乎全部花在真人身上。
第二層建統計基準線:跟自己過去與同群玩家比,抓出突發偏離
第二層把問題從「這個數字大不大」改成「這個數字對這個人來說正不正常」。
做法是建立基準線(baseline):和這個玩家自己的過去比,也和同一類型的玩家比。一個平常下小注的人突然連續下大注,一張賭桌的輸贏分布明顯偏離同時段其他桌,這些都是基準線能抓到、單一門檻抓不到的變化。
基準線的前提是要有資料。實體賭場這幾年在賭桌上加裝辨識籌碼和撲克牌的攝影機,影像辨識廠商 Dallmeier 在 2019 年就宣稱,它的系統在澳門裝了超過 1,000 張賭桌。這是廠商的說法,但它說明了一件事:實體賭桌正在變成可以被記錄、被比較的資料。
第三層上行為模型:同時看節奏、時長與決策穩定度,抓出「太像機器」的組合
真正改變攻防的是第三層:把很多訊號放在一起看。
一個 AI 輔助的玩家,單看勝率可能不突出。但把決策的節奏、在線的時間、每一手的選擇放在一起,就會出現人很難同時具備的組合。線上撲克平台 WPT Global 在 2025 年公開的作弊報告裡提到,它和 GTO Wizard 合作,標記「過度一致、近乎完美的決策」。這句話很關鍵:人類高手也會犯錯、也會累、節奏會亂;太穩定本身就是訊號。
電玩產業走得更早。Valve 在 2018 年的 GDC 演講介紹了 VACnet,用深度學習分析《CS:GO》玩家的操作來抓外掛。據轉述這場演講的技術文章,玩家檢舉送審的案件,成案率大約 15–30%;VACnet 送審的案件,成案率是 80–95%。同一篇文章用一句話總結它的分工:模型標記,人來判定。
做行為模型時,最常用的方法之一叫 Isolation Forest(孤立森林)。它的想法很簡單:隨機切資料,越容易被單獨切出來的點,越可能是異常。2008 年提出它的論文特別指出,這個方法在訓練資料裡完全沒有異常樣本時也能運作。這正好對上「標籤幾乎沒有」的現實。
原論文用一張圖把這個想法講完:同一群點,分別去隔離中間的一個點和邊緣的一個點,看各要切幾刀。
放到牌桌上,一個帳號的出手節奏、在線時長和決策穩定度,如果同時跟大多數玩家都不一樣,它就像右圖那個點,幾刀就被切出來。這件事在現實資料裡成不成立,下面用模擬實驗來檢查。
模擬實驗驗證:不偽裝時基準線已抓到 97.8%,對手開始偽裝才需要行為模型
前面三層都還停在說法。說法要能被檢查,所以我寫了一個模擬實驗。程式碼全部列在下面,依序貼進同一個檔案就能跑,只需要 numpy、pandas、scikit-learn。
想驗證的三件事
- 看行為比看結果準:只看勝率的規則,會把警示名額花在真人高手身上。
- 基準線拿到大部分效果:對手不偽裝時,簡單的統計基準線就能抓到大部分自動化帳號,模型多出來的效果不大。
- 模型的優勢有期限:行為模型贏在把幾個特徵合起來看。對手越像人,這個優勢越小,最後會消失。
跑出來的結果如果和這三點不同,前面的說法就要改。
前提假設
模擬的好處是答案已知:我知道誰是自動化帳號,才算得出每種方法抓對幾個。代價是所有分布都是我設定的,所以先把設定攤開。
分析單位是「一個帳號一個月」。每個帳號用三個特徵描述:勝率,也就是每 100 手贏幾個大盲注;決策節奏的變異係數,真人想牌的時間忽長忽短,數字大,程式很穩定,數字小;每天在線時數。帳號分成三群:
- 1,950
- 平均 −2
- 平均 0.8(忽快忽慢)
- 中位數約 2 小時,少數人很長
- 60
- 平均 +9
- 平均 0.8
- 同一般玩家
- 30
- 平均 +5
- 平均 0.15(很穩定)
- 約 9 小時
- 30
- 平均 +5
- 照真人的分布
- 照真人的分布
另外四個前提:
- 自動化帳號會贏,但贏得比強手少。這是刻意的設定:如果它們勝率最高,只看勝率就抓得到,實驗就沒有意義。想長期獲利的作弊者,也有理由不要贏得太顯眼。
- 偽裝只改行為,不改勝率。偽裝程度從 0 到 1,自動化帳號的節奏與在線時數,按比例從表中「偽裝 0」那一列移到「偽裝 1」那一列。
- 警示名額固定 2%,也就是 2,040 個帳號裡最可疑的 41 個。調查團隊一天能看的案子有限,在同樣的人力下比較誰抓得準,才公平。
- 每個設定換 30 組亂數種子重跑,取平均,避免哪一次剛好運氣好。
思路與程式碼
程式分三步:造資料、三種方法各自打分數、在同樣的名額下看抓到誰。
第一步是造資料,把上面那張表寫成程式。勝率和節奏用常態分布抽;在線時數用對數常態分布,因為它有長尾,大部分人玩一兩個小時,少數人掛很久。mimicry 就是偽裝程度,自動化帳號的節奏與在線時數,是機器分布和真人分布按這個比例的加權。
import numpy as np
import pandas as pd
from sklearn.ensemble import IsolationForest
from sklearn.preprocessing import StandardScaler
N_PLAYERS, N_REGULARS, N_BOTS = 1950, 60, 30
BUDGET = 0.02
SEEDS = range(30)
MIMICRY = [round(x, 1) for x in np.linspace(0, 1, 11)]
def simulate(rng: np.random.Generator, mimicry: float) -> pd.DataFrame:
def human(n, win_mu, win_sd):
return pd.DataFrame({
"win_rate": rng.normal(win_mu, win_sd, n),
"rhythm_cv": rng.normal(0.80, 0.15, n).clip(0.05),
"daily_hours": rng.lognormal(np.log(2.0), 0.45, n),
})
players = human(N_PLAYERS, -2.0, 6.0).assign(group="player")
regulars = human(N_REGULARS, 9.0, 3.0).assign(group="regular")
bots = pd.DataFrame({
"win_rate": rng.normal(5.0, 3.0, N_BOTS),
"rhythm_cv": (1 - mimicry) * rng.normal(0.15, 0.05, N_BOTS) + mimicry * rng.normal(0.80, 0.15, N_BOTS),
"daily_hours": np.exp((1 - mimicry) * rng.normal(np.log(9.0), 0.2, N_BOTS)
+ mimicry * rng.normal(np.log(2.0), 0.45, N_BOTS)),
}).assign(group="bot")
return pd.concat([players, regulars, bots], ignore_index=True)
第二步是三種偵測方法,一種代表一層:
- 規則直接拿勝率當分數。
- 統計基準線把每個特徵換成穩健 z 分數,帳號的分數取三個特徵裡偏得最遠的那一個。這裡用中位數和 MAD(中位數絕對離差)取代平均和標準差,因為極端值正是要找的對象,不能讓它們把尺度撐大;乘上 1.4826,是讓 MAD 在常態分布下和標準差對齊。
- 行為模型把三個特徵標準化後丟進 Isolation Forest。
score_samples的值越低越容易被孤立,所以取負號當可疑分數。
flag_top 是公平比較的關鍵:不管分數怎麼算,每種方法都只能挑分數最高的 41 個帳號。
def flag_top(scores: np.ndarray) -> np.ndarray:
k = int(round(BUDGET * len(scores)))
flagged = np.zeros(len(scores), dtype=bool)
flagged[np.argsort(-scores)[:k]] = True
return flagged
def run(mimicry: float, seed: int) -> dict:
rng = np.random.default_rng(seed)
df = simulate(rng, mimicry)
rule = flag_top(df["win_rate"].to_numpy())
feats = df[["win_rate", "rhythm_cv", "daily_hours"]]
med = feats.median()
mad = (feats - med).abs().median() * 1.4826
baseline = flag_top(((feats - med) / mad).abs().max(axis=1).to_numpy())
X = StandardScaler().fit_transform(df[["win_rate", "rhythm_cv", "daily_hours"]])
iso = IsolationForest(n_estimators=200, random_state=seed).fit(X)
model = flag_top(-iso.score_samples(X))
out = {}
for name, flagged in (("rule", rule), ("baseline", baseline), ("model", model)):
hits = df.loc[flagged, "group"].value_counts()
out[name] = {
"recall": float(hits.get("bot", 0) / N_BOTS),
"alerts_bot": int(hits.get("bot", 0)),
"alerts_regular": int(hits.get("regular", 0)),
"alerts_player": int(hits.get("player", 0)),
}
return out
第三步是掃過 11 個偽裝程度,每個跑 30 次,算兩個數字:每種方法平均抓到幾成的自動化帳號(召回率),以及對手不偽裝時,41 個名額分別給了哪一群人。整個實驗在一般筆電上大約跑一分鐘。
rows = [{"mimicry": m, "seed": s, "detector": d, **v}
for m in MIMICRY for s in SEEDS for d, v in run(m, s).items()]
res = pd.DataFrame(rows)
# Recall (%) by mimicry level: share of the 30 automated accounts each detector catches
print((100 * res.groupby(["mimicry", "detector"])["recall"].mean().unstack()).round(1))
# Who fills the 41 alerts when the automated accounts do not disguise themselves
print(res[res.mimicry == 0].groupby("detector")[["alerts_bot", "alerts_regular", "alerts_player"]].mean())
結果
把印出來的數字畫成圖:
左邊回答「哪一層比較準」。對手不偽裝時,只看勝率的規則在 41 個名額裡,平均抓到 14 個強手常客、26 個一般玩家,自動化帳號不到 1 個。原因不難理解:在這個設定裡,自動化帳號的勝率不錯,但沒有好到最頂端;真正贏最多的是打得好的人,和運氣好的人。統計基準線平均抓到 29 個,行為模型抓到全部 30 個。
換成實務上常用的指標:41 個名額裡真正是作弊帳號的比例(precision@41),規則約 1%,基準線約 71%,行為模型約 73%。對手不偽裝時,簡單的基準線已經拿到大部分的效果。
右邊回答「模型多做的那一步值多少」。對手開始偽裝後,差距才出現:偽裝程度 30% 時,行為模型抓到八成,基準線不到六成。原因是基準線一次只看一個特徵,每個特徵都只偏一點點的帳號,它看不出來;Isolation Forest 看的是組合,三個「有點怪」加在一起就被切出來了。但偽裝到 50%,模型也只剩三成;到 100%,三種方法都抓不到。
回到一開始想驗證的三件事,三件都成立。第一,只看勝率的規則,41 個名額平均有 40.6 個給了真人。第二,對手不偽裝時,基準線平均抓到 29.3 個,模型抓到 30 個,差不到 1 個。第三,模型的領先在偽裝 30% 時最明顯,之後一路縮小,到 100% 時三種方法都抓不到。
這是模擬,數字本身沒有意義,別拿去推論任何真實平台。值得帶走的是驗證的方式:先寫下想證明什麼,把假設攤開,再讓程式回答。你也可以改設定自己試,例如把自動化帳號的勝率調到比強手高,或把名額從 2% 放寬到 5%,看看三個結論哪一條先倒。
異常偵測專案落地的五個決定:名額與特徵比換模型更關鍵
上面的實驗把問題簡化了。真的要在一個平台、一家銀行或一條產線上做異常偵測,資料科學的工作大多花在模型以外。我把它整理成五個決定,順序大致就是專案的順序。
決定一:一筆資料是什麼,名額有多少
第一個要定的是分析單位:一個帳號的一個月、一筆交易、一台設備的五分鐘。單位決定了特徵怎麼算,也決定了警示送出去時,調查的人拿到的是什麼。單位切太細,雜訊多、警示多;切太粗,事情發生了很久才看得到。
第二個是名額:調查團隊一天看得完幾件。這個數字比任何模型參數都重要,因為它直接決定門檻,也決定了評估方式。上面的實驗用 2% 當名額,就是在模擬這件事。
決定二:特徵,比換模型更有用
異常偵測的效果,大部分來自特徵。實務上常用的有四類:
- 和自己的過去比:這個月的下注金額,是這個帳號過去六個月平均的幾倍。
- 和同群比:同一個桌級、同一個地區、同一種設備型號裡,這個值排在哪裡。高手和新手的「正常」不一樣,分群後再比,誤報會少很多。
- 節奏與組合:比例、變異程度、時間間隔,以及幾個特徵一起出現的組合。實驗裡行為模型贏過基準線的地方,就在這一類。
- 關係:誰和誰常同桌、哪些帳號共用裝置或付款方式。串通這類問題,單看個人特徵抓不到,要用圖(graph)的方法看群體。
有一個陷阱要特別注意:特徵只能用當下拿得到的資料算。用整個月的資料去判斷月中的一筆交易,離線評估會很漂亮,上線後就失靈。這叫資料洩漏(data leakage),在異常偵測裡特別常見,因為事後確認的案例很容易被混進特徵裡。
決定三:方法,從最簡單的開始
異常偵測的方法大致分成幾個家族:
- 離中心太遠
- z 分數、穩健 z 分數、管制圖
- 單一指標、要好解釋、先上線
- 附近沒什麼鄰居
- k 近鄰、LOF
- 特徵不多、群體形狀複雜
- 很容易被單獨切出來
- Isolation Forest
- 特徵多、資料量大、沒有標籤
- 模型學不會還原它
- PCA、自編碼器
- 高維資料、影像、感測器訊號
- 像過去確認過的案例
- 梯度提升樹
- 累積了足夠的確認案例之後
我的建議是從第一列開始。製造業用了幾十年的管制圖(control chart),本質上就是統計基準線;在實驗裡,它也拿到了大部分的效果。先讓基準線上線、累積調查結果,再決定要不要換更複雜的方法。複雜的方法要贏的,是基準線抓不到的那一塊,而這一塊要有資料才量得出來。
決定四:沒有標籤,怎麼知道好不好
這是異常偵測最難的地方,也是它和一般分類問題最不一樣的地方。實務上通常組合三種做法:
- 用名額評估:看 precision@k,也就是送出去的 k 件裡有幾件是真的。調查團隊的時間有限,這個數字最貼近他們的感受。
- 注入合成異常:把已知形態的異常放進正常資料,看抓回來幾成。上面的實驗就是這個做法,它能量召回率,但只量得到你想像得到的異常。
- 用時間切開回測:拿過去確認過的案例,只用當時拿得到的資料重跑,看能不能提早抓到。
等確認案例累積起來,可以畫 precision-recall 曲線來比較方法。在這種極度不平衡的資料上,ROC 曲線看起來會過度樂觀;Saito 和 Rehmsmeier 2015 年的研究建議,不平衡資料優先看 precision-recall 曲線。
決定五:上線之後,解釋、監控、回饋
模型上線只是開始。三件事決定它能不能活下去:
- 給理由:每一筆警示附上「是哪幾個特徵讓它分數高」。調查員看得懂理由,才會信任警示;用 SHAP 這類方法可以算出每個特徵的貢獻。這直接對應前面講的那個問題:誤報一多,現場就不信任。
- 監控三個數字:每天的警示量、調查後的命中率、主要特徵的分布有沒有漂移。警示量突然掉下來,不一定是世界變乾淨了,可能是對手換了方法。
- 把調查結果變成標籤:每一件調查完的案子,都是一筆標籤。標籤夠了,就能從無監督走向半監督、再走向監督式;新的確認手法,則先寫成規則當天補上。
所以成熟的系統通常三種同時在跑:規則補新手法,監督式模型抓見過的,無監督模型守著沒見過的。
這五個決定,也就是文章開頭那張架構圖裡,每一個方框背後真正的工作。
邊界一:異常只代表「值得調查」,誤報太多會摧毀現場信任
圖 2 左邊還有一個容易漏看的地方:行為模型的 41 個名額裡,除了 30 個自動化帳號,還有大約 10 個一般玩家。
他們沒有作弊,只是行為不常見:有人打得特別久,有人節奏特別穩。Chandola 的綜述講得很直接:正常和異常的邊界通常不精確,靠近邊界的異常觀測,可能其實是正常的。
這在實務上的代價很具體。我做製造和風控時都遇過:誤報一多,現場就不信任。警示響十次有八次是誤會,第九次就沒人看了。門檻設在哪裡,最後是業務決策:你願意為了多抓一個老千,去打擾多少個正常玩家。
所以偵測系統的輸出,是一張「值得調查的名單」;判決要等調查。從名單到認定作弊,中間要有人工調查補上證據。GGPoker、888poker、WPT Global 公開的處置,都是調查之後的封號與退款,這一步省不掉。
邊界二:對手會模仿人類節奏,模型必須靠人工調查回饋持續重訓
第二個邊界在圖 2 右邊,也寫在同一篇綜述裡:當異常來自惡意行為,對手會調整自己,讓異常看起來正常。
自動化帳號的作者也看得到平台的公告。今天平台說「太一致會被抓」,明天的程式就會加入隨機的停頓、刻意的失誤、合理的在線時間。
我在風控專案裡最深的體會之一就是這個:對手會適應,模型會過期。詐騙的方式改了,上個月有效的特徵這個月就失效;模型要持續重訓,也要監控它抓到的東西是不是越來越少。
這也是為什麼規則和模型必須並存。規則好解釋、上線快,新手法一確認,當天就能補一條;模型抓沒見過的組合,但需要時間累積資料。兩者分工,再加上人工調查把新案例回饋回去,才是會跟著對手一起變的系統。
結語:從賭場抓老千到銀行防盜刷,守住風控靠的是「三層篩選+調查回饋」閉環
把賭場拿掉,這套邏輯幾乎原封不動地出現在別的地方:
- 銀行抓盜刷:和這張卡過去的消費比,和同類持卡人比。
- 電商抓假帳號:註冊、登入、下單的節奏太規律。
- 工廠抓設備異常:GPU 使用率、對外連線數偏離基準線。這正是我在〈工廠邊緣設備被植入挖礦木馬怎麼辦?真實入侵復盤+AI Coding 資安做法(2026)〉裡,事後才補上的那道警示。
它們共用同一組條件:標籤少、正常行為會變、對手會適應、誤報有代價。差別只在誤報的代價由誰承擔。
賭場抓老千,看的是一個人像不像自己、像不像人。
AI 讓作弊變便宜,也讓「像人」越來越容易偽造。偵測方能守住的,是一套會更新的流程:三層篩選、人工判定、結果回饋。少了任何一段,系統都只會越來越準確地抓錯人。
如果想看異常基準線在真實事故裡少了會怎樣,可以接著讀〈工廠邊緣設備被植入挖礦木馬怎麼辦?真實入侵復盤+AI Coding 資安做法(2026)〉。
方法與限制
- 實驗為模擬資料,三個特徵與各群分布都是作者設定,目的是說明機制,不代表任何真實平台的資料或偵測效果。
- 「偽裝程度」只改決策節奏與在線時數,不改勝率;真實的對手可能同時調整更多面向。
- 三種偵測方式拿到相同的警示名額(2%);名額改變,結果也會改變。基準線只和全體比,沒有和帳號自己的過去比。完整程式碼列在「模擬實驗驗證:不偽裝時基準線已抓到 97.8%,對手開始偽裝才需要行為模型」一節,照順序貼進同一個檔案即可重現圖 2 的數字。
常見問題
什麼是異常偵測(anomaly detection)?
找出不符合預期正常行為的模式,這是 Chandola 等人 2009 年綜述的定義。重心在「正常」:你列不出所有作弊或詐騙手法,但能描述正常的樣子,再把離正常太遠的挑出來。銀行抓盜刷、電商抓假帳號、工廠抓設備異常,用的都是同一套邏輯。
Isolation Forest(孤立森林)是什麼?
一種異常偵測方法:隨機切資料,越容易被單獨切出來的點,越可能是異常。2008 年提出它的論文指出,訓練資料裡完全沒有異常樣本時它也能運作,正好對上標籤幾乎沒有的現實。它看的是特徵組合,幾個「有點怪」加在一起就會被切出來。
沒有標籤,怎麼評估異常偵測模型?
一開始先把已知形態的異常注入正常資料,看抓回幾成,但只量得到想像得到的異常。人工調查開始確認案例後,看 precision@k:送去調查的 k 件裡有幾件是真的;也能拿確認過的案例,只用當時拿得到的資料重跑回測。確認案例累積後,不平衡的資料優先看 precision-recall 曲線。
被異常偵測標記,就代表作弊嗎?
不代表。偵測系統輸出的是一張值得調查的名單,判決要等人工調查補上證據。行為不常見的真人,例如打得特別久、節奏特別穩,也會被標記;誤報一多,現場就不再信任警示。門檻設在哪裡,最後是業務決策:願意為多抓一個老千,打擾多少個正常玩家。
延伸閱讀
- 工廠邊緣設備被植入挖礦木馬怎麼辦?真實入侵復盤+AI Coding 資安做法(2026)
- LLM Eval 怎麼做才不會被騙?跑越多組,第一名越可能只是運氣(2026 實驗設計懶人包)
- AI 會寫 SQL 了,還需要學 Data Science 嗎?(2026 完整解析)
參考資料
- Noam Brown, Tuomas Sandholm (2019-07-11). Superhuman AI for multiplayer poker. Science.
- MIT Technology Review (2019-07-11). Facebook's new poker-playing AI could wreck the online poker industry—so it's not being released.
- Varun Chandola, Arindam Banerjee, Vipin Kumar (2009). Anomaly Detection: A Survey. ACM Computing Surveys 41(3).
- Fei Tony Liu, Kai Ming Ting, Zhi-Hua Zhou (2008). Isolation Forest. ICDM 2008.
- Pokerfuse (2020-10-07). GGPoker Reimburses Over 4,000 Players Following Recent RTA Bans(數字引自 GGPoker 官方公告).
- Pokerfuse (2024-01-18). 888poker Refunded $350k to Players Affected by Bots in 2023(數字由 888poker 提供).
- Pokerfuse (2025-06-26). WPT Global Shares First-Ever Cheating Report.
- John McDonald, Valve (2018). Robocalypse Now: Using Deep Learning to Combat Cheating in Counter-Strike: Global Offensive. GDC 2018(Valve 開發者 wiki 列表);成案率數字經二手來源確認:Edgegap, Anti-Cheat Deep Dive: Counter-Strike: Global Offensive.
- Dallmeier (2019-04-03). 'Best New Product' Award @ WGPC 2019(廠商新聞稿).
- Markus M. Breunig et al. (2000). LOF: Identifying Density-Based Local Outliers. SIGMOD 2000.
- NIST/SEMATECH. e-Handbook of Statistical Methods, 6.3 Univariate and Multivariate Control Charts.
- Takaya Saito, Marc Rehmsmeier (2015). The Precision-Recall Plot Is More Informative than the ROC Plot When Evaluating Binary Classifiers on Imbalanced Datasets. PLOS ONE.
- Scott Lundberg, Su-In Lee (2017). A Unified Approach to Interpreting Model Predictions. NeurIPS 2017.
- scikit-learn. Novelty and Outlier Detection(2026-10-14 檢視).
- 全國法規資料庫. 中華民國刑法第 266 條(2022-01-12 修正公布).
留言0
登入後就能留言。
登入