回來了半個月,也拖了半個月,終於開始動筆寫倒數第二篇文章了。對,這不是最後一篇,我臨時決定講完基本概念以後來討論一下人工智慧威脅論。之前看到了一個很具有代表性的知乎的文章,完全沒有從技術實現角度來討論,只是從人工智慧分級和技術進步速度,我覺得這樣是沒有說服力的。但是今天廢話不多說了,第三篇人工智慧學習筆記,增強學習Reinforcement Learning。
試想如下情形,一個撿瓶子機器人放置在一個空曠的區域中,他的任務是拾取可回收的瓶子,機器人的電量用兩種狀態「高」和「低」來表示,同一時間機器人可以進行,找尋瓶子,等待,充電這三種行為,機器人的目標是在不用完電的情況下高效的拾取瓶子。這種情況下,我們如何通過之前講到的神經網絡和監督學習來完成這個任務呢?
事實上,通過神經網絡和監督學習是基本完成不了這個任務的。當我們使用神經網絡或者監督學習的時候,人工智慧對環境全知,並且把過去所有的數據都輸入到模型中,得到輸出。可是在上述任務中,機器人對環境未知,並且機器人是在和環境接觸的過程中不斷決策,同時我們也不知道正確的結果是什麼,我們只是要高效的撿瓶子。
所以這就輪到增強學習登場了,增強學習主要用於這種類似的任務。人工智慧根據環境給出的反饋,學習應該進行什麼行為。增強學習和環境的接觸如下圖所示
在我們的人工智慧在時間t做出行為A後,造成了環境的改變和自身狀態的改變。新的狀態表示為St+1,對環境的改變使用獎勵reward來描述,表示為Rt+1,然後這兩個作為時間t+1的輸入值輸入給人工智慧,人工智慧再根據狀態和獎勵來決定下一步做什麼。例如在撿瓶子機器人的例子中,電量狀態是「低」的時候,執行其他操作的獎勵可以設置為負數。這些對人工智慧的獎勵,人工智慧的狀態,人工智慧可進行的行為,加上dynamics都是由人來設定的。Dynamics是什麼呢,打個比方,我們在扔硬幣的時候,朝上的概率是50%,朝下的概率也是50%,那麼相同的行為A——扔硬幣,產生了兩個St+1和對應的獎勵Rt+1,dynamics就是用來描述當前狀態下採取某一行為得到一個St+1和Rt+1的概率。在扔硬幣的例子中,dynamics就有兩個等式,分別表示下一狀態朝上概率是50%,和朝下概率是50%。正規的表達式如下圖所示
這裡等號上加一點代表define定義,前面的小寫p代表dynamics,豎線後代表觀察到的狀態s和行為a,豎線前面代表下一狀態s'和獎勵r,那麼它的dynamics被定義為觀察到t-1的時候狀態為s,採取行為a,在t時間狀態為s'獎勵為r的概率(Pr代表概率)。
而這四個設定,構成了增強學習的架構——Markov Decision Process馬可夫決策過程。而在馬可夫決策過程中,人工智慧的任務可以很簡單的定義為最大化你的獎勵。改變人工智慧的目標就是改變獎勵機制。接下來要講到的就是程序是如何做決策的。
在程序中有一組數不需要人為設定到特殊值的,他就是policy策略。人工智慧根據策略值來進行決策。策略的表達如下圖
通常這個值初始設置為1。有了一個基本的決策方法之後,我們就可以根據value function價值公式來決定採取什麼行為了。價值公式有兩種,state-value function和action-value function。分別是計算某一狀態的價值是多少和某一行為的價值是多少。公式分別為
其中γ是人為設定值,為0到1之間的值,表示一種權重。在前面的sigma表達式中越往後迭代,reward的權重越小。這樣就可以避免一個問題,就是我當前行為的獎勵很少,但是我採取當前行為之後下一行為可以獲得特別多的獎勵,但是程序不會採取當前行為。當然因為有時間參與,未來的獎勵到當前價值損耗,通過γ來模擬。(學ENG M 310的同學熟不熟悉)
另外現實情況不會計算到正無窮,我們通常會規定一個誤差,如果多計算一次產生的修改小於這個誤差值了,我們就停止再更新這一狀態的價值。之前大火的AlphaGo就是會先選點,然後計算每個點的價值,然後決定下哪一步。
接下來聊聊學習的事,前面講完了增強學習的設定,接下來該講學習了。增強學習的學習過程就是一個更新我們policy策略的過程。通過修改policy的值來讓獎勵越來越多。那怎麼才算是一個比當前策略更好的一個策略呢。比如說我們現在有策略π和策略π',如果根據π計算出來的每個狀態的價值都不小於根據π』計算出來的狀態價值,我們就說π是一個更好的策略。
知道了怎麼確定一個策略是不是更好的,就到了提升策略的環節了。有一個簡單粗暴的辦法,叫greedy policy improvement。
π'是我們要找的那個最好的策略,這裡他描述的當我們狀態為s時採取各個行為的概率。但是這裡面,在狀態s下,採取的行為被簡單粗暴的規定為——按照當前策略π能讓action value最大的那個行為,也就是採取那個行為a的概率是1,其他都是0。這樣我們就完成了一次policy improvement。實際操作中需要執行很多次這樣的操作,先計算action value或state value,用上述方法更新策略,使用新策略重新計算action value或state value,再更新策略,直到更新的值小於認為規定的誤差。
關於增強學習我就想講這些,正常上的課後面還有蒙特卡洛預測,蒙特卡洛控制,Temporaldifference learning(也是增強學習的一種)等。但是作為科普文,講出基本原理大概就夠了,而且後面的內容更加難以理解和講清楚。還有興趣的可以參閱Richard Sutton的書《Reinforcement Learning: An Introduction》。我的公眾號之前也有過一篇講AlphaGo算法的文章,可以和這篇對照著閱讀,但是AlphaGo的算法比簡單的增強學習更複雜。
下一篇不知道什麼時候更新了,畢竟寫公眾號這東西,不動筆就完全不想寫,一開始寫就停不下來了。關注一下公眾號等更新吧~順便求個轉發,點個「在看」。