GPT2にWeb小説13GBを学習させて異世界召喚されてみる

# GPT2にWeb小説13GBを学習させて異世界召喚されてみる

## やったこと

- Web小説サイトをクローリングして、13GBのコーパスを作成、GPT2に学習させる

## 解説

[GPT2-japanese](https://github.com/tanreinama/gpt2-japanese)で日本語GPT2のモデルを公開しています。
今回は、新しく独自コーパスを作成して、GPT2に学習させてみました。

コーパスのサイズは合計20GB程度を目標とし、SNS投稿やオンラインショップの商品説明などの解析に利用出来るように、個人ブログ・Web小説・ニュースリリース・オンライン辞書などのジャンルから混合的にスクレイピングしました。

#### コーパス2020

スクレイピングしたコンテンツに、日本語Wikipedia全文コーパスを追加し、合計21GB程度のコンテンツを用意しました。

さらに、日付やURLアドレス等の要素を正規表現でタグに置換し、二つの大規模コーパスを作成しました。



| コーパス     | ジャンル                                                     | article数 |
| ------------ | ------------------------------------------------------------ | --------- |
| コーパスA    | 個人・技術ブログ 3.2GB<br/><br/>質問・まとめ・採点サイト 1.8GB<br/><br/>ウェブ辞書サイト（含むWikipedia） 3.4GB<br/><br/>ニュースリリース 2.1GB<br/><br/>ニュースサイト 0.3GB<br/> | 5079419   |
| コーパスB    | ウェブ小説サイト 13.1GB                                      | 1675927   |
| 混合コーパス | コーパスA＋コーパスB                                         | 6755346   |

このうち、コーパスAとコーパスBを、それぞれ汎用モデル、小説生成モデルの学習に使用しました。

#### 学習

使用したモデルは、GPT2v1の一番小さなモデル（117Mパラメーター）のものです。
学習には、RTX-2080tiを使用して、各々20日かかりました。
一つ大きな345Mパラメーターのモデルも学習させようとしましたが、手持ちのRTX-2080tiではメモリが足りず、学習させることが出来ませんでした。
より大きなモデルを学習するためには、ちょっと個人の趣味でやるには腰が引ける金額のサーバー代がかかるようなので、[クラウドファウンディングで支援を求めています](https://camp-fire.jp/mypage/projects/320938/)。

## 結果

「俺の名前は坂本俊之さん。何処にでもいるサラリーマンだ。」から続く文章を生成してみる。

```
$ python3 gpt2-generate.py --model ja-117M_novel --context="俺の名前は坂本俊之さん。何処にでもいるサラリーマンだ。"
能力って奴も僕が使えたらいいなぁ。
「あぁ、どうぞ。ご用意はっ。」
「いただきまぁす。」
「あわわわ・・・」
召喚されると、皆目見当がつかない。相当気まずそうだ。シチュエーションを理解するにも理由って一番不思議だ。
しかし、この神殿がくっ付く前にあの黒い兵士を使えば救けないか
「国王、今戦わなきゃと思いましたが、一体どこに行けば?・・・あれはもともとあの黒い兵ですよね。第1小隊1体とその兵で構成する第1小隊隊長のアイビの部隊を縛り上げなかろ。そろそろ第1小隊の追手が引き千切れば。」
そりゃシンカの部隊がいるものだから被害は無いよな。
「ハァ、話を今付けるとしましょう。
その聖剣を持っているのは元自衛官のエクセリスさんですよ。タクシーを待ちますか?人形が現れないので話をすればいいのでしょう。速やかに聖剣が封印されてしまいました。離陸後に戻って来ます。」
「ほほほ〜・・・何にせよ見違えるほどに広範囲に焼却されるわずかなのに無事でよかった。」
「エクセリスさん部隊では真新しい制服・・・」
エクセリスの現代語聞こうによるあの速さにアイビが文句ばかり上げている。
「なんの攻撃が・・・うーん、視界がぐんと悪くなりつつある・・・よく見ると皆の制服?そうは見えないっすね・・・でもやっぱり引きずっていたら血だらけでも見えるか少し目立ってし......並みの魔術師だとしたらやっぱり新かな幻
覚っぽいっすね。」

（略）
```

なんか異世界召喚されたっぽい結果が出てきました！

異世界ものの定番、「トラックで撥ねられて異世界転生する」が出来るでしょうか？

```
$ python3 gpt2-generate.py --model ja-117M_novel --context="突然目の前に大型トラックが現れた。"
トラックは全滅して東京製薬の未成長波動から頭を数メートル半の距離から一気に跳ぶと、猟犬のような身体全身スーツのフードを着込んでゆらゆらとちょこんと、大の字に、まるでトラックの入り口のように、静かに跳ね上がっていくのを、巨人はにわかに目を見開いた。
荒ぶる海のような巨体なのに、その巨体で見る大学のように、小柄なエリート体型の男たちは巨漢だったか髪が綺麗だ。男たちはいつだって、学生とは、馬鹿正直に立っているのだから質の良い大人だ。
長い黒髪を後ろでおろさげしているようだが、男たちの彼らは凡人なのだ。今回も私は苦笑して、助けを呼ぼうとした。襲い掛かる巨人を、

（略）
===============
それに乗ることはできない。しかし、上下大型トラックが、ビルの上に着るのは間違いない。
「も、もしかして・・・トラックですか?」
「ええ、そうでしょう」
そのトラックの人数は減少した。普通のものでは無かった。積み下ろしなどという芸当も出来ない。
「な、なんだそりゃあ!」
信じてもいいが、その話はちょっと違った。
「通信制さん、あの・・・」
「・・・今扉を支えているのはここから進んでるのですよ。ただし、あそこは天井では無いのです。今の所、故障は無いのですが・・・」
今、魔女の手下はエレベーターで上昇をしている。彼女はあそこに入ろうとした。でも確認したので、連れて関所を抜けてからのみとなった。しかし、魔女の手下からは魔法の被害は無い

（略）
===============
小型トラックの荷台がガクンと落ちる。中身を見てみるとグルングルンと大きな音がして、眉間に指先がとんっと寄る生物がいた。大顎に金属が付いた鉄球を振り下ろした。
生物を地面に叩きつけた時の笑顔に形が変わっていく。そして続いて、大顎の側面から床が大顎に叩きつけられそうだった。
「野郎ども!今度は仕留めろ!」
自分の現状に男が自信すら持ち合わせている証拠だ。
「うおお!カズハってば!」
男が恐ろしい実験を歩んでいる最中であった。重い一撃で男のトラックは大顎から転んだ。どろりと溶岩が脚に落ちボロボロと粉々になった。
「か......ぁ゙エセイ......あ...ッ!!」
行ける。行きゃあいい

（略）
```

うーん、なかなか転生してくれません（笑）。

一応、汎用的な生成モデルも学習させたので、そちらの方も見てみます。

```
$ python3 gpt2-generate.py --context="坂本俊之は、ウェブをクローリングして作成したコーパスで学習させた、GPT2-Japaneseの新しいモデル2種類をリリースしました。"
これらの作成全てに、ユーザーは対応した物理学とコンピューターやリンクそしてインタラクティブな操作を定義します。コーパスの使用にはパラメータがあり、ショックケースとクラスの類似モデルが用意されています。ユーザーはプログラミング言語初めてのGPT2をレクチャーします。
ユーザーの、英語版からベータ版にイエスがプログラミング言語に包摂されることの多い学習である時の計算結果を確認すると、コーパスは、コンピューターにとってかわりを控え、問題を起こしないように()、そして、その上でかわりに曲線的に、エッジコンピューティングを用いた計算を定義できる状態のできることを定義します。

「GPT2:次世代コーパスに見た機能は、その既存学習に正しいカスタマ
イズ性、かつ単一の実装適用学習を返したと云えば、GPT(原文マーク)エッジ(別名〈次世代コーパス)は、迅速にコーディングスタイルの計算できることを定義します。」
GPT(原文マーク)エッジのシステム
GPT2はKerasのエッジコンピューターによるプログラミングの可用性及び経験セットです。

GPT(原文マーク)エッジに関する言葉
言わば「モリースピース(<PRICE>)」です。
「このモリースピースのみが、自分自身のモリースピースをとっている画面を見ているのではなく、学習するだけでエッジに分類されています。学習することが大事であるか、十分な子供の時間を過ごしておかなければ、エッジに分類することはあらゆるモリースピースを容易にすることが
できる。」
考慮が得られなかったら、分岐ためなど時代のリスクも考慮してこれを実行せよ(チームメンバにとっては採用が

（略）
===============
<最新版を含む既存のテクノロジーのソリューション>
1.ホワイトリストチャンネル上の番組でユーザーの欠点を可視化する
既存のFrontベースのドメインをまとめた番組を展開するインターナショナル・エキサイティング認定ソリューション’HomePrivatePartners’(IPP)’は、自動化市場によってクラウドやセキュリティ/デバイスのための確度の高いテクノロジーを提供することを目指し、製品開発プロセス全体を見直してきました。
相乗効果をうみだすソリューションに「類を借りたもの」や「汎用カスタマイズ」を追加するため、IPPは今回の想定実験を含む、サービス開発プロセスのためのCADやデータ分析ツールを新たにリリースしました。それにともない、製品を利用するユーザーは特�
CADアプリケーションでのデータ分析を行えるだけではなく、パスを識別しやすくアプリケーションへ適用できるようになります。

今回の想定実験により、製品がどのような場合、何がいいか、本当に何が機能できるかわからないパートナーインターフェース(PDB)のためのEC設計を作り、実際の製品ライフサイクルはどうなっているお客様がよりスムーズな画面の提供につなげることが可能になります。また先月、Iot+は高齢者世帯の高齢化率が1カ月平均4%、またインターネット接続と音声ファイルの数億円に達すると予測したとし、自動車業界においてユーザーのニーズが高まっているエッジもあいまって、テクノロジーを揃えるだけで作業効率は上がる可能性があるた

（略）
===============
GPT2-Japaneseのスーパーコンピューターのために、保存されている技術を使い、2つのレビューをスケールレビューすることが可能となります。

GPT2-Japaneseは、ネットワークをクロールするセンサープラグインとバックパッチを使って、通信をいつでも利用できます。また、全員が技術者であれば、代表的な建物を丸ごと管理できます。

「知識と経験を用いてバックパッチを管理しプログラミングできることをテクノロジーで楽しみたい。GPT2-Japaneseに深く関わるにあたって、工夫が必要ですし、個人経営の知識としても上達してもらいたい。これらのテクノロジーによって、ネットワークの知見とスケールでバックパッチを最適化することができます」(ネットワーク設計メンバー)

IPAv6を使い、GPT2-Japaneseを採用しているISPv4も世の中に紹介されてい
る。これらのソフトウェアを搭載するためには「GPTVaにオペレータが接続」というテーマが工夫されている。

ISPv4は、上位(単体)リモートアクセスを表示するプロビジョニング(一部がアンテナ)ができているかもしれない。例えば、ヒューマン・テクノロジーズでは、カスタマーマーケティングにおける新たなヒューマン・テクノロジーは、オペレータ側になるべく多くの情報を提供している。

GPTv6リモートの通常のプロビジョニングと、GPTRのモジュールによるログフェッチは、「地球上で最も信頼性が高くテクノロジーが進化する」ことを付け加えることができる。

ISPmedを使って記録することも可能であるが、GPTmedを使ってよいと感じたテクノロジーが、モジュールとリモートアクセスを表示できるようになる
。
（略）
```

ニュースリリース等、一見それっぽい文章を生成することが出来ますが、あまり意味は分からないのは、小さな117Mパラメーターのモデルだからでしょう。

一応、文章のベクトル化も出来ます（transformerの最後の層の最後の出力を表示します）。

```
$ python3 gpt2-transform.py --context="江戸時代のインターネット回線"
[ 1.10667396e+00 -1.32296407e+00  3.68696272e-01 -8.89108360e-01
  6.70326054e-01  1.46573734e+00  6.14574385e+00  1.69398114e-02
  1.41465652e+00 -4.86905873e-01  1.44136465e+00  7.09628284e-01
  7.76252687e-01  2.27544069e+00  9.44801420e-02  1.90467823e+00
 （・・・略）
```