看可口可樂公司是怎麼玩轉TensorFlow的?

谷歌開發者_發表於2017-10-11

在這篇客座文章中,可口可樂公司的 Patrick Brandt 將向我們介紹他們如何使用 AI 和 TensorFlow 實現無縫式購買憑證。

可口可樂的核心忠誠度計劃於 2006 年以 MyCokeRewards.com 形式啟動。“MCR.com”平臺包含為每一瓶以 20 盎司規格銷售的可口可樂、雪碧、芬達和動樂產品,以及可以在雜貨店和其他零售商店購買的紙箱包裝產品建立唯一的產品編碼。使用者可以在 MyCokeRewards.com 上輸入這些產品編碼來參加推廣活動。


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


幾年後的 2016 年:可口可樂的忠誠度計劃仍然大受歡迎,使用者已經輸入了數以百萬計的產品編碼來參加促銷和抽獎。不過,移動瀏覽在 2006 年還不存在,而到了 2016 年底已佔據超過 50% 的份額。為了響應這些瀏覽行為變化,Coke.com 作為一項移動優先網路體驗啟動,替代了原來的 MCR.com。將 14 字元編碼手動輸入到移動裝置中著實是一種非常糟糕的使用者體驗,會影響我們的計劃取得成功。我們希望為移動受眾提供儘可能最好的體驗,人工智慧的最新進展帶來了全新的機遇。



實現無縫式購買憑證的任務

多年來,可口可樂一直嘗試使用現成的光學字元識別 (OCR) 庫和服務讀取產品編碼,但收效甚微。我們的印刷工藝一般使用低解析度點陣字型,瓶蓋或紙箱媒介在列印頭下面以非常快的速度運轉。這就產生了低保真字串,讓現成的 OCR 軟體無法讀取這些字元(有時人眼也很難閱讀)。OCR 對簡化移動使用者的編碼輸入過程至關重要:使用者應當能夠為編碼拍照,然後自動進行購買註冊來參加促銷。我們需要一個用途特定的 OCR 系統來識別我們的產品編碼。


0?wx_fmt=png

▲ 瓶蓋和紙箱示例


我們的研究將我們引向了一種前景無限的解決方案:卷積神經網路。卷積神經網路是一系列“深度學習”神經網路中的一種,這些神經網路是現代人工智慧產品的核心。Google 已使用卷積神經網路從街景影象中提取出街道地址門牌號。卷積神經網路在識別手寫數字方面的表現也相當不錯。這些數字識別用例完美代表了我們一直嘗試解決的問題型別:從包含小字符集並且小字符集中所含字元的外觀千差萬別的影象中提取字串。



通過 TensorFlow 實現的卷積神經網路

過去,由於可用的訓練和推理庫極其複雜,開發像卷積神經網路一樣的深度神經網路一直都是一項巨大的挑戰。TensorFlow(Google 於 2015 年開放原始碼的一種機器學習框架)旨在簡化深度神經網路的開發。

0?wx_fmt=jpeg

TensorFlow 為不同種類的神經元層和熱門損失函式提供了高階介面,簡化了實現不同卷積神經網路模型架構的工作。快速迭代不同模型架構的能力大大縮短了我們公司構建自定義 OCR 解決方案所需的時間,因為我們可以在短短几天的時間內開發、訓練和測試不同的模型。TensorFlow 模型也非常便攜:框架以原生方式支援在移動裝置上(“邊緣上的 AI”)或在遠端託管於雲端的伺服器中執行模型。這就為許多不同平臺(包括網路和移動裝置)之間的模型執行帶來了一種“一勞永逸”的方式。



機器學習:熟能生巧

任何神經網路的智慧都不會超過用於訓練它的資料。我們知道自己需要大量帶標籤的產品編碼影象來訓練一個卷積神經網路,從而幫助我們實現效能目標。我們的訓練集分三個階段構建:

  1. 啟動前模擬影象

  2. 啟動前真實影象

  3. 我們的使用者在生產中標記的影象


啟動前訓練階段的第一項工作是以程式設計方式生成數以百萬計的模擬產品編碼影象。這些模擬影象包括傾斜、光照、陰影和模糊強度變化。在模型僅使用模擬影象進行訓練時,它對真實影象的預測準確率(即,可信度最高的 10 個預測中準確預測全部 14 個字元的頻率)為 50%。這為遷移學習提供了一個基線:最初使用模擬影象訓練的模型是將要使用真實影象訓練的更準確模型的基礎。

挑戰現在就成了使用充足的真實影象豐富模擬影象以實現我們的效能目標。我們為 iOS 和 Android 裝置構建了一款用途特定的訓練應用,“訓練人員”可以使用這款應用為編碼拍照並新增標籤;這些帶標籤的影象隨後遷移到雲端儲存中進行訓練。我們對瓶蓋和紙箱上的數千個產品編碼進行了生產測試,並將程式碼分配給多個供應商,他們使用這款應用建立初始的真實訓練集。

即使是一個經過增強和豐富的訓練集,也無法替代終端使用者在各種環境條件下建立的影象。我們知道掃描可能導致編碼預測不準確,因此我們需要提供一種能讓使用者迅速糾正這些預測的使用者體驗。兩個元件對提供這種體驗至關重要:產品編碼驗證服務,它從我們最初的忠誠度平臺於 2006 年啟動以來就一直在使用(用於驗證預測的編碼是否是真實編碼);預測演算法,用於執行迴歸來確定 14 個字元位置上每個字元的可信度。如果預測的編碼無效,置信度最高的預測和每個字元的可信度水平將返回到介面。低置信度字元將突出顯示,指導使用者更新需要注意的字元。


0?wx_fmt=png

▲ 錯誤糾正介面讓使用者可以糾正無效預測並生成有用的訓練資料


這個介面創新實現了一個主動學習過程:反饋迴圈讓模型可以將糾正的預測返回訓練管道,逐步改進。我們的使用者可以通過這種方式隨著時間有組織地提高字元識別模型的準確率。


0?wx_fmt=png

▲ 產品編碼識別管道



針對實現最大效能進行優化

為了滿足使用者對效能的期望,我們為產品編碼 OCR 管道建立了一些嚴格的要求:

  • 快速:我們在產品編碼影象傳送到 OCR 管道後需要平均一秒的處理時間

  • 準確:我們啟動時的目標是實現 95% 的字串識別準確率,並保證模型可以通過主動學習隨著時間不斷改進

  • 小型:OCR 管道需要足夠小,以便直接分發到移動應用上,並在模型隨著時間不斷改進時能夠適應無線更新

  • OCR 管道需要處理不同的產品編碼介質:數十種不同的字型型別、瓶蓋與紙箱包裝介質組合



0?wx_fmt=png



最初,我們探索了一種為所有產品編碼介質使用一個卷積神經網路的架構。這種方式建立的模型過大,無法分發至移動應用,並且執行時間也比所需的時間長。我們在 Quantiphi, Inc. 的應用 AI 合作伙伴開始迭代不同的模型架構,並最終確定了一種使用多個卷積神經網路的架構。


這種新架構在不犧牲準確率的前提下顯著減小了模型大小,不過仍然無法滿足我們為移動應用提供無線更新支援的需要。我們隨後使用了 TensorFlow 的預構建量化模組,它可以通過減小相連神經元之間的權重保真度來減小模型大小。量化模組將模型大小減小了 4 係數,但是當 Quantiphi 使用一種名稱為 SqueezeNet 的新方式取得突破後,模型大小顯著減小。

SqueezeNet 模型由加州大學伯克利分校和史丹佛大學的一組研究人員於 2016 年 11 月釋出。它採用小型但高度複雜的設計,根據 Imagenet 等熱門基準的資料,它可以實現與大得多的模型相當的準確率水平。在重新設計我們的字元識別模型架構以使用 SqueezeNet 卷積神經網路後,Quantiphi 將特定介質型別的模型大小減小了 100 係數。由於 SqueezeNet 模型本質上就比較小,可以構建更豐富的功能檢測架構,憑藉比我們第一批並非使用 SqueezeNet 訓練的模型顯著減小的大小實現明顯提高的準確率。我們現在擁有一個可以在遠端裝置上輕鬆更新的高度準確模型;我們在主動學習之前的最終模型的識別成功率接近 96%,可以帶來 99.7% 的字元識別準確率(每 1000 個字元預測中僅有 3 個出錯)。


0?wx_fmt=png

▲ 具有不同型別遮擋、平移和照相機焦點問題的有效產品編碼識別示例



通過 AI 跨越邊界

人工智慧的發展和 TensorFlow 的成熟讓我們最終可以實現夢寐以求的購買憑證能力。自從 2017 年 2 月底啟動以來,我們的產品編碼識別平臺已經為十多個促銷活動提供幫助並生成了超過 18 萬個掃描程式碼;它現在已成為可口可樂北美地區所有網路促銷活動的核心元件。

遷移到由 AI 提供支撐的產品編碼識別平臺對我們非常有價值,兩個主要原因包括:

  • 及時實現無縫式購買憑證,與我們向移動優先營銷平臺的整體轉變保持一致。

  • 可口可樂避免了更新生產線中的印刷機以支援更高保真度字型(適合現有的現成 OCR 軟體)的要求,節省了數百萬美元的資金。


我們的產品編碼識別平臺是以 AI 為支撐的新能力在可口可樂公司內的首次大規模執行。我們目前正在多個業務領域探索 AI 應用,從產品開發到電子商務零售優化,不一而足。


檢視全文及文中連結,請點選文末“閱讀原文”。


推薦閱讀:

Google Brain團隊的研究方法是什麼?

深入淺出介紹TensorFlow資料集和估算器

讓中國開發者更容易地使用TensorFlow打造人工智慧應用

TensorFlow Research Cloud能為你帶來什麼好處?


0?wx_fmt=gif

相關文章