什麼不是更換研究方法的理由:
- 「跑不出答案(跑了很多次)」、「電腦算不動」、「算法不 converge 」、「結果怪怪的」、「找不到答案」、「證不出來」、「資料拿不到」、「AI建議我換方法(但自己不知道為什麼)」
- 「我看別人(文獻)用這方法有效」、「別人(文獻)都這樣用」、「文獻看不懂」
- 「我覺得 metaheuristic 方法 GitHub 上有現成 package 比較簡單」
- 「我不知道怎麼 debug」、「code不會寫」
要換方法應先提交 Failure Analysis Report:
- 原方法的完整理論與演算法描述
- 問題的 objective、constraints、dynamics
- 參數設定
- 算法步驟
- 預期應滿足的最佳性條件(如 KKT、Bellman、HJB、local/global optimality)
- 預期應滿足的對偶性質 (strong/weak duality,duality gap)
- 預期應滿足的拘束資格條件 (constraint qualification, Slater's condition)
- 預期應滿足的可測性/連續性/可導性等條件
- 預期應滿足的穩定性條件(如 Lyapunov function, asymptotic/non-asymptotic)
- 預期應滿足的強健性條件 (worst-case analysis, sensitivity analysis)
- 預期應滿足的算法複雜度條件
- 預期應滿足的近似條件
- 明確指出「哪裡做不出來」,只說「做不出來」= 無效論證。學生應回答:
- 失敗發生在哪一行計算?
- 是 gradient / subgradient / Jacobian / Hessian 算不出來?
- 約束是否不相容?
- 數值解是否跳出可行域?數值誤差?
- dynamics 無法滿足?
- initial condition 是否導致 divergence?
- 實驗/模擬結果是否可重現?(不同資料集都指向同一結論)
- 模擬結果不佳的具體意義(穩定性不好?報酬不佳?變異太大?)
- 合理的失敗原因推論(有理論或合理假設),例如:
- 模型非凸 → local solver 卡在 local minima
- state/control constraint 過於嚴格 → 無可行解
- dynamics stiffness 太高 → 數值爆炸
- objective/loss scale 不當 → 需要 normalization
- 多期多目標計算
- Impossibility claim 的證明: 若你要宣稱「這個問題做不到 / 不可能」必須附上 理論或模擬證據,例如:
- 證明無可行解
- 顯示最佳性條件(KKT / Bellman)不可同時滿足
- 顯示系統缺失某robustness/stability/performance
- 指出該問題在某些條件下為 NP-hard,並說明該障礙是否適用目前研究問題的結構
- 提供反例或實驗結果,清楚展示失敗原因
沒有上述證據,只說「做不出來」、「不可能」等說法,是不會被直接接受的。我預期學生應該要提供「數值/實證數據」與「結構性論證」各一項:
- 數值例子(宣稱非凸應該提供非凸性理論推導反例,或在低維情況繪製其非凸結構的圖例)
- 圖表 (solution path, 誤差收斂曲線,state trajectory, etc)
- log / 訊息 (錯誤碼,停止條件)
- constraint violation
- Optimality Condition (e.g., KKT) violation
- Complexity analysis
- 數值或者理論反例
- 調整 step size
- 更換 initial condition
- 放寬或修改部分 constraint
- scaling / normalization / shifting
- convex surrogate、linearization / relaxation
- 理論上合理的 heuristic(不是隨便 metaheuristic)
- greedy algorithm with provable approximation ratio 是合理的 heuristic;而 genetic algorithm without convergence guarantee 若只是因為有現成package可用,則不能直接取代理論分析。也應檢查「方法與問題的結構假設(convexity, smoothness, dimensionality等)是否相容。
- 考慮的問題範圍與算法適用性,比如 L-BFGS-B 適用於 box 拘束。
- 求解器更換 (Gurobi/MOSEK/CVX)
- 更換solver本身仍應有明確理由,比如問題規模大小變動等等。
對採用「新方法」的要求:必須有合理性證據
- 新方法與研究問題結構更一致(例如確認問題具有 QP, LP, SOCP, SDP 結構後,改用相對應的convex optimization approach)
- 可以證明更好的 optimality/stability/robustness 性質
- 可以證明可行性、收斂性
- 在保留可驗證的approximation/regret guarantee前提,達成原方法不可達的問題規模。
- 文獻中有具體、可查證的支持
- 「github上有現成套件」
- 「我覺得 metaheuristic 比較方便」
- 「網路上有人這樣用」
- 「我自己跑起來比較順」
反思:
