質問: 文章校正タスクにEncoderDecoderモデルを用いています. Decoderの出力次元は語彙数になると思うのですが, その場合大きすぎてメモリエラーを起こします. そのため語彙のうち低頻度語をUNKに置き換えているのですが, それでは文章校正タスクに不適のように感じてしまいます. できれば語彙数を削らずに学習したいのですが, 効果的な手法はありますでしょうか?
回答: 単語ベースの語彙ではなく、BPEを使えば良いのでは。sentencepieceのようなツールでBPEを訓練する方法があります。 BPEは、単語ではなく、アルゴリズムによってコーパスから指定の語彙数になるまで分割する方法です。この語彙数はよく、8000〜32000程度を指定されます。訓練に利用したコーパス内では少ない語彙数のまま未知語をなくすことができます。 語彙数依存のニューラルネット系モデルを作成する場合は、基本的にsentencepieceのようなツールによってサブワードを用います。翻訳モデルにおいても、sentencepieceは一般的に用いられています。例えば、fairseqはsentencepieceに対応しています。