<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          基于圖像的機(jī)器學(xué)習(xí)技術(shù)分類電子商務(wù)產(chǎn)品

          共 5874字,需瀏覽 12分鐘

           ·

          2021-10-17 00:54

          點(diǎn)擊下方卡片,關(guān)注“新機(jī)器視覺”公眾號(hào)

          視覺/圖像重磅干貨,第一時(shí)間送達(dá)

          來源 | AI前線
          作者 | Celian Gossec
          譯者 | 張健欣
          策劃 | 辛?xí)粤?/section>

          在 Criteo(中文名科稻,一家在納斯達(dá)克上市的全球性的效果營銷科技公司)的通用目錄(Universal Catalog)團(tuán)隊(duì),我們每天與數(shù)十億產(chǎn)品打交道,來創(chuàng)建全球最大的電子商務(wù)目錄之一:250 多億種產(chǎn)品。這些產(chǎn)品,由我們的電子商務(wù)合作伙伴提供,具有不同的數(shù)據(jù)字段,我們使用這些數(shù)據(jù)字段來創(chuàng)建補(bǔ)充(enrichments):新的產(chǎn)品字段標(biāo)準(zhǔn)化給定數(shù)據(jù),并由 Criteo 全球團(tuán)隊(duì)重復(fù)使用。一個(gè)重要的補(bǔ)充是按類別對(duì)產(chǎn)品進(jìn)行分類。

          在本文,我將描述我如何解決通過使用電子商務(wù)產(chǎn)品的主圖像將其劃分為數(shù)千個(gè)類別的難題。我選擇了一種在 GPU 上使用 TensorFlow 的深度學(xué)習(xí)算法,使用了一個(gè)包含數(shù)百萬圖像的標(biāo)注過的數(shù)據(jù)集。

          在 Criteo,我們有數(shù)萬個(gè)電子商務(wù)合作伙伴,他們?yōu)槲覀兲峁┝丝傆?jì) 250 多億種產(chǎn)品的目錄。這些產(chǎn)品通過我們的在線廣告推薦給互聯(lián)網(wǎng)用戶,確保這些互聯(lián)網(wǎng)用戶與我們的電子商務(wù)合作伙伴的廣告活動(dòng)相關(guān)。為了保證推薦的質(zhì)量,我們需要標(biāo)準(zhǔn)化這組異構(gòu)目錄。特別是,每個(gè)產(chǎn)品都應(yīng)歸入其電子商務(wù)類別。而且無論原始目錄如何,所有這些產(chǎn)品的這組電子商務(wù)類別都應(yīng)該是相同的。然而,每個(gè)電子商務(wù)合作伙伴都為我們提供了每種產(chǎn)品的類別,但不是用通用的參考。在 Criteo,我們使用了一種由谷歌提供的被電子商務(wù)生態(tài)系統(tǒng)廣泛使用的分類:谷歌產(chǎn)品分類法(Google Product Taxonomy)。它僅用于零售產(chǎn)品,而不同類型的產(chǎn)品使用了其它技術(shù)。然后,我們用這個(gè)分類法將零售產(chǎn)品重新分類。所有可能的零售產(chǎn)品都分類到這個(gè)樹型結(jié)構(gòu)中。

          產(chǎn)品類別參考

          上圖是上述谷歌產(chǎn)品分類法(Google Product Taxonomy)的一個(gè)示例。這是一個(gè)樹型結(jié)構(gòu),我們截?cái)嗟降?4 級(jí)或更上層的葉子類別。我們構(gòu)建了一個(gè)機(jī)器學(xué)習(xí)模型來預(yù)測(cè)每個(gè)產(chǎn)品的所有類別,直到它的葉子類別。但是我們只使用預(yù)測(cè)的葉子類別,其它預(yù)測(cè)的父類別用于調(diào)試。預(yù)測(cè)到的葉子類別信息能夠檢索到根類別的路徑。

          重新計(jì)算出的葉子類別稱為“通用類別”。如果一個(gè)目錄已經(jīng)使用了這種分類法,我們?nèi)匀粫?huì)重新對(duì)其進(jìn)行計(jì)算。一旦重新計(jì)算,所有這些目錄就構(gòu)成了一個(gè)獨(dú)特的大型電子商務(wù)目錄(超過 250 億種產(chǎn)品),稱為“通用目錄”,在 Criteo 的整個(gè)生態(tài)系統(tǒng)中使用。

          Criteo 通用目錄

          這種產(chǎn)品分類問題存在于 Criteo 環(huán)境中,但只要你希望合并不同來源的目錄(其目錄對(duì)于類別字段的值沒有一種通用的格式),這在電子商務(wù)生態(tài)系統(tǒng)中是一個(gè)普遍存在的問題。

          目前,在生產(chǎn)環(huán)境中,為了計(jì)算每種產(chǎn)品的通用類別,我們已經(jīng)根據(jù)這些產(chǎn)品的文本特性構(gòu)建了一個(gè)機(jī)器學(xué)習(xí)模型。但沒有利用到產(chǎn)品圖像。我們能否僅使用這些產(chǎn)品圖像來預(yù)測(cè)“通用類別”,同時(shí)保持良好的性能?對(duì)于這個(gè)機(jī)器學(xué)習(xí)問題,特征(feature)是唯一的主圖像,標(biāo)簽(label)是預(yù)測(cè)產(chǎn)品所屬的類別。


          使用產(chǎn)品圖像來預(yù)測(cè)通用類別

          在本文中,我將描述我們是如何解決使用電子商務(wù)產(chǎn)品的主圖像來將它們分類的這一挑戰(zhàn)的。這是一個(gè)有監(jiān)督機(jī)器學(xué)習(xí)問題,目標(biāo)是 K 類,其中 K 是 +3000,這是截?cái)嗟墓雀璁a(chǎn)品分類法中的葉子類別的數(shù)目。為了構(gòu)建這個(gè)分類器,我選擇了使用深度學(xué)習(xí),這是一種非常有效的方法,如果你可以像這里一樣構(gòu)建大型訓(xùn)練數(shù)據(jù)集。

          在這種有監(jiān)督深度學(xué)習(xí)情況下,我按照以下步驟來訓(xùn)練和運(yùn)行我選擇的深度學(xué)習(xí)模型:

          1. 創(chuàng)建用于訓(xùn)練 / 驗(yàn)證和測(cè)試的大型標(biāo)注過的數(shù)據(jù)集:(feature= 產(chǎn)品圖像,label= 產(chǎn)品類別),使用 Spark 分布式計(jì)算將數(shù)百萬電子商務(wù)產(chǎn)品進(jìn)行分類

          2. 根據(jù)基于圖像的深度學(xué)習(xí)技術(shù)的現(xiàn)狀選擇深度模型

          3. 創(chuàng)建一個(gè)通用的深度學(xué)習(xí)架構(gòu)來解決這種機(jī)器學(xué)習(xí)分類問題

          4. 使用 TensorFlow 1.15 在訓(xùn)練 / 驗(yàn)證數(shù)據(jù)集上訓(xùn)練每個(gè)模型,然后在多個(gè) GPU 上使用 TensorFlow 2+ 進(jìn)行訓(xùn)練

          5. 使用準(zhǔn)確性和 Criteo 業(yè)務(wù)價(jià)值來評(píng)估數(shù)據(jù)集上的每個(gè)模型,然后使用比較網(wǎng)格和多維混淆矩陣分析它們的得分

          讓我們具體看看每一步吧!

          1使用分布式計(jì)算創(chuàng)建一個(gè)數(shù)據(jù)集



          在 Criteo,我們已經(jīng)積累了數(shù)百萬種標(biāo)注有它們的目標(biāo)類別的產(chǎn)品。這很棒,但是這些標(biāo)注過的數(shù)據(jù)集只有到圖像的鏈接,而沒有圖像本身!這意味著在這里提到的工作之前——合作伙伴的產(chǎn)品沒有可用的圖像數(shù)據(jù)集!

          為了檢查有多少圖像不可用或響應(yīng)太慢,并使用已經(jīng)可用的標(biāo)注過的數(shù)據(jù),我首先用 2 個(gè)多小時(shí)下載了 10000 個(gè)產(chǎn)品的小樣本。我發(fā)現(xiàn)有 1% 的圖像鏈接無效或者丟失,約 12% 的圖像無法下載(圖像不再存在,鏈接仍然存在但被重定向到首頁,等等)。


          創(chuàng)建數(shù)據(jù)集的 Spark jobs

          用簡(jiǎn)單的按次序的方案來下載 10000 種產(chǎn)品是沒問題的,但是當(dāng)擴(kuò)展到 3600 多萬個(gè)帶注釋的產(chǎn)品時(shí),速度就太慢了(估計(jì)超過 300 個(gè)小時(shí))。為了解決這個(gè)問題,我使用了一種分布式方案,通過在數(shù)百個(gè) 64 核容器的集群上運(yùn)行代碼來充分利用 Spark 的能力。盡管結(jié)果出現(xiàn)了一些問題(需要為 Spark 會(huì)話創(chuàng)建一個(gè)自定義 Python 可執(zhí)行程序,來訪問所有必要的包,并為我們的容器添加條件,以防合作伙伴將其列入惡意下載請(qǐng)求和其它問題的黑名中),解決這些問題之后,針對(duì) 3000 倍以上的數(shù)據(jù)集,下載程序可以同時(shí)運(yùn)行。

          下載完圖像后,我們對(duì)其進(jìn)行處理(調(diào)整大小來降低內(nèi)存占用、標(biāo)準(zhǔn)化像素值或者其它特定域模型的更改),并對(duì)標(biāo)簽應(yīng)用一個(gè)熱編碼,然后將圖像和標(biāo)注作為 TensorFlow TFRecordDatasets(TensorFlow 數(shù)據(jù)集)存儲(chǔ)到 HDFS 上。

          數(shù)據(jù)集拆分

          一旦下載并存儲(chǔ)了所有東西,我們就可以使用 70-15-15 的比例來對(duì)數(shù)據(jù)進(jìn)行拆分,分別是訓(xùn)練(大約 2500 萬個(gè)產(chǎn)品)、驗(yàn)證(大約 500 萬個(gè)產(chǎn)品)、測(cè)試(大約 500 個(gè)產(chǎn)品)。我們的數(shù)據(jù)集構(gòu)建好之后,我們就可以深入到深度學(xué)習(xí)問題本身,選擇使用哪些模型。

          2學(xué)習(xí)最先進(jìn)的方法

          在 Criteo,我們使用 TensorFlow 1.15。盡管 TensorFlow 1.15 一開始非常方便,但這個(gè)版本很快就被證明是一個(gè)問題:與自定義的 TFRecords(沒有批量訓(xùn)練)的兼容性差、最新的模型不可用、文檔呆板...

          ImageNet 上圖像分類的現(xiàn)狀

          在上圖(紅色圓圈)中,我們看到 Inception V3[1] 和 Xception [2] 雖然不錯(cuò),但性能優(yōu)于 TensorFlow 1.15 中沒有的更多的最新模型。

          然后我推動(dòng)將 TensorFlow 1.15 更改為 TensorFlow 2+ 來測(cè)試處于最前沿的最新模型。雖然這意味著需要遷移整個(gè)項(xiàng)目,但最終還是值得的。

          在這個(gè)項(xiàng)目中,我們首先使用:

          • InceptionV3,因其在 ILSVRC’15 中的出色成績(jī)

          • Xception,因其設(shè)計(jì)(基于大量類別進(jìn)行分類)

          當(dāng)我們受到 TensorFlow 1.15 的約束時(shí),這些模型特別有用(如前所述,它們是最先進(jìn)的模型),但是當(dāng)我們遷移到 TensorFlow 2 之后,我們又將 EfficientNet [3] 添加到我們的比較基礎(chǔ)上。這些模型當(dāng)然不是所有可用的模型,而且這仍然是我們?cè)谶@里介紹的工作的一個(gè)優(yōu)化點(diǎn)。

          EfficientNet vs State-of-the-Art

          即使所選擇的模型提供了堅(jiān)實(shí)的基礎(chǔ),但在我們將它們用于數(shù)據(jù)集之前,我們需要調(diào)整它們來適配我們的問題。

          3創(chuàng)建一個(gè)通用架構(gòu)

          為了能夠快速改變我們想要實(shí)驗(yàn)的神經(jīng)網(wǎng)絡(luò),設(shè)計(jì)一個(gè)通用的架構(gòu)非常重要。我們創(chuàng)建了一個(gè)模板,將完成層添加到所選的深度學(xué)習(xí)模型中,以便預(yù)測(cè)谷歌分類法的所有 4 個(gè)級(jí)別。這些層次根據(jù)深度進(jìn)行加權(quán),因?yàn)槲覀兊目蛻粝M?4 級(jí)分類高于其它任何分類。

          通用訓(xùn)練架構(gòu)

          4訓(xùn)練模型

          一旦選擇了模型,我們將根據(jù)以下流程對(duì)其進(jìn)行訓(xùn)練:

          1. 連接到 Criteo 機(jī)器學(xué)習(xí)容器。

          2. 訓(xùn)練模型:

            a) 獲取存儲(chǔ)在 HDFS 上的作為 TFRecords 的訓(xùn)練和驗(yàn)證數(shù)據(jù)集。

            b) 在 MLFlow 上記錄機(jī)器學(xué)習(xí)指標(biāo) (accuracy、 loss、 top_k_accuracy …)

          3. 將訓(xùn)練過的模型保存到 HDFS 上。

          用于訓(xùn)練的深度學(xué)習(xí)工作流

          在 HDFS 上提供這些模型后,我們可以在不同的數(shù)據(jù)集(測(cè)試組)上比較結(jié)果。

          5分析結(jié)果

          在對(duì)每個(gè)模型基于訓(xùn)練和驗(yàn)證數(shù)據(jù)集進(jìn)行了訓(xùn)練之后,我們對(duì)這些模型進(jìn)行評(píng)估。這些數(shù)據(jù)集對(duì)于我們想要比較的所有模型都是通用的。評(píng)估也在一個(gè)通用數(shù)據(jù)集上進(jìn)行,我們稱之為黃金數(shù)據(jù)集,它不同于訓(xùn)練和驗(yàn)證數(shù)據(jù)集:標(biāo)注過的產(chǎn)品不會(huì)同時(shí)出現(xiàn)在訓(xùn)練 / 驗(yàn)證數(shù)據(jù)集和測(cè)試數(shù)據(jù)集中。

          模型訓(xùn)練之后就是評(píng)估。圖像分類任務(wù)通常使用精度(Accuracy)作為一個(gè)指標(biāo)(獲得正確預(yù)測(cè)類別的百分比),在我們的案例中這不是最適合的指標(biāo)(盡管它仍然很重要!)。作為一家在線廣告公司,正確預(yù)測(cè)鞋子或衣服(流行廣告項(xiàng))而不是農(nóng)用卡車輪胎,這是很重要的:這與我們所謂的產(chǎn)品的商業(yè)價(jià)值有著內(nèi)在聯(lián)系。該商業(yè)價(jià)值是根據(jù)我們廣告產(chǎn)品的受歡迎程度計(jì)算的指標(biāo):購買的產(chǎn)品越多,其商業(yè)價(jià)值越高。

          在運(yùn)行我們的測(cè)試集時(shí),通過使用一個(gè)分類的商業(yè)價(jià)值,我們不僅能夠計(jì)算每個(gè)模型的加權(quán)得分(通過考慮預(yù)測(cè)類別的商業(yè)價(jià)值來響應(yīng)加權(quán)預(yù)測(cè)得分),而且能夠以易于理解的方式評(píng)估模型的性能,例如使用混淆矩陣。

          不同模型的性能比較

          在上表中,我們看到了指標(biāo)之間的并不都是相關(guān)的。訓(xùn)練時(shí)間通常是一個(gè)折中(更長(zhǎng)的訓(xùn)練時(shí)間通常與更好的精度相關(guān),但也與更大的模型相關(guān),并不總是值得期待),但在這里并不總是有益的。通過比較我們不同模型的加權(quán)得分,我們注意到 EfficientNetB3 雖然在 ImageNet 上比所有其它這里展示的模型要好,但在我們的測(cè)試集上表現(xiàn)不佳:精度很高,但加權(quán)得分很低。Xception,針對(duì)基于大數(shù)目的類別進(jìn)行分類而設(shè)計(jì) [2],效果最好,雖然和其他模型的區(qū)間相同。


          Xception 針對(duì) 50 個(gè)最高的商業(yè)價(jià)值的混淆矩陣 (左上角是最重要)

          在混淆矩陣中,我們垂直方向記錄預(yù)測(cè)到的類別,水平方向記錄真正的類別。當(dāng)一個(gè)模型預(yù)測(cè)到正確的類別,它會(huì)被記錄在對(duì)角線中。在上圖中,我們看到了我們的模型預(yù)測(cè)為“洗發(fā)水 & 護(hù)發(fā)素”而真實(shí)類別為“皮膚護(hù)理”的產(chǎn)品為 15%(或預(yù)測(cè)“嬰幼兒上衣”而真實(shí)類別為“嬰幼兒外套”的產(chǎn)品為 10%),這些產(chǎn)品在視覺上確實(shí)彼此相似。

          6深度總結(jié)

          在 500 多萬張圖像的測(cè)試集上,準(zhǔn)確率超過 90%,顯然接下來的步驟之一就是將該項(xiàng)目與生產(chǎn)中已經(jīng)使用的 NLP 方法集成,來構(gòu)建通用目錄。例如,可以使用多模式學(xué)習(xí) [4] 或?qū)⑦@兩種方法結(jié)合使用,例如使用集成學(xué)習(xí) [5]。

          為了在生產(chǎn)中集成一個(gè)新模型,我們需要考慮另外一個(gè)非常重要的因素:保持較低的推理時(shí)間。我們?cè)趯?dǎo)言中提到了通用目錄每天如何與數(shù)十億產(chǎn)品交互。如果一個(gè)模型的預(yù)測(cè)步驟很慢,它可能會(huì)大大減慢整個(gè)通用目錄工作流的速度,該工作流每天預(yù)測(cè)數(shù)十億產(chǎn)品來提供其通用類別。

          由于模型的精度達(dá)到或高于被 ImageNet 引用的最先進(jìn)的精度水平,預(yù)計(jì)獲取每個(gè)百分比的額外精度都會(huì)很困難。盡管使用最新的 2021 模型(NFNets [6] 或 EfficientNetv2 [7])絕對(duì)是一種選擇,但創(chuàng)建我們自己的模型也開始成為一條有吸引力的路線!

          感謝閱讀!

          我要感謝 Romain Beaumont,感謝他在機(jī)器學(xué)習(xí)方面的專長(zhǎng);感謝 Gilles Legoux,因?yàn)樗诜植际接?jì)算上的幫助,以及他對(duì)整個(gè)項(xiàng)目中的監(jiān)督。最后,我還要感謝通用目錄團(tuán)隊(duì)的其他成員(Alejandra Paredes、 Nasreddine Fergani、 Hadrien Hamel 和 Agnes Masson-Sibut),因?yàn)樗麄冏屛殷w驗(yàn)到了良好的工作環(huán)境。

          參考書目:

          [1] “Rethinking the Inception Architecture for Computer Vision”, Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jonathon Shlens, Zbigniew Wojna[2] “Xception: Deep Learning with Depthwise Separable Convolutions”, Fran?ois Chollet[3] “EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks”, Mingxing Tan, Quoc V. Le[4] “Multimodal Machine Learning: A Survey and Taxonomy”, Tadas Baltru?aitis, Chaitanya Ahuja, Louis-Philippe Morency[5] “Ensemble learning: A survey”, Omer Sagi, Lior Rokach[6] “High-Performance Large-Scale Image Recognition Without Normalization”, Andrew Brock, Soham De, Samuel L. Smith, Karen Simonyan[7] “EfficientNetV2: Smaller Models and Faster Training”, Mingxing Tan, Quoc V. Le

          作者介紹:

          Celian Gossec,白天是機(jī)器學(xué)習(xí)工程師,晚上是交易員,我喜歡學(xué)習(xí)關(guān)于機(jī)器學(xué)習(xí)的方法及其在現(xiàn)實(shí)項(xiàng)目中的應(yīng)用!

          —版權(quán)聲明—

          僅用于學(xué)術(shù)分享,版權(quán)屬于原作者。

          若有侵權(quán),請(qǐng)聯(lián)系微信號(hào):yiyang-sy 刪除或修改!


          —THE END—
          瀏覽 59
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲综合伦| 久久艹伊人av | 麻酥酥在线观看 | 日韩级视频 | 天天拍天天操 |