マルチタスク動画レコメンデーション ソリューション、Baidu のエンジニアが実践的な経験を共有

レコメンデーション システムのアプリケーション シナリオは、非常に人気のあるショート ビデオ レコメンデーション、e コマース プラットフォーム製品レコメンデーション、検索レコメンデーションなど、非常に広範です。しかし、あなたは何を知っていますか?短い動画アプリは、興味のある動画を表示する前に、通常、その動画に興味があるかどうかを予測するだけでなく、その動画をどれくらい長く見るか、好きかどうか、密かに保存するかどうかも予測します。次回のために読んでください。複数の次元で肯定的なフィードバックが得られた場合にのみ、短い動画アプリがこの動画を携帯電話にプッシュします。しかし、ここでまた問題が発生します. 予測すべき情報次元が非常に多い. 各指標をタスクと見なし、各タスクに学習するモデルがある場合、オンラインリソースは非常に高価になります. このとき、マルチタスクモデルが登場し、1 つのモデルをマルチタスク学習に使用できます。

この業界の実践例では、大規模なレコメンデーション アルゴリズム ライブラリである PaddleRec の使用方法を紹介し、例として短いビデオのレコメンデーション シナリオを使用して、マルチタスク テクノロジのレコメンデーション アプリケーション ソリューションを提供します。この技術は、製品のレコメンデーション、情報フローのレコメンデーション、検索などのシナリオにも適用でき、これまでに社内で 20 以上のプロジェクトの実装を完了しました。データの準備からモデルのトレーニング、最適化までのプロセス全体に再利用可能なソリューションを提供し、産業実装の敷居を下げます。

⭐プロジェクトリンクをGET⭐

PaddleRec/application/multitask_on_video at master · PaddlePaddle/PaddleRec · GitHub

すべてのソース コードとチュートリアルはオープン ソースです。どなたでもご利用いただけます。

デザイン

この例では、マルチタスク学習 (マルチタスク) を適用します。マルチタスク学習にはさまざまな定義がありますが、より直感的に理解できるのは、シングルタスク学習とは逆の機械学習手法であると考えています。シングルタスクとマルチタスクの違いを紹介するために、例として短いビデオの推奨事項を取り上げます。短いビデオのレコメンデーションでは、共通の複数のタスクには、完了率、いいねするかどうか、ブックマークするかどうかなどがあります。
シングルタスク学習: タスク間の関係を無視し、各タスクを個別に学習します。

マルチタスク学習: タスク間のつながりに注目. 共同学習により, タスク間の違いとタスク間のつながりの両方を考慮して, 複数のタスクを同時に学習し最適化する. これはマルチタスクの最も重要な側面です.学習. 思考の 1 つ.

レコメンデーション システムの設計は、総合的な精度とパフォーマンスを考慮すると、単純なものから複雑なものまでのプロセスであることが多く、最も一般的なパスは、線形モデル/LR、ツイン タワー モデル (ユーザー/アイテム)、DNN フル接続、複数ターゲットの共同学習/より複雑な機能学習 (wide&deep、deepfm など)。短いビデオのレコメンデーション タスクのモデルを選択するとき、歴史的なアップグレード ルートは、最も基本的なシェア ボトムからエキスパート ゲーティング アルゴリズム mmoe および ple に徐々にアップグレードし、段階的に最適化し、モデルに最適なものを見つけさせることです。の私たちの味の短いビデオ。

上記の 3 回の計算の後、同じ短いビデオ データセット (非常に重要で比較可能なもの) を使用して 3 つのモデルをトレーニングしました。また、短い動画のいいね率と完了率を予測します。得られた結果を次の表に示します。

最適化経験のまとめ

多くの推奨されるビジネス シナリオがあり、次の最適化のアイデアを提供します。

エキスパートの数やエキスパート モデルの実装など、ハイパーパラメータを決定する方法は?

実際のエキスパートモデルとゲートモデルは固定ではありません.最も一般的なものは多層FCネットワークで構成されるmlpです.具体的な実装についてはPaddleRec/MMoEを参照してください. 私たちの実践では、ゲートネットワークを1層FCから多層FCにアップグレードすると(ゲートネットワークのパラメーターが増加し、エキスパートネットワークのパラメーターが減少します)、効果が大幅に向上します。

CGCやple、mmoeと比べてどうですか?

実際には、シングル レイヤー CGC は一般的に同じパラメーター スケールで mmoe よりも優れています. 私たちの実際には、いくつかのシナリオでのみマルチレイヤー ple が CGC よりも優れているため、多くの場合、直接 CGC を使用して mmoe をアップグレードします.

新しいサブタスクを追加するときのホット スタート ソリューションは?

実際には、タスクを追加したり、モデルを変更したりする必要がある状況によく遭遇します。次の解決策が実際に試されています。

コールド スタート トレーニングを完了します。これは、高速収束と大規模なモデル変更を伴うシナリオ、特にまばらなパーツの変更に適しています。
まばらな部分(包埋)のみを加熱します。これが最も一般的な方法で、オンラインでトレーニングされたスパース テーブルを直接ウォームアップすると、収束が速くなり、安定性が向上します。
疎な部分と部分的な密なモデルのホット スタート。以前のエキスパート モデル パラメータからの再収束は、必ずしもエキスパート エキスパート モデルを完全にコールド スタートするよりも優れているとは限りません. ローカル収束トラップが存在する可能性があります. これには、特定のシナリオでの複数の実験的比較が必要です.

モデルの展開

次の 3 段階の展開プロセスを提供します。

ステップ 1: save_inference_model インターフェイスを使用してモデルを保存する

サーバー側で Python デプロイメントを使用するには、最初に save_inference_model インターフェイスを使用してモデルを保存する必要があります。

STEP 2: 動的および静的エクスポート モデル

動的グラフ トレーニングを使用し、保存されたモデルを静的グラフ推論に変換する場合は、提供されている to_static.py スクリプトを参照できます。

STEP 3: 推論ライブラリを使用して予測する

PaddleRec は tools/paddle_infer.py スクリプトを提供し、推論予測ライブラリを使用して効率的にモデルを予測できるようにします。

Paddle には、完全なプロジェクトの手順、開発ドキュメント、データ、およびコードも用意されています。すばやく学習するには、次のサンプル チュートリアルを参照できます。

チュートリアル リンクの例

セマンティックタグに基づくショートビデオレコメンデーション - Flying Paddle AI Studio

おすすめ

転載: blog.csdn.net/weixin_41888295/article/details/125376277