Slide 1

Slide 1 text

サマリー • 参加コンペ: – Nishika - ヘイトスピーチ検出 • 参加者: – 618人 • 順位: – 79位(銅) • 概要: – 5chのデータからヘイトスピーチ or NOTを判定 • アプローチ: – BERTによる2クラス分類問題 • 所感: – 様々な取り組みをしたが銅止まり。。。 • 5chの別データを利用した疑似ラベル、5ch別データを用いた事前 学習、交差検証、複数モデルアンサンブル、Tokenizerに単語追 加、、、などの取りくみは実施 – 敗因は、コンペ終了約2・3週間前にリリースされたluke-japanese-large という最強のモデルの存在に気が付かなかったこと、、、 • LukeでLate submitをしたら余裕の銀圏内、、、 • studio-ousia/luke-japanese-large · Hugging Face – 常日頃から最新情報をキャッチできるようにしておかなきゃいけないなぁと 反省するコンペでした。 • Petfinderのコンペでもコンペ終了数日前にResNeXtが出て、上位陣はそ れを取り込んでいたのを思い出しました、、、 参考データ

Slide 2

Slide 2 text

その他 • データに関して:今回のコンペのデータ特徴(仮説含む) – ヘイトスピーチのデータが少ない • Not : hate = 95:5 の割合(データ数 4950行:306行) – 人の目でもラベル付けが難しいものがある • なんでこれはヘイトじゃないんだろう?のようなデータが含まれている。 – テストデータには、学習データに含まれない言い回しが存在していそう • 気付き: – NLPは事前学習モデルの選定が命かも? – 疑似ラベルを付けたデータ水増しに関して • 精度が6~7割どまりの時には逆効果? – テストデータには学習データに含まれていない言い回しが存在していそう。 – 疑似ラベルを付けることによってCVでは7割越えの性能が出ていたが、Subすると性能が落ちた。(Precision特化のモデルを作成し疑似ラベル作成) – 2位のソリューションでもPrivateの性能が落ちていたので、このくらいの場合は疑似ラベルしない方がいいかも? – 事前学習は難しいかも • 200万行くらいのデータでエイヤ事前学習をしてみたがLossが落ちない。学習はKickできるが、素人ができるわけじゃない感じがした。。 – 参考:BERT vs Word2Vec ~単語分散表現による同義語抽出~ - Qiita • 感想文: – NLPにおける基本的なワークフローを理解できたのは良かった。 • テキストの前処理、変換、学習、推論まで。 – 応用として、BERTのAPIを使ってHeadを変えるなどもできるようになったのはGood – NLP系が出たらチャレンジしてみてもよいかもって感じ。

Slide 3

Slide 3 text

2位の人アプローチ、単語調査 • モデル全体像 – Luke⇒GRU⇒Attention Poolingの構成。 • Luke (最新日本語モデル) – studio-ousia/luke-japanese-large · Hugging Face • MLM(Masked Language Mode) – 参考:CommonLit Readability Prize - RoBERTa Torch|ITPT | Kaggle • Multi-sample dropout – 参考:Kaggleで学んだBERTをfine-tuningする際のTips③~過学習抑制編~ | 株式会社AI Shift (ai-shift.co.jp) • Attention Pooling – 参考:Kaggleで学んだBERTをfine-tuningする際のTips②~精度改善編~ | 株式会社AI Shift (ai-shift.co.jp) – 実装参考: Utilizing Transformer Representations Efficiently | Kaggle • Layer re-initialization (-1) – たぶんこれの最後の重みの初期化(1層目のみ) • Kaggleで学んだBERTをfine-tuningする際のTips②~精度改善編~ | 株式会社AI Shift (ai-shift.co.jp) GRU Attention Pooling 2位モデル

Slide 4

Slide 4 text

言語モデル(主に日本語) • microsoft/mdeberta-v3-base • cl-tohoku/bert-base-japanese-whole-word-masking – https://huggingface.co/cl-tohoku/bert-base-japanese-whole-word-masking • cl-tohoku/bert-base-japanese-v2 – https://huggingface.co/cl-tohoku/bert-base-japanese-v2 • cl-tohoku/bert-large-japanese – https://huggingface.co/cl-tohoku/bert-large-japanese • daigo/bert-base-japanese-sentiment – https://huggingface.co/daigo/bert-base-japanese-sentiment • rinna/japanese-roberta-base – https://huggingface.co/rinna/japanese-roberta-base • nlp-waseda/roberta-base-Japanese • nlp-waseda/roberta-large-japanese • nict_bert-base_JapaneseWikipedia_100K • studio-ousia/luke-japanese-base – studio-ousia/luke-japanese-base · Hugging Face

Slide 5

Slide 5 text

以下、備忘録

Slide 6

Slide 6 text

NLP基本ワークフロー • 基本的には同じ流れ。個々の要素にはNLP特有なものがある。 • BERT APIではデータ加工以降はあまり意識しなくてもOKになっているので便利。 • リンク:事前学習済み言語モデルも、生成系学習済みモデルも増加中 近年アツいNLP分野の概論とおもしろさ - ログミーTech (logmi.jp)

Slide 7

Slide 7 text

データセット可視化 • ワードクラウド • いやー、ひどい単語ばっかりですね。。。 • データ取得元 • この3つからとってきているみたいです。 • テキストの長さとラベル • テキストの長さとラベルには相関は少なそうですね。

Slide 8

Slide 8 text

参考リンク • 事前学習済み言語モデルも、生成系学習済みモデルも増加中 近年アツいNLP分 野の概論とおもしろさ - ログミーTech (logmi.jp) • 【入門】BERTによる文書分類 - Amaru Note (amaru-ai.com) • データの前処理|BERTで行うテキスト分類 (zenn.dev) • BERT vs Word2Vec ~単語分散表現による同義語抽出~ - Qiita • studio-ousia/luke-japanese-large · Hugging Face