Facebook CEO Mark Zuckerberg 在 12/20 貼出一篇文章,說明自己在 2016 年開發人工智慧機器人 Jarvis 的經驗,以下是經由 Termsoup 雲端翻譯工具編輯的譯文,NovaPoints 獲授權全文轉載。
我個人在 2016 年挑戰做一個簡單的人工智慧來打理我的家,像鋼鐵人的 Jarvis 那樣。
我的目的是了解人工智慧的現狀,了解我們已經做到什麼程度,以及我們還有多遠的路要走。這些挑戰持續引導我學習比我預期更多的東西,也讓我更了解臉書內部工程師在用東西,以及讓我對自動化家庭有大概的了解。
今年我做了一個簡單的人工智慧,我可以在手機和電腦和它說話,讓它控制我的家,包括照明、溫度、設備、音樂和安全,讓它學習我的喜好和行為模式,學習新字和觀念,甚至可以逗 Max(註:Zuckerberg 的女兒)玩。它用了幾種人工智慧技術,包括自然語言處理、語音辨識、臉部辨識,以及強化學習。它是用 Python、PHP 和 Objective C 寫成。我將在本文解釋我做的東西,以及我在這個過程中學到什麼。
為了打造 Jarvis 所連接的系統
開始:連接家用電器
就某些角度來說,這個挑戰比我想的還要簡單。其實,我的跑步計畫(我計畫在 2016 年跑 365 哩)(註:約 587 公里)花的總時間還比較多。但光是把我家所有不同的系統連在一起並相互溝通,這部分卻比我想的還要複雜。
在做任何人工智慧之前,首先我得先寫程式把這些系統連在一起,因為它們說的語言和用的協定都不一樣。我們的燈、恆溫器和門用的是 Crestron 系統,用 Spotify 的 Sonos 系統聽音樂,三星電視,還有為了 Max 裝的 Nest 攝影機,當然還包括我的工作是連到臉書系統。為了這些東西,我得把工程師的 API 修改到某個程度,才能用我的電腦發出指令把燈打開,或播一首歌。
此外,大多數家用電器根本沒有上網。我是可以用有網路連線的開關來控制這些電器,讓我遙控開關,但這樣做通常不夠。例如,我發現很難找到不用開啟電源就把吐司往下推的烤麵包機,如果可以這樣的話我就能在電源開啟時自動烤麵包。最後,我找到一台 1950 年代的烤麵包機,幫它裝了開關。同樣的,我發現要連接 Beast(註:Zuckerberg 養的狗)的飼料機,或是連接灰色T-恤大砲(註:似乎是 Zuckerberg 設計用來幫他挑 T-恤的機器),可能得改硬體才行。
要讓像 Jarvis 這樣的助手幫更多人控制家裡一切,我們需要連接更多裝置,業界也要開發更多通用的 API 和標準,讓家電能彼此說話。
指令發出的自然語言要求
自然語言
當我把可以用電腦控制我家的程式寫好之後,下一步就是讓它實際去控制,我可以和我的電腦及房子說話,就像我和別人說話一樣。這裡有兩個步驟:首先,我用簡訊讓它做到這一點;再來,我加上說話的能力,讓它把我的話翻譯成文字給它讀。
一開始它只是在找關鍵字,像是「臥室」、「燈」以及「打開」,藉此判斷我要它把臥室的燈打開。我很快就知道它得學同義字,像是「家庭房」和「客廳」在我家指的是同一個地方。這表示我要有方法教它新字和新觀念。
對所有人工智慧來說,了解情境很重要。例如,當我告訴它把「我的辦公室」的空調打開時,這和 Priscilla(註: Zuckerberg 的妻子)和它說一模一樣的話的意思完全不同。這一點很重要!或是,舉例來說,當你要它把燈調暗一點,或沒有說要在哪個房間放音樂時,它就得知道你人在哪裡,否則它可能會在 Max 的房間大聲播音樂,而我們卻希望孩子可以睡個午覺。真是尷尬了!
在自然語言裡,音樂是個更有趣又複雜的領域,因為關鍵字系統要處理很多作曲家、歌曲和專輯,而且你要它做的事的範圍也大多了。燈可以只是關掉或打開,但當你說「播放某某某」時,縱然只是細微的差異也會有許多不同意思。你可以把這些要求和愛黛兒聯想一下,例如「播放像你這樣的人」、「播放像愛黛兒的歌」以及「播放一些愛黛兒的歌」。這些聽起來很類似,但每一個都是完全不同種類的要求。第一個是要播放一首特定的歌,第二個是要播放一個作曲家的歌,第三個是列出一份愛黛兒最佳歌曲的播放清單。透過正面和負面的回饋,人工智慧可以學會這之間的差異。
人工智慧用擁有的情境越多,它就越能處理開放性要求。我幾乎都是要 Jarvis 「幫我放一些音樂」,它看過我之前聽音樂的模式後,幾乎都能播出一些我想聽的東西。它要是搞錯我的情緒,我只要告訴它一下就可以了。例如,「那首歌不輕快,放些輕快的歌來吧」,然後它就可以學到那首歌的分類,並立即予以調整。它還知道是我在和它說話,還是 Priscilla 在和它說話,這樣它就可以根據聽者來推薦要聽什麼。總的來說,比起具體要求,我發現我們更常用開放式要求。就我所知,目前沒有哪個產品可以這樣做,而這看起來是個很好的機會。
Jarvis 利用臉部辨識自動讓我的朋友進來,並讓我知道
視覺和臉部辨識
人腦大約有三分之一是用來處理視覺,許多重要的人工智慧問題都和了解圖片和影片有關。這些問題包括追蹤(例如,Max 是不是已經醒來並在她的嬰兒床動來動去?)、物件識別(例如,房間裡的那個東西是 Beast 還是地毯?) ,以及臉部辨識(例如,誰在門口?)
臉部辨識是物體辨識中特別難的部份,這是因為和兩個隨機的物體相比,例如三明治和房子,大多數人看起來相對差不多。但臉書已經很擅長臉部辨識,如果你的朋友在你的照片出現,它會認得出來。當你的朋友在你家門口,而你的人工智慧要判斷是否讓他們進家門時,這樣的技術也很有用。
為了做到這一點,我在我家門口裝了幾個可以從各角度取得畫面的攝影機。今天的人工智慧系統還沒辦法從人的後腦辨識,所以需要幾個角度確保我們可以看到他們的臉。我做了一個簡單的伺服器可以不斷看著攝影機,並讓它執行兩個步驟:首先,它先進行臉部偵測,看看有沒有人進入視線;其次,如果它發現有臉出現,它就會進行臉部辨識,確認對方是誰。一旦它認出那個人,就會去檢查一份清單,確定他是我在等的人。如果我確認了它就會讓他們進來,然後告訴我他們到了。
這種視覺人工智慧系統有很多用處,包括知道 Max 何時醒來,然後開始放音樂或中文課程,或是處理我們在家裡的哪個房間這種情境問題,這樣人工智慧就能正確回應不含情境說明的要求,像是不告訴它位置就能「把燈打開」。就和這個人工智慧大多數的情況一樣,如果你讓它知道更廣泛的模式,讓它連接其他能力,像是知道你的朋友有哪些人,以及朋友抵達之後如何把門打開等,視覺就會是最有用的部分。系統了解的情境越多,整體來說它就越聰明。
我可以用 Messenger 機器人傳簡訊給 Jarvis。
Messenger 機器人
我在自己的電腦寫 Jarvis,但如果它要有用的話,我希望不管我在哪裡都能和它溝通。這表示我必須能透過手機和它溝通,而不是靠放在家裡的一個裝置和它溝通。
因此,我開始做一個 Messenger 機器人和 Jarvis 溝通,因為這樣做比起另外做一個 APP 要來得容易太多。Messenger 有一個用來做機器人的簡單架構,它可以幫你自動處理很多事情,可以在 iOS 和 Android 上執行,支援文字、圖片和聲音,可靠的推播功能,為不同人處理身分和許可等等。你可以在 messenger.com/platform 了解這個機器人架構。
我可以傳任何訊息給 Jarvis,內容會立即傳給 Jarvis 伺服器然後處理。我也可以傳一些聲音檔,伺服器可以把它們轉譯成文字,然後執行那些指令。如果有人到我家,Jarvis 可以傳文字和圖片給我,告訴我誰在裡面,或是當我該做什麼的時候它可以傳簡訊提醒我。
我在和 Jarvis 溝通的過程中,有一件事讓我很意外:當我可以選擇用說的或是用簡訊和它溝通時,我傳簡訊的次數比我想像的高。這有好幾個原因,但主要是我覺得傳簡訊比較不會干擾身邊的人。如果我要做的事和旁人相關,像是幫大家放音樂,那麼用說的感覺還好,但大多數時候傳簡訊感覺比較適當。同樣的,當 Jarvis 和我溝通時,我也寧可收簡訊而不是聽語音。這是因為聲音可能會干擾,而簡訊讓你更能決定何時去讀。即使當我和 Jarvis 說話時,如果我用的是手機,我通常寧可它用文字或用螢幕顯示它的回應。
就 Messenger 和 WhatsApp 整體來說,全世界的簡訊量成長得比音訊量快很多。這表示未來的人工智慧不能只專注在聲音,也必須有私人傳訊的介面。一旦你能傳私人簡訊,採用像 Messenger 這樣的平台會比從新做個 APP 來得好多了。我對人工智慧機器人一直很樂觀,而我和 Jarvis 的互動經驗讓我又更樂觀了,相信未來我們會和像 Jarvis 這樣的機器人互動。
Jarvis 利用我的 iOS APP 進行聲音辨識,聽取我要新的 T-恤的要求。
聲音和語音辨識
雖然我認為和人工智慧溝通時,文字的重要性比我們想的更大,但我仍然認為聲音也會扮演重要角色。聲音最有用的地方在於它非常快,你不用把手機拿出來,打開 APP,然後開始打字。你只要開口說話就好了。
為了讓 Jarvis 可以處理聲音,我得做個能持續專心聽我說話的 Jarvis APP。Messneger 機器人有很多很棒的地方,但使用語音的障礙真的太多了。我這個專心的 Jarvis APP 讓我可以把手機放在桌上,然後讓它聽。我也可以把很有 Jarvis APP 的手機放在我家各個地方,這樣我就可以在任何房間和 Jarvis 說話。這似乎和 Amazon 的 Echo 差不多,但讓我訝異的是當我不在家時,我有多想和 Jarvis 互動。因此,把手機而不是家用裝置當成主要的介面似乎非常重要。
我做的第一個 Jarvis APP 是 iOS 版,我打算很快也來做 Android 版。自從 2012 年起我就沒做 iOS APP 了,我覺得其中一個原因是從那時候開始,我們用來開發這些 APP 和語音辨識的工具鏈已經非常強大了。
語音辨識系統最近有所提昇,但目前仍沒有一個人工智慧系統好到可以了解對話式語音。 語音辨識需要聽懂你在說什麼,然後預測你接下來要說什麼,所以比起非結構化的對話,結構化語音還是簡單很多。
語音辨識系統的另一個有趣的限制(機器學習系統更是如此),是它比人想的更適合用來解決特定問題。例如,了解人和電腦說話,以及了解人和另一個人說話,這兩者之間是有細微差異的。如果你用人們在 Google 搜尋引擎上說的話當做資料來訓練一台機器,它的表現相對來說會比學習人們在臉書和真人說話的遜色。以 Jarvis 來說,訓練一個你會靠近它才說話的人工智慧,也和訓練一個你會離它一個房間那麼遠的系統說話(像 Echo 那樣)不一樣的。這些系統能做的事比它們看起來的更有限,這表示要做出一般化的系統,這個距離其實比我們想的還要遠。
就心理層面來說,一旦你能和一個系統說話,那麼比起用文字或圖形介面和電腦互動,你就會想對這個系統投入更多的情緒。我有個有趣的觀察是,一旦我幫 Jarvis 內建聲音後,我就想幫它內建更多幽默感。它這部份的能力現在已經可以和 Max 互動,我想讓這些互動變得對女兒來說更有趣,但它的這部份的能力也讓我們覺得它和我們在一起。我教過它一些有趣的小遊戲,像是 Priscilla 或我會問它要搔誰的癢,它會隨機告訴所有人去搔我們其中一個人癢,Max 或 Beast。我還加了一些經典台詞,像是「抱歉 Priscilla,我恐怕不能那樣做。」
聲音的部份還有很多可以挖掘。人工智慧科技已經好到可以讓這些成為偉大的產品的基礎,而且接下來幾年還會好更多。同時,我覺得在這些類似的產品裡,最好的產品可以讓你帶著走,可以進行私人溝通。
臉書工程環境
身為臉書的執行長,我沒什麼時間在我們內部環境寫程式。我一直都在寫程式,但最近我大部分時間是在寫像 Jarvis 這種我個人的案子。我我今年學到很多先進的人工智慧,但我沒想到我會學到在臉書當工程師是什麼感覺。這讓我印象深刻。
我在臉書寫程式的過程,也許很接近大多數新進工程師的經驗。我一直都很驚艷我們把程式組織得有多好,無論是和臉部辨識或語音辨識相關的東西,你都可以在 Messenger 機器人架構 [messenger.com/platform] 或 iOS 開發輕易找到你要找的。開源的 Nuclide 包 [github.com/facebook/nuclide] 是我們和 GitHub 的 Atom 一起合作,讓開發更簡單。我們做了 Buck [buckbuild.com] 系統,讓大型的案子做得更快,這也省了我很多時間。我們的開源資源 FastText [github.com/facebookresearch/fastTex⋯⋯] 人工智慧文字分類工具,也很值得看看。如果你對人工智慧開發有興趣,整個臉書研發 [github.com/facebookresearch] GitHub 也很值得瞧瞧。
我們其中一個價值就是「行動快速」。這個意思是你在這裡開發 APP 的速度,應該比你在其他地方開發更快,包括靠自己從頭開始。你應該來這裡利用我們的資源和人工智慧工具,打造出如果都靠自己做會花很多時間的東西。打造內部工具讓工程師做事更有效率,對任何一家科技公司來說都很重要,但我們特別重視這件事。所以我想讓大家看看我們的東西和團隊工具,它讓開發很順暢。
接下來幾步
打造 Jarvis 的挑戰雖然已來到尾聲,但我一定會繼續優化它,畢竟我每天都在用它,而且一直想到加新東西進去。
在不久的未來,有幾步是我很清楚要做的,那就是做 Android APP、在我家更多房間裡做 Jarvis 聲音終端機,並連接更多電器。我很喜歡讓 Jarvis 控制我的大綠蛋幫我煮飯,但這比開發 T-恤大砲需要更多努力。
在長遠的未來,我想多教 Jarvis 自己學習新技巧的能力,而不是都要我教它執行特定任務。如果我再花一年進行這個挑戰,我會更花時間研究學習是怎麼進行的。
經過一段時間後,找到方法讓全世界都能用它應該會很有趣。我打算把我的程式碼開源,但這些程式目前和我自家的裝置和網路設定綁定得太緊密。如果我可以做出更抽象一層的家庭自動化功能,我也許就會釋出。或是,當然這樣的話就會是新產品的絕佳基礎。
結論
建造 Jarvis 是一個有趣的智性挑戰,讓我直接體驗到在將來對我們很重要的領域裡打造人工智慧工具的感受。
我之前預測過在五年到十年之間,我們就會做出比人類各別感官(視覺、聽覺、觸覺以及語言等)更精準的系統。這些最先進工具的威力讓人驚訝,今年的挑戰讓我對我的預測更有信心。
但同時,與此相較,我們對於學習是怎麼進行的了解則差多了。我今年做的一切,包括自然語言、臉部辨識、語音辨識等等,都是根據相同的基礎模式辨認技術而來的不同變體。我們知道要給電腦看某個東西的很多例子,這樣它就能學會精準辨認出那個東西,但我們仍然不知道該怎麼把某個領域的某個想法用在完全不同領域上。
為了了解這部份,今年我花了一百個小時製作 Jarvis,如今我有一個相當不錯的系統,它了解我,可以做很多事。但即使我再花一千個小時,我大概也不能做出一個能完全自己學習新技術的系統,除非我在這個過程中人工智慧出現根本性突破。
就某個角度來說,人工智慧比我們想的近,也比我們想的遠。人工智慧可以做到比大多數人想像的更強大的事,例如開車、治療疾病、發現星球、了解媒體等。這每一項都會對世界造成重大影響,但我們仍在釐清真正的智慧到底是什麼。
總之,這是個大挑戰。這些挑戰教我的東西比我一開始想像的多。今年我學了人工智慧,還學了家庭自動化以及臉書內部技術。這些挑戰真的很有趣。謝謝一路參與挑戰的人,我打算幾週後分享明年的挑戰。


你必須登入才能發表留言。