基於圖像的機器學習技術將數十億的電子商務產品分爲數千個類別

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在Criteo(中文名科稻,一家在納斯達克上市的全球性的效果營銷科技公司)的通用目錄(Universal Catalog)團隊,我們每天與數十億產品打交道,來創建全球最大的電子商務目錄之一:250多億種產品。這些產品,由我們的電子商務合作伙伴提供,具有不同的數據字段,我們使用這些數據字段來創建"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"補充(enrichments)"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":":新的產品字段標準化給定數據,並由Criteo全球團隊重複使用。一個重要的補充是按類別對產品進行分類。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"italic"},{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在本文,我將描述我如何解決通過使用電子商務產品的主圖像將其劃分爲數千個類別的難題。我選擇了一種在GPU上使用TensorFlow的深度學習算法,使用了一個包含數百萬圖像的標註過的數據集。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在Criteo,我們有數萬個電子商務合作伙伴,他們爲我們提供了總計250多億種產品的目錄。這些產品通過我們的在線廣告推薦給互聯網用戶,確保這些互聯網用戶與我們的電子商務合作伙伴的廣告活動相關。爲了保證推薦的質量,我們"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"需要標準化這組異構目錄"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。特別是,每個產品都應歸入其電子商務類別。而且無論原始目錄如何,"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"所有這些產品的這組電子商務類別都應該是相同的"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。然而,每個電子商務合作伙伴都爲我們提供了每種產品的類別,但不是用"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"通用的參考"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。在Criteo,我們使用了一種由谷歌提供的被電子商務生態系統廣泛使用的分類:"},{"type":"link","attrs":{"href":"https:\/\/support.google.com\/merchants\/answer\/6324436?hl=en","title":null,"type":null},"content":[{"type":"text","text":"谷歌產品分類法(Google Product Taxonomy)"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。它僅用於"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"零售產品"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",而不同類型的產品使用了其它技術。然後,我們用這個分類法將零售產品重新分類。所有可能的零售產品都分類到這個樹型結構中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/8d\/8dc23cdebb139557e4bfe1a06347e44a.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#757575","name":"user"}}],"text":"產品類別參考"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"上圖是上述谷歌產品分類法("},{"type":"link","attrs":{"href":"https:\/\/support.google.com\/merchants\/answer\/6324436?hl=en","title":null,"type":null},"content":[{"type":"text","text":"Google Product Taxonomy"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":")的一個示例。這是一個樹型結構,我們截斷到第4級或更上層的葉子類別。我們構建了一個"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"機器學習模型"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"來"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"預測"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"每個產品的"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"所有類別"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",直到它的"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"葉子類別"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。但是我們只使用預測的葉子類別,其它預測的父類別用於調試。預測到的葉子類別信息能夠檢索到"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"根類別"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"的路徑。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"重新計算出的葉子類別稱爲“"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"通用類別"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"”。如果一個目錄已經使用了這種分類法,我們仍然會重新對其進行計算。一旦重新計算,所有這些目錄就構成了一個獨特的大型電子商務目錄(超過250億種產品),稱爲“"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"通用目錄"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"”,在Criteo的整個生態系統中使用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/25\/259c8d1d675a1281e90db5656f6f18cc.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#757575","name":"user"}}],"text":"Criteo通用目錄"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"這種產品分類問題存在於Criteo環境中,但只要你希望合併不同來源的目錄(其目錄對於類別字段的值沒有一種通用的格式),這"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"在電子商務生態系統中是一個普遍存在的問題"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"目前,在生產環境中,爲了計算每種產品的通用類別,我們已經根據這些產品的文本特性構建了一個機器學習模型。但沒有利用到"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"產品圖像"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。我們能否僅使用這些產品圖像來預測“通用類別”,同時保持良好的性能?"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"對於這個機器學習問題,特徵(feature)是唯一的主圖像,標籤(label)是預測產品所屬的類別"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/0d\/0d66f4c7a89d9b29a5c36a6c0a46b305.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#757575","name":"user"}}],"text":"使用產品圖像來預測通用類別"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在本文中,我將描述我們是如何解決使用電子商務產品的主圖像來將它們分類的這一挑戰的。這是一個"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"有監督機器學習問題"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",目標是"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"K類"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",其中"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"K"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"是+3000,這是截斷的谷歌產品分類法中的葉子類別的數目。爲了構建這個"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"分類器"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",我選擇了使用"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"深度學習"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",這是一種非常有效的方法,如果你可以像這裏一樣構建大型訓練數據集。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在這種有監督深度學習情況下,我按照以下步驟來訓練和運行我選擇的深度學習模型:"}]},{"type":"numberedlist","attrs":{"start":null,"normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"創建用於訓練\/驗證和測試的大型標註過的數據集:(feature=產品圖像,label=產品類別),使用Spark分佈式計算將數百萬電子商務產品進行分類"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"根據基於圖像的深度學習技術的現狀選擇深度模型"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"創建一個通用的深度學習架構來解決這種機器學習分類問題。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":4,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"使用TensorFlow 1.15在訓練\/驗證數據集上訓練每個模型,然後在多個GPU上使用TensorFlow 2+進行訓練"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":5,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"使用準確性和Criteo業務價值來評估數據集上的每個模型,然後使用比較網格和多維混淆矩陣分析它們的得分"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"讓我們具體看看每一步吧!"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"使用分佈式計算創建一個數據集"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/ae\/aeacea6862ac8bc89921ddc199fe487b.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在Criteo,我們已經積累了"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"數百萬種標註有它們的目標類別的產品"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。這很棒,但是這些標註過的數據集"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"只有到圖像的鏈接,而沒有圖像本身"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"!這意味着在這裏提到的工作之前——合作伙伴的產品"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"沒有可用的圖像數據集"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"!"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"爲了檢查有多少圖像不可用或響應太慢,並使用已經可用的標註過的數據,我首先用2個多小時下載了10000個產品的小樣本。我發現有1%的圖像鏈接無效或者丟失,約12%的圖像無法下載(圖像不再存在,鏈接仍然存在但被重定向到首頁,等等)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/b9\/b9dd9491256d8dff87a3dca0f5c34228.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#757575","name":"user"}}],"text":"創建數據集的Spark jobs"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"用簡單的按次序的方案來下載10000種產品是沒問題的,但是當"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"擴展到3600多萬個帶註釋的產品"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"時,速度就太慢了(估計超過300個小時)。爲了解決這個問題,我使用了一種分佈式方案,通過"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"在數百個64核容器的集羣上運行代碼"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"來充分利用Spark的能力。儘管結果出現了一些問題(需要爲Spark會話創建一個自定義Python可執行程序,來訪問所有必要的包,併爲我們的容器添加條件,以防合作伙伴將其列入惡意下載請求和其它問題的黑名中),解決這些問題之後,針對3000倍以上的數據集,下載程序可以同時運行。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"下載完圖像後,我們對其進行處理(調整大小來降低內存佔用、標準化像素值或者其它特定域模型的更改),並對標籤應用一個熱編碼,然後將圖像和標註作爲TensorFlow TFRecordDatasets(TensorFlow數據集)存儲到HDFS上。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/27\/27c8eee967969b46147a0237a4b2fb55.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#757575","name":"user"}}],"text":"數據集拆分"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"一旦下載並存儲了所有東西,我們就可以使用70-15-15的比例來對數據進行拆分,分別是訓練(大約2500萬個產品)、驗證(大約500萬個產品)、測試(大約500個產品)。我們的數據集構建好之後,我們就可以深入到深度學習問題本身,選擇使用哪些模型。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"學習最先進的方法"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在Criteo,我們使用TensorFlow 1.15。儘管TensorFlow 1.15一開始非常方便,但這個版本很快就被證明是一個問題:與自定義的TFRecords(沒有批量訓練)的兼容性差、最新的模型不可用、文檔呆板..."}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/73\/733fd6a81d866767cfb2475cd1deb58d.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#757575","name":"user"}}],"text":"ImageNet上圖像分類的現狀"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在上圖(紅色圓圈)中,我們看到Inception V3[1] 和 Xception [2]雖然不錯,但性能優於TensorFlow 1.15中沒有的更多的最新模型。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"然後我推動將TensorFlow 1.15更改爲TensorFlow 2+來測試處於最前沿的最新模型。雖然這意味着需要遷移整個項目,但最終還是值得的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在這個項目中,我們首先使用:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"InceptionV3,因其在ILSVRC’15中的出色成績"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Xception,因其設計(基於大量類別進行分類)"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"當我們受到TensorFlow 1.15的約束時,這些模型特別有用(如前所述,它們是最先進的模型),但是當我們遷移到TensorFlow 2之後,我們又將EfficientNet [3]添加到我們的比較基礎上。這些模型當然不是所有可用的模型,而且這仍然是我們在這裏介紹的工作的一個優化點。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/19\/19044db9b8b9b49bcd2c88a0240e71b0.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#757575","name":"user"}}],"text":"EfficientNet vs State-of-the-Art"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"即使所選擇的模型提供了堅實的基礎,但在我們將它們用於數據集之前,我們需要調整它們來適配我們的問題。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"創建一個通用架構"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"爲了能夠快速改變我們想要實驗的神經網絡,設計一個通用的架構非常重要。我們創建了一個模板,將完成層添加到所選的深度學習模型中,以便預測谷歌分類法的所有4個級別。這些層次根據深度進行加權,因爲我們的客戶希望4級分類高於其它任何分類。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/4f\/4fedd1da45171227bf6ca97556c7b4bc.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#757575","name":"user"}}],"text":"通用訓練架構"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"訓練模型"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"一旦選擇了模型,我們將根據以下流程對其進行訓練:"}]},{"type":"numberedlist","attrs":{"start":null,"normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"連接到Criteo機器學習容器。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"訓練模型:"}]}]}]},{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"a) 獲取存儲在HDFS上的作爲TFRecords的訓練和驗證數據集。"}]},{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"b) 在MLFlow上記錄機器學習指標 (accuracy、 loss、 top_k_accuracy …)"}]},{"type":"numberedlist","attrs":{"start":1,"normalizeStart":3},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"將訓練過的模型保存到HDFS上。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/51\/51880e7109f46625a26330fbade1bfd0.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#757575","name":"user"}}],"text":"用於訓練的深度學習工作流"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在HDFS上提供這些模型後,我們可以在不同的數據集(測試組)上比較結果。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"分析結果"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在對每個模型基於訓練和驗證數據集進行了訓練之後,我們對這些模型進行評估。這些數據集對於我們想要比較的所有模型都是通用的。評估也在一個通用數據集上進行,我們稱之爲黃金數據集,它不同於訓練和驗證數據集:標註過的產品不會同時出現在訓練\/驗證數據集和測試數據集中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"模型訓練之後就是評估。圖像分類任務通常使用精度(Accuracy)作爲一個指標(獲得正確預測類別的百分比),在我們的案例中這不是最適合的指標(儘管它仍然很重要!)。作爲一家在線廣告公司,"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"正確預測鞋子或衣服(流行廣告項)而不是農用卡車輪胎,這是很重要的"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":":這與我們所謂的產品的商業價值有着內在聯繫。該商業價值是根據我們廣告產品的受歡迎程度計算的指標:購買的產品越多,其商業價值越高。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在運行我們的測試集時,通過使用一個分類的商業價值,我們不僅能夠計算每個模型的加權得分(通過考慮預測類別的商業價值來響應加權預測得分),而且能夠以易於理解的方式評估模型的性能,例如使用混淆矩陣。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/4f\/4f4770570efc2880971f27973668d0b3.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#757575","name":"user"}}],"text":"不同模型的性能比較"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在上表中,我們看到了指標之間的並不都是相關的。訓練時間通常是一個折中(更長的訓練時間通常與更好的精度相關,但也與更大的模型相關,並不總是值得期待),但在這裏並不總是有益的。通過"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"比較我們不同模型的加權得分"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",我們注意到EfficientNetB3雖然在ImageNet上比所有其它這裏展示的模型要好,但在我們的測試集上表現不佳:精度很高,但加權得分很低。"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"Xception,針對基於大數目的類別進行分類而設計 [2],效果最好,雖然和其他模型的區間相同"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/30\/3060cfe8f0b8aba26241006c44b02cce.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#757575","name":"user"}}],"text":"Xception針對50個最高的商業價值的混淆矩陣 (左上角是最重要)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在混淆矩陣中,我們垂直方向記錄預測到的類別,水平方向記錄真正的類別。當一個模型預測到正確的類別,它會被記錄在對角線中。在上圖中,我們看到了我們的模型預測爲“洗髮水 & 護髮素”而真實類別爲“皮膚護理”的產品爲15%(或預測“嬰幼兒上衣”而真實類別爲“嬰幼兒外套”的產品爲10%),這些產品在視覺上確實彼此相似。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"深度總結"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"在500多萬張圖像的測試集上,準確率超過90%"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",顯然接下來的步驟之一就是將該項目與生產中已經使用的NLP方法集成,來構建通用目錄。例如,可以使用多模式學習 [4] 或將這兩種方法結合使用,例如使用集成學習 [5]。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"爲了在生產中集成一個新模型,我們需要考慮另外一個非常重要的因素:保持較低的推理時間。我們在導言中提到了通用目錄每天如何與數十億產品交互。如果一個模型的預測步驟很慢,它可能會大大減慢整個通用目錄工作流的速度,該工作流每天預測數十億產品來提供其通用類別。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"由於模型的精度達到或高於被ImageNet引用的最先進的精度水平,預計獲取每個百分比的額外精度都會很困難。儘管使用最新的2021模型(NFNets [6] 或 EfficientNetv2 [7])絕對是一種選擇,但創建我們自己的模型也開始成爲一條有吸引力的路線!"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"感謝閱讀!"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"我要感謝"},{"type":"link","attrs":{"href":"https:\/\/medium.com\/u\/3781afe97e98?source=post_page-----6e029fc8d496--------------------------------","title":null,"type":null},"content":[{"type":"text","text":"Romain Beaumont"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",感謝他在機器學習方面的專長;感謝"},{"type":"link","attrs":{"href":"https:\/\/medium.com\/u\/51665e1a58ea?source=post_page-----6e029fc8d496--------------------------------","title":null,"type":null},"content":[{"type":"text","text":"Gilles Legoux"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",因爲他在分佈式計算上的幫助,以及他對整個項目中的監督。最後,我還要感謝通用目錄團隊的其他成員("},{"type":"link","attrs":{"href":"https:\/\/medium.com\/u\/fae1ef0688e3?source=post_page-----6e029fc8d496--------------------------------","title":null,"type":null},"content":[{"type":"text","text":"Alejandra Paredes"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"、 Nasreddine Fergani、 "},{"type":"link","attrs":{"href":"https:\/\/medium.com\/u\/bb0adc7f567b?source=post_page-----6e029fc8d496--------------------------------","title":null,"type":null},"content":[{"type":"text","text":"Hadrien Hamel"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" 和"},{"type":"link","attrs":{"href":"https:\/\/medium.com\/u\/2b272bde92a8?source=post_page-----6e029fc8d496--------------------------------","title":null,"type":null},"content":[{"type":"text","text":"Agnes Masson-Sibut"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"),因爲他們讓我體驗到了良好的工作環境。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"參考書目"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"[1] “Rethinking the Inception Architecture for Computer Vision”, "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Szegedy%2C+C","title":null,"type":null},"content":[{"type":"text","text":"Christian Szegedy"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":", "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Vanhoucke%2C+V","title":null,"type":null},"content":[{"type":"text","text":"Vincent Vanhoucke"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":", "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Ioffe%2C+S","title":null,"type":null},"content":[{"type":"text","text":"Sergey Ioffe"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":", "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Shlens%2C+J","title":null,"type":null},"content":[{"type":"text","text":"Jonathon Shlens"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":", "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Wojna%2C+Z","title":null,"type":null},"content":[{"type":"text","text":"Zbigniew Wojna"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"[2] “Xception: Deep Learning with Depthwise Separable Convolutions”, "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Chollet%2C+F","title":null,"type":null},"content":[{"type":"text","text":"François Chollet"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"[3] “EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks”, "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Tan%2C+M","title":null,"type":null},"content":[{"type":"text","text":"Mingxing Tan"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":", "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Le%2C+Q+V","title":null,"type":null},"content":[{"type":"text","text":"Quoc V. Le"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"[4] “Multimodal Machine Learning: A Survey and Taxonomy”, "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Baltru%C5%A1aitis%2C+T","title":null,"type":null},"content":[{"type":"text","text":"Tadas Baltrušaitis"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":", "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Ahuja%2C+C","title":null,"type":null},"content":[{"type":"text","text":"Chaitanya Ahuja"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":", "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Morency%2C+L","title":null,"type":null},"content":[{"type":"text","text":"Louis-Philippe Morency"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"[5] “Ensemble learning: A survey”, "},{"type":"link","attrs":{"href":"https:\/\/wires.onlinelibrary.wiley.com\/action\/doSearch?ContribAuthorStored=Sagi%2C+Omer","title":null,"type":null},"content":[{"type":"text","text":"Omer Sagi"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":", "},{"type":"link","attrs":{"href":"https:\/\/wires.onlinelibrary.wiley.com\/action\/doSearch?ContribAuthorStored=Rokach%2C+Lior","title":null,"type":null},"content":[{"type":"text","text":"Lior Rokach"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"[6] “High-Performance Large-Scale Image Recognition Without Normalization”, "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Brock%2C+A","title":null,"type":null},"content":[{"type":"text","text":"Andrew Brock"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":", "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=De%2C+S","title":null,"type":null},"content":[{"type":"text","text":"Soham De"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":", "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Smith%2C+S+L","title":null,"type":null},"content":[{"type":"text","text":"Samuel L. Smith"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":", "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Simonyan%2C+K","title":null,"type":null},"content":[{"type":"text","text":"Karen Simonyan"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"[7] “EfficientNetV2: Smaller Models and Faster Training”, "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Tan%2C+M","title":null,"type":null},"content":[{"type":"text","text":"Mingxing Tan"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":", "},{"type":"link","attrs":{"href":"https:\/\/arxiv.org\/search\/cs?searchtype=author&query=Le%2C+Q+V","title":null,"type":null},"content":[{"type":"text","text":"Quoc V. Le"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"作者介紹"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/medium.com\/@celian.gossec?source=post_page-----6e029fc8d496--------------------------------","title":null,"type":null},"content":[{"type":"text","text":"Celian Gossec"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" 白天是機器學習工程師,晚上是交易員,我喜歡學習關於機器學習的方法及其在現實項目中的應用!"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"原文鏈接"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/medium.com\/criteo-engineering\/image-based-ml-techniques-to-classify-billions-of-e-commerce-products-into-thousands-of-categories-6e029fc8d496","title":null,"type":null},"content":[{"type":"text","text":"Image-Based ML Techniques To Classify Billions Of E-Commerce Products Into Thousands Of Categories"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章