Check our Terms and Privacy Policy.

「危険すぎる」と話題になった文章生成AI、GPT2の日本語版を作成したい

「危険すぎる」と話題になった文章生成AI、GPT2の日本語版をトレーニングし、一般公開するプロジェクトです。既にコーパスのクローリングは完了済みで、最小の小説生成モデルは公開しています。より大きなモデルのトレーニングには、高額なサーバーが必要です。

現在の支援総額

309,500

51%

目標金額は600,000円

支援者数

25

募集終了まで残り

終了

このプロジェクトは、2020/08/26に募集を開始し、 25人の支援により 309,500円の資金を集め、 2020/09/21に募集を終了しました

このプロジェクトを見た人はこちらもチェックしています

「危険すぎる」と話題になった文章生成AI、GPT2の日本語版を作成したい

現在の支援総額

309,500

51%達成

終了

目標金額600,000

支援者数25

このプロジェクトは、2020/08/26に募集を開始し、 25人の支援により 309,500円の資金を集め、 2020/09/21に募集を終了しました

「危険すぎる」と話題になった文章生成AI、GPT2の日本語版をトレーニングし、一般公開するプロジェクトです。既にコーパスのクローリングは完了済みで、最小の小説生成モデルは公開しています。より大きなモデルのトレーニングには、高額なサーバーが必要です。

このプロジェクトを見た人はこちらもチェックしています

皆様方にご支援頂いている、GPT-2日本語版作成プロジェクトにおいて、正式版のモデル(mediumモデル)がリリースされました。リリース内容お待たせしました!皆様方にご支援頂いている、GPT-2日本語版作成プロジェクトにおいて、やっとmediumサイズのモデルのトレーニングが終わり、公開出来る運びとなりました。今回公開するモデルが正式版のモデルで、以前のモデルはexperimentalなモデルという扱いになります。学習させたデータは、コーパス2020の混合コーパスで、約21GB、5.3Gトークンを10Mイテレーション強学習させています。GPT-2日本語版を試しに実行することが出来る、デモンストレーションサイトも近日中に公開する予定です。これまでの成果これまで、日本語版GPT-2は、最も小さな(性能の低い)パラメーター数117Mのモデルを使い、・コーパスの違い(一般文章/Web小節)による生成文章の違い・出力語彙数の違い(バイト単位/SentencePieceによる分かち書き)による生成能力の違いによるモデルの評価を行い、最終的な学習方針を策定していました。最終的には、コーパスは全ての文章を含んだ混合コーパスを使用し、語彙数はサブワード単位での学習を行える、日本語版BPEEncoderによる分かち書きを行うよう設定し、モデルの学習を行ってきました。新モデルについて新モデルでは、語彙数が変わったのに合わせて、出力層のlogits層が変更されています。そのため、総パラメーター数も変化したため、以前のような(117M/345M/774M)という名称ではなく、(small/medium/large)という名前になりました。今回リリースされたmediumモデルは、transformer層のレイヤー数が、16heads、20layersで、ノード数が1024のもの(旧345Mモデル)です。また、新モデルに合わせて、文章生成を行う「gpt2-generate.py」ベクトル化を行う「gpt2-transform.py」プログラムも更新されています。公開URL新モデルを含んだ日本語版GPT-2は、これまで通り、GitHubのページで公開しています。https://github.com/tanreinama/gpt2-japanese


皆様方にご支援頂いている、GPT-2日本語版作成プロジェクトにおいて、様々な日本語の自然言語処理に使用出来るBPEEncoderが、派生した成果としてリリースされました。これまでの成果これまで、日本語版GPT-2は、最も小さな(性能の低い)パラメーター数117Mモデルを作成していました。117Mモデルは、学習の際の語彙を、バイト単位で行ったv1モデルと、SentencePieceで分かち書きしたワード単位で行ったv2モデルがありました。v1モデルとv2モデルがあるのは、両者の比較から、語彙数の差によるモデルの性能比較を行いたかったためです。そして、117Mモデルの、v1とv2の比較から、適切な語彙数を生成するEncoderの重要性が認識されました。さらに、現在の機械学習モデルでは、バイト単位での学習とワード単位での学習の中間となる、サブワード単位での学習を行うことが一般的です。そこで、新モデルの学習のために、サブワード単位での学習を行える、日本語版BPEEncoderを作成しました。なぜ形態素解析では駄目なのか従来の自然言語処理では、係り受け解析による形態素毎に文章を分割していました。これが絶対に駄目という訳では無いのですが、係り受け解析は、基本的に、助詞や名詞のデータベースに基づく、人が作成したルールベースの処理によって、文章を解析します。BERTやGPT-2等の現代的な機械学習モデルで使用しているSelf-Attentionが強力なのは、そうした人が作成したルールに依存せずに、広域的な単語(Encode後の単位での‘単語’)間の関連性を学習出来るためです。要するに、その係り受けを学習したいのに、肝心の単語の分割が、人が作成したルールベースの処理であっては、人の性能を超えることが出来ない、というのが、形態素解析ではなくもっと細かい単位での学習を行うモチベーションとなります。日本語版BPEEncoder作成の意義現在の機械学習モデルでは、バイト単位での学習とワード単位での学習の中間となる、サブワード単位での学習を行うことが一般的ですが、サブワードへの分割アルゴリズムのほとんどは、アルファベット圏の言語を想定して作られており、日本語には対応していません。例えばBERTでは英語以外のUnicode文字を無理矢理Multilingualモデルに分けており、日本語では本来的には不適切なEncodeがなされてしまいます。また、日本語の場合、分かち書きとEncodeの両方が必要になる点も、アルファベット圏で作成されたEncoderを流用出来ない理由となっていました。自然言語文章の分かち書きとEncodeは、機械学習モデルによる自然言語処理の最上流に位置する処理で、この部分の処理は、それ以降の全ての工程に対して、影響を与えます。そのため、適切なEncoderの作成は、GPT-2に限らず、BERTやLXNet等でも必要となる、自然言語系AIのローカライズに必須の要件でした。今回の日本語版BPEEncoderのリリースにより、GPT-2に限らず、BERTやLXNet等の日本語版作成でも使用出来る、汎用的な分かち書き/Encodeを行う手法が、一般公開されることになりました。公開URL日本語版BPEEncoder↓https://github.com/tanreinama/Japanese-BPEEncoder日本語版GPT2作成プロジェクトによって、自然言語系AIのローカライズに必要となる、新しい手法や知見が得られるメリットがあります。それらは、日本のAI技術の進展に必ず寄与するものと考えています。今後も引き続き、日本語版GPT2作成プロジェクトを進めて参ります。坂本



皆様にご支援頂いている、GPT2日本語作成プロジェクトにおいて、117Mパラメーターの新モデルが公開されました。117Mパラメーターのモデルは、GPT2の中でも最も小さな(性能の低い)モデルで、既に学習済みのモデルが公開されていましたが、今回、異なる語彙数で学習させたモデルを、新たに公開しました。以前のモデルと今回リリースしたモデルを比較することにより、より大きなモデルをトレーニングする際に使用する語彙数を決定します。また、語彙数の差によるモデルの性能比較など、単一のモデルのみでは出来なかった様々な研究活動が可能になります。これまでの活動について:現在公開中の日本語版GPT2は、・ワード単位ではなくバイト単位でトレーニングしてある・最も小さな(最も性能の低い)117Mのモデルしかないという問題がありました。このうち、「ワード単位ではなくバイト単位でトレーニングしてある」というのは、オリジナルのGPT2が50256種類の語彙を出力するように作成されているのに対して、バイト単位なので256種類の出力(0〜0xFF+<|endoftext|>)しか使っていない、ということを意味しています。プロジェクトの開始時点で、既にバイト単位での学習からワード単位での学習に変更するための、ソースコードは完成済でした。また、117Mモデルの再トレーニングも、手持ちの機械学習用マシンで実行中でした。今回のリリース内容:この度、ワード単位での学習を行ったパラメーター数117Mのモデルを公開しました。新しいモデルは、GitHubのページにあるリンクからダウンロードすることが出来ます。https://github.com/tanreinama/gpt2-japanese新モデルの評価:まだ暫定的な評価ですが、ワード単位での学習を行うと、単純に性能が良くなるかと言えば、場合によっては必ずしもそうではない事が解りました。GPT2は、文章生成を行うAIですが、基本は「人間の書いた文章の続きを生成する」AIです。何も無いところから、あるいは、短い文章の後に続く文を生成するような場合、以前のモデルの方が安定しているようにも見えます。しかし、生成文章の品質は、top_p、top_kのパラメーターによって大きく変わり、入力文章の長さに合わせて適切なパラメーターを指定すると、新しいワード単位での学習を行ったモデルも、かなり自然な文章を生成してくれます。新モデルを使った研究:まだ定数的な評価は行っておらず、単なる感覚ですが、新モデルはtop_p、top_kのパラメーターの感度が大きいように見えます。現時点での、私の試行による仮設としては、top_pを設定すると、出力の文章はtop_kより自然な文章になるのですが、入力contextとの関連性は少なくなるようです。top_kはcontextの長さと反比例するように設定する必要があって、top_kで指定したほうが、入力contextと関連性のある文章が出力されるようです。このあたりの定性化については、後の研究を待つ必要がありそうです。出力の性能を定数化して比較してみても面白いかもしれません。また、前回のモデルと、新しいモデルの比較により、1.5Bパラメーター等の巨大なモデルでは無く、小さな117Mパラメーターのモデルの場合、オリジナルの設定より小さな語彙数を使用する方が良いのではないか、という仮設が生まれました。そして、小さなモデルでの語彙数の差によるモデルの性能の比較や、最適な語彙数の算定などが、新たな研究テーマとして浮上しました。今後の予定:以前のモデルと、今回リリースしたモデルとを比較し、345Mパラメーターのモデルを、どのような語彙数で学習させるかを決定します。今月の20日には、345Mパラメーターのモデルの学習を開始する予定となっています。345Mパラメーターのモデルの学習にはGPUサーバーをレンタルする必要があります。さらに大きなモデルのトレーニングには恐らくTPUが必要になりそうです。まだまだやることは山積みです。引き続きご支援のほどお願いいたします!