はじめに
マイクロアドで機械学習エンジニアとして働いている守屋です。
21卒として新卒入社し、配属後はWebページのカテゴリ分類精度改善や、広告オークションの入札戦略改善に取り組んでいます。
この記事では、私が新卒開発研修終了後に取り組んでいた、
Webページのカテゴリ分類アルゴリズム刷新の背景、問題設定、使用した手法や主に工夫した点などについて紹介します。
Webページのカテゴリ分類刷新の背景
現在、マイクロアドではWeb閲覧者の閲覧傾向を基にしたターゲティング機能が存在し、 そこでWebページに対するカテゴリ付与結果が活用されています。
Cookieの廃止が進むにつれ、Webページのカテゴリ情報を使用したターゲティングの需要が高まり、Webページに対するタグ付けロジック改善の優先度が高くなりました。
そこで、新卒開発研修終了後のタスクとして取り組むことになりました。
Webページカテゴリ分類の問題設定
あるWebページのテキスト情報が与えられた際に、そのWebページに当てはまるカテゴリを全て判定する問題設定となっています。
この際の分類対象となるカテゴリが、「スポーツ」→「サッカー」のような上位下位関係の階層構造を持っています。
より具体的には、あるWebページが「サッカー」カテゴリに属している場合は、上位カテゴリの「スポーツ」カテゴリにも属していることになります。
以上のカテゴリ階層による性質から、1つのWebページに対して複数のカテゴリが付与されることのある、マルチラベル分類の問題として扱っています。
分類モデルの構成
Webページカテゴリ分類のモデルには、SWEM(Simple Word-Embedding Model) (Shen et al. 2018)を採用しました。
SWEMを採用した理由としては、下記の通りです。
- 計算量がそれほど重くなく、SVMよりは分類精度が良い
- loss の重みづけによって、ラベル不均衡問題に対処しやすい(後述)
- 重みパラメータの工夫によるカテゴリ構造の考慮が導入できる(後述)
SWEM(Simple Word-Embedding Model)
SWEM は、入力文書に含まれる単語ベクトルの平均+浅い全結合ニューラルネット(Shallow MLP)によって文書のカテゴリ分類を行う手法です。
単語ベクトルには、日本語 Wikipedia エンティティベクトル を使用しています。
入力となる文書の前処理
単語の分かち書きには、MeCab + NEologd を使用し、SWEM へ入力する単語は、名詞のみに品詞を絞っています。
語彙に関しては、単語が文書に出現する回数(Document Frequency)が一定以上の単語のみを採用しています。
前処理の例として、「マイクロアドでは、裁量を持って挑戦したい機械学習エンジニアを募集しています」という文書に対する前処理の過程を示します。
分かち書き
マイクロアド で は 、 裁量 を 持っ て 挑戦 し たい 機械学習 エンジニア を 募集 し て い ます
名詞のみに絞り込み
マイクロアド 裁量 挑戦 機械学習 エンジニア 募集
頻度によるフィルタリング
裁量 挑戦 機械学習 エンジニア 募集
ラベル不均衡に対する対処
カテゴリが階層構造を持つ場合、上位の階層のカテゴリの方が絶対数が多くなります。
このことから、階層的なカテゴリにおいてマルチラベル分類を解くと、親カテゴリと子カテゴリのラベル不均衡問題が発生します。
このラベル不均衡問題に対して、分類モデルの学習時に sigmoid cross entropy loss を用いる際、
各カテゴリの loss に、Webページ数の逆数に比例した重みづけを行うことによって対処しました。
この問題への他の対処としては、 カテゴリ階層において末端の葉ノードにあたるカテゴリのみを予測対象とし、 予測結果を使用する際に必要な粒度の親カテゴリに戻すことも考えられます。
カテゴリ構造を考慮した分類層の重み作成
文書分類を行う際にカテゴリ階層を考慮する手法として、
HiAGM(Hierarchy-Aware Global Model for Hierarchical Text Classification) (Zhou et al. 2020) が提案されています。
HiAGMの中では、Hierarchy-GCN(Graph Convolutional Network) が使用されています。
Hierarchy-GCN は、カテゴリ階層の関係を重み付きエッジのグラフとして捉え、
各カテゴリに対応するベクトルが、カテゴリ構造として近い時には似たベクトルが得られるように設計されています。
Hierarchy-GCN によって求められた各カテゴリに対応するベクトルを、分類層の重みベクトルとして扱うことで、 カテゴリ階層上で近いカテゴリの類似性がより強く考慮される効果を期待し、SWEM の分類層の重みパラメータとして使用しました。
まとめ
この記事では、私が配属後に取り組んでいたWebページのカテゴリ分類アルゴリズムの刷新について紹介しました。 マイクロアドではWebページのカテゴリに階層性が存在するマルチラベル問題として扱っており、 それによって生じるラベル不均衡に対する対処や、カテゴリ階層性を考慮するための工夫について説明しました。
機械学習エンジニア絶賛採用中
マイクロアドでは、問題設定からサーベイ、開発・運用まで裁量を持って挑戦したい機械学習エンジニアを募集しています!
また、機械学習エンジニアだけでなく、サーバサイド、フロントエンド、インフラエンジニアなどの職種も募集しています!
気になった方は、以下の採用サイトからご応募ください!