為什麼寫業務代碼是無趣的?
一. 概念
最近開始啃《人工智慧:一種現代方法》這本大部頭,在第二章Intelligent Agents中,有一節叫做The Nature of Environments,這節相當的精髓,對環境/世界的本質進行了抽象,它對我們進行agent/program有根本上的指導意義。
先看一個新概念,agent?有翻譯成代理的,有翻譯成智能體的,基本上可以說是人工智慧領域專有的概念吧,和計算機程序的program概念接近。
第二個概念是enviroment,也就相當於是計算機程序的input和output。
agent和enviroment構成了一組概念,agent可以感知enviroment(input),也可以影響enviroment的狀態(output)。
二. 世界的屬性
而這節的精髓就在於,它把enviroment抽象成了幾個維度,在這些維度上的不同導致了我們的program/agent在設計上和實現上的不同。
1. fully observable vs. partially observable
enviroment的狀態是否完全可觀測,即input是不是目前當前時間的世界完整狀態。比如對於無人駕駛來說,並不是所有車輛,行人的狀態都是可觀測的(可能被遮擋),即partially observable,這種情況下,agent/program需要保存之前的狀態,來推薦那些不可觀測到的狀態。
2. single agent vs. multiagent
在世界中,只有一個agent,還是有多個agent。如果多agent,那麼博弈論的知識就需要引入,就需要競爭和合作。比如alphago面對的就是多agent世界。
3. deterministic vs. stochastic
世界是確定的還是隨機的。如果有隨機性,那麼就需要不確定性推理的知識。
4. episodic vs. sequential
片段的還是連續的。比如對弈,駕駛都依賴於上一刻的狀態,而不僅僅是當前時間的狀態。
5. static vs. dynamic
隨著時間流逝,世界的狀態會發生改變,就是dynamic的。
6. discrete vs. continuous
狀態的改變是離散還是連續,狀態是有限的還是無限的。
無限的話就會有組合爆炸的問題,agent/program不能通過窮舉來實現。
7. known vs. unknown
這個和observable不一樣,unknown是指你可以觀察這個世界,但是你並沒有這個世界的運轉法則的知識。
三. 人工智慧世界與業務系統世界
我們可以看出,最複雜的世界是partially observable, multiagent, stochastic, seqential,dynamic,continuous,unknown的世界。而這,很接近於我們所生存的真實的物理世界。
而它的反面,fully observable, single agent, deterministic, episodic, static, discrete, known,則是一個相對簡單的世界,而這,很接近於我們手下的業務系統世界。
人工智慧之所以困難,之所以複雜,是因為我們面對的是一個紛繁複雜的複雜系統,而業務系統,面對的則是簡單清晰原則至上的簡單系統。
在人工智慧世界裡,agent需要面對不可見的狀態,朋友,敵人,隨機性,因果關係,無窮的狀態組合,所以需要不確定性推理,知識表示,博弈論,邏輯等等知識來加入到agent當中,這比業務邏輯要複雜的多的多,而這才更有意思。
當然,業務系統世界也有挑戰,比如有失敗,有並發,有性能問題。
推薦閱讀:
TAG:人工智能 |