RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于推出適用于設(shè)備端推薦的自適應(yīng)框架

Tensorflowers ? 來源:TensorFlow ? 作者:TensorFlow ? 2021-06-15 17:55 ? 次閱讀

發(fā)布人:Ellie Zhou、Tian Lin、Shuangfeng Li 以及 Sushant Prakash

簡介和動機

我們非常高興地宣布推出一種自適應(yīng)框架,用于使用您自己的數(shù)據(jù)以及高級用戶建模架構(gòu)構(gòu)建設(shè)備端推薦 ML 解決方案。

在之前開源了設(shè)備端推薦解決方案后,我們發(fā)現(xiàn)社區(qū)中的許多人都對引入設(shè)備端推薦系統(tǒng) AI 頗有興趣。受反饋內(nèi)容的激勵與啟發(fā),我們考慮了各種不同的用例,并創(chuàng)建了一種框架,該框架可以生成適應(yīng)不同種類的數(shù)據(jù)、特征和架構(gòu)的 TensorFlow Lite 推薦模型,對之前的模型進行了完善。

此框架的優(yōu)勢

靈活:自適應(yīng)框架支持用戶以可配置方式創(chuàng)建模型。

優(yōu)化了模型表征: 為了完善之前的模型,我們的新推薦模型可以利用多種特征,而非單單一種特征。

個性化推薦在如今的數(shù)字化生活中越來越重要。隨著越來越多的用戶操作已轉(zhuǎn)移至邊緣設(shè)備,支持設(shè)備端推薦系統(tǒng)將變?yōu)橐粋€重要方向。與完全基于服務(wù)器的傳統(tǒng)推薦系統(tǒng)相比,設(shè)備端解決方案具有獨特的優(yōu)勢,如保護用戶隱私、快速地對設(shè)備端用戶操作作出反應(yīng)、利用輕量級 TensorFlow Lite 推理,以及繞過網(wǎng)絡(luò)依賴。我們歡迎您體驗此框架并在您的應(yīng)用中創(chuàng)建推薦體驗。

框架

https://tensorflow.google.cn/lite/examples/recommendation/overview

在本文中,我們將

介紹完善后的模型架構(gòu)和框架自適應(yīng)性。

帶您循序漸進地了解如何利用框架。

根據(jù)使用公開數(shù)據(jù)集完成的研究提供數(shù)據(jù)分析。

您可以在 TensorFlow 網(wǎng)站上找到更多詳細信息。

TensorFlow 網(wǎng)站

https://tensorflow.google.cn/lite/examples/recommendation/overview

模型

推薦模型通常根據(jù)用戶之前的活動預(yù)測用戶未來活動。我們的框架支持模型使用上下文信息展開預(yù)測,框架可以按照以下架構(gòu)進行描述:

在上下文方面,由編碼器聚合所有用戶活動的表征,以生成上下文嵌入。我們支持三種不同類型的編碼器:1) 詞袋(又名為 BOW),2) 1-D 卷積(又名為 CNN)和 3) LSTM。在標簽方面,同樣會將正樣本標簽項和詞匯表中的所有其他負樣本標簽項編碼為向量。將上下文和標簽嵌入與點積進行結(jié)合并提供給 softmax 交叉熵損失。

在框架內(nèi)部,將 ContextEncoder、LabelEncoder 和 DotProductSimilarity 的 tf.keras 層封裝為 RecommendationModel 中的重要組件。

為了為每個用戶活動建立模型,我們可以使用活動項目編號(稱為基于編號的模型)、項目的多個特征(稱為基于特征的模型)或二者的組合。基于特征的模型會使用多個特征,集中性地對用戶行為進行編碼。借助我們的框架,您可以可配置方式創(chuàng)建基于編號或基于特征的模型。

與上一版本類似,系統(tǒng)會在訓練后導(dǎo)出 TensorFlow Lite 模型,可以直接在推薦候選條目中提供前 K 個預(yù)測。

分步教程

為了展示這個全新的自適應(yīng)框架,我們使用多個特征對含有 MovieLens 數(shù)據(jù)集的設(shè)備端電影推薦模型進行了訓練,并將其整合到演示版應(yīng)用中(模型和應(yīng)用僅用于演示目的)。MovieLens 1M 數(shù)據(jù)集包含 6039 位用戶對 3951 部電影的評分,每個用戶僅對一小部分電影進行評分。

MovieLens

https://grouplens.org/datasets/movielens/

讓我們了解一下如何在此 Notebook 中分步使用框架。

Notebook

https://github.com/tensorflow/examples/blob/master/lite/examples/recommendation/ml/ondevice_recommendation.ipynb

(a) 環(huán)境準備

git clone https://github.com/tensorflow/examples

cd examples/lite/examples/recommendation/ml/

pip install -r requirements.txt

(b) 準備訓練數(shù)據(jù)

請參考 movielens 示例生成文件準備訓練數(shù)據(jù)。需要注意的是,預(yù)計 TensorFlow Lite 輸入特征為 FixedLenFeature,因此請?zhí)畛浠蚪厝√卣?,并在輸入配置中設(shè)置特征長度。您可以按照您的想法隨意使用以下命令來處理示例數(shù)據(jù)集。

FixedLenFeature

https://tensorflow.google.cn/api_docs/python/tf/io/FixedLenFeature

python -m data.example_generation_movielens

--data_dir=data/raw

--output_dir=data/examples

--min_timeline_length=3

--max_context_length=10

--max_context_movie_genre_length=32

--min_rating=2

--train_data_fraction=0.9

--build_vocabs=True

MovieLens 數(shù)據(jù)包含 ratings.dat(列: 用戶編號、 電影編號、 評分、 時間戳)和 movies.dat(列:電影編號、 標題、 類型)。在示例生成腳本中,我們同時采用了這兩個文件,僅將評分保持在 2 分以上、構(gòu)成用戶電影交互時間線,作為標簽的示例活動以及之前的用戶活動作為預(yù)測上下文。請查找生成的 tf.Example:

0 : {

features: {

feature: {

key : “context_movie_id”

value: { int64_list: { value: [ 1124, 2240, 3251, 。。。, 1268 ] } }

}

feature: {

key : “context_movie_rating”

value: { float_list: {value: [ 3.0, 3.0, 4.0, 。。。, 3.0 ] } }

}

feature: {

key : “context_movie_year”

value: { int64_list: { value: [ 1981, 1980, 1985, 。。。, 1990 ] } }

}

feature: {

key : “context_movie_id”

value: { int64_list: { value: [ 1124, 2240, 3251, 。。。, 1268 ] } }

}

feature: {

key : “context_movie_genre”

value: { bytes_list: { value: [ “Drama”, “Drama”, “Mystery”, 。。。, “UNK” ] } }

}

feature: {

key : “l(fā)abel_movie_id”

value: { int64_list: { value: [ 3252 ] } }

}

}

}

(c) 創(chuàng)建輸入配置

準備好數(shù)據(jù)后,請設(shè)置輸入配置,例如,這是 movielens 電影推薦模型的一個示例配置。

activity_feature_groups {

features {

feature_name: “context_movie_id”

feature_type: INT

vocab_size: 3953

embedding_dim: 8

feature_length: 10

}

features {

feature_name: “context_movie_rating”

feature_type: FLOAT

feature_length: 10

}

encoder_type: CNN

}

activity_feature_groups {

features {

feature_name: “context_movie_genre”

feature_type: STRING

vocab_name: “movie_genre_vocab.txt”

vocab_size: 19

embedding_dim: 4

feature_length: 32

}

encoder_type: CNN

}

label_feature {

feature_name: “l(fā)abel_movie_id”

feature_type: INT

vocab_size: 3953

embedding_dim: 8

feature_length: 1

}

(d) 訓練模型

模型訓練器將根據(jù)輸入配置構(gòu)建含有簡單界面的推薦模型。

python -m model.recommendation_model_launcher --

--training_data_filepattern “data/examples/train_movielens_1m.tfrecord”

--testing_data_filepattern “data/examples/test_movielens_1m.tfrecord”

--model_dir “model/model_dir”

--vocab_dir “data/examples”

--input_config_file “configs/sample_input_config.pbtxt”

--batch_size 32

--learning_rate 0.01

--steps_per_epoch 2

--num_epochs 2

--num_eval_steps 2

--run_mode “train_and_eval”

--gradient_clip_norm 1.0

--num_predictions 10

--hidden_layer_dims “32,32”

--eval_top_k “1,5”

--conv_num_filter_ratios “2,4”

--conv_kernel_size 4

--lstm_num_units 16

在推薦模型內(nèi)部,核心組件將被打包到 keras 層(context_encoder.py、label_encoder.py 和 dotproduct_similarity.py),其中每一層都可以被自身使用。下圖介紹了代碼結(jié)構(gòu):

context_encoder.py

https://github.com/tensorflow/examples/blob/master/lite/examples/recommendation/ml/model/context_encoder.py

label_encoder.py

https://github.com/tensorflow/examples/blob/master/lite/examples/recommendation/ml/model/label_encoder.py

dotproduct_similarity.py

https://github.com/tensorflow/examples/blob/master/lite/examples/recommendation/ml/model/dotproduct_similarity.py

通過此框架,您可以通過命令直接執(zhí)行模型訓練啟動器:

python -m model.recommendation_model_launcher

--input_config_file “configs/sample_input_config.pbtxt”

--vocab_dir “data/examples”

--run_mode “export”

--checkpoint_path “model/model_dir/ckpt-1000”

--num_predictions 10

--hidden_layer_dims “32,32”

--conv_num_filter_ratios “2,4”

--conv_kernel_size 4

--lstm_num_units 16

導(dǎo)出至 TensorFlow Lite 后,可以在 Notebook 中找到推理代碼,同時我們會推薦讀者查看該處的詳細信息。

Notebook

https://github.com/tensorflow/examples/blob/master/lite/examples/recommendation/ml/ondevice_recommendation.ipynb

框架自適應(yīng)性

我們的框架會提供 protobuf 接口,用戶可在此接口中對特征組、類型和其他信息進行配置,以相應(yīng)地構(gòu)建模型。在此接口中,您可以配置:

protobuf

https://github.com/tensorflow/examples/blob/master/lite/examples/recommendation/ml/configs/input-config.proto

特征

框架通常將特征分為 3 種類型:整型、字符串和浮點數(shù)。由于需要為整型和字符串特征創(chuàng)建嵌入空間,因此需要指定嵌入維度、詞匯表名稱和大小。浮點數(shù)特征值可直接使用。此外,對于設(shè)備端模型,我們建議使用可直接進行配置的固定長度特征。

message Feature {

optional string feature_name = 1;

// Supported feature types: STRING, INT, FLOAT.

optional FeatureType feature_type = 2;

optional string vocab_name = 3;

optional int64 vocab_size = 4;

optional int64 embedding_dim = 5;

optional int64 feature_length = 6;

}

特征組

一個用戶活動的一個特征可能具有多個值。例如,一部電影可以屬于多個類別,每部電影將具有多個類型的特征值。為了處理不同特征形狀,我們引入了“特征組”,用于將特征合并為組。可以將長度相同的特征放置到同一特征組中,以一起進行編碼。在輸入配置中,您可以設(shè)置全局特征組和活動特征組。

message FeatureGroup {

repeated Feature features = 1;

// Supported encoder types: BOW, CNN, LSTM.

optional EncoderType encoder_type = 2;

}

輸入配置

您可以使用輸入配置界面同時設(shè)置所有特征和特征組。

message InputConfig {

repeated FeatureGroup global_feature_groups = 1;

repeated FeatureGroup activity_feature_groups = 2;

optional Feature label_feature = 3;

}

input_pipeline.py 和 recommendation_model.py 會使用輸入配置將訓練數(shù)據(jù)處理為 tf.data.Dataset,并相應(yīng)地構(gòu)建模型。在 ContexEncoder 內(nèi)部,我們將為所有特征組創(chuàng)建 FeatureGroupEncoders,并將其用于計算輸入特征中的特征組嵌入。通過頂部隱藏層饋送串聯(lián)特征組嵌入,以獲得最終上下文嵌入。值得注意的是,最終上下文嵌入和標簽嵌入維度應(yīng)該相同。

input_pipeline.py

https://github.com/tensorflow/examples/blob/master/lite/examples/recommendation/ml/model/input_pipeline.py

recommendation_model.py

https://github.com/tensorflow/examples/blob/master/lite/examples/recommendation/ml/model/recommendation_model.py

請在附錄部分查看使用不同輸入配置生成的不同模型圖。

附錄

https://github.com/tensorflow/examples/blob/master/lite/examples/recommendation/ml/ondevice_recommendation.ipynb

實驗與分析

我們會借此機會,針對基于編號和基于特征的模型,分析其在不同配置下的性能,并提供一些實證結(jié)果。

對于基于編號的模型,僅會將 movie_id 用作輸入特征。對于基于特征的模型,會使用 movie_id 和 movie_genre 特征。兩種類型的模型都嘗試使用了 3 種編碼器類型 (BOW/CNN/LSTM) 和 3 種上下文歷史長度 (10/50/100)。

由于 MovieLens 數(shù)據(jù)集是一個實驗數(shù)據(jù)集,其中大約含有 4000 部候選電影和 19 種電影類型,因此我們會在實驗中縮小嵌入維度,以模擬生成場景。對于上述實驗結(jié)果圖表,將編號嵌入維度設(shè)置為 8 并將電影類型嵌入維度設(shè)置為 4。如果以 context10_cnn 為例,基于特征的模型性能比基于編號的模型性能高出 58.6%。此外,平均結(jié)果顯示基于特征的模型性能要高出 48.35%。因此,在這種情況中,基于特征的模型性能要優(yōu)于基于編號的模型,因為 movie_genre 特征向模型引入了其他信息。

MovieLens

https://grouplens.org/datasets/movielens/

此外,候選項目的大部分基礎(chǔ)特征的詞匯表都相對較小,因此嵌入空間也相對較小。例如,電影類型詞匯表要比電影編號詞匯表小很多。在這種情況中,使用基礎(chǔ)特征會減小模型的內(nèi)存大小,從而令其更適合設(shè)備端。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19104

    瀏覽量

    304796
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7553

    瀏覽量

    88729
  • ML
    ML
    +關(guān)注

    關(guān)注

    0

    文章

    149

    瀏覽量

    34642

原文標題:推出適用于設(shè)備端推薦的自適應(yīng)框架

文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    NVIDIA推出適用于網(wǎng)絡(luò)安全的NIM Blueprint

    德勤使用適用于容器安全的 NVIDIA NIM Agent Blueprint 幫助企業(yè)利用開源軟件構(gòu)建安全的 AI。
    的頭像 發(fā)表于 11-20 09:58 ?215次閱讀

    PGA2500能否適用于輸入呢?

    PGA2500為差分輸入差分輸出,因此想請教的第一個問題是PGA2500能否適用于輸入呢(將Vin-接地)? 此外,查閱了一些資料,發(fā)現(xiàn)幻象供電多用于電容型麥克風,因此第二個問題是針對所用
    發(fā)表于 11-04 07:31

    步進電機如何自適應(yīng)控制?步進電機如何細分驅(qū)動控制?

    步進電機是一種將電脈沖信號轉(zhuǎn)換為角位移或線位移的電機,廣泛應(yīng)用于各種自動化控制系統(tǒng)中。為了提高步進電機的性能,自適應(yīng)控制和細分驅(qū)動控制是兩種重要的技術(shù)手段。 一、步進電機的自適應(yīng)控制 自適應(yīng)
    的頭像 發(fā)表于 10-23 10:04 ?464次閱讀

    適用于工業(yè)應(yīng)用的使用MDIO的以太網(wǎng)PHY配置

    電子發(fā)燒友網(wǎng)站提供《適用于工業(yè)應(yīng)用的使用MDIO的以太網(wǎng)PHY配置.pdf》資料免費下載
    發(fā)表于 09-21 10:24 ?0次下載
    <b class='flag-5'>適用于</b>工業(yè)應(yīng)用的使用MDIO的以太網(wǎng)PHY配置

    軌到軌運算放大器AiP8612適用于低功耗便攜式設(shè)備

    軌到軌運算放大器AiP8612適用于低功耗便攜式設(shè)備
    的頭像 發(fā)表于 09-04 09:44 ?353次閱讀
    軌到軌運算放大器AiP8612<b class='flag-5'>適用于</b>低功耗便攜式<b class='flag-5'>設(shè)備</b>

    選擇適用于汽車應(yīng)用的基準電壓

    電子發(fā)燒友網(wǎng)站提供《選擇適用于汽車應(yīng)用的基準電壓.pdf》資料免費下載
    發(fā)表于 09-02 11:26 ?0次下載
    選擇<b class='flag-5'>適用于</b>汽車應(yīng)用的基準電壓

    如何在自己的固件中增加wifi自適應(yīng)性相關(guān)功能,以通過wifi自適應(yīng)認證測試?

    目前官方提供了自適應(yīng)測試固件 ESP_Adaptivity_v2.0_26M_20160322.bin 用于進行 wifi 自適應(yīng)認證測試. 請問如何在自己的固件中增加 wifi 自適應(yīng)
    發(fā)表于 07-12 08:29

    適用于測量設(shè)備的36V雙通道高精度運算放大器SC7506

    適用于測量設(shè)備的36V雙通道高精度運算放大器SC7506
    的頭像 發(fā)表于 06-17 10:00 ?415次閱讀
    <b class='flag-5'>適用于</b>測量<b class='flag-5'>設(shè)備</b>的36V雙通道高精度運算放大器SC7506

    鴻蒙OS開發(fā):【一次開發(fā),多端部署】(自適應(yīng)布局)

    針對常見的開發(fā)場景,方舟開發(fā)框架提煉了七種自適應(yīng)布局能力,這些布局可以獨立使用,也可多種布局疊加使用。
    的頭像 發(fā)表于 05-25 16:36 ?1691次閱讀
    鴻蒙OS開發(fā):【一次開發(fā),多端部署】(<b class='flag-5'>自適應(yīng)</b>布局)

    AC/DC電源模塊:適用于各種功率需求的電子設(shè)備

    BOSHIDA ?AC/DC電源模塊:適用于各種功率需求的電子設(shè)備 AC/DC電源模塊是一種廣泛應(yīng)用于不同電子設(shè)備中的電源轉(zhuǎn)換模塊。它具有輸出穩(wěn)定、高效率、可靠性強等特點,
    的頭像 發(fā)表于 05-24 11:20 ?650次閱讀
    AC/DC電源模塊:<b class='flag-5'>適用于</b>各種功率需求的電子<b class='flag-5'>設(shè)備</b>

    鴻蒙OS開發(fā):【一次開發(fā),多端部署】應(yīng)用(自適應(yīng)布局)

    針對常見的開發(fā)場景,方舟開發(fā)框架提煉了七種自適應(yīng)布局能力,這些布局可以獨立使用,也可多種布局疊加使用。
    的頭像 發(fā)表于 05-24 10:34 ?1018次閱讀
    鴻蒙OS開發(fā):【一次開發(fā),多端部署】應(yīng)用(<b class='flag-5'>自適應(yīng)</b>布局)

    PMP22165.1-適用于 Xilinx 通用自適應(yīng)計算加速平臺 (ACAP) 的電源 PCB layout 設(shè)計

    電子發(fā)燒友網(wǎng)站提供《PMP22165.1-適用于 Xilinx 通用自適應(yīng)計算加速平臺 (ACAP) 的電源 PCB layout 設(shè)計.pdf》資料免費下載
    發(fā)表于 05-19 10:45 ?0次下載
    PMP22165.1-<b class='flag-5'>適用于</b> Xilinx 通用<b class='flag-5'>自適應(yīng)</b>計算加速平臺 (ACAP) 的電源 PCB layout 設(shè)計

    微軟正式發(fā)布適用于Windows的Sudo

    微軟已在 Windows 11 Insider Preview Build 26052 中發(fā)布適用于 Windows 的 Sudo,并將其在 MIT 協(xié)議下進行開源。
    的頭像 發(fā)表于 03-19 09:20 ?839次閱讀
    微軟正式發(fā)布<b class='flag-5'>適用于</b>Windows的Sudo

    什么是自適應(yīng)光學?自適應(yīng)光學原理與方法的發(fā)展

    目前,世界上大型的望遠鏡系統(tǒng)都采用了自適應(yīng)光學技術(shù),自適應(yīng)光學的出現(xiàn)為補償動態(tài)波前擾動,提高光波質(zhì)量提供了新的研究方向。 60多年來,自適應(yīng)光學技術(shù)獲得蓬勃發(fā)展,現(xiàn)已應(yīng)用于天文學
    發(fā)表于 03-11 10:27 ?2034次閱讀

    AMD率先推出符合DisplayPort? 2.1 8K視頻標準的FPGA和自適應(yīng)SoC

    AMD UltraScale+ FPGA 和 AMD Versal 自適應(yīng) SoC 產(chǎn)品系列已率先成為業(yè)界符合 VESA DisplayPort 2.1 標準的 FPGA 和自適應(yīng) SoC。
    的頭像 發(fā)表于 01-24 09:18 ?462次閱讀
    RM新时代网站-首页