原文地址:程序員
https://zhuanlan.zhihu.com/p/33133828面試
-------------------------------------------------------------------------------------算法
(本文最開始寫在WPS裏,往知乎粘貼後格式和高亮都沒有了。你們能夠從CSDN再勵學習面試真題-CSDN下載下載本文。百度文庫、道客巴巴強行不讓公開。)網絡
前言數據結構
本人於17年4月對再勵學習產生了興趣,8月將其定爲本身將來學習的核心。在10月~12月的求職中,一直將加強學習做爲本身簡歷的要點。這兩個月的面試中,被問到了大量強化學習問題。就像郭老師《深刻淺出強化學習:原理入門》是第一本reinforcement learning中文教材同樣,我也想以此文填補再勵學習面經的空白。app
1 緒論框架
1.1 這是一篇什麼文章?機器學習
本文按郭老師教材的章節順序,儘可能回憶起再勵學習的面試真題。這些問題主要來自於快手、獵戶星空、京東商城、景馳科技、四維圖新、禾多科技、滴滴出行、魔門塔科技、新浪微博等公司的校招面試,在此對全部這些帶給我啓發的面試官表示感謝。由於都是口頭提問,面試真題不可能像事先精心設計好的書面試卷同樣嚴謹、邏輯性強。有些題很容易搜到答案;有些題則是正在研究的開放性設計方案;有的問題更是尚未比較好的解決辦法。本文中,常考知識點都用紅色標記。分佈式
對於系統學過強化學習的朋友(特別是看郭老師教材的),本文能夠檢驗學習效果。對再勵學習求職者和麪試官,則是很是好的題庫。之後再編纂加強學習書,歡迎引用本文內容。同時,本文收錄的開放性設計題亦可做爲reinforcement learning研究者的參考方向。函數
由於本文是想填補再勵學習面經的空白,爲了保持特點和針對性,其餘機器學習、深度學習、算法設計、數據結構、數學、C++、操做系統原理、Linux使用、分佈式計算等已經被充分總結過的問題就再也不贅述了。
1.2 強化學習能夠解決什麼問題
1.2.1 我面試過的公司裏:
1)推薦系統
阿里巴巴、京東商城商業提高事業部等大電商和部分新媒體公司都在把再勵學習用在推薦系統、計算廣告和搜索引擎中。
2)遊戲AI
由於本人平時不玩遊戲,瞭解不多,有公司嘗試作德州撲克。
3)機器人控制
有作機械臂控制的。
跟書上寫的不同——自動駕駛公司幾乎都不用再勵學習!自動駕駛公司的研發重點多在車道線識別等計算機視覺感知問題上,決策方面主流用的仍是 基於規則的有限狀態機。
1.2.2 北京學術界:
境內計算機學科研究再勵學習的不多(我只看過PKU、ISCAS、ICT CAS、THU計算機系,可能有遺漏),用上的也多將其做爲對話系統、自動駕駛、序列預測的工具。
CASIA所將其做爲核心課題:模式識別和複雜系統兩大國重都有組在研究星際爭霸;自動駕駛在複雜實驗室有研究;空天中心搞機器人避障。
1.3 強化學習如何解決問題
1)舉出強化學習與有監督學習的異同點。有監督學習靠樣本標籤訓練模型,強化學習靠的是什麼?
2)強化學習解決的是什麼樣的問題?
我答:「序列決策問題。」
面試官又問:「 只是一步,沒有序列呀?」
第一篇 強化學習基礎
2 馬爾科夫決策過程
2.1 MDP理論
1)強化學習的損失函數(loss function)是什麼?
2)POMDP是什麼?馬爾科夫決策過程是什麼?裏面的「馬爾科夫」體現了什麼性質?馬爾科夫過程是什麼?(由於是口頭交互式提問,確實是先難後易。)
3)寫出貝爾曼方程。
4)最優值函數和最優策略爲何等價?
5)若是不知足馬爾科夫性怎麼辦?當前時刻的狀態和它以前不少不少個狀態都有關。
recurrent state。
3 基於模型的動態規劃方法
求解馬爾科夫決策過程都有哪些方法?有模型用什麼方法?動態規劃是怎麼回事?
第二篇 基於值函數的強化學習方法
4 基於蒙特卡洛的強化學習方法
簡述蒙特卡羅估計值函數的算法。
5 基於時間差分的強化學習方法
1)簡述時間差分算法。
2)蒙特卡洛和時間差分的對比:MC和TD分別是無偏估計嗎,爲何?MC、TD誰的方差大,爲何?
3)簡述Q-Learning,寫出其Q(s,a)更新公式。它是on-policy仍是off-policy,爲何?
4)寫出用第n步的值函數更新當前值函數的公式(1-step,2-step,n-step的意思)。當n的取值變大時,指望和方差分別變大、變小?
5)TD(λ)方法:當λ=0時實際上與哪一種方法等價,λ=1呢?
6 基於值函數逼近的強化學習方法
6.1 基於值函數逼近的理論講解
寫出蒙特卡洛、TD和TD(λ)這三種方法更新值函數的公式。
6.2 DQN及其變種
6.2.1 DQN方法
這是本人這麼屢次面試中被問到次數最多的再勵學習問題。
1)詳述DQN。DQN的兩個關鍵trick分別是什麼?
2)不打破數據相關性,神經網絡的訓練效果爲何就很差?
3)畫出DQN玩Flappy Bird的流程圖。在這個遊戲中,狀態是什麼,狀態是怎麼轉移的?獎賞函數如何設計,有沒有獎賞延遲問題?
6.2.2 Double DQN
1)DQN都有哪些變種?引入狀態獎勵的是哪一種?
2)簡述double DQN。
第三篇 基於直接策略搜索的強化學習方法
7 基於策略梯度的強化學習方法
7.1 理論講解
策略梯度方法中基線b如何肯定?
8 基於置信域策略優化的強化學習方法
8.1 理論基礎
爲何TRPO能保證新策略的回報函數單調不減?
9 基於肯定性策略搜索的強化學習方法
9.1 理論基礎
1)畫出DDPG框架。
2)actor-critic框架中的critic起了什麼做用?
3)DDPG是on-policy仍是off-policy,爲何?
4)簡述A3C算法。
5)A3C是on-policy仍是off-policy,爲何?
第五篇 強化學習的商業落地
15 推薦系統
1)強化學習如何用在推薦系統中?
我主要複述《不同的技術創新:阿里巴巴2016「雙十一」背後的技術》第七章。阿里後來新寫了《強化學習在電商環境下的若干應用與研究》。新發現京東寫的《Deep Reinforcement Learning for List-wise Recommendations》。
2)推薦場景中獎賞函數如何設計?
3)場景中狀態是什麼,當前狀態怎麼轉移到下一狀態?
4)研究課題:絕大部分強化學習用的都是智能體與環境交互得來的數據。可是智能體在一開始表現不好,線上訓練試錯成本太高,如何用強化學習前的靜態歷史數據訓練模型呢?
16 自動駕駛和機器人決策
1)自動駕駛和機器人的場景如何建模成強化學習問題?MDP各元素對應真實場景中的哪些變量?
2)用什麼算法實現決策?
我複述的是DDPG玩TORCS的例子。
3)強化學習須要大量數據,如何生成或採集到這些數據?(本題亦可做研究課題。)
17 深度學習
研究課題:傳統的注意力機制是soft attention,每時刻的特徵經過attention值進行加權,實現端到端的訓練。但因爲須要把每一個時刻的attention都算一遍,soft attention速度慢。因而「取attention值最大的時刻對應的特徵」的新方法hard attention應運而生。除了計算量大大下降,hard attention還有解碼方便的優勢。可由於是hard,無法像soft同樣將偏差梯度反向傳導回去。如何用再勵學習的方法訓練hard attention模型參數?(本人只知道注意力機制,此題複述得很是費勁,可能有錯誤。)
18 序列預測
已知且僅知全國全部城市距今千年來的天天(包括今天)最高最低氣溫,陰晴雨雪和風力風向,要預測明天北京的最高氣溫,請詳述如何構造樣本點和幾大類特徵會使得預測會很準確。
(此題非再勵學習方法更實用。但北大有教授想用強化學習作序列預測,因而就寫在這裏了。)
後記
本文雖然提出了問題,但不少問題本人在面試時回答得並很差。很是歡迎你們一塊兒討論這些問題的答案!
雖然DeepMind時不時就能刷屏,但再勵學習直到18年初仍然沒有推廣開。我17年主攻加強學習屬於打出很大提早量的「左側買入」,我的感受17年的強化學習就像13年的深度學習同樣方興未艾,但短則兩年長則五年內必能大紅大紫!
深度學習12年大發展以來,直到17年還在不斷推陳出新,CTR預估領域的應用還沒有普及,整體仍在當打之年。reinforcement learning遠比supervised learning難理解,對machine learning (deep learning)、數學等先驗知識要求高,中文資料也少。想落地的話,還必需有原領域的功底。總之,學習曲線很陡!對絕大多數獨立性不強、愛隨大流的同窗,遠不如deep learning那麼喜聞樂見、平易近人。
---------------------------------------------------------