TensorFlow小介紹 從0到1學習Unity開發AI應用

5.11去參加了Unite 2018大會,遇到了老朋友Marek,Unity官方主講人,所用Demo是Angry Bots,這個案例從我開始學習Unity就存在了,沒想到現在還一直更新,採用此Demo主要用於講解Unity開發AI應用,可見官方對AI的重視。

於是,我決定繼續更新《Unity從0到1開發AI應用》系列文章,主要針對官方在github上開源項目ML Agent,這幾周介紹Bg知識or翻譯,後面實踐Demo。

在《機器學習背景知識》中,Unity ML Agents的許多演算法都利用了深度學習。值得注意的是,我們的實現都是基於開源庫TensorFlow,這意味著:ML Agents提供的訓練模型目前只能被TensorFlow理解。

本片只能算TensorFlow小介紹,主要說明ML Agents用到的一些TensorFlow工具,因為TensorFlow是代表未來的重量級技術,文章僅僅為unity開發者做一些普及,學術上一定不太嚴謹,有問題望大家指正。

2015年11月9日,Google發布人工智慧系統TensorFlow並宣布開源,備受關注,Google公司對此的重視程度不亞於Android系統,保持更新與全面了解請看如下資料:

英文官方網站:

tensorflow.org/

官方GitHub倉庫:

github.com/tensorflow/t

中文版 GitHub 倉庫:

github.com/jikexueyuanw

視頻:2018美國CIO:爐邊會談之吳恩達?

www.forbes.com

TensorFlow

  • Unity版本:

TensorFlow是一個開源庫,用於以數據流曲線的方式演示演算法或計算,是深度學習模型的潛意識。它讓CPUs和GPUs上的訓練和實踐過程更容易進行,如論這些過程是在客戶端,伺服器還是移動端。在ML Agents中,訓練Agents所得到的輸出是一個TensorFlow模型,你可以把它嵌入到Internal Brain中,當然TensorFlow的使用是非常抽象不可見的。

  • 百度版本:

TensorFlow是谷歌基於DistBelief進行研發的第二代人工智慧學習系統,其命名來源於本身的運行原理。Tensor(張量)意味著N維數組,Flow(流)意味著基於數據流圖的計算,TensorFlow為張量從流圖的一端流動到另一端計算過程。TensorFlow是將複雜的數據結構傳輸至人工智慧神經網中進行分析和處理過程的系統。

TensorFlow可被用於語音識別或圖像識別等多項機器學習和深度學習領域,對2011年開發的深度學習基礎架構DistBelief進行了各方面的改進,它可在小到一部智能手機、大到數千台數據中心伺服器的各種設備上運行。TensorFlow將完全開源,任何人都可以用。

TensorBoard

使用TensorFlow過程中,有一個組件用於設置certain model attribute(超級參數)。發現正確的超級參數需要一個迭代更新的過程,通常我們會使用一個可視化的面板TensorBoard,在整個training過程中,通過TensorBoard可以觀察確定的代理屬性(例如:獎勵信號),這可以幫助不同的超級參數建立直覺,同時可以設置Unity環境的最佳值,後續,會提供關於TensorBoard詳細介紹。

TensorFlowSharp

TensorFlow有一個缺點,不能提供本地的C#API,這意味著Internal Brain不被天然支持因為Unity腳本是用C#寫的。所以,要開啟Internal Brain,我們需要一個第三方庫:TensorFlowSharp,它為TensorFlow提供了.Net關聯。因此,當包含Internal Brain的Unity Environment被創建的時候,實踐過程是通過TensorFlowSharp進行的。由於對TensorFlowSharp的以來,目前Internal Brain是實驗性的。

大家對於TensorFlow也不用望而生畏,僅僅是一項技術而已,我早已對於任何傳說中很厲害的技術保持了一種「麻木」的狀態,相信讀者們都是技術行業的學習實踐者或技術大牛,任何的技術都可以通過不斷的實踐,反思,學習來獲取;對於unity開發者,首先要會用,然後再深入內部原理,看不懂也沒關係,實踐案例的時候回過頭來再看或許更清晰些。


推薦閱讀:

TAG:深度學習(DeepLearning) | TensorFlow | 虛擬現實(VR) |