BERTとT5で含意関係認識
試した事前学習のモデル
- cl-tohoku/bert-base-japanese-v2
- sonoisa/t5-base-japanese
使用したデータ
nlp.ist.i.kyoto-u.ac.jp 句点あったりなかったりするので削るのとTokenizerに入れるときにタブスペースが邪魔なので以下のように削る
re.sub(r'[\u3000 \t。]', '', text)
触った所感
- 大体のパラメータはデフォルトで十分な精度がでる
- pl.LightningModule がわかりづらい
- グラボがアチアチになる(冷房必須
- 使い方はわかったが理論は一生理解できないと思う
つまづいたところ
- cusolver64_10.dllが見つからなくてGPUで学習ができないのでファイル名を書き換える github.com
- self.hparmsに代入しようとすると下記エラーになるのでself.save_hyperparameters()を使う
File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\nn\modules\module.py", line 1178, in __setattr__ object.__setattr__(self, name, value) AttributeError: can't set attribute
- GPUを使う場合にDataLoaderのnum_workersを>0にしようとしても=0より遅い or クラッシュするので下記警告は無視する(環境に依りそう)
C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\pytorch_lightning\trainer\data_loading.py:105: UserWarning: The dataloader, train dataloang the value of the `num_workers` argument` (try 24 which is the number of cpus on this machine) in the `DataLoader` init to improve performance.
- 2文を入れるタスクの場合はTokenizerに2文分けてをいれる必要がある
- T5の場合、出力が特殊で3にしても学習結果が悪いとラベル数が増えたりして意味不
出力は “0”, “1”,…“8” のラベルとするが、SentencePiece は先頭に特殊トークン(“?”)を付けるときがあること、シーケンス終了トークン(“”)を考慮して出力シーケンス長を 3 とした はじめての自然言語処理 第7回 T5 によるテキスト生成の検証 より
参考
- BERT github.com
- t5 colab.research.google.com
- Radam github.com